Skip to main content

random_detached/
generator.rs

1use zeroize::Zeroizing;
2
3pub trait Generator<const N: usize>: Sized {
4    fn new() -> Result<Self, getrandom::Error>;
5
6    fn generate() -> Result<Zeroizing<[u8; N]>, getrandom::Error> {
7        let mut buffer = Zeroizing::new([0u8; N]);
8
9        getrandom::fill(buffer.as_mut())?;
10
11        Ok(buffer)
12    }
13
14    fn expose(&self) -> &[u8; N];
15
16    fn take(self) -> Zeroizing<[u8; N]>;
17
18    fn zeroize_mem(&mut self);
19
20    #[cfg(feature = "blake3_hash")]
21    fn hash(&self) -> blake3::Hash;
22
23    #[cfg(feature = "const_cmp")]
24    fn const_cmp(&self, other: &Self) -> bool;
25}