diff --git a/Cargo.lock b/Cargo.lock index 90446ca1..7ccfc9ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -157,7 +157,7 @@ dependencies = [ [[package]] name = "crypto-primes" version = "0.7.0-dev" -source = "git+https://github.com/entropyxyz/crypto-primes.git#dfc396609a8fdaab895976933edad36c06de8a19" +source = "git+https://github.com/entropyxyz/crypto-primes.git#541a5eb1c05664385aaff2697faf72c7200a9786" dependencies = [ "crypto-bigint", "rand_core 0.9.3", diff --git a/src/algorithms/generate.rs b/src/algorithms/generate.rs index b17c5f57..b8e4c890 100644 --- a/src/algorithms/generate.rs +++ b/src/algorithms/generate.rs @@ -3,8 +3,8 @@ use alloc::vec::Vec; use crypto_bigint::{BoxedUint, Odd}; use crypto_primes::{ - hazmat::{SetBits, SmallPrimesSieveFactory}, - is_prime, sieve_and_find, + hazmat::{SetBits, SmallFactorsSieveFactory}, + is_prime, sieve_and_find, Flavor, }; use rand_core::CryptoRng; @@ -121,11 +121,13 @@ pub(crate) fn generate_multi_prime_key_with_exp( } fn generate_prime_with_rng(rng: &mut R, bit_length: u32) -> BoxedUint { - sieve_and_find( - rng, - SmallPrimesSieveFactory::new(bit_length, SetBits::TwoMsb), - |_rng, candidate| is_prime(candidate), - ) + let factory = SmallFactorsSieveFactory::new(Flavor::Any, bit_length, SetBits::TwoMsb) + .unwrap_or_else(|err| panic!("Error creating the sieve: {err}")); + + sieve_and_find(rng, factory, |_rng, candidate| { + is_prime(Flavor::Any, candidate) + }) + .unwrap_or_else(|err| panic!("Error generating random candidates: {}", err)) .expect("will produce a result eventually") }