aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2015-03-21 13:53:25 -0400
committerSteven Fackler <[email protected]>2015-03-21 13:53:25 -0400
commit20335c4f00995da172c3c0b4f1d64c3a84c9772c (patch)
treecd75902435c2940a2479cc455333368ab672ebd5 /openssl/src
parentFix doc test (diff)
parentAdd X509Generator::sign() (diff)
downloadrust-openssl-20335c4f00995da172c3c0b4f1d64c3a84c9772c.tar.xz
rust-openssl-20335c4f00995da172c3c0b4f1d64c3a84c9772c.zip
Merge pull request #187 from manuels/x509_sign
Add X509Generator::sign()
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/x509/mod.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs
index 33ed1fa5..b031a239 100644
--- a/openssl/src/x509/mod.rs
+++ b/openssl/src/x509/mod.rs
@@ -298,6 +298,15 @@ impl X509Generator {
let mut p_key = PKey::new();
p_key.gen(self.bits as usize);
+ let x509 = try!(self.sign(&p_key));
+ Ok((x509, p_key))
+ }
+
+ /// Signs certificate with a private key and returns it
+ /// Note: That the bit-length of the private key is used (set_bitlength is ignored)
+ pub fn sign<'a>(&self, p_key: &PKey) -> Result<X509<'a>, SslError> {
+ ffi::init();
+
unsafe {
let x509 = ffi::X509_new();
try_ssl_null!(x509);
@@ -338,7 +347,7 @@ impl X509Generator {
let hash_fn = self.hash_type.evp_md();
try_ssl!(ffi::X509_sign(x509.handle, p_key.get_handle(), hash_fn));
- Ok((x509, p_key))
+ Ok(x509)
}
}
}