aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/x509/mod.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-07-29 09:05:51 -0700
committerGitHub <[email protected]>2016-07-29 09:05:51 -0700
commit4eaada2c4b9e4be8d349cf537db0004df7867e3f (patch)
tree189aa150549862165d706d5ca7e5776899f5101f /openssl/src/x509/mod.rs
parentMerge pull request #428 from onur/get_handle_for_X509Req (diff)
parentImplement save_der for X509 and X509Req (diff)
downloadrust-openssl-4eaada2c4b9e4be8d349cf537db0004df7867e3f.tar.xz
rust-openssl-4eaada2c4b9e4be8d349cf537db0004df7867e3f.zip
Merge pull request #427 from onur/save_der
Implement save_der for X509 and X509Req
Diffstat (limited to 'openssl/src/x509/mod.rs')
-rw-r--r--openssl/src/x509/mod.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs
index daeb9283..c9d1772d 100644
--- a/openssl/src/x509/mod.rs
+++ b/openssl/src/x509/mod.rs
@@ -532,6 +532,17 @@ impl<'ctx> X509<'ctx> {
}
io::copy(&mut mem_bio, writer).map_err(StreamError).map(|_| ())
}
+
+ /// Returns a DER serialized form of the certificate
+ pub fn save_der(&self) -> Result<Vec<u8>, SslError> {
+ let mut mem_bio = try!(MemBio::new());
+ unsafe {
+ ffi::i2d_X509_bio(mem_bio.get_handle(), self.handle);
+ }
+ let mut v = Vec::new();
+ try!(io::copy(&mut mem_bio, &mut v).map_err(StreamError));
+ Ok(v)
+ }
}
extern "C" {
@@ -641,6 +652,17 @@ impl X509Req {
}
io::copy(&mut mem_bio, writer).map_err(StreamError).map(|_| ())
}
+
+ /// Returns a DER serialized form of the CSR
+ pub fn save_der(&self) -> Result<Vec<u8>, SslError> {
+ let mut mem_bio = try!(MemBio::new());
+ unsafe {
+ ffi::i2d_X509_REQ_bio(mem_bio.get_handle(), self.handle);
+ }
+ let mut v = Vec::new();
+ try!(io::copy(&mut mem_bio, &mut v).map_err(StreamError));
+ Ok(v)
+ }
}
impl Drop for X509Req {