mod serial_digest;
use self::serial_digest::serial_arb_digest;
use crate::block::pad_input;
#[cfg(feature = "parallel")]
mod parallel_digest;
#[cfg(feature = "parallel")]
use parallel_digest::parallel_arb_digest;
#[cfg(feature = "parallel")]
#[inline(always)]
pub fn arg_digest_parallel<const RND: u64, const LEN: usize>(
input: &[u8],
threads: usize,
) -> [u8; LEN] {
let padded = pad_input(input);
parallel_arb_digest::<RND, LEN>(&padded, threads)
}
#[inline(always)]
pub fn arb_digest<const RND: u64, const LEN: usize>(input: &[u8]) -> [u8; LEN] {
let padded = pad_input(input);
serial_arb_digest::<RND, LEN>(&padded, 0)
}
#[inline(always)]
pub const fn arb_digest_const<const RND: u64, const LEN: usize, const LEN2: usize>(
blocks: &[[u8; LEN]; LEN2],
) -> [u8; LEN] {
serial_arb_digest::<RND, LEN>(blocks, 0)
}