Skip to content

Commit 469beef

Browse files
try to figure out more about the key gen failure
1 parent d3e5d89 commit 469beef

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

src/algorithms.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ pub fn generate_multi_prime_key<R: Rng>(
9696
continue 'next;
9797
}
9898

99-
let exp = BigUint::from_u64(EXP).unwrap();
99+
let exp = BigUint::from_u64(EXP).expect("invalid static exponent");
100100
if let Some(d) = exp.mod_inverse(totient) {
101101
n_final = n;
102102
d_final = d;
@@ -106,7 +106,7 @@ pub fn generate_multi_prime_key<R: Rng>(
106106

107107
Ok(RSAPrivateKey::from_components(
108108
n_final,
109-
BigUint::from_u64(EXP).unwrap(),
109+
BigUint::from_u64(EXP).expect("invalid static exponent"),
110110
d_final,
111111
primes,
112112
))

src/key.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -497,20 +497,22 @@ mod tests {
497497
}
498498

499499
fn test_key_basics(private_key: RSAPrivateKey) {
500-
private_key.validate().expect("failed to validate");
500+
private_key.validate().expect("invalid private key");
501501

502502
assert!(
503503
private_key.d() < private_key.n(),
504504
"private exponent too large"
505505
);
506506

507507
let pub_key: RSAPublicKey = private_key.clone().into();
508-
let m = BigUint::from_u64(42).unwrap();
508+
let m = BigUint::from_u64(42).expect("invalid 42");
509509
let c = encrypt(&pub_key, &m);
510-
let m2 = decrypt::<ThreadRng>(None, &private_key, &c).unwrap();
510+
let m2 = decrypt::<ThreadRng>(None, &private_key, &c)
511+
.expect("unable to decrypt without blinding");
511512
assert_eq!(m, m2);
512513
let mut rng = thread_rng();
513-
let m3 = decrypt(Some(&mut rng), &private_key, &c).unwrap();
514+
let m3 =
515+
decrypt(Some(&mut rng), &private_key, &c).expect("unable to decrypt with blinding");
514516
assert_eq!(m, m3);
515517
}
516518

@@ -519,14 +521,17 @@ mod tests {
519521
#[test]
520522
fn $name() {
521523
let mut rng = thread_rng();
522-
let private_key = if $multi == 2 {
523-
RSAPrivateKey::new(&mut rng, $size).unwrap()
524-
} else {
525-
generate_multi_prime_key(&mut rng, $multi, $size).unwrap()
526-
};
527-
assert_eq!(private_key.n().bits(), $size);
528524

529-
test_key_basics(private_key);
525+
for _ in 0..10 {
526+
let private_key = if $multi == 2 {
527+
RSAPrivateKey::new(&mut rng, $size).expect("failed to generate key")
528+
} else {
529+
generate_multi_prime_key(&mut rng, $multi, $size).unwrap()
530+
};
531+
assert_eq!(private_key.n().bits(), $size);
532+
533+
test_key_basics(private_key);
534+
}
530535
}
531536
};
532537
}

0 commit comments

Comments
 (0)