diff options
author | Teddy Wing | 2018-11-06 02:36:06 +0100 |
---|---|---|
committer | Teddy Wing | 2018-11-06 02:36:06 +0100 |
commit | 4aa1c293b4deb97e588268bbd00949d12a26135e (patch) | |
tree | 7bed6bae2908400539e11ea8f254d69a8ac946cb | |
parent | ab1c6cedb642263ba25812457e60c4e7b1464f0b (diff) | |
download | dome-key-web-4aa1c293b4deb97e588268bbd00949d12a26135e.tar.bz2 |
AquaticPrime::sign(): Return an error if public key != 1024 bits
This check was reproduced from Aquatic Prime's C signature generator:
https://github.com/bdrister/AquaticPrime/blob/master/Source/PHP/AquaticPrimeCLI.c#L46-L49
In the case of this library, we should return an error to take
advantage of being able to return a `Result`.
-rw-r--r-- | license-generator/aquatic-prime/src/lib.rs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/license-generator/aquatic-prime/src/lib.rs b/license-generator/aquatic-prime/src/lib.rs index 26666a1..c7f43a4 100644 --- a/license-generator/aquatic-prime/src/lib.rs +++ b/license-generator/aquatic-prime/src/lib.rs @@ -5,7 +5,14 @@ extern crate error_chain; extern crate openssl; mod errors { - error_chain! {} + error_chain! { + errors { + PublicKeyIncorrectNumBits(bits: i32) { + description("public key has incorrect bit size") + display("public key has incorrect bit size: '{}'", bits) + } + } + } } use std::collections::HashMap; @@ -45,8 +52,11 @@ impl<'a> AquaticPrime<'a> { let rsa_e = BigNum::from_u32(3) .chain_err(|| "public exponent could not be converted to BigNum")?; - if public_key.num_bits() != 1024 { - // TODO: Return Err + let public_key_bit_size = public_key.num_bits(); + if public_key_bit_size != 1024 { + return Err( + ErrorKind::PublicKeyIncorrectNumBits(public_key_bit_size).into() + ); } let digest = sha1(data.as_bytes()); |