use super::HashFunction;
unsafe extern "C" {
#[link_name = "sha1_hash"]
fn swift_sha1_hash(data: *const u8, length: i32, out_hash: *mut u8);
}
pub fn sha1_hash(data: &[u8]) -> [u8; 20] {
unsafe {
let mut output_hash = [0u8; 20];
swift_sha1_hash(data.as_ptr(), data.len() as i32, output_hash.as_mut_ptr());
output_hash
}
}
pub struct SHA1;
impl HashFunction for SHA1 {
type Output = [u8; 20];
fn hash(data: &[u8]) -> Self::Output {
sha1_hash(data)
}
}
pub use SHA1 as Sha1Algorithm;