airbender_crypto/blake2s/
naive.rs1#[derive(Clone, Debug)]
2pub struct Blake2s256 {
3 inner: blake2::Blake2s256,
4}
5
6use core::convert::AsRef;
7
8impl Blake2s256 {
9 fn new_impl() -> Self {
10 use blake2::Digest;
11 Self {
12 inner: blake2::Blake2s256::new(),
13 }
14 }
15
16 #[allow(dead_code)]
17 fn digest_impl(mut self, data: impl AsRef<[u8]>) -> [u8; 32] {
18 self.update_impl(data);
19 self.finalize_impl()
20 }
21
22 #[allow(dead_code)]
23 fn update_impl(&mut self, data: impl AsRef<[u8]>) {
24 use blake2::Digest;
25 self.inner.update(data);
26 }
27
28 #[allow(dead_code)]
29 fn finalize_impl(self) -> [u8; 32] {
30 use blake2::Digest;
31 self.inner.finalize().into()
32 }
33}
34
35impl crate::MiniDigest for Blake2s256 {
36 type HashOutput = [u8; 32];
37
38 #[inline(always)]
39 fn new() -> Self {
40 Self::new_impl()
41 }
42
43 #[inline(always)]
44 fn digest(input: impl AsRef<[u8]>) -> Self::HashOutput {
45 <blake2::Blake2s256 as blake2::Digest>::digest(input).into()
46 }
47
48 #[inline(always)]
49 fn update(&mut self, input: impl AsRef<[u8]>) {
50 use blake2::Digest;
51 self.inner.update(input);
52 }
53
54 #[inline(always)]
55 fn finalize(self) -> Self::HashOutput {
56 use blake2::Digest;
57 self.inner.finalize().into()
58 }
59
60 #[inline(always)]
61 fn finalize_reset(&mut self) -> Self::HashOutput {
62 use blake2::Digest;
63 self.inner.finalize_reset().into()
64 }
65}