diff --git a/veilid-tools/Cargo.toml b/veilid-tools/Cargo.toml index c2f0840d..178d59f5 100644 --- a/veilid-tools/Cargo.toml +++ b/veilid-tools/Cargo.toml @@ -77,6 +77,7 @@ wasm-bindgen = "0.2.87" js-sys = "0.3.64" wasm-bindgen-futures = "0.4.37" async_executors = { version = "0.7.0", default-features = false } +getrandom = { version = "0.2", features = ["js"] } async-lock = "2.8.0" send_wrapper = { version = "0.6.0", features = ["futures"] } diff --git a/veilid-tools/src/random.rs b/veilid-tools/src/random.rs index 0ac52be3..c5aaea7b 100644 --- a/veilid-tools/src/random.rs +++ b/veilid-tools/src/random.rs @@ -25,56 +25,17 @@ impl RngCore for VeilidRng { } } -cfg_if! { - if #[cfg(target_arch = "wasm32")] { - use js_sys::Math; - - pub fn random_bytes(dest: &mut [u8]) { - let len = dest.len(); - let u32len = len / 4; - let remlen = len % 4; - - for n in 0..u32len { - let r = (Math::random() * (u32::max_value() as f64)) as u32; - - dest[n * 4 + 0] = (r & 0xFF) as u8; - dest[n * 4 + 1] = ((r >> 8) & 0xFF) as u8; - dest[n * 4 + 2] = ((r >> 16) & 0xFF) as u8; - dest[n * 4 + 3] = ((r >> 24) & 0xFF) as u8; - } - if remlen > 0 { - let r = (Math::random() * (u32::max_value() as f64)) as u32; - for n in 0..remlen { - dest[u32len * 4 + n] = ((r >> (n * 8)) & 0xFF) as u8; - } - } - } - - pub fn get_random_u32() -> u32 { - (Math::random() * (u32::max_value() as f64)) as u32 - } - - pub fn get_random_u64() -> u64 { - let v1: u32 = get_random_u32(); - let v2: u32 = get_random_u32(); - ((v1 as u64) << 32) | ((v2 as u32) as u64) - } - - } else { - - pub fn random_bytes(dest: &mut [u8]) { - let mut rng = rand::thread_rng(); - rng.fill_bytes(dest); - } - - pub fn get_random_u32() -> u32 { - let mut rng = rand::thread_rng(); - rng.next_u32() - } - - pub fn get_random_u64() -> u64 { - let mut rng = rand::thread_rng(); - rng.next_u64() - } - } +pub fn random_bytes(dest: &mut [u8]) { + let mut rng = rand::thread_rng(); + rng.fill_bytes(dest); +} + +pub fn get_random_u32() -> u32 { + let mut rng = rand::thread_rng(); + rng.next_u32() +} + +pub fn get_random_u64() -> u64 { + let mut rng = rand::thread_rng(); + rng.next_u64() }