diff options
| author | Steven Fackler <[email protected]> | 2015-02-07 21:28:54 -0800 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2015-02-07 21:30:05 -0800 |
| commit | ec65b0c67b452539fded5e06cbb6ce1d165074e0 (patch) | |
| tree | c50c22c2ce4ca095149c96a0f3a3b935b4012a5c /openssl/src/asn1 | |
| parent | Fix deprecation warnings in openssl-sys (diff) | |
| download | rust-openssl-ec65b0c67b452539fded5e06cbb6ce1d165074e0.tar.xz rust-openssl-ec65b0c67b452539fded5e06cbb6ce1d165074e0.zip | |
Move docs to this repo and auto build
Diffstat (limited to 'openssl/src/asn1')
| -rw-r--r-- | openssl/src/asn1/mod.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/openssl/src/asn1/mod.rs b/openssl/src/asn1/mod.rs new file mode 100644 index 00000000..c250096f --- /dev/null +++ b/openssl/src/asn1/mod.rs @@ -0,0 +1,49 @@ +use libc::{c_long}; +use std::ptr; + +use ffi; +use ssl::error::{SslError}; + + +pub struct Asn1Time { + handle: *mut ffi::ASN1_TIME, + owned: bool +} + +impl Asn1Time { + /// Wraps existing ASN1_TIME and takes ownership + pub fn new(handle: *mut ffi::ASN1_TIME) -> Asn1Time { + Asn1Time { + handle: handle, + owned: true + } + } + + fn new_with_period(period: u64) -> Result<Asn1Time, SslError> { + ffi::init(); + + let handle = unsafe { + try_ssl_null!(ffi::X509_gmtime_adj(ptr::null_mut(), + period as c_long)) + }; + Ok(Asn1Time::new(handle)) + } + + /// Creates a new time on specified interval in days from now + pub fn days_from_now(days: u32) -> Result<Asn1Time, SslError> { + Asn1Time::new_with_period(days as u64 * 60 * 60 * 24) + } + + /// Returns raw handle + pub unsafe fn get_handle(&self) -> *mut ffi::ASN1_TIME { + return self.handle + } +} + +impl Drop for Asn1Time { + fn drop(&mut self) { + if self.owned { + unsafe { ffi::ASN1_TIME_free(self.handle) }; + } + } +} |