aboutsummaryrefslogtreecommitdiff
path: root/src/bn
diff options
context:
space:
mode:
Diffstat (limited to 'src/bn')
-rw-r--r--src/bn/mod.rs16
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
}
}
}