1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
use crate::{ToBlake3Hash, ZeroizeArray};

/// The 32 bytes of a Blake3 Hash
pub type Blake3Hash = ZeroizeArray<32>;
/// The 64 bytes of an ed25519 keypair
pub type Ed25519KeyPair = ZeroizeArray<64>;
/// The 32 bytes of an ed25519 keypair
pub type Ed25519PublicKey = ZeroizeArray<32>;
/// The 32 bytes of an ed25519 secret
pub type Ed25519SecretKey = ZeroizeArray<32>;
/// The 64 bytes of an X25519 keypair
pub type X25519StaticKeyPair = ZeroizeArray<64>;
/// The 32 bytes of an X25519 public key
pub type X25519PublicKey = ZeroizeArray<32>;
/// The 32 bytes of an X25519 static secret key
pub type X25519StaticSecretKey = ZeroizeArray<32>;
/// The 32 bytes of an X25519 ephemeral secret key
pub type X25519EphemeralSecretKey = ZeroizeArray<32>;
/// The 32 bytes of an X25519 reusable secret key
pub type X25519ReusableSecretKey = ZeroizeArray<32>;
/// The 32 bytes of an X25519 shared secret key from the outcome of a DH key exchange
pub type X25519SharedSecretKey = ZeroizeArray<32>;
/// The 24 bytes of an Extended Nonce for use in ChaChaPoly1305 symmetric key encryption
pub type XNonce = ZeroizeArray<24>;
/// The 32 bytes secret key
pub type Key32Byte = ZeroizeArray<32>;
/// The 16 bytes of a Poly1305 AEAD tag
pub type Poly1305Tag = ZeroizeArray<16>;
/// The  bytes of a Tai64N timestamp
pub type TaiTimestamp = ZeroizeArray<12>;

impl ToBlake3Hash for ZeroizeArray<8> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<12> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<16> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<24> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<32> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<64> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<96> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}

impl ToBlake3Hash for ZeroizeArray<128> {
    fn hash(&self) -> blake3::Hash {
        blake3::hash(self.expose_borrowed())
    }
}