use sha2::{Digest, Sha512};
#[must_use]
pub fn setup_hash(setup_id: &str, device_id: &str) -> [u8; 4] {
let mut h = Sha512::new();
h.update(setup_id.as_bytes());
h.update(device_id.as_bytes());
let digest = h.finalize();
let mut out = [0u8; 4];
out.copy_from_slice(&digest[..4]);
out
}
#[cfg(test)]
#[allow(clippy::unwrap_used)] mod tests {
use super::setup_hash;
#[test]
fn matches_hap_setup_hash_vector() {
assert_eq!(
setup_hash("7OSX", "AA:BB:CC:DD:EE:FF"),
[0x5c, 0x8a, 0x27, 0x40]
);
}
#[test]
fn is_case_sensitive_on_device_id() {
assert_ne!(
setup_hash("7OSX", "AA:BB:CC:DD:EE:FF"),
setup_hash("7OSX", "aa:bb:cc:dd:ee:ff")
);
}
}