Skip to main content

dryoc/
rng.rs

1/// Provides random data up to `len` from the OS's random number generator.
2///
3/// # Panics
4///
5/// Panics if the operating system's random number generator fails.
6pub fn randombytes_buf(len: usize) -> Vec<u8> {
7    use rand::TryRng;
8    use rand::rngs::SysRng;
9
10    let mut r: Vec<u8> = vec![0; len];
11    SysRng
12        .try_fill_bytes(r.as_mut_slice())
13        .expect("failed to fill random bytes");
14
15    r
16}
17
18/// Provides random data up to length of `data` from the OS's random number
19/// generator.
20///
21/// # Panics
22///
23/// Panics if the operating system's random number generator fails.
24pub fn copy_randombytes(dest: &mut [u8]) {
25    use rand::TryRng;
26    use rand::rngs::SysRng;
27
28    SysRng
29        .try_fill_bytes(dest)
30        .expect("failed to fill random bytes");
31}