diff options
| author | Steven Fackler <[email protected]> | 2015-10-05 22:34:57 +0100 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2015-10-05 22:34:57 +0100 |
| commit | cb2c860d022426820cc8c4228e68ef258b85b326 (patch) | |
| tree | 3daecc337d7a866e06646a7551ac912078c68c73 /openssl-sys/src/openssl_shim.c | |
| parent | Merge branch 'release-v0.6.5' into release (diff) | |
| parent | Release v0.6.6 (diff) | |
| download | rust-openssl-0.6.6.tar.xz rust-openssl-0.6.6.zip | |
Merge branch 'release-v0.6.6' into releasev0.6.6
Diffstat (limited to 'openssl-sys/src/openssl_shim.c')
| -rw-r--r-- | openssl-sys/src/openssl_shim.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/openssl-sys/src/openssl_shim.c b/openssl-sys/src/openssl_shim.c index f0622d2d..f0f55b27 100644 --- a/openssl-sys/src/openssl_shim.c +++ b/openssl-sys/src/openssl_shim.c @@ -1,5 +1,33 @@ #include <openssl/hmac.h> #include <openssl/ssl.h> +#include <openssl/dh.h> +#include <openssl/bn.h> + +#if defined(__APPLE__) || defined(__linux) + +#include<pthread.h> +#include<openssl/crypto.h> + +unsigned long thread_id() +{ + return (unsigned long) pthread_self(); +} + +void rust_openssl_set_id_callback() { + CRYPTO_set_id_callback(thread_id); +} + +#else +// Openssl already handles Windows directly, so we don't +// need to explicitly set it + +void rust_openssl_set_id_callback() { + // We don't know how to set the callback for arbitrary OSes + // Let openssl use its defaults and hope they work. +} + +#endif + #if OPENSSL_VERSION_NUMBER < 0x1000000L // Copied from openssl crypto/hmac/hmac.c @@ -79,6 +107,28 @@ long SSL_CTX_set_read_ahead_shim(SSL_CTX *ctx, long m) { return SSL_CTX_set_read_ahead(ctx, m); } +long SSL_CTX_set_tmp_dh_shim(SSL_CTX *ctx, DH *dh) { + return SSL_CTX_set_tmp_dh(ctx, dh); +} + +#if OPENSSL_VERSION_NUMBER >= 0x1000200L +int SSL_CTX_set_ecdh_auto_shim(SSL_CTX *ctx, int onoff) { + return SSL_CTX_set_ecdh_auto(ctx, onoff); +} +#endif + +DH *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; +} + long SSL_set_tlsext_host_name_shim(SSL *s, char *name) { return SSL_set_tlsext_host_name(s, name); } |