use base::Result;
use base::ConstantSize;
use base::Datable;
pub trait Hash<D>
where D: Datable + ConstantSize,
Self: 'static + Sized
{
fn digest(&mut self, msg: &[u8]) -> Result<D>;
fn verify(&mut self, msg: &[u8], digest: &D) -> Result<bool>;
fn check(&mut self, msg: &[u8], digest: &D) -> Result<()>;
}