diff --git a/openssl/src/conf.rs b/openssl/src/conf.rs index 140c1817215e9755b7b58ea78866f4aaf74b88d8..5483955de88c3773bb4af710cdc1d31ba9c1a47a 100644 --- a/openssl/src/conf.rs +++ b/openssl/src/conf.rs @@ -7,7 +7,10 @@ pub struct ConfMethod(*mut ffi::CONF_METHOD); impl ConfMethod { pub fn default() -> ConfMethod { - unsafe { ConfMethod(ffi::NCONF_default()) } + unsafe { + ffi::init(); + ConfMethod(ffi::NCONF_default()) + } } pub unsafe fn from_ptr(ptr: *mut ffi::CONF_METHOD) -> ConfMethod { diff --git a/openssl/src/stack.rs b/openssl/src/stack.rs index 87aa86c50d233a09b815a076fae7de336ca1232a..584ead8c53ed8aa37a28f779e711bdebd158386d 100644 --- a/openssl/src/stack.rs +++ b/openssl/src/stack.rs @@ -5,6 +5,7 @@ use std::convert::AsRef; use std::marker::PhantomData; use libc::c_int; use std::mem; +use ffi; use {cvt, cvt_p}; use error::ErrorStack; @@ -37,6 +38,7 @@ pub struct Stack(*mut T::StackType); impl Stack { pub fn new() -> Result, ErrorStack> { unsafe { + ffi::init(); let ptr = try!(cvt_p(OPENSSL_sk_new_null())); Ok(Stack(ptr as *mut _)) } diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs index 97d9fa3fa4ce0cec71ef3912dd7395e355686d5d..af79ffbb2d268d0525c519910ed9ef3a1f5d7543 100644 --- a/openssl/src/x509/mod.rs +++ b/openssl/src/x509/mod.rs @@ -360,6 +360,7 @@ pub struct X509Builder(X509); impl X509Builder { pub fn new() -> Result { unsafe { + ffi::init(); cvt_p(ffi::X509_new()).map(|p| X509Builder(X509(p))) } } @@ -610,6 +611,7 @@ impl X509Extension { let name = CString::new(name).unwrap(); let value = CString::new(value).unwrap(); unsafe { + ffi::init(); let conf = conf.map_or(ptr::null_mut(), ConfRef::as_ptr); let context = context.map_or(ptr::null_mut(), X509v3Context::as_ptr); let name = name.as_ptr() as *mut _; @@ -626,6 +628,7 @@ impl X509Extension { -> Result { let value = CString::new(value).unwrap(); unsafe { + ffi::init(); let conf = conf.map_or(ptr::null_mut(), ConfRef::as_ptr); let context = context.map_or(ptr::null_mut(), X509v3Context::as_ptr); let name = name.as_raw(); @@ -640,7 +643,10 @@ pub struct X509NameBuilder(X509Name); impl X509NameBuilder { pub fn new() -> Result { - unsafe { cvt_p(ffi::X509_NAME_new()).map(|p| X509NameBuilder(X509Name(p))) } + unsafe { + ffi::init(); + cvt_p(ffi::X509_NAME_new()).map(|p| X509NameBuilder(X509Name(p))) + } } pub fn append_entry_by_text(&mut self, field: &str, value: &str) -> Result<(), ErrorStack> { @@ -751,7 +757,11 @@ pub struct X509ReqBuilder(X509Req); impl X509ReqBuilder { pub fn new() -> Result { - unsafe { cvt_p(ffi::X509_REQ_new()).map(|p| X509ReqBuilder(X509Req(p))) } + unsafe { + ffi::init(); + cvt_p(ffi::X509_REQ_new()).map(|p| X509ReqBuilder(X509Req(p))) + } + } pub fn set_version(&mut self, version: i32) -> Result<(), ErrorStack> {