Clean up asn1time
This commit is contained in:
parent
bc97d088b0
commit
5af01a5dbd
|
|
@ -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) };
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
@ -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),
|
||||
|
|
@ -146,6 +149,7 @@ impl SslMethod {
|
|||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Determines the type of certificate verification used
|
||||
|
|
|
|||
Loading…
Reference in New Issue