aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/pkcs12.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/src/pkcs12.rs')
-rw-r--r--openssl/src/pkcs12.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/openssl/src/pkcs12.rs b/openssl/src/pkcs12.rs
index 31864802..31aae536 100644
--- a/openssl/src/pkcs12.rs
+++ b/openssl/src/pkcs12.rs
@@ -42,7 +42,12 @@ impl Pkcs12Ref {
let pkey = PKey::from_ptr(pkey);
let cert = X509::from_ptr(cert);
- let chain = Stack::from_ptr(chain);
+
+ let chain = if chain.is_null() {
+ try!(Stack::new())
+ } else {
+ Stack::from_ptr(chain)
+ };
Ok(ParsedPkcs12 {
pkey: pkey,
@@ -80,6 +85,7 @@ impl Pkcs12 {
pub struct ParsedPkcs12 {
pub pkey: PKey,
pub cert: X509,
+ // FIXME Make this Option<Stack> in the next breaking release
pub chain: Stack<X509>,
}
@@ -202,7 +208,6 @@ mod test {
let pkcs12 = Pkcs12::from_der(der).unwrap();
let parsed = pkcs12.parse("cassandra").unwrap();
-
assert_eq!(parsed.chain.len(), 0);
assert_eq!(parsed.chain.into_iter().collect::<Vec<_>>().len(), 0);
}