use crate::internals::sponge::keccak_c;
pub fn sha3_224(m:&Vec<u8>) -> Vec<u8> {
let suffix = vec![false, true];
keccak_c::<18>(m, &suffix, 224)
}
pub fn sha3_256(m:&Vec<u8>) -> Vec<u8> {
let suffix = vec![false, true];
keccak_c::<17>(m, &suffix, 256)
}
pub fn sha3_384(m:&Vec<u8>) -> Vec<u8> {
let suffix = vec![false, true];
keccak_c::<13>(m, &suffix, 384)
}
pub fn sha3_512(m:&Vec<u8>) -> Vec<u8> {
let suffix = vec![false, true];
keccak_c::<9>(m, &suffix, 512)
}
pub fn shake128(m:&Vec<u8>, output_length:usize) -> Vec<u8> {
let suffix = vec![true;4];
keccak_c::<21>(m, &suffix, output_length)
}
pub fn shake256(m:&Vec<u8>, output_length:usize) -> Vec<u8> {
let suffix = vec![true;4];
keccak_c::<17>(m, &suffix, output_length)
}
pub mod unofficial_sha {
use super::*;
pub fn shake512(m:&Vec<u8>, output_length:usize) -> Vec<u8> {
let suffix = vec![true;4];
keccak_c::<9>(m, &suffix, output_length)
}
}