random_detached/
generator.rs1use 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}