diff options
author | Teddy Wing | 2018-11-06 02:03:23 +0100 |
---|---|---|
committer | Teddy Wing | 2018-11-06 02:03:23 +0100 |
commit | b1c8efdcbbd31de8ca7e5fbc488eec0b0bf00572 (patch) | |
tree | 2de5f376b54ea5308511bda3dcbf073c33883075 | |
parent | c200d434f368db41742b2d9b665592c530f18b59 (diff) | |
download | dome-key-web-b1c8efdcbbd31de8ca7e5fbc488eec0b0bf00572.tar.bz2 |
AquaticPrime::sign(): Return `Result`
Remove most `unwrap`s in the function and replace them with tries.
-rw-r--r-- | license-generator/aquatic-prime/src/lib.rs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/license-generator/aquatic-prime/src/lib.rs b/license-generator/aquatic-prime/src/lib.rs index 3c3794e..14a2bef 100644 --- a/license-generator/aquatic-prime/src/lib.rs +++ b/license-generator/aquatic-prime/src/lib.rs @@ -23,7 +23,7 @@ struct AquaticPrime<'a> { } impl<'a> AquaticPrime<'a> { - fn sign(&self, input_data: HashMap<&str, &str>) -> String { + fn sign(&self, input_data: HashMap<&str, &str>) -> Result<String> { let mut input_data: Vec<(&str, &str)> = input_data .into_iter() .collect(); @@ -35,9 +35,15 @@ impl<'a> AquaticPrime<'a> { .collect::<Vec<&str>>() .concat(); - let public_key = BigNum::from_hex_str(self.public_key.get(2..).unwrap()).unwrap(); - let private_key = BigNum::from_hex_str(self.private_key.get(2..).unwrap()).unwrap(); - let rsa_e = BigNum::from_u32(3).unwrap(); + let public_key = self.public_key.get(2..).unwrap(); + let private_key = self.private_key.get(2..).unwrap(); + + let public_key = BigNum::from_hex_str(public_key) + .chain_err(|| "public key could not be converted to BigNum")?; + let private_key = BigNum::from_hex_str(private_key) + .chain_err(|| "private key could not be converted to BigNum")?; + 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 @@ -49,16 +55,18 @@ impl<'a> AquaticPrime<'a> { public_key, rsa_e, private_key, - ).expect("failed to build RSA key").build(); + ) + .chain_err(|| "failed to build RSA key")? + .build(); let mut signature = [0; 128]; keypair.private_encrypt( &digest, &mut signature, Padding::PKCS1, - ).expect("failed to encrypt"); + ).chain_err(|| "failed to encrypt input")?; - base64::encode(&signature[..]) + Ok(base64::encode(&signature[..])) } } @@ -87,7 +95,7 @@ mod tests { qD7a48WFqbzC3powTk6x42b+WpH6boe+u7LW4AXo2ZqGPasVlr1/lUWVHvt5J0OI9oR7\ vmzdXHbbQD7RPXp0ezttrKBFHxNNCbJHMr0="; - assert_eq!(signature, expected); + assert_eq!(signature.unwrap(), expected); let mut license_data = HashMap::new(); @@ -101,6 +109,6 @@ mod tests { cztBoUJFu8mB45MHE0jmmbRw3qK6FJz9Py2gi1XvGOgH3GW713OCvQBE7vfBj4ZriP0+\ FS18nLfrtM6Xp0mAd1la4DD4oh7d35dlYTY="; - assert_eq!(signature, expected); + assert_eq!(signature.unwrap(), expected); } } |