use super::{bits_to_rate, keccakf::KeccakF, Hasher, KeccakState};
#[derive(Clone)]
pub struct Keccak {
state: KeccakState<KeccakF>,
}
impl Keccak {
const DELIM: u8 = 0x01;
pub fn v224() -> Keccak {
Keccak::new(224)
}
pub fn v256() -> Keccak {
Keccak::new(256)
}
pub fn v384() -> Keccak {
Keccak::new(384)
}
pub fn v512() -> Keccak {
Keccak::new(512)
}
fn new(bits: usize) -> Keccak {
Keccak {
state: KeccakState::new(bits_to_rate(bits), Self::DELIM),
}
}
}
impl Hasher for Keccak {
fn update(&mut self, input: &[u8]) {
self.state.update(input);
}
fn finalize(self, output: &mut [u8]) {
self.state.finalize(output);
}
}