aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/crypto/rsa.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-05-16 23:02:02 -0700
committerSteven Fackler <[email protected]>2016-05-16 23:03:13 -0700
commit2077449bc87b87f96c8ec6248c5c7060d4bc58bf (patch)
tree765be2277cb3a02adc37a24b538bd0adcd86ef6c /openssl/src/crypto/rsa.rs
parentMerge pull request #360 from pingzing/master (diff)
downloadrust-openssl-2077449bc87b87f96c8ec6248c5c7060d4bc58bf.tar.xz
rust-openssl-2077449bc87b87f96c8ec6248c5c7060d4bc58bf.zip
Clean up RSA signature API
Diffstat (limited to 'openssl/src/crypto/rsa.rs')
-rw-r--r--openssl/src/crypto/rsa.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/openssl/src/crypto/rsa.rs b/openssl/src/crypto/rsa.rs
index 021d450b..33385687 100644
--- a/openssl/src/crypto/rsa.rs
+++ b/openssl/src/crypto/rsa.rs
@@ -3,10 +3,12 @@ use std::fmt;
use ssl::error::{SslError, StreamError};
use std::ptr;
use std::io::{self, Read, Write};
+use libc::c_int;
use bn::BigNum;
use bio::MemBio;
-use nid::Nid;
+use crypto::HashTypeInternals;
+use crypto::hash;
pub struct RSA(*mut ffi::RSA);
@@ -130,13 +132,13 @@ impl RSA {
}
}
- pub fn sign(&self, hash_id: Nid, message: &[u8]) -> Result<Vec<u8>, SslError> {
+ pub fn sign(&self, hash: hash::Type, message: &[u8]) -> Result<Vec<u8>, SslError> {
let k_len = try!(self.size());
let mut sig = vec![0;k_len as usize];
let mut sig_len = k_len;
unsafe {
- let result = ffi::RSA_sign(hash_id as i32, message.as_ptr(), message.len() as u32, sig.as_mut_ptr(), &mut sig_len, self.0);
+ let result = ffi::RSA_sign(hash.as_nid() as c_int, message.as_ptr(), message.len() as u32, sig.as_mut_ptr(), &mut sig_len, self.0);
assert!(sig_len == k_len);
if result == 1 {
@@ -147,9 +149,9 @@ impl RSA {
}
}
- pub fn verify(&self, hash_id: Nid, message: &[u8], sig: &[u8]) -> Result<bool, SslError> {
+ pub fn verify(&self, hash: hash::Type, message: &[u8], sig: &[u8]) -> Result<bool, SslError> {
unsafe {
- let result = ffi::RSA_verify(hash_id as i32, message.as_ptr(), message.len() as u32, sig.as_ptr(), sig.len() as u32, self.0);
+ let result = ffi::RSA_verify(hash.as_nid() as c_int, message.as_ptr(), message.len() as u32, sig.as_ptr(), sig.len() as u32, self.0);
Ok(result == 1)
}
@@ -211,7 +213,6 @@ impl fmt::Debug for RSA {
#[cfg(test)]
mod test {
- use nid;
use std::fs::File;
use std::io::Write;
use super::*;
@@ -258,7 +259,7 @@ mod test {
sha.write_all(&signing_input_rs256()).unwrap();
let digest = sha.finish();
- let result = private_key.sign(nid::Nid::SHA256, &digest).unwrap();
+ let result = private_key.sign(Type::SHA256, &digest).unwrap();
assert_eq!(result, signature_rs256());
}
@@ -272,8 +273,8 @@ mod test {
sha.write_all(&signing_input_rs256()).unwrap();
let digest = sha.finish();
- let result = public_key.verify(nid::Nid::SHA256, &digest, &signature_rs256()).unwrap();
+ let result = public_key.verify(Type::SHA256, &digest, &signature_rs256()).unwrap();
assert!(result);
}
-} \ No newline at end of file
+}