From b58bdf8ff15d50d26bb552afdd65e54d3f260114 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 15 Jan 2022 00:59:01 +0100 Subject: [PATCH] Fix KeyAccessor.ViaKeyId sourcing primary user-id signature --- .../java/org/pgpainless/key/info/KeyAccessor.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyAccessor.java b/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyAccessor.java index bcdac8b6..6c299580 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyAccessor.java +++ b/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyAccessor.java @@ -110,18 +110,13 @@ public abstract class KeyAccessor { @Override public @Nonnull PGPSignature getSignatureWithPreferences() { - PGPSignature signature; - if (key.getPrimaryKeyId() != key.getSubkeyId()) { - signature = info.getCurrentSubkeyBindingSignature(key.getSubkeyId()); - } else { + String primaryUserId = info.getPrimaryUserId(); + // If the key is located by Key ID, the algorithm of the primary User ID of the key provides the + // preferred symmetric algorithm. + PGPSignature signature = info.getLatestUserIdCertification(primaryUserId); + if (signature == null) { signature = info.getLatestDirectKeySelfSignature(); } - - if (signature != null) { - return signature; - } - - signature = info.getLatestUserIdCertification(info.getPrimaryUserId()); if (signature == null) { throw new IllegalStateException("No valid signature found."); }