Loading openssl/src/asn1/mod.rs +13 −21 Original line number Diff line number Diff line Loading @@ -4,44 +4,36 @@ use std::ptr; use ffi; use error::ErrorStack; pub struct Asn1Time { handle: *mut ffi::ASN1_TIME, owned: bool, } pub struct Asn1Time(*mut ffi::ASN1_TIME); impl Asn1Time { /// Wraps existing ASN1_TIME and takes ownership pub fn new(handle: *mut ffi::ASN1_TIME) -> Asn1Time { Asn1Time { handle: handle, owned: true, } pub unsafe fn from_raw(handle: *mut ffi::ASN1_TIME) -> Asn1Time { Asn1Time(handle) } fn new_with_period(period: u64) -> Result<Asn1Time, ErrorStack> { fn from_period(period: u64) -> Result<Asn1Time, ErrorStack> { ffi::init(); let handle = unsafe { try_ssl_null!(ffi::X509_gmtime_adj(ptr::null_mut(), period as c_long)) }; Ok(Asn1Time::new(handle)) unsafe { let handle = try_ssl_null!(ffi::X509_gmtime_adj(ptr::null_mut(), period as c_long)); Ok(Asn1Time::from_raw(handle)) } } /// Creates a new time on specified interval in days from now pub fn days_from_now(days: u32) -> Result<Asn1Time, ErrorStack> { Asn1Time::new_with_period(days as u64 * 60 * 60 * 24) Asn1Time::from_period(days as u64 * 60 * 60 * 24) } /// Returns raw handle pub unsafe fn handle(&self) -> *mut ffi::ASN1_TIME { return self.handle; /// Returns the raw handle pub fn handle(&self) -> *mut ffi::ASN1_TIME { self.0 } } impl Drop for Asn1Time { fn drop(&mut self) { if self.owned { unsafe { ffi::ASN1_TIME_free(self.handle) }; } unsafe { ffi::ASN1_TIME_free(self.0) }; } } openssl/src/ssl/mod.rs +37 −33 Original line number Diff line number Diff line Loading @@ -108,7 +108,8 @@ pub enum SslMethod { } impl SslMethod { unsafe fn to_raw(&self) -> *const ffi::SSL_METHOD { fn to_raw(&self) -> *const ffi::SSL_METHOD { unsafe { match *self { #[cfg(feature = "sslv2")] SslMethod::Sslv2 => ffi::SSLv2_method(), Loading @@ -126,8 +127,10 @@ impl SslMethod { SslMethod::Dtlsv1_2 => ffi::DTLSv1_2_method(), } } } unsafe fn from_raw(method: *const ffi::SSL_METHOD) -> Option<SslMethod> { fn from_raw(method: *const ffi::SSL_METHOD) -> Option<SslMethod> { unsafe { match method { #[cfg(feature = "sslv2")] x if x == ffi::SSLv2_method() => Some(SslMethod::Sslv2), Loading @@ -147,6 +150,7 @@ impl SslMethod { } } } } /// Determines the type of certificate verification used bitflags! { Loading Loading
openssl/src/asn1/mod.rs +13 −21 Original line number Diff line number Diff line Loading @@ -4,44 +4,36 @@ use std::ptr; use ffi; use error::ErrorStack; pub struct Asn1Time { handle: *mut ffi::ASN1_TIME, owned: bool, } pub struct Asn1Time(*mut ffi::ASN1_TIME); impl Asn1Time { /// Wraps existing ASN1_TIME and takes ownership pub fn new(handle: *mut ffi::ASN1_TIME) -> Asn1Time { Asn1Time { handle: handle, owned: true, } pub unsafe fn from_raw(handle: *mut ffi::ASN1_TIME) -> Asn1Time { Asn1Time(handle) } fn new_with_period(period: u64) -> Result<Asn1Time, ErrorStack> { fn from_period(period: u64) -> Result<Asn1Time, ErrorStack> { ffi::init(); let handle = unsafe { try_ssl_null!(ffi::X509_gmtime_adj(ptr::null_mut(), period as c_long)) }; Ok(Asn1Time::new(handle)) unsafe { let handle = try_ssl_null!(ffi::X509_gmtime_adj(ptr::null_mut(), period as c_long)); Ok(Asn1Time::from_raw(handle)) } } /// Creates a new time on specified interval in days from now pub fn days_from_now(days: u32) -> Result<Asn1Time, ErrorStack> { Asn1Time::new_with_period(days as u64 * 60 * 60 * 24) Asn1Time::from_period(days as u64 * 60 * 60 * 24) } /// Returns raw handle pub unsafe fn handle(&self) -> *mut ffi::ASN1_TIME { return self.handle; /// Returns the raw handle pub fn handle(&self) -> *mut ffi::ASN1_TIME { self.0 } } impl Drop for Asn1Time { fn drop(&mut self) { if self.owned { unsafe { ffi::ASN1_TIME_free(self.handle) }; } unsafe { ffi::ASN1_TIME_free(self.0) }; } }
openssl/src/ssl/mod.rs +37 −33 Original line number Diff line number Diff line Loading @@ -108,7 +108,8 @@ pub enum SslMethod { } impl SslMethod { unsafe fn to_raw(&self) -> *const ffi::SSL_METHOD { fn to_raw(&self) -> *const ffi::SSL_METHOD { unsafe { match *self { #[cfg(feature = "sslv2")] SslMethod::Sslv2 => ffi::SSLv2_method(), Loading @@ -126,8 +127,10 @@ impl SslMethod { SslMethod::Dtlsv1_2 => ffi::DTLSv1_2_method(), } } } unsafe fn from_raw(method: *const ffi::SSL_METHOD) -> Option<SslMethod> { fn from_raw(method: *const ffi::SSL_METHOD) -> Option<SslMethod> { unsafe { match method { #[cfg(feature = "sslv2")] x if x == ffi::SSLv2_method() => Some(SslMethod::Sslv2), Loading @@ -147,6 +150,7 @@ impl SslMethod { } } } } /// Determines the type of certificate verification used bitflags! { Loading