mirror of https://github.com/ctz/rustls
Track upstream crates
This commit is contained in:
parent
c8d31c1e29
commit
9fe63eb9cb
|
@ -13,12 +13,12 @@ untrusted = "0.3.1"
|
|||
time = "0.1.35"
|
||||
base64 = "~0.2.0"
|
||||
log = "0.3.6"
|
||||
ring = { version = "0.3", features = ["rsa_signing"] }
|
||||
webpki = "0.2.1"
|
||||
ring = { version = "0.4", features = ["rsa_signing"] }
|
||||
webpki = "0.3.0"
|
||||
|
||||
[dev-dependencies]
|
||||
env_logger = "0.3.3"
|
||||
mio = "0.5.1"
|
||||
docopt = "0.6"
|
||||
rustc-serialize = "0.3"
|
||||
webpki-roots = "0.1.0"
|
||||
webpki-roots = "0.2.0"
|
||||
|
|
22
src/sign.rs
22
src/sign.rs
|
@ -1,6 +1,8 @@
|
|||
use msgs::enums::{HashAlgorithm, SignatureAlgorithm};
|
||||
use untrusted;
|
||||
use ring;
|
||||
use ring::signature;
|
||||
use std::sync::Arc;
|
||||
|
||||
/// A thing that can sign a message.
|
||||
pub trait Signer {
|
||||
|
@ -13,14 +15,14 @@ pub trait Signer {
|
|||
|
||||
/// A Signer for RSA-PKCS1
|
||||
pub struct RSASigner {
|
||||
key: ring::signature::RSAKeyPair
|
||||
key: Arc<signature::RSAKeyPair>
|
||||
}
|
||||
|
||||
impl RSASigner {
|
||||
pub fn new(der: &[u8]) -> Result<RSASigner, ()> {
|
||||
let key = ring::signature::RSAKeyPair::from_der(untrusted::Input::from(der));
|
||||
let key = signature::RSAKeyPair::from_der(untrusted::Input::from(der));
|
||||
key
|
||||
.map(|k| RSASigner { key: k })
|
||||
.map(|s| RSASigner { key: Arc::new(s) })
|
||||
.map_err(|_| ())
|
||||
}
|
||||
}
|
||||
|
@ -29,13 +31,19 @@ impl Signer for RSASigner {
|
|||
fn sign(&self, hash_alg: &HashAlgorithm, message: &[u8]) -> Result<Vec<u8>, ()> {
|
||||
let mut sig = vec![0; self.key.public_modulus_len()];
|
||||
let pad = match hash_alg {
|
||||
&HashAlgorithm::SHA256 => &ring::signature::RSA_PKCS1_SHA256,
|
||||
&HashAlgorithm::SHA384 => &ring::signature::RSA_PKCS1_SHA384,
|
||||
&HashAlgorithm::SHA512 => &ring::signature::RSA_PKCS1_SHA512,
|
||||
&HashAlgorithm::SHA256 => &signature::RSA_PKCS1_SHA256,
|
||||
&HashAlgorithm::SHA384 => &signature::RSA_PKCS1_SHA384,
|
||||
&HashAlgorithm::SHA512 => &signature::RSA_PKCS1_SHA512,
|
||||
_ => unreachable!()
|
||||
};
|
||||
|
||||
let rng = ring::rand::SystemRandom::new();
|
||||
self.key.sign(pad, &rng, message, &mut sig)
|
||||
let mut signer = try!(
|
||||
signature::RSASigningState::new(self.key.clone())
|
||||
.map_err(|_| ())
|
||||
);
|
||||
|
||||
signer.sign(pad, &rng, message, &mut sig)
|
||||
.map(|_| sig)
|
||||
.map_err(|_| ())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue