diff options
Diffstat (limited to 'src/bn')
| -rw-r--r-- | src/bn/mod.rs | 16 |
1 files changed, 14 insertions, 2 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 } } } |