1 use crate::msgs::codec;
2 /// The single place where we generate random material
3 /// for our own use.  These functions never fail,
4 /// they panic on error.
5 use ring::rand::{SecureRandom, SystemRandom};
6 
7 /// Fill the whole slice with random material.
fill_random(bytes: &mut [u8])8 pub fn fill_random(bytes: &mut [u8]) {
9     SystemRandom::new().fill(bytes).unwrap();
10 }
11 
12 /// Make a Vec<u8> of the given size
13 /// containing random material.
random_vec(len: usize) -> Vec<u8>14 pub fn random_vec(len: usize) -> Vec<u8> {
15     let mut v = vec![0; len];
16     fill_random(&mut v);
17     v
18 }
19 
20 /// Return a uniformly random u32.
random_u32() -> u3221 pub fn random_u32() -> u32 {
22     let mut buf = [0u8; 4];
23     fill_random(&mut buf);
24     codec::decode_u32(&buf).unwrap()
25 }
26