Commit 9f4c4895 authored by oberien's avatar oberien
Browse files

Use d2i_PKCS8_PRIV_KEY_INFO instead of *_bio

parent fc529b6c
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -137,9 +137,10 @@ extern "C" {
        cb: pem_password_cb,
        u: *mut c_void,
    ) -> *mut EVP_PKEY;
    pub fn d2i_PKCS8_PRIV_KEY_INFO_bio(
        bp: *mut BIO,
        x: *mut *mut PKCS8_PRIV_KEY_INFO,
    pub fn d2i_PKCS8_PRIV_KEY_INFO(
        k: *mut *mut PKCS8_PRIV_KEY_INFO,
        buf: *mut *const u8,
        length: c_long,
    ) -> *mut PKCS8_PRIV_KEY_INFO;
    pub fn PKCS8_PRIV_KEY_INFO_free(
        p8inf: *mut PKCS8_PRIV_KEY_INFO,
+5 −4
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@

use ffi;
use foreign_types::{ForeignType, ForeignTypeRef};
use libc::c_int;
use libc::{c_int, c_long};
use std::ffi::CString;
use std::mem;
use std::ptr;
@@ -533,10 +533,11 @@ impl PKey<Private> {
    {
        unsafe {
            ffi::init();
            let bio = MemBioSlice::new(der)?;
            let p8inf = cvt_p(ffi::d2i_PKCS8_PRIV_KEY_INFO_bio(
                bio.as_ptr(),
            let len = der.len().min(c_long::max_value() as usize) as c_long;
            let p8inf = cvt_p(ffi::d2i_PKCS8_PRIV_KEY_INFO(
                ptr::null_mut(),
                &mut der.as_ptr(),
                len,
            ))?;
            let res = cvt_p(ffi::EVP_PKCS82PKEY(p8inf))
                .map(|p| PKey::from_ptr(p));