From 3a6e665e5636b1dc14e1daae65a7ab9d866fb87b Mon Sep 17 00:00:00 2001 From: Simon Frankenberger Date: Mon, 28 Feb 2022 15:42:37 +0100 Subject: [PATCH] Enhance email regex in keyring This new regex better matches the string format for identities as specified by the RFC. The email address is surrounded by <>. The new regex correctly parses identities like this: foo@bar.com Resulting in baz@foo.com being returned. Without this fix, foo@bar.com was returned. --- .../src/main/java/org/pgpainless/key/info/KeyRingInfo.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java b/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java index 74b72e61..66c780c0 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java +++ b/pgpainless-core/src/main/java/org/pgpainless/key/info/KeyRingInfo.java @@ -50,7 +50,7 @@ import org.pgpainless.signature.subpackets.SignatureSubpacketsUtil; */ public class KeyRingInfo { - private static final Pattern PATTERN_EMAIL = Pattern.compile("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"); + private static final Pattern PATTERN_EMAIL = Pattern.compile("<([^<>\\s]+@.+)>"); private final PGPKeyRing keys; private final Signatures signatures; @@ -423,7 +423,7 @@ public class KeyRingInfo { for (String userId : userIds) { Matcher matcher = PATTERN_EMAIL.matcher(userId); if (matcher.find()) { - emails.add(matcher.group()); + emails.add(matcher.group(1)); } } return emails;