use sha3::{Digest, Sha3_256};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct RequestHash(pub [u8; 32]);
#[must_use]
pub fn request_hash(request_cose_sign1: &[u8]) -> RequestHash {
RequestHash(Sha3_256::digest(request_cose_sign1).into())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn matches_known_sha3_256_vector() {
let RequestHash(digest) = request_hash(b"");
assert_eq!(
digest[..4],
[0xa7, 0xff, 0xc6, 0xf8],
"SHA3-256 empty-string prefix"
);
assert_eq!(digest[28..], [0x80, 0xf8, 0x43, 0x4a]);
}
#[test]
fn distinct_inputs_distinct_hashes() {
assert_ne!(request_hash(b"a").0, request_hash(b"b").0);
assert_eq!(request_hash(b"a").0, request_hash(b"a").0);
}
}