ez_hash/hash/
blake3_helper.rs1use super::*;
2
3pub fn blake3<const N: usize, T: Hashable>(data: T) -> [u8; N] {
4 let mut hasher = blake3::Hasher::new();
5 data.update_hasher(&mut |bytes| {
6 hasher.update(bytes);
7 });
8
9 let mut out = [0u8; N];
10 hasher.finalize_xof().fill(&mut out);
11 out
12}
13
14pub struct Blake3_256;
15pub struct Blake3_512;
16
17impl Hasher for Blake3_256 {
18 type Output = [u8; 32];
19
20 fn hash<T: Hashable>(data: T) -> Self::Output {
21 blake3(data)
22 }
23
24 fn zeros() -> Self::Output {
25 [0; 32]
26 }
27}
28
29impl Hasher for Blake3_512 {
30 type Output = [u8; 64];
31
32 fn hash<T: Hashable>(data: T) -> Self::Output {
33 blake3(data)
34 }
35
36 fn zeros() -> Self::Output {
37 [0; 64]
38 }
39}