Skip to main content

keccak/
types.rs

1//! Helper type aliases.
2use crate::PLEN;
3
4/// 200-bit Keccak state.
5pub type State200 = [u8; PLEN];
6/// 400-bit Keccak state.
7pub type State400 = [u16; PLEN];
8/// 800-bit Keccak state.
9pub type State800 = [u32; PLEN];
10/// 1600-bit Keccak state.
11pub type State1600 = [u64; PLEN];
12
13/// A Keccak function which permutates [`State200`].
14pub type Fn200 = fn(&mut State200);
15/// A Keccak function which permutates [`State400`].
16pub type Fn400 = fn(&mut State400);
17/// A Keccak function which permutates [`State800`].
18pub type Fn800 = fn(&mut State800);
19/// A Keccak function which permutates [`State1600`].
20pub type Fn1600 = fn(&mut State1600);
21
22#[cfg(feature = "parallel")]
23mod parallel {
24    use super::State1600;
25    use crate::Backend;
26    use hybrid_array::Array;
27
28    /// 1600xN-bit state processed in parallel by a [`Backend`] implementation.
29    pub type ParState1600<B> = Array<State1600, <B as Backend>::ParSize1600>;
30    /// A Keccak function which permutates [`ParState1600`].
31    pub type ParFn1600<B> = fn(&mut ParState1600<B>);
32}
33
34#[cfg(feature = "parallel")]
35pub use parallel::*;