diff --git a/openssl-sys/src/pem.rs b/openssl-sys/src/pem.rs index 7dc37b59..c7d79773 100644 --- a/openssl-sys/src/pem.rs +++ b/openssl-sys/src/pem.rs @@ -141,6 +141,9 @@ extern "C" { bp: *mut BIO, x: *mut *mut PKCS8_PRIV_KEY_INFO, ) -> *mut PKCS8_PRIV_KEY_INFO; + pub fn PKCS8_PRIV_KEY_INFO_free( + p8inf: *mut PKCS8_PRIV_KEY_INFO, + ); pub fn PEM_read_bio_PKCS7( bio: *mut BIO, diff --git a/openssl/src/pkey.rs b/openssl/src/pkey.rs index bcbfc385..b5a12bf7 100644 --- a/openssl/src/pkey.rs +++ b/openssl/src/pkey.rs @@ -538,8 +538,10 @@ impl PKey { bio.as_ptr(), ptr::null_mut(), ))?; - cvt_p(ffi::EVP_PKCS82PKEY(p8inf)) - .map(|p| PKey::from_ptr(p)) + let res = cvt_p(ffi::EVP_PKCS82PKEY(p8inf)) + .map(|p| PKey::from_ptr(p)); + ffi::PKCS8_PRIV_KEY_INFO_free(p8inf); + res } }