X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Futil%2Frng.rs;h=ae50154d95dea23b29d25c36aeff13372b4b101a;hb=832fc4fd4435fa236f15d3e737bebf64619ff60e;hp=f0d4492521b82d090c33c3f570dff9472e6c767d;hpb=d18e54bd90e949267a025260cf09e10c3804875f;p=rust-lightning diff --git a/src/util/rng.rs b/src/util/rng.rs index f0d44925..ae50154d 100644 --- a/src/util/rng.rs +++ b/src/util/rng.rs @@ -1,16 +1,16 @@ #[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_u832() -> [u8; 32] { + let mut res = [0; 32]; + fill_bytes(&mut res); + res } pub fn rand_f32() -> f32 { @@ -23,20 +23,38 @@ 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_u832() -> [u8; 32] { + let rng = unsafe { RNG_ITER += 1; RNG_ITER - 1 }; + let mut res = [0; 32]; + let data = byte_utils::le64_to_array(rng); + res[8*0..8*1].copy_from_slice(&data); + res[8*1..8*2].copy_from_slice(&data); + res[8*2..8*3].copy_from_slice(&data); + res[8*3..8*4].copy_from_slice(&data); + res } 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")]