1use zeroize::{Zeroize, ZeroizeOnDrop};
2
3#[derive(Clone, Zeroize, ZeroizeOnDrop)]
4pub struct AeadKey([u8; 32]);
5
6impl AeadKey {
7 pub fn new(bytes: [u8; 32]) -> Self {
8 Self(bytes)
9 }
10
11 pub fn as_bytes(&self) -> &[u8; 32] {
12 &self.0
13 }
14}
15
16#[derive(Clone, Copy, Debug, PartialEq, Eq)]
17pub struct Nonce24(pub [u8; 24]);
18
19impl Nonce24 {
20 pub fn new(bytes: [u8; 24]) -> Self {
21 Self(bytes)
22 }
23
24 pub fn as_slice(&self) -> &[u8] {
25 &self.0
26 }
27}
28
29#[derive(Clone, Copy, Debug, PartialEq, Eq)]
30pub struct KeyId(pub [u8; 8]);
31
32impl KeyId {
33 pub fn zero() -> Self {
34 Self([0u8; 8])
35 }
36}