aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-01-31 17:55:24 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2014-01-31 17:55:24 +0100
commitd8a91f15df2b00a4fa175b0e5444daad06ad66c7 (patch)
tree0fcf1a0dba1c225b74b7bee1d1f74c8d5c682acf /OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java
parent3c897d68ff75fac4a351154ca903a1d8791604c0 (diff)
downloadopen-keychain-d8a91f15df2b00a4fa175b0e5444daad06ad66c7.tar.gz
open-keychain-d8a91f15df2b00a4fa175b0e5444daad06ad66c7.tar.bz2
open-keychain-d8a91f15df2b00a4fa175b0e5444daad06ad66c7.zip
Fix and simplify user id parsing
Diffstat (limited to 'OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java')
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java25
1 files changed, 16 insertions, 9 deletions
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java
index e14c8bbdf..7ab7aae3f 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyHelper.java
@@ -539,9 +539,23 @@ public class PgpKeyHelper {
* @return array with naming (0), email (1), comment (2)
*/
public static String[] splitUserId(String userId) {
- String[] result = new String[] { "", "", "" };
+ String[] result = new String[] { null, null, null };
- Pattern withComment = Pattern.compile("^(.*) \\((.*)\\) <(.*)>$");
+ if (userId == null || userId.equals("")) {
+ return result;
+ }
+
+ /*
+ * User ID matching:
+ * http://fiddle.re/t4p6f
+ *
+ * test cases:
+ * "Max Mustermann (this is a comment) <max@example.com>"
+ * "Max Mustermann <max@example.com>"
+ * "Max Mustermann (this is a comment)"
+ * "Max Mustermann [this is nothing]"
+ */
+ Pattern withComment = Pattern.compile("^(.*?)(?: \\((.*)\\))?(?: <(.*)>)?$");
Matcher matcher = withComment.matcher(userId);
if (matcher.matches()) {
result[0] = matcher.group(1);
@@ -550,13 +564,6 @@ public class PgpKeyHelper {
return result;
}
- Pattern withoutComment = Pattern.compile("^(.*) <(.*)>$");
- matcher = withoutComment.matcher(userId);
- if (matcher.matches()) {
- result[0] = matcher.group(1);
- result[1] = matcher.group(2);
- return result;
- }
return result;
}