use puffin::codec;
use ring::rand::{SecureRandom, SystemRandom};
pub fn fill_random(bytes: &mut [u8]) -> Result<(), GetRandomFailed> {
SystemRandom::new().fill(bytes).map_err(|_| GetRandomFailed)
}
pub fn random_vec(len: usize) -> Result<Vec<u8>, GetRandomFailed> {
let mut v = vec![0; len];
fill_random(&mut v)?;
Ok(v)
}
pub fn random_u32() -> Result<u32, GetRandomFailed> {
let mut buf = [0u8; 4];
fill_random(&mut buf)?;
codec::decode_u32(&buf).ok_or(GetRandomFailed)
}
#[derive(Debug)]
pub struct GetRandomFailed;