diff options
author | Steven Fackler <sfackler@palantir.com> | 2016-11-12 00:24:12 +0000 |
---|---|---|
committer | Steven Fackler <sfackler@palantir.com> | 2016-11-12 00:24:12 +0000 |
commit | 26a3358a2b70b46bf06403b2810c379f5299a551 (patch) | |
tree | 40efb4305948a67660bd6bcdbdf12d25d3871945 /openssl/src/x509/store.rs | |
parent | 6b7279eb5224a422860d0adb38becd5bca19763f (diff) | |
download | rust-openssl-26a3358a2b70b46bf06403b2810c379f5299a551.zip |
Add basic X509_STORE access
There's more to do here, but this enabled addition of trusted CAs from
X509 objects.
Closes #394
Diffstat (limited to 'openssl/src/x509/store.rs')
-rw-r--r-- | openssl/src/x509/store.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/openssl/src/x509/store.rs b/openssl/src/x509/store.rs new file mode 100644 index 00000000..01eb0e2f --- /dev/null +++ b/openssl/src/x509/store.rs @@ -0,0 +1,20 @@ +use ffi; +use std::mem; + +use cvt; +use error::ErrorStack; +use types::OpenSslTypeRef; +use x509::X509; + +type_!(X509StoreBuilder, X509StoreBuilderRef, ffi::X509_STORE, ffi::X509_STORE_free); + +impl X509StoreBuilderRef { + /// Adds a certificate to the certificate store. + pub fn add_cert(&mut self, cert: X509) -> Result<(), ErrorStack> { + unsafe { + let ptr = cert.as_ptr(); + mem::forget(cert); // the cert will be freed inside of X509_STORE_add_cert on error + cvt(ffi::X509_STORE_add_cert(self.as_ptr(), ptr)).map(|_| ()) + } + } +} |