summaryrefslogtreecommitdiff
path: root/openssl/src/x509/store.rs
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@palantir.com>2016-11-12 00:24:12 +0000
committerSteven Fackler <sfackler@palantir.com>2016-11-12 00:24:12 +0000
commit26a3358a2b70b46bf06403b2810c379f5299a551 (patch)
tree40efb4305948a67660bd6bcdbdf12d25d3871945 /openssl/src/x509/store.rs
parent6b7279eb5224a422860d0adb38becd5bca19763f (diff)
downloadrust-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.rs20
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(|_| ())
+ }
+ }
+}