diff options
author | Neal H. Walfield <neal@sequoia-pgp.org> | 2024-01-24 15:49:40 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@sequoia-pgp.org> | 2024-01-24 16:02:58 +0100 |
commit | a2a366f85ef81e90c0bde216fedd53eed3bf75dc (patch) | |
tree | ea4e0f5408567d2cf888c018e5f660a686df0b25 | |
parent | a55cd9025faf9fea54b63d168a5bec555c95ba7f (diff) |
openpgp: Fix comparison of key handles.
- When comparing `KeyHandle`s for exact equality, `as_bytes`.
-rw-r--r-- | openpgp/src/packet/signature.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/openpgp/src/packet/signature.rs b/openpgp/src/packet/signature.rs index 41f56453..b46654cc 100644 --- a/openpgp/src/packet/signature.rs +++ b/openpgp/src/packet/signature.rs @@ -2474,7 +2474,9 @@ impl crate::packet::Signature { let issuers = self.get_issuers(); for id in std::mem::replace(&mut self.additional_issuers, Vec::with_capacity(0)) { - if ! issuers.contains(&id) { + // Use as_bytes, because we are looking for identical + // copies. + if ! issuers.iter().any(|issuer| issuer.as_bytes() == id.as_bytes()) { match id { KeyHandle::KeyID(id) => self.unhashed_area_mut().add(authenticated_subpacket( @@ -2736,8 +2738,12 @@ impl Signature { // contained in the signature. let issuers = self.get_issuers(); let id = KeyHandle::from(key.keyid()); - if ! (issuers.contains(&id) - || self.additional_issuers.contains(&id)) { + if ! (issuers.iter() + .chain(self.additional_issuers.iter()) + // Use as_bytes, because we are looking for + // identical copies. + .any(|issuer| issuer.as_bytes() == id.as_bytes())) + { self.additional_issuers.push(id); } |