#![allow(missing_docs)]
#![allow(clippy::unwrap_used)]
#![cfg(feature = "hmac")]
use crypto_core::MacAlgorithm;
use crypto_dispatch::{mac_authenticate, mac_verify, MacParams};
#[test]
fn hmac_sha256_authenticates_and_verifies() {
let params = MacParams {
key: b"reallyme hmac key",
};
let message = b"dispatch hmac message";
let tag = mac_authenticate(MacAlgorithm::HmacSha256, ¶ms, message).unwrap();
mac_verify(MacAlgorithm::HmacSha256, ¶ms, message, &tag).unwrap();
let mut tampered = tag;
tampered[0] ^= 0x01;
assert!(mac_verify(MacAlgorithm::HmacSha256, ¶ms, message, &tampered).is_err());
}
#[test]
fn hmac_sha512_rejects_wrong_tag_length() {
let params = MacParams { key: b"key" };
let short_tag = [0u8; 32];
assert!(mac_verify(
MacAlgorithm::HmacSha512,
¶ms,
b"dispatch hmac message",
&short_tag
)
.is_err());
}