diff options
Diffstat (limited to 'openssl/src/c_helpers.c')
| -rw-r--r-- | openssl/src/c_helpers.c | 54 |
1 files changed, 50 insertions, 4 deletions
diff --git a/openssl/src/c_helpers.c b/openssl/src/c_helpers.c index e884bebd..13041956 100644 --- a/openssl/src/c_helpers.c +++ b/openssl/src/c_helpers.c @@ -1,8 +1,7 @@ +#include <openssl/hmac.h> #include <openssl/ssl.h> - -void rust_SSL_clone(SSL *ssl) { - CRYPTO_add(&ssl->references, 1, CRYPTO_LOCK_SSL); -} +#include <openssl/dh.h> +#include <openssl/bn.h> void rust_SSL_CTX_clone(SSL_CTX *ctx) { CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX); @@ -11,3 +10,50 @@ void rust_SSL_CTX_clone(SSL_CTX *ctx) { void rust_X509_clone(X509 *x509) { CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509); } + +STACK_OF(X509_EXTENSION) *rust_X509_get_extensions(X509 *x) { + return x->cert_info ? x->cert_info->extensions : NULL; +} + +DH *rust_DH_new_from_params(BIGNUM *p, BIGNUM *g, BIGNUM *q) { + DH *dh; + + if ((dh = DH_new()) == NULL) { + return NULL; + } + dh->p = p; + dh->g = g; + dh->q = q; + return dh; +} + +#if OPENSSL_VERSION_NUMBER < 0x10000000L +int rust_HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len, const EVP_MD *md, ENGINE *impl) { + HMAC_Init_ex(ctx, key, key_len, md, impl); + return 1; +} + +int rust_HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len) { + HMAC_Update(ctx, data, len); + return 1; +} + +int rust_HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) { + HMAC_Final(ctx, md, len); + return 1; +} + +#else + +int rust_HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len, const EVP_MD *md, ENGINE *impl) { + return HMAC_Init_ex(ctx, key, key_len, md, impl); +} + +int rust_HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len) { + return HMAC_Update(ctx, data, len); +} + +int rust_HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) { + return HMAC_Final(ctx, md, len); +} +#endif |