Implement Pkcs12 via type_!
This commit is contained in:
parent
4e2ffe5b9b
commit
96a5ccfc6b
|
|
@ -10,19 +10,10 @@ use {cvt, cvt_p};
|
||||||
use pkey::PKey;
|
use pkey::PKey;
|
||||||
use error::ErrorStack;
|
use error::ErrorStack;
|
||||||
use x509::X509;
|
use x509::X509;
|
||||||
use types::OpenSslType;
|
use types::{OpenSslType, OpenSslTypeRef};
|
||||||
use stack::Stack;
|
use stack::Stack;
|
||||||
|
|
||||||
/// A PKCS #12 archive.
|
type_!(Pkcs12, Pkcs12Ref, ffi::PKCS12, ffi::PKCS12_free);
|
||||||
pub struct Pkcs12(*mut ffi::PKCS12);
|
|
||||||
|
|
||||||
impl Drop for Pkcs12 {
|
|
||||||
fn drop(&mut self) {
|
|
||||||
unsafe {
|
|
||||||
ffi::PKCS12_free(self.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Pkcs12 {
|
impl Pkcs12 {
|
||||||
/// Deserializes a `Pkcs12` structure from DER-encoded data.
|
/// Deserializes a `Pkcs12` structure from DER-encoded data.
|
||||||
|
|
@ -35,7 +26,9 @@ impl Pkcs12 {
|
||||||
Ok(Pkcs12(p12))
|
Ok(Pkcs12(p12))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Pkcs12Ref {
|
||||||
/// Extracts the contents of the `Pkcs12`.
|
/// Extracts the contents of the `Pkcs12`.
|
||||||
pub fn parse(&self, pass: &str) -> Result<ParsedPkcs12, ErrorStack> {
|
pub fn parse(&self, pass: &str) -> Result<ParsedPkcs12, ErrorStack> {
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|
@ -45,7 +38,11 @@ impl Pkcs12 {
|
||||||
let mut cert = ptr::null_mut();
|
let mut cert = ptr::null_mut();
|
||||||
let mut chain = ptr::null_mut();
|
let mut chain = ptr::null_mut();
|
||||||
|
|
||||||
try!(cvt(ffi::PKCS12_parse(self.0, pass.as_ptr(), &mut pkey, &mut cert, &mut chain)));
|
try!(cvt(ffi::PKCS12_parse(self.as_ptr(),
|
||||||
|
pass.as_ptr(),
|
||||||
|
&mut pkey,
|
||||||
|
&mut cert,
|
||||||
|
&mut chain)));
|
||||||
|
|
||||||
let pkey = PKey::from_ptr(pkey);
|
let pkey = PKey::from_ptr(pkey);
|
||||||
let cert = X509::from_ptr(cert);
|
let cert = X509::from_ptr(cert);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue