aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/pkey.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2017-01-31 14:55:11 -0800
committerGitHub <[email protected]>2017-01-31 14:55:11 -0800
commit7bd90dcb18ac9dccbbd68d7b5d0ace704dcc8447 (patch)
treea6614602603c645617e15286f9fc92385e651735 /openssl/src/pkey.rs
parentMerge pull request #569 from sfackler/expando (diff)
parentFixed constant names from openssl/rsa.h (diff)
downloadrust-openssl-7bd90dcb18ac9dccbbd68d7b5d0ace704dcc8447.tar.xz
rust-openssl-7bd90dcb18ac9dccbbd68d7b5d0ace704dcc8447.zip
Merge pull request #570 from brianchin/add_evp_pkey_ctx_ctrl
Add PKey context options
Diffstat (limited to 'openssl/src/pkey.rs')
-rw-r--r--openssl/src/pkey.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/openssl/src/pkey.rs b/openssl/src/pkey.rs
index 7a32692b..c9f5ec1b 100644
--- a/openssl/src/pkey.rs
+++ b/openssl/src/pkey.rs
@@ -8,7 +8,7 @@ use bio::MemBioSlice;
use dh::Dh;
use dsa::Dsa;
use ec::EcKey;
-use rsa::Rsa;
+use rsa::{Rsa, Padding};
use error::ErrorStack;
use util::{CallbackState, invoke_passwd_cb_old};
use types::{OpenSslType, OpenSslTypeRef};
@@ -151,6 +151,29 @@ impl PKey {
}
}
+pub struct PKeyCtxRef(::util::Opaque);
+
+impl PKeyCtxRef {
+ pub fn set_rsa_padding(&mut self, pad: Padding) -> Result<(), ErrorStack> {
+ unsafe {
+ try!(cvt(ffi::EVP_PKEY_CTX_set_rsa_padding(self.as_ptr(), pad.as_raw())));
+ }
+ Ok(())
+ }
+
+ pub fn rsa_padding(&self) -> Result<Padding, ErrorStack> {
+ let mut pad: c_int = 0;
+ unsafe {
+ try!(cvt(ffi::EVP_PKEY_CTX_get_rsa_padding(self.as_ptr(), &mut pad)));
+ };
+ Ok(Padding::from_raw(pad))
+ }
+}
+
+impl ::types::OpenSslTypeRef for PKeyCtxRef {
+ type CType = ffi::EVP_PKEY_CTX;
+}
+
#[cfg(test)]
mod tests {
use symm::Cipher;