diff options
Diffstat (limited to 'openssl/src/x509/store.rs')
| -rw-r--r-- | openssl/src/x509/store.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/openssl/src/x509/store.rs b/openssl/src/x509/store.rs index 198679b5..876e4246 100644 --- a/openssl/src/x509/store.rs +++ b/openssl/src/x509/store.rs @@ -1,3 +1,45 @@ +//! Describe a context in which to verify an `X509` certificate. +//! +//! The `X509` certificate store holds trusted CA certificates used to verify +//! peer certificates. +//! +//! # Example +//! +//! ```rust +//! +//! extern crate openssl; +//! +//! use openssl::x509::store::{X509StoreBuilder, X509Store}; +//! use openssl::x509::{X509, X509Name}; +//! use openssl::pkey::PKey; +//! use openssl::hash::MessageDigest; +//! use openssl::rsa::Rsa; +//! use openssl::nid::Nid; +//! +//! fn main() { +//! let rsa = Rsa::generate(2048).unwrap(); +//! let pkey = PKey::from_rsa(rsa).unwrap(); +//! +//! let mut name = X509Name::builder().unwrap(); +//! name.append_entry_by_nid(Nid::COMMONNAME, "foobar.com").unwrap(); +//! let name = name.build(); +//! +//! let mut builder = X509::builder().unwrap(); +//! builder.set_version(2).unwrap(); +//! builder.set_subject_name(&name).unwrap(); +//! builder.set_issuer_name(&name).unwrap(); +//! builder.set_pubkey(&pkey).unwrap(); +//! builder.sign(&pkey, MessageDigest::sha256()).unwrap(); +//! +//! let certificate: X509 = builder.build(); +//! +//! let mut builder = X509StoreBuilder::new().unwrap(); +//! let _ = builder.add_cert(certificate); +//! +//! let store: X509Store = builder.build(); +//! } +//! ``` + use ffi; use foreign_types::ForeignTypeRef; use std::mem; @@ -10,7 +52,9 @@ foreign_type! { type CType = ffi::X509_STORE; fn drop = ffi::X509_STORE_free; + /// A builder type used to construct an `X509Store`. pub struct X509StoreBuilder; + /// Reference to an `X509StoreBuilder`. pub struct X509StoreBuilderRef; } @@ -58,6 +102,8 @@ foreign_type! { type CType = ffi::X509_STORE; fn drop = ffi::X509_STORE_free; + /// A certificate store to hold trusted `X509` certificates. pub struct X509Store; + /// Reference to an `X509Store`. pub struct X509StoreRef; } |