X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Futil%2Frng.rs;h=63fbc99b52a847ea28e23e3e33dfc14916445058;hb=91dc91f0532b45dc0874a4003cc945aff600d991;hp=f0d4492521b82d090c33c3f570dff9472e6c767d;hpb=d18e54bd90e949267a025260cf09e10c3804875f;p=rust-lightning diff --git a/src/util/rng.rs b/src/util/rng.rs index f0d44925..63fbc99b 100644 --- a/src/util/rng.rs +++ b/src/util/rng.rs @@ -1,18 +1,12 @@ #[cfg(not(feature = "fuzztarget"))] mod real_rng { use rand::{thread_rng,Rng}; - use bitcoin::util::uint::Uint256; pub fn fill_bytes(data: &mut [u8]) { let mut rng = thread_rng(); rng.fill_bytes(data); } - pub fn rand_uint256() -> Uint256 { - let mut rng = thread_rng(); - Uint256([rng.gen(), rng.gen(), rng.gen(), rng.gen()]) - } - pub fn rand_f32() -> f32 { let mut rng = thread_rng(); rng.next_f32() @@ -23,20 +17,27 @@ 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]) + pub fn rand_f32() -> f32 { + let rng = unsafe { RNG_ITER += 1; RNG_ITER - 1 }; + f64::from_bits(rng) as f32 } - pub fn rand_f32() -> f32 { - 0.42 + pub fn reset_rng_state() { + unsafe { RNG_ITER = 0; } } } #[cfg(feature = "fuzztarget")]