X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Futil%2Frng.rs;h=818528b8e13e9f35c333c18769ea12dce4543b93;hb=24fd566567320b4d78fa868cce873bd733e30ce5;hp=f0d4492521b82d090c33c3f570dff9472e6c767d;hpb=511c5319f1b50438ed21e5c922c0c9ef0b258cac;p=rust-lightning diff --git a/src/util/rng.rs b/src/util/rng.rs index f0d44925..818528b8 100644 --- a/src/util/rng.rs +++ b/src/util/rng.rs @@ -24,19 +24,32 @@ pub use self::real_rng::*; #[cfg(feature = "fuzztarget")] mod fuzzy_rng { use bitcoin::util::uint::Uint256; + use util::byte_utils; + + static mut RNG_ITER: u64 = 0; pub fn fill_bytes(data: &mut [u8]) { - for i in 0..data.len() { - data[i] = 0x42; + 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_uint256() -> Uint256 { - Uint256([0xdeadbeef, 0x1badcafe, 0xbadbeef, 0xdeadcafe]) + let rng = unsafe { RNG_ITER += 1; RNG_ITER - 1 }; + Uint256([rng, rng, rng, rng]) } pub fn rand_f32() -> f32 { - 0.42 + 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")]