use generic_keccak::KeccakState as GenericState;
use hax_lib;
#[cfg(hax)]
use hax_lib::int::*;
use crate::generic_keccak::{self, portable::keccak1};
#[derive(Clone, Copy)]
pub struct KeccakState {
state: GenericState<1, u64>,
}
#[inline(always)]
pub fn sha224(digest: &mut [u8], data: &[u8]) {
keccak1::<144, 0x06u8>(data, digest);
}
#[inline(always)]
pub fn sha256(digest: &mut [u8], data: &[u8]) {
keccak1::<136, 0x06u8>(data, digest);
}
#[inline(always)]
pub fn sha384(digest: &mut [u8], data: &[u8]) {
keccak1::<104, 0x06u8>(data, digest);
}
#[inline(always)]
pub fn sha512(digest: &mut [u8], data: &[u8]) {
keccak1::<72, 0x06u8>(data, digest);
}
#[inline(always)]
pub fn shake128(digest: &mut [u8], data: &[u8]) {
keccak1::<168, 0x1fu8>(data, digest);
}
#[inline(always)]
pub fn shake256(digest: &mut [u8], data: &[u8]) {
keccak1::<136, 0x1fu8>(data, digest);
}
pub mod incremental;