diff --git a/rust/pvimg/src/pv_utils/se_hdr/hdr_v2.rs b/rust/pvimg/src/pv_utils/se_hdr/hdr_v2.rs index 4d481de1..eaeed7fa 100644 --- a/rust/pvimg/src/pv_utils/se_hdr/hdr_v2.rs +++ b/rust/pvimg/src/pv_utils/se_hdr/hdr_v2.rs @@ -118,11 +118,26 @@ impl KeyExchangeTrait for SeHdrAadV2 { Self::KEY_TYPE } + /** contains_hash - test if the given hash is in this SE-header + * + * * `hash`: hash to compare, either 32 or 64 byte long + * + * Returns: + * - false if the given hash is not 64 or 32 bytes long + * - the comparison result otherwise + */ fn contains_hash>(&self, hash: H) -> bool { let hash = hash.as_ref(); + let size = hash.len(); + + match size { + UvKeyHashV1::UV_KEY_HASH_SIZE | SHA_512_HASH_LEN => (), + _ => return false, + }; + self.keyslots .iter() - .any(|ks| &ks.phkh[..UvKeyHashV1::UV_KEY_HASH_SIZE] == hash) + .any(|ks| ks.phkh[..size] == hash[..size]) } fn contains(&self, key: K) -> Result