mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-28 17:14:59 +01:00
44 lines
986 B
Rust
44 lines
986 B
Rust
#[cfg(not(feature = "fuzztarget"))]
|
|
mod real_rng {
|
|
use rand::{thread_rng,Rng};
|
|
|
|
pub fn fill_bytes(data: &mut [u8]) {
|
|
let mut rng = thread_rng();
|
|
rng.fill_bytes(data);
|
|
}
|
|
|
|
pub fn rand_f32() -> f32 {
|
|
let mut rng = thread_rng();
|
|
rng.next_f32()
|
|
}
|
|
}
|
|
#[cfg(not(feature = "fuzztarget"))]
|
|
pub use self::real_rng::*;
|
|
|
|
#[cfg(feature = "fuzztarget")]
|
|
mod fuzzy_rng {
|
|
use util::byte_utils;
|
|
|
|
static mut RNG_ITER: u64 = 0;
|
|
|
|
pub fn fill_bytes(data: &mut [u8]) {
|
|
let rng = unsafe { RNG_ITER += 1; RNG_ITER -1 };
|
|
for i in 0..data.len() / 8 {
|
|
data[i*8..(i+1)*8].copy_from_slice(&byte_utils::be64_to_array(rng));
|
|
}
|
|
let rem = data.len() % 8;
|
|
let off = data.len() - rem;
|
|
data[off..].copy_from_slice(&byte_utils::be64_to_array(rng)[0..rem]);
|
|
}
|
|
|
|
pub fn rand_f32() -> f32 {
|
|
let rng = unsafe { RNG_ITER += 1; RNG_ITER - 1 };
|
|
f64::from_bits(rng) as f32
|
|
}
|
|
|
|
pub fn reset_rng_state() {
|
|
unsafe { RNG_ITER = 0; }
|
|
}
|
|
}
|
|
#[cfg(feature = "fuzztarget")]
|
|
pub use self::fuzzy_rng::*;
|