Commit 5042d3d1 authored by Steven Fackler's avatar Steven Fackler
Browse files

Mangle c helper functions

We want to make sure that multiple openssl versions can coexist in the
same dependency tree.

Closes #438
parent 9cc089a6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
target/
Cargo.lock
.idea/
*.iml
+10 −10
Original line number Diff line number Diff line
@@ -3,19 +3,19 @@
#include <openssl/dh.h>
#include <openssl/bn.h>

void rust_SSL_CTX_clone(SSL_CTX *ctx) {
void rust_0_8_SSL_CTX_clone(SSL_CTX *ctx) {
    CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
}

void rust_X509_clone(X509 *x509) {
void rust_0_8_X509_clone(X509 *x509) {
    CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509);
}

STACK_OF(X509_EXTENSION) *rust_X509_get_extensions(X509 *x) {
STACK_OF(X509_EXTENSION) *rust_0_8_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 *rust_0_8_DH_new_from_params(BIGNUM *p, BIGNUM *g, BIGNUM *q) {
    DH *dh;

    if ((dh = DH_new()) == NULL) {
@@ -28,32 +28,32 @@ DH *rust_DH_new_from_params(BIGNUM *p, BIGNUM *g, BIGNUM *q) {
}

#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) {
int rust_0_8_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) {
int rust_0_8_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) {
int rust_0_8_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) {
int rust_0_8_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) {
int rust_0_8_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) {
int rust_0_8_HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) {
    return HMAC_Final(ctx, md, len);
}
#endif
+7 −7
Original line number Diff line number Diff line
@@ -3,12 +3,12 @@ use libc::{c_int, c_void, c_uint, c_uchar};

#[allow(dead_code)]
extern "C" {
    pub fn rust_SSL_CTX_clone(cxt: *mut ffi::SSL_CTX);
    pub fn rust_X509_clone(x509: *mut ffi::X509);
    pub fn rust_X509_get_extensions(x: *mut ffi::X509) -> *mut ffi::stack_st_X509_EXTENSION;
    pub fn rust_0_8_SSL_CTX_clone(cxt: *mut ffi::SSL_CTX);
    pub fn rust_0_8_X509_clone(x509: *mut ffi::X509);
    pub fn rust_0_8_X509_get_extensions(x: *mut ffi::X509) -> *mut ffi::stack_st_X509_EXTENSION;

    pub fn rust_HMAC_Init_ex(ctx: *mut ffi::HMAC_CTX, key: *const c_void, keylen: c_int, md: *const ffi::EVP_MD, impl_: *mut ffi::ENGINE) -> c_int;
    pub fn rust_HMAC_Final(ctx: *mut ffi::HMAC_CTX, output: *mut c_uchar, len: *mut c_uint) -> c_int;
    pub fn rust_HMAC_Update(ctx: *mut ffi::HMAC_CTX, input: *const c_uchar, len: c_uint) -> c_int;
    pub fn rust_DH_new_from_params(p: *mut ffi::BIGNUM, g: *mut ffi::BIGNUM, q: *mut ffi::BIGNUM) -> *mut ffi::DH;
    pub fn rust_0_8_HMAC_Init_ex(ctx: *mut ffi::HMAC_CTX, key: *const c_void, keylen: c_int, md: *const ffi::EVP_MD, impl_: *mut ffi::ENGINE) -> c_int;
    pub fn rust_0_8_HMAC_Final(ctx: *mut ffi::HMAC_CTX, output: *mut c_uchar, len: *mut c_uint) -> c_int;
    pub fn rust_0_8_HMAC_Update(ctx: *mut ffi::HMAC_CTX, input: *const c_uchar, len: c_uint) -> c_int;
    pub fn rust_0_8_DH_new_from_params(p: *mut ffi::BIGNUM, g: *mut ffi::BIGNUM, q: *mut ffi::BIGNUM) -> *mut ffi::DH;
}
+12 −12
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ impl HMAC {

    fn init_once(&mut self, md: *const ffi::EVP_MD, key: &[u8]) -> Result<(), ErrorStack> {
        unsafe {
            try_ssl!(c_helpers::rust_HMAC_Init_ex(&mut self.ctx,
            try_ssl!(c_helpers::rust_0_8_HMAC_Init_ex(&mut self.ctx,
                                                      key.as_ptr() as *const _,
                                                      key.len() as c_int,
                                                      md,
@@ -113,7 +113,7 @@ impl HMAC {
        // If the key and/or md is not supplied it's reused from the last time
        // avoiding redundant initializations
        unsafe {
            try_ssl!(c_helpers::rust_HMAC_Init_ex(&mut self.ctx,
            try_ssl!(c_helpers::rust_0_8_HMAC_Init_ex(&mut self.ctx,
                                                      0 as *const _,
                                                      0,
                                                      0 as *const _,
@@ -130,7 +130,7 @@ impl HMAC {
        while !data.is_empty() {
            let len = cmp::min(data.len(), c_uint::max_value() as usize);
            unsafe {
                try_ssl!(c_helpers::rust_HMAC_Update(&mut self.ctx, data.as_ptr(), len as c_uint));
                try_ssl!(c_helpers::rust_0_8_HMAC_Update(&mut self.ctx, data.as_ptr(), len as c_uint));
            }
            data = &data[len..];
        }
@@ -147,7 +147,7 @@ impl HMAC {
        unsafe {
            let mut len = ffi::EVP_MAX_MD_SIZE;
            let mut res = vec![0; len as usize];
            try_ssl!(c_helpers::rust_HMAC_Final(&mut self.ctx, res.as_mut_ptr(), &mut len));
            try_ssl!(c_helpers::rust_0_8_HMAC_Final(&mut self.ctx, res.as_mut_ptr(), &mut len));
            res.truncate(len as usize);
            self.state = Finalized;
            Ok(res)
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ impl DH {
    #[cfg(feature = "dh_from_params")]
    pub fn from_params(p: BigNum, g: BigNum, q: BigNum) -> Result<DH, ErrorStack> {
        let dh = unsafe {
            try_ssl_null!(::c_helpers::rust_DH_new_from_params(p.as_ptr(), g.as_ptr(), q.as_ptr()))
            try_ssl_null!(::c_helpers::rust_0_8_DH_new_from_params(p.as_ptr(), g.as_ptr(), q.as_ptr()))
        };
        mem::forget(p);
        mem::forget(g);
Loading