1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
use super::internal::{Mode, Phase}; use super::*; #[derive(Clone, Debug)] pub struct XoodyakHash { state: Xoodoo, phase: Phase, } impl XoodyakHash { pub fn new() -> Self { XoodyakHash { state: Xoodoo::default(), phase: Phase::Up, } } } impl Default for XoodyakHash { #[inline] fn default() -> Self { XoodyakHash::new() } } impl internal::XoodyakCommon for XoodyakHash { #[inline(always)] fn state(&mut self) -> &mut Xoodoo { &mut self.state } #[inline(always)] fn mode(&self) -> Mode { Mode::Hash } #[inline(always)] fn phase(&self) -> Phase { self.phase } #[inline(always)] fn set_phase(&mut self, phase: Phase) { self.phase = phase } #[inline(always)] fn absorb_rate(&self) -> usize { HASH_ABSORB_RATE } #[inline(always)] fn squeeze_rate(&self) -> usize { HASH_SQUEEZE_RATE } } impl XoodyakCommon for XoodyakHash {}