1 use crate::Result; 2 3 /// A message authentication code. 4 /// 5 /// A MAC is a symmetric signature primitive. 6 pub trait Mac { 7 /// Size of the MAC tag i.e. the signature in bytes. mac_size(&self) -> usize8 fn mac_size(&self) -> usize; 9 10 /// Add data to be signed. update(&mut self, data: &[u8])11 fn update(&mut self, data: &[u8]); 12 13 /// Produce the MAC tag `digest` for all data fed via `update()`. 14 /// 15 /// Returns `InvalidArgument` if digest is not `Self::mac_size`. digest(&mut self, digest: &mut [u8]) -> Result<()>16 fn digest(&mut self, digest: &mut [u8]) -> Result<()>; 17 } 18