diff options
| author | Steven Fackler <[email protected]> | 2018-04-21 14:22:40 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-04-21 14:22:40 -0700 |
| commit | 6252829f4bedc88f7d2569de5a92a86be8268b39 (patch) | |
| tree | 84effaebac73582a6634d49d6c6294d962d10413 /openssl/src | |
| parent | Merge pull request #899 from rohit-lshift/master (diff) | |
| parent | Add functions to X509Req to obtain public key and extensions (diff) | |
| download | rust-openssl-6252829f4bedc88f7d2569de5a92a86be8268b39.tar.xz rust-openssl-6252829f4bedc88f7d2569de5a92a86be8268b39.zip | |
Merge pull request #903 from Richterrettich/master
Add functions to X509Req to obtain public key and extensions
Diffstat (limited to 'openssl/src')
| -rw-r--r-- | openssl/src/x509/mod.rs | 22 | ||||
| -rw-r--r-- | openssl/src/x509/tests.rs | 4 |
2 files changed, 26 insertions, 0 deletions
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs index 011a2d96..c1ae3b16 100644 --- a/openssl/src/x509/mod.rs +++ b/openssl/src/x509/mod.rs @@ -1069,6 +1069,28 @@ impl X509ReqRef { X509NameRef::from_ptr(name) } } + + /// Returns the public key of the certificate request. + /// + /// This corresponds to [`X509_REQ_get_pubkey"] + /// + /// [`X509_REQ_get_pubkey`]: https://www.openssl.org/docs/man1.1.0/crypto/X509_REQ_get_pubkey.html + pub fn public_key(&self) -> Result<PKey<Public>, ErrorStack> { + unsafe { + let key = cvt_p(ffi::X509_REQ_get_pubkey(self.as_ptr()))?; + Ok(PKey::from_ptr(key)) + } + } + + /// Returns the extensions of the certificate request. + /// + /// This corresponds to [`X509_REQ_get_extensions"] + pub fn extensions(&self) -> Result<Stack<X509Extension>, ErrorStack> { + unsafe { + let extensions = cvt_p(ffi::X509_REQ_get_extensions(self.as_ptr()))?; + Ok(Stack::from_ptr(extensions)) + } + } } /// The result of peer certificate verification. diff --git a/openssl/src/x509/tests.rs b/openssl/src/x509/tests.rs index fa8056ad..7ef4d160 100644 --- a/openssl/src/x509/tests.rs +++ b/openssl/src/x509/tests.rs @@ -234,6 +234,10 @@ fn x509_req_builder() { builder.add_extensions(&extensions).unwrap(); builder.sign(&pkey, MessageDigest::sha256()).unwrap(); + + let req = builder.build(); + assert!(req.public_key().unwrap().public_eq(&pkey)); + assert_eq!(req.extensions().unwrap().len(), extensions.len()); } #[test] |