Loading Cargo.toml +0 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ name = "openssl" version = "0.0.0" authors = ["Steven Fackler <sfackler@gmail.com"] build = "make" [lib] Loading Makefile +0 −9 Original line number Diff line number Diff line ifneq ($(findstring i686,$(TARGET)),) CFLAGS += -m32 else CFLAGS += -m64 endif default: $(CC) $(CFLAGS) -c native/bn_is_zero.c -o $(OUT_DIR)/bn_is_zero.o $(AR) crus $(OUT_DIR)/libwrapped.a $(OUT_DIR)/bn_is_zero.o src/bn/mod.rs +14 −2 Original line number Diff line number Diff line 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}; Loading @@ -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)] Loading Loading @@ -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 } } } Loading src/ffi.rs +2 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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, Loading Loading @@ -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 Loading src/ssl/tests.rs +0 −13 Original line number Diff line number Diff line Loading @@ -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); } } Loading
Cargo.toml +0 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ name = "openssl" version = "0.0.0" authors = ["Steven Fackler <sfackler@gmail.com"] build = "make" [lib] Loading
Makefile +0 −9 Original line number Diff line number Diff line ifneq ($(findstring i686,$(TARGET)),) CFLAGS += -m32 else CFLAGS += -m64 endif default: $(CC) $(CFLAGS) -c native/bn_is_zero.c -o $(OUT_DIR)/bn_is_zero.o $(AR) crus $(OUT_DIR)/libwrapped.a $(OUT_DIR)/bn_is_zero.o
src/bn/mod.rs +14 −2 Original line number Diff line number Diff line 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}; Loading @@ -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)] Loading Loading @@ -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 } } } Loading
src/ffi.rs +2 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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, Loading Loading @@ -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 Loading
src/ssl/tests.rs +0 −13 Original line number Diff line number Diff line Loading @@ -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); } }