use crate::ffi;
pub fn verify_16(x: &[u8; 16], y: &[u8; 16]) -> bool {
unsafe { ffi::crypto_verify_16(x as *const u8, y as *const u8) == 0 }
}
pub fn verify_32(x: &[u8; 32], y: &[u8; 32]) -> bool {
unsafe { ffi::crypto_verify_32(x as *const u8, y as *const u8) == 0 }
}
pub fn verify_64(x: &[u8; 64], y: &[u8; 64]) -> bool {
unsafe { ffi::crypto_verify_64(x as *const u8, y as *const u8) == 0 }
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_verify_16() {
use crate::randombytes::randombytes_into;
unwrap!(crate::init());
for _ in 0usize..256 {
let mut x = [0; 16];
let mut y = [0; 16];
assert!(verify_16(&x, &y));
randombytes_into(&mut x);
randombytes_into(&mut y);
if x == y {
assert!(verify_16(&x, &y))
} else {
assert!(!verify_16(&x, &y))
}
}
}
#[test]
fn test_verify_32() {
use crate::randombytes::randombytes_into;
unwrap!(crate::init());
for _ in 0usize..256 {
let mut x = [0; 32];
let mut y = [0; 32];
assert!(verify_32(&x, &y));
randombytes_into(&mut x);
randombytes_into(&mut y);
if x == y {
assert!(verify_32(&x, &y))
} else {
assert!(!verify_32(&x, &y))
}
}
}
#[test]
fn test_verify_64() {
use crate::randombytes::randombytes_into;
unwrap!(crate::init());
for _ in 0usize..256 {
let mut x = [0; 64];
let mut y = [0; 64];
assert!(verify_64(&x, &y));
randombytes_into(&mut x);
randombytes_into(&mut y);
if x[..] == y[..] {
assert!(verify_64(&x, &y))
} else {
assert!(!verify_64(&x, &y))
}
}
}
}