aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2014-10-08 12:59:19 -0400
committerSteven Fackler <[email protected]>2014-10-08 12:59:19 -0400
commit19eab0e7d729159104a0959c7c1209f1e8951db2 (patch)
treec8964af75d74b97a4ff408d2aaad7510ed2c939b /src
parentMerge pull request #73 from vhbit/minor-doc-fixes (diff)
parentX509 Generator sample (diff)
downloadrust-openssl-19eab0e7d729159104a0959c7c1209f1e8951db2.tar.xz
rust-openssl-19eab0e7d729159104a0959c7c1209f1e8951db2.zip
Merge pull request #74 from vhbit/doc-samples
X509 Generator sample
Diffstat (limited to 'src')
-rwxr-xr-xsrc/ffi.rs2
-rw-r--r--src/x509/mod.rs30
2 files changed, 31 insertions, 1 deletions
diff --git a/src/ffi.rs b/src/ffi.rs
index 40291869..93a25274 100755
--- a/src/ffi.rs
+++ b/src/ffi.rs
@@ -193,7 +193,7 @@ extern { }
pub unsafe fn BN_is_zero(a: *mut BIGNUM) -> c_int { bn_is_zero(a) }
/* Special import from native/bn_is_zero.c */
-#[link(name="wrapped")]
+#[link(name = "wrapped", kind = "static")]
extern "C" {
pub fn bn_is_zero(a: *mut BIGNUM) -> c_int;
}
diff --git a/src/x509/mod.rs b/src/x509/mod.rs
index f04f6ff1..88b81d7e 100644
--- a/src/x509/mod.rs
+++ b/src/x509/mod.rs
@@ -133,6 +133,36 @@ impl<'a, T: AsStr<'a>> ToStr for Vec<T> {
}
#[allow(non_snake_case)]
+/// Generator of private key/certificate pairs
+///
+/// # Example
+///
+/// ```
+/// use std::io::{File, Open, Write};
+/// # use std::io::fs;
+///
+/// use openssl::crypto::hash::SHA256;
+/// use openssl::x509::{DigitalSignature, X509Generator};
+///
+/// let gen = X509Generator::new()
+/// .set_bitlength(2048)
+/// .set_valid_period(365*2)
+/// .set_CN("SuperMegaCorp Inc.")
+/// .set_sign_hash(SHA256)
+/// .set_usage([DigitalSignature]);
+///
+/// let (cert, pkey) = gen.generate().unwrap();
+///
+/// let cert_path = Path::new("doc_cert.pem");
+/// let mut file = File::open_mode(&cert_path, Open, Write).unwrap();
+/// assert!(cert.write_pem(&mut file).is_ok());
+/// # let _ = fs::unlink(&cert_path);
+///
+/// let pkey_path = Path::new("doc_key.pem");
+/// let mut file = File::open_mode(&pkey_path, Open, Write).unwrap();
+/// assert!(pkey.write_pem(&mut file).is_ok());
+/// # let _ = fs::unlink(&pkey_path);
+/// ```
pub struct X509Generator {
bits: uint,
days: uint,