From 67b5fd1c9750d3434adca8d700e265a5238de3be Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sat, 6 May 2017 16:40:33 -0700 Subject: [PATCH] Support public key decode from DER Closes #629 --- openssl-sys/src/lib.rs | 1 + openssl/src/pkey.rs | 7 +++++++ openssl/test/key.der.pub | Bin 0 -> 294 bytes 3 files changed, 8 insertions(+) create mode 100644 openssl/test/key.der.pub diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index 0d03f3be..e3f78cfb 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -2014,6 +2014,7 @@ extern { 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_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; pub fn i2d_PUBKEY(k: *mut EVP_PKEY, buf: *mut *mut u8) -> c_int; diff --git a/openssl/src/pkey.rs b/openssl/src/pkey.rs index 31dc9d82..f8211b25 100644 --- a/openssl/src/pkey.rs +++ b/openssl/src/pkey.rs @@ -140,6 +140,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); /// Deserializes a DER-formatted PKCS#8 private key, using a callback to retrieve the password /// if the key is encrpyted. @@ -310,6 +311,12 @@ mod tests { PKey::public_key_from_pem(key).unwrap(); } + #[test] + fn test_public_key_from_der() { + let key = include_bytes!("../test/key.der.pub"); + PKey::public_key_from_der(key).unwrap(); + } + #[test] fn test_pem() { let key = include_bytes!("../test/key.pem"); diff --git a/openssl/test/key.der.pub b/openssl/test/key.der.pub new file mode 100644 index 0000000000000000000000000000000000000000..395b04a94b539dfeaac6cd567da787043027f616 GIT binary patch literal 294 zcmV+>0ondAf&n5h4F(A+hDe6@4FLfG1potr0S^E$f&mHwf&l>luU6MGn_40Ri}dwN z@vhb=Z^HB98^rxJ@#6tOl=Mn-(3yI4L%sqMDBLwcAdMQ8ond&)XdY^&MKU(RSH~_s@BghpE?S-IiLB>jW0gZG_YR$c2X>vw0s{d60bXc_hyVZp literal 0 HcmV?d00001