Skip to main content

airbender_crypto/blake2s/
naive.rs

1#[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}