summaryrefslogtreecommitdiffstats
path: root/openpgp/src/cert/parser/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openpgp/src/cert/parser/mod.rs')
-rw-r--r--openpgp/src/cert/parser/mod.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/openpgp/src/cert/parser/mod.rs b/openpgp/src/cert/parser/mod.rs
index e8963d94..ba39f993 100644
--- a/openpgp/src/cert/parser/mod.rs
+++ b/openpgp/src/cert/parser/mod.rs
@@ -883,21 +883,20 @@ impl<'a> CertParser<'a> {
Some(cert)
}).and_then(|mut cert| {
let primary_fp: KeyHandle = cert.key_handle();
- let primary_keyid = KeyHandle::KeyID(primary_fp.clone().into());
// The parser puts all of the signatures on the
// certifications field. Split them now.
- split_sigs(&primary_fp, &primary_keyid, &mut cert.primary);
+ split_sigs(&primary_fp, &mut cert.primary);
for b in cert.userids.iter_mut() {
- split_sigs(&primary_fp, &primary_keyid, b);
+ split_sigs(&primary_fp, b);
}
for b in cert.user_attributes.iter_mut() {
- split_sigs(&primary_fp, &primary_keyid, b);
+ split_sigs(&primary_fp, b);
}
for b in cert.subkeys.iter_mut() {
- split_sigs(&primary_fp, &primary_keyid, b);
+ split_sigs(&primary_fp, b);
}
let cert = cert.canonicalize();
@@ -923,7 +922,7 @@ impl<'a> CertParser<'a> {
/// Splits the signatures in b.certifications into the correct
/// vectors.
-pub(crate) fn split_sigs<C>(primary: &KeyHandle, primary_keyid: &KeyHandle,
+pub(crate) fn split_sigs<C>(primary: &KeyHandle,
b: &mut ComponentBundle<C>)
{
let mut self_signatures = Vec::with_capacity(0);
@@ -934,11 +933,8 @@ pub(crate) fn split_sigs<C>(primary: &KeyHandle, primary_keyid: &KeyHandle,
for sig in mem::replace(&mut b.certifications, Vec::with_capacity(0)) {
let typ = sig.typ();
- let issuers =
- sig.get_issuers();
- let is_selfsig =
- issuers.contains(primary)
- || issuers.contains(primary_keyid);
+ let issuers = sig.get_issuers();
+ let is_selfsig = issuers.iter().any(|kh| kh.aliases(primary));
use crate::SignatureType::*;
if typ == KeyRevocation