diff options
| author | Ole Herman Schumacher Elgesem <[email protected]> | 2018-02-14 02:08:01 +0100 |
|---|---|---|
| committer | Ole Herman Schumacher Elgesem <[email protected]> | 2018-02-14 02:08:01 +0100 |
| commit | 041d473c0a24439684b9976c7affebcaafc3efcf (patch) | |
| tree | 78c2e245583cdfedf473907fee1ef4157afe0e8b | |
| parent | Release openssl 0.10.3 and openssl-sys 0.9.25 (diff) | |
| download | rust-openssl-041d473c0a24439684b9976c7affebcaafc3efcf.tar.xz rust-openssl-041d473c0a24439684b9976c7affebcaafc3efcf.zip | |
Added binding for PEM_read_bio_RSAPublicKey
Signed-off-by: Ole Herman Schumacher Elgesem <[email protected]>
| -rw-r--r-- | openssl-sys/src/lib.rs | 8 | ||||
| -rw-r--r-- | openssl/src/rsa.rs | 27 | ||||
| -rw-r--r-- | openssl/test/pkcs1.pem.pub | 8 |
3 files changed, 43 insertions, 0 deletions
diff --git a/openssl-sys/src/lib.rs b/openssl-sys/src/lib.rs index a260e2a9..52b5eda4 100644 --- a/openssl-sys/src/lib.rs +++ b/openssl-sys/src/lib.rs @@ -2111,6 +2111,14 @@ extern "C" { callback: Option<PasswordCallback>, user_data: *mut c_void, ) -> *mut RSA; + + pub fn PEM_read_bio_RSAPublicKey( + bio: *mut BIO, + rsa: *mut *mut RSA, + callback: Option<PasswordCallback>, + user_data: *mut c_void, + ) -> *mut RSA; + pub fn PEM_read_bio_RSA_PUBKEY( bio: *mut BIO, rsa: *mut *mut RSA, diff --git a/openssl/src/rsa.rs b/openssl/src/rsa.rs index 472ca94f..dfa56d70 100644 --- a/openssl/src/rsa.rs +++ b/openssl/src/rsa.rs @@ -428,6 +428,19 @@ impl Rsa<Public> { ffi::PEM_read_bio_RSA_PUBKEY } + from_pem! { + /// Decodes a PEM-encoded PKCS#1 RSAPublicKey structure. + /// + /// The input should have a header of `-----BEGIN RSA PUBLIC KEY-----`. + /// + /// This corresponds to [`PEM_read_bio_RSAPublicKey`]. + /// + /// [`PEM_read_bio_RSAPublicKey`]: https://www.openssl.org/docs/man1.0.2/crypto/PEM_read_bio_RSAPublicKey.html + public_key_from_pem_pkcs1, + Rsa<Public>, + ffi::PEM_read_bio_RSAPublicKey + } + from_der! { /// Decodes a DER-encoded SubjectPublicKeyInfo structure containing an RSA key. /// @@ -732,4 +745,18 @@ mod test { .unwrap(); assert_eq!(msg, &dmesg[..len]); } + + #[test] + fn test_public_key_from_pem_pkcs1() { + let key = include_bytes!("../test/pkcs1.pem.pub"); + Rsa::public_key_from_pem_pkcs1(key).unwrap(); + } + + #[test] + #[should_panic] + fn test_public_key_from_pem_pkcs1_panic() { + let key = include_bytes!("../test/key.pem.pub"); + Rsa::public_key_from_pem_pkcs1(key).unwrap(); + } + } diff --git a/openssl/test/pkcs1.pem.pub b/openssl/test/pkcs1.pem.pub new file mode 100644 index 00000000..4d557048 --- /dev/null +++ b/openssl/test/pkcs1.pem.pub @@ -0,0 +1,8 @@ +-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEAyrcf7lv42BCoiDd3LYmF8eaGO4rhmGzGgi+NSZowkEuLhibHGQle +FkZC7h1VKsxKFgy7Fx+GYHkv9OLm9H5fdp3HhYlo19bZVGvSJ66OJe/Bc4S02bBb +Y8vwpc/N5O77m5J/nHLuL7XJtpfSKkX+3NPiX1X2L99iipt7F0a7hNws3G3Lxg6t +P3Yc55TPjXzXvDIgjt/fag6iF8L/bR3augJJdDhLzNucR8A5HcvPtIVo51R631Zq +MCh+dZvgz9zGCXwsvSky/iOJTHN3wnpsWuCAzS1iJMfjR783Tfv6sWFs19FH7pHP +xBA3b2enPM9KBzINGOly0eM4h0fh+VBltQIDAQAB +-----END RSA PUBLIC KEY----- |