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 683642dc..ec96c4fb 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 f8211b25..7bda47b5 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 zcmV;a1XlYnf&`@k0RRGm0RaH0^d*c$vlpXKh5jRvhtPO78%Y=cEl1Pk8{TX-{Fb={ zKk_%;zwa{=x@E=k(3-KDiZ)_T^+L$? z>Y2<1&2+gSWzNU}-9~KQ z0JJ-yvu<{Jp*<6blO9gR*Ngy5QdX+|y6O~O7<%Spk+IVh6EoY-4^hqL-IUy<--Pex zPEZtCT%h*Qtvfd8Dho9N0|5X50)hbn0HWjQgNX#C=#|Xr&A$|rAR_`nfqF|^vE_8` z2c;+Xic=e9axd|18_NU|`$ffBzVJy-gC)6avm8%*V7+ z1_t59C&GpC32iN`4t(E-NYO%S826Zkzq)RE-9;wc-Dij33EfeuV78P~IUh%vwBN$d zUuB8qY|+1c=rJpFKxztASvyT0VYFz>Ale5sRNp4S{nINLoMDnh=E1$>Sj%&We`-04 zD6-p!AX~h6p-Yy6u@-u^M}Wq};R1ny0NAAnWQ2}*Vp0Xd$s`2|+6&-Z^Jw64)*}Oe z_ZN-bl4Y`U<$d+gHhH?YTP@XHpnS=_BWd)T@pQ{zf1mZnNv|7%7taIPbaQBV@>vVq zlnF=rT5HUlPd}Js`tzJjjqL`sMzU8@_HXu73mwh=6n7FH11b$&pV_g%67N_VEdqgo z0LP_7AoFjmabS**yghHl8Mb3mflu0`YEQeF@TZ_gdtw zEc(=g$haaDlImCWw1;_$@)Tfl=wXrA&5!v9SK+2j=d}R*Us=Y3ml_81q}yMRZ0lo68qD3r%wQ}z zCh$?VD_8lNJ;)IZEa5cszT}I=-Vin!#_nK~-yQfqD9Qx}WJE1n9G8VxsXpFnHLng~ z0)c@5$3<8fBcg?ttnc3gA>8||Z7*>D~Kv+I$4zvy%An0)c@5lTMfFGT$Uqdt4*iAJD?I-!9|> zzMbamG^Li-7cR;pil@zMtqV5(6vNh9$_2EtOFf*w{_oidMMYJv9np`#NYn@sB~M&Z zz?Rudqk|Hf$ThqmY;O335u@G`JIt;LBKLY&wcpw~C?sGlQ