diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bn/mod.rs | 16 | ||||
| -rwxr-xr-x | src/ffi.rs | 21 | ||||
| -rw-r--r-- | src/ssl/tests.rs | 13 |
3 files changed, 16 insertions, 34 deletions
diff --git a/src/bn/mod.rs b/src/bn/mod.rs index fb836a39..129f6b90 100644 --- a/src/bn/mod.rs +++ b/src/bn/mod.rs @@ -1,4 +1,4 @@ -use libc::{c_int, c_ulong}; +use libc::{c_int, c_ulong, c_void}; use std::{fmt, ptr}; use std::c_str::CString; use std::num::{One, Zero}; @@ -6,6 +6,16 @@ use std::num::{One, Zero}; use ffi; use ssl::error::SslError; +#[allow(dead_code)] +#[repr(C)] +pub struct BIGNUM { + d: *mut c_void, + top: c_int, + dmax: c_int, + neg: c_int, + flags: c_int, +} + pub struct BigNum(*mut ffi::BIGNUM); #[repr(C)] @@ -381,9 +391,11 @@ impl Zero for BigNum { fn zero() -> BigNum { BigNum::new_from(0).unwrap() } + fn is_zero(&self) -> bool { unsafe { - ffi::BN_is_zero(self.raw()) == 1 + // It is raw contents of BN_is_zero macro + (*self.raw()).top == 0 } } } @@ -3,6 +3,8 @@ use libc::{c_void, c_int, c_char, c_ulong, c_long, c_uint, c_uchar, size_t}; use std::ptr; +pub use bn::BIGNUM; + pub type ASN1_INTEGER = c_void; pub type ASN1_STRING = c_void; pub type ASN1_TIME = c_void; @@ -28,16 +30,6 @@ pub type X509_NAME = c_void; pub type X509_REQ = c_void; pub type X509_STORE_CTX = c_void; -#[allow(dead_code)] -#[repr(C)] -pub struct BIGNUM { - d: *mut c_void, - top: c_int, - dmax: c_int, - pub neg: c_int, - flags: c_int, -} - #[repr(C)] pub struct EVP_MD_CTX { digest: *mut EVP_MD, @@ -189,15 +181,6 @@ extern {} #[link(name="wsock32")] extern { } -/* Since the openssl BN_is_zero is sometimes a macro, this wrapper is necessary. */ -pub unsafe fn BN_is_zero(a: *mut BIGNUM) -> c_int { bn_is_zero(a) } - -/* Special import from native/bn_is_zero.c */ -#[link(name = "wrapped", kind = "static")] -extern "C" { - pub fn bn_is_zero(a: *mut BIGNUM) -> c_int; -} - // Functions converted from macros pub unsafe fn BIO_eof(b: *mut BIO) -> bool { BIO_ctrl(b, BIO_CTRL_EOF, 0, ptr::null_mut()) == 1 diff --git a/src/ssl/tests.rs b/src/ssl/tests.rs index f98352be..a68d4967 100644 --- a/src/ssl/tests.rs +++ b/src/ssl/tests.rs @@ -237,16 +237,3 @@ fn test_cert_gen() { // FIXME: check data in result to be correct, needs implementation // of X509 getters } - -#[test] -fn test_bn_is_zero() { - use ffi; - use std::ptr; - - unsafe { - let bn = ffi::BN_new(); - assert!(bn != ptr::null_mut()); - // Just make sure it is linked and resolved correctly - ffi::BN_is_zero(bn); - } -} |