askar_crypto/buffer/
hash.rs1use core::fmt::Debug;
2
3use digest::Digest;
4
5use crate::generic_array::GenericArray;
6
7use crate::{buffer::WriteBuffer, error::Error};
8
9#[derive(Debug)]
11pub struct HashBuffer<D: Digest>(D);
12
13impl<D: Digest> HashBuffer<D> {
14 pub fn new() -> Self {
16 Self(D::new())
17 }
18
19 pub fn finalize(self) -> GenericArray<u8, D::OutputSize> {
21 self.0.finalize()
22 }
23}
24
25impl<D: Digest> Default for HashBuffer<D> {
26 fn default() -> Self {
27 Self::new()
28 }
29}
30
31impl<D: Debug + Digest> WriteBuffer for HashBuffer<D> {
32 fn buffer_write(&mut self, data: &[u8]) -> Result<(), Error> {
33 self.0.update(data);
34 Ok(())
35 }
36}