Use d2i_PKCS8_PRIV_KEY_INFO instead of *_bio
This commit is contained in:
parent
fc529b6c81
commit
9f4c489588
|
|
@ -137,9 +137,10 @@ extern "C" {
|
||||||
cb: pem_password_cb,
|
cb: pem_password_cb,
|
||||||
u: *mut c_void,
|
u: *mut c_void,
|
||||||
) -> *mut EVP_PKEY;
|
) -> *mut EVP_PKEY;
|
||||||
pub fn d2i_PKCS8_PRIV_KEY_INFO_bio(
|
pub fn d2i_PKCS8_PRIV_KEY_INFO(
|
||||||
bp: *mut BIO,
|
k: *mut *mut PKCS8_PRIV_KEY_INFO,
|
||||||
x: *mut *mut PKCS8_PRIV_KEY_INFO,
|
buf: *mut *const u8,
|
||||||
|
length: c_long,
|
||||||
) -> *mut PKCS8_PRIV_KEY_INFO;
|
) -> *mut PKCS8_PRIV_KEY_INFO;
|
||||||
pub fn PKCS8_PRIV_KEY_INFO_free(
|
pub fn PKCS8_PRIV_KEY_INFO_free(
|
||||||
p8inf: *mut PKCS8_PRIV_KEY_INFO,
|
p8inf: *mut PKCS8_PRIV_KEY_INFO,
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use foreign_types::{ForeignType, ForeignTypeRef};
|
use foreign_types::{ForeignType, ForeignTypeRef};
|
||||||
use libc::c_int;
|
use libc::{c_int, c_long};
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
@ -533,10 +533,11 @@ impl PKey<Private> {
|
||||||
{
|
{
|
||||||
unsafe {
|
unsafe {
|
||||||
ffi::init();
|
ffi::init();
|
||||||
let bio = MemBioSlice::new(der)?;
|
let len = der.len().min(c_long::max_value() as usize) as c_long;
|
||||||
let p8inf = cvt_p(ffi::d2i_PKCS8_PRIV_KEY_INFO_bio(
|
let p8inf = cvt_p(ffi::d2i_PKCS8_PRIV_KEY_INFO(
|
||||||
bio.as_ptr(),
|
|
||||||
ptr::null_mut(),
|
ptr::null_mut(),
|
||||||
|
&mut der.as_ptr(),
|
||||||
|
len,
|
||||||
))?;
|
))?;
|
||||||
let res = cvt_p(ffi::EVP_PKCS82PKEY(p8inf))
|
let res = cvt_p(ffi::EVP_PKCS82PKEY(p8inf))
|
||||||
.map(|p| PKey::from_ptr(p));
|
.map(|p| PKey::from_ptr(p));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue