fix random number generation + asymmetric key generation
This commit is contained in:
20
src/utils.rs
Normal file
20
src/utils.rs
Normal file
@ -0,0 +1,20 @@
|
||||
use rand::rngs::StdRng;
|
||||
use rand::Rng;
|
||||
use rand::SeedableRng;
|
||||
use rug::Integer;
|
||||
|
||||
pub fn generate_random_odd_integer(num_bits: u32) -> Integer {
|
||||
std::iter::repeat_with(|| generate_random_integer(num_bits))
|
||||
.find(|p: &Integer| p.is_odd())
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn generate_random_integer(num_bits: u32) -> Integer {
|
||||
let mut rng = StdRng::from_os_rng();
|
||||
let mut x = Integer::from(1);
|
||||
for _ in 1..num_bits {
|
||||
x <<= 1;
|
||||
x += rng.random_range(0..=1);
|
||||
}
|
||||
x
|
||||
}
|
Reference in New Issue
Block a user