diff --git a/src/hazmat/miller_rabin.rs b/src/hazmat/miller_rabin.rs index 50d7ae6..4f70812 100644 --- a/src/hazmat/miller_rabin.rs +++ b/src/hazmat/miller_rabin.rs @@ -122,7 +122,7 @@ mod tests { use alloc::format; use core::num::NonZeroU32; - use crypto_bigint::{Integer, Odd, RandomMod, Uint, U1024, U128, U1536, U64}; + use crypto_bigint::{Integer, Odd, RandomMod, Uint, U1024, U128, U1536, U256, U64}; use rand_chacha::ChaCha8Rng; use rand_core::{CryptoRngCore, OsRng, SeedableRng}; @@ -280,6 +280,15 @@ mod tests { test_large_primes(primes::PRIMES_1024); } + // Test to guard against regressions such as https://github.com/RustCrypto/crypto-bigint/pull/685 + #[test] + fn zero_padded_input_works() { + // A prime that happens to have 128 starting zeroes. + let hex = "00000000000000000000000000000000E0BD7D7A037746B47ABDDC706525370F"; + let num = U256::from_be_hex(hex); + test_large_primes(&[num]); + } + #[cfg(feature = "tests-exhaustive")] #[test] fn exhaustive() { diff --git a/src/presets.rs b/src/presets.rs index 30a1e75..2e2a2b5 100644 --- a/src/presets.rs +++ b/src/presets.rs @@ -189,10 +189,9 @@ fn _is_prime_with_rng(rng: &mut impl CryptoRngCore, num: #[cfg(test)] mod tests { - use crypto_bigint::{BoxedUint, CheckedAdd, Uint, Word, U128, U256, U64}; + use crypto_bigint::{BoxedUint, CheckedAdd, Uint, Word, U128, U64}; use num_prime::nt_funcs::is_prime64; - use rand_chacha::ChaCha8Rng; - use rand_core::{OsRng, SeedableRng}; + use rand_core::OsRng; use super::{ generate_prime, generate_prime_with_rng, generate_safe_prime, generate_safe_prime_with_rng, @@ -381,12 +380,6 @@ mod tests { } } } - - #[test] - fn generate_prime_into_int_double_size_precision() { - let mut rng = ChaCha8Rng::from_seed(*b"01234567890123456789012345678901"); - let _p = generate_safe_prime_with_rng::(&mut rng, 128, 256); - } } #[cfg(test)]