use test_foo_bar_traits::Digest as _;
#[test]
fn sha256_kat_streaming() {
let mut digest = test_foo_bar_sha2::Sha256::new();
let mut d = [0u8; 32];
digest.update(b"libcrux sha2 256 tests");
digest.finish(&mut d);
let expected = "8683520e19e5b33db33c8fb90918c0c96fcdfd9a17c695ce0f0ea2eaa0c95956";
assert_eq!(hex::encode(d), expected);
}
#[test]
fn sha256_kat_oneshot() {
let d = test_foo_bar_sha2::sha256(b"libcrux sha2 256 tests");
let expected = "8683520e19e5b33db33c8fb90918c0c96fcdfd9a17c695ce0f0ea2eaa0c95956";
assert_eq!(hex::encode(d), expected);
}
#[test]
fn shaclone() {
let mut hasher_224 = test_foo_bar_sha2::Sha224::new();
hasher_224.update(b"test 224");
let mut hasher224_2 = hasher_224.clone();
hasher_224.update(b"more 224");
hasher224_2.update(b"more 224");
let mut digest = [0u8; 28];
let mut digest_2 = [0u8; 28];
hasher_224.finish(&mut digest);
hasher224_2.finish(&mut digest_2);
assert_eq!(digest, digest_2);
assert_eq!(digest, test_foo_bar_sha2::sha224(b"test 224more 224"));
let mut hasher_256 = test_foo_bar_sha2::Sha256::new();
hasher_256.update(b"test 256");
let mut hasher256_2 = hasher_256.clone();
hasher_256.update(b"more 256");
hasher256_2.update(b"more 256");
let mut digest = [0u8; 32];
let mut digest_2 = [0u8; 32];
hasher_256.finish(&mut digest);
hasher256_2.finish(&mut digest_2);
assert_eq!(digest, digest_2);
assert_eq!(digest, test_foo_bar_sha2::sha256(b"test 256more 256"));
let mut hasher_384 = test_foo_bar_sha2::Sha384::new();
hasher_384.update(b"test 384");
let mut hasher384_2 = hasher_384.clone();
hasher_384.update(b"more 384");
hasher384_2.update(b"more 384");
let mut digest = [0u8; 48];
let mut digest_2 = [0u8; 48];
hasher_384.finish(&mut digest);
hasher384_2.finish(&mut digest_2);
assert_eq!(digest, digest_2);
assert_eq!(digest, test_foo_bar_sha2::sha384(b"test 384more 384"));
let mut hasher_512 = test_foo_bar_sha2::Sha512::new();
hasher_512.update(b"test 512");
let mut hasher512_2 = hasher_512.clone();
hasher_512.update(b"more 512");
hasher512_2.update(b"more 512");
let mut digest = [0u8; 64];
let mut digest_2 = [0u8; 64];
hasher_512.finish(&mut digest);
hasher512_2.finish(&mut digest_2);
assert_eq!(digest, digest_2);
assert_eq!(digest, test_foo_bar_sha2::sha512(b"test 512more 512"));
}
#[test]
fn test_digest_traits() {
let expected = "8683520e19e5b33db33c8fb90918c0c96fcdfd9a17c695ce0f0ea2eaa0c95956";
let mut hasher = test_foo_bar_sha2::Sha256Hasher::new();
hasher.update(b"libcrux sha2 256 tests").unwrap();
let mut d = [0u8; 32];
hasher.finish(&mut d);
assert_eq!(hex::encode(d), expected);
}
#[test]
fn traits_generic_tests() {
test_foo_bar_traits::digest::tests::simple::<28, test_foo_bar_sha2::Sha224Hash>();
test_foo_bar_traits::digest::tests::simple::<32, test_foo_bar_sha2::Sha256Hash>();
test_foo_bar_traits::digest::tests::simple::<48, test_foo_bar_sha2::Sha384Hash>();
test_foo_bar_traits::digest::tests::simple::<64, test_foo_bar_sha2::Sha512Hash>();
}