use core::fmt::Debug;
use zeroize::Zeroize;
pub trait Digest:
AsMut<[u8]> + AsRef<[u8]> + Clone + PartialEq + Eq + Default + Zeroize + Debug + Sized
{
}
impl<T> Digest for T where
T: AsMut<[u8]> + AsRef<[u8]> + Clone + PartialEq + Eq + Default + Zeroize + Debug + Sized
{
}
pub trait Hasher: Zeroize + Debug {
const DIGEST_SIZE: usize;
type Digest: Digest;
fn new() -> Self;
fn update(&mut self, data: &[u8]);
fn finalize_into(&mut self, out: &mut Self::Digest);
fn finalize(&mut self) -> Self::Digest {
let mut out = Default::default();
self.finalize_into(&mut out);
return out;
}
fn reset(&mut self) {
self.finalize();
}
}