use zeroize::Zeroize;
use crate::error::Error;
pub trait Hmac: Zeroize {
type E: Error;
fn new_from_slice(key: &[u8]) -> Result<Self, Self::E>
where
Self: Sized;
fn update(&mut self, data: &[u8]);
fn verify_slice(self, tag: &[u8]) -> Result<(), Self::E>;
fn finalize(self) -> Vec<u8>;
}