summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@sequoia-pgp.org>2024-01-24 15:49:40 +0100
committerNeal H. Walfield <neal@sequoia-pgp.org>2024-01-24 16:02:58 +0100
commita2a366f85ef81e90c0bde216fedd53eed3bf75dc (patch)
treeea4e0f5408567d2cf888c018e5f660a686df0b25
parenta55cd9025faf9fea54b63d168a5bec555c95ba7f (diff)
openpgp: Fix comparison of key handles.
- When comparing `KeyHandle`s for exact equality, `as_bytes`.
-rw-r--r--openpgp/src/packet/signature.rs12
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);
}