From 575e682da3aa3e55bc415ad44f49417b8be2cecc Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Fri, 23 Jun 2017 21:04:13 -0700 Subject: [PATCH] Add PKey::private_key_from_der --- openssl-sys/src/lib.rs | 1 + openssl/src/pkey.rs | 7 +++++++ openssl/test/key.der | Bin 0 -> 1193 bytes 3 files changed, 8 insertions(+) create mode 100644 openssl/test/key.der diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 683642dcf..ec96c4fb6 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -2412,6 +2412,7 @@ extern "C" { pub fn i2d_X509_REQ_bio(b: *mut BIO, x: *mut X509_REQ) -> c_int; pub fn i2d_X509_REQ(x: *mut X509_REQ, buf: *mut *mut u8) -> c_int; + pub fn d2i_AutoPrivateKey(a: *mut *mut EVP_PKEY, pp: *mut *const c_uchar, length: c_long) -> *mut EVP_PKEY; pub fn d2i_PUBKEY(k: *mut *mut EVP_PKEY, buf: *mut *const u8, len: c_long) -> *mut EVP_PKEY; pub fn i2d_PUBKEY_bio(b: *mut BIO, x: *mut EVP_PKEY) -> c_int; pub fn i2d_PrivateKey_bio(b: *mut BIO, x: *mut EVP_PKEY) -> c_int; diff --git a/openssl/src/pkey.rs b/openssl/src/pkey.rs index f8211b25e..7bda47b56 100644 --- a/openssl/src/pkey.rs +++ b/openssl/src/pkey.rs @@ -141,6 +141,7 @@ impl PKey { private_key_from_pem!(PKey, ffi::PEM_read_bio_PrivateKey); public_key_from_pem!(PKey, ffi::PEM_read_bio_PUBKEY); public_key_from_der!(PKey, ffi::d2i_PUBKEY); + private_key_from_der!(PKey, ffi::d2i_AutoPrivateKey); /// Deserializes a DER-formatted PKCS#8 private key, using a callback to retrieve the password /// if the key is encrpyted. @@ -317,6 +318,12 @@ mod tests { PKey::public_key_from_der(key).unwrap(); } + #[test] + fn test_private_key_from_der() { + let key = include_bytes!("../test/key.der"); + PKey::private_key_from_der(key).unwrap(); + } + #[test] fn test_pem() { let key = include_bytes!("../test/key.pem"); diff --git a/openssl/test/key.der b/openssl/test/key.der new file mode 100644 index 0000000000000000000000000000000000000000..6b6209fd1fbe809a335cf29b263d9ffd5d1b9da0 GIT binary patch literal 1193 zcmXqLVp+<>$iURZ$jGqbi)xR{X7R-Vt^brKwqK|)llBz^zve3$r%P>M~36|LSz& z>#Lb(SkIR1RCw|-K1x;f>z*}yrolmn6c1cE5&lc>TK)c0mnv5M@_T6Iky;Tc);K$4 zb#FqPY-r8v1ryg@nRHEk^3Bz(8+iKCmM)x}erqxhBTr~^%fpVH+t2-;w(9Ev&zvi% z=T0!*b<4TOu*G`e=Df11g|@;SljZ!5UhiS>4hmcKZ`Ui4IEkufDHAtd77;eSeV#w? z?6bR5?ku_A^8T4$fJkJ_f^QerTARJl;x=VsW@KOlhs2`CFPb}9mcE#J=H=P_B9j%A znH(Fdykj;#EqTYjRQ>yt`?lOWlixp^TPFPRX^iZSy}ld&X^P}-{$6of>Y&VF!4(0k zlGAKFB^X;7PJhwtzSzs#{rt|Z=E`%*VeAt$^;dqWZ9eN2yojsjtnB{(I=6QwB;0;j z|6ihdudmQW5vFs>XO3?PVq<%FRQ*uvN6uW`HGDPq+dVEiWl4OW(Yk+EUe#S!wL5py z+aGY=4P2G5ZA!4Ey!*^8_Ya+qPwjk~b8&y|3q$P^hb*qpNNZoY#4Qz?aO}uKrp88w8%sG- zTKX!If>;loRAJ@1#r+`WbH;^!Pc$fdO%YtG~ z$Go}DFFMPteba27T0OV)`*Nm_c}caLmrA}zJz1;s>q_&99ZDjTUWI?%(q7s1NzyJ) zJDJ%iFTgWS@_3%#l~wJ@_59yAFD;Yd-uFZ9q3@lk>n|MLsq%N%KedlL`NL1$kB>N_ zoOQr9bbXU1Q)5HjfeQlm^Q;eYokrSJKN&EnXx} zym7YwCwutAWxmh1GW>~;Jk~s2itY1~+wl`}UMG7=owbLR<;xu-DsKVt>G)}?q!*-=Su_!gKLDO@}kyh zYu?{yR=o3jZLWSnBL7~g-35W%9f|M1B&zQH^=0b%i6$#9t>(|y39ol;5nC6tZSHBG z_3X<;))`CNgznp*tmkYqUo!dJ;}_;u+h6rW^jw{!BJ9QzeC6%i;=+{%Z+&{5-|p}= zDtSIn$&`JC+@+Uyf0y2>VR^WD(vOcIH%#`M{>tdSN^o_I@@@GGhqm0;d&0bL?z1;0 zOQ&5E*E^-$wft=MT5hv{B8RUi5&$}(xWi9+AKi#GM JH`7}oeE{ZnPQL&E literal 0 HcmV?d00001 -- GitLab