aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/x509/store.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/src/x509/store.rs')
-rw-r--r--openssl/src/x509/store.rs46
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;
}