summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-09-14 13:30:50 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-09-14 13:31:00 -0400
commitb6e61f8daed1a6c5bb6cecd545c71b04aaf86af9 (patch)
tree97a24833c457256732fd7e7c554d4ff92c39544e
parent889a2990734a818dff7133dcf936affdbc9c7558 (diff)
Improve gpg secret key list parser to deal with changes in gpg 2.1.15. Fixes key name display in webapp.
gpg 2.1.15 (or so) seems to have added some new fields to the --with-colons --list-secret-keys output. These include "fpr" and "grp", and come before the "uid" line. So, the parser was giving up before it saw the name. Fix by continuing to look for the uid line until the next "sec" line. This commit was sponsored by Ole-Morten,Duesund on Patreon.
-rw-r--r--CHANGELOG2
-rw-r--r--Utility/Gpg.hs4
2 files changed, 5 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 745597bb0..3ec9ca11c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,6 +10,8 @@ git-annex (6.20160908) UNRELEASED; urgency=medium
objects to the json output.
* Remove key:null from git-annex add --json output.
* copy, move, mirror: Support --json and --json-progress.
+ * Improve gpg secret key list parser to deal with changes in gpg 2.1.15.
+ Fixes key name display in webapp.
-- Joey Hess <id@joeyh.name> Thu, 08 Sep 2016 12:48:55 -0400
diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs
index 1ac03ef54..af740c3e0 100644
--- a/Utility/Gpg.hs
+++ b/Utility/Gpg.hs
@@ -178,8 +178,10 @@ secretKeys cmd = catchDefaultIO M.empty makemap
parse = extract [] Nothing . map (split ":")
extract c (Just keyid) (("uid":_:_:_:_:_:_:_:_:userid:_):rest) =
extract ((keyid, decode_c userid):c) Nothing rest
- extract c (Just keyid) rest =
+ extract c (Just keyid) rest@(("sec":_):_) =
extract ((keyid, ""):c) Nothing rest
+ extract c (Just keyid) (_:rest) =
+ extract c (Just keyid) rest
extract c _ [] = c
extract c _ (("sec":_:_:_:keyid:_):rest) =
extract c (Just keyid) rest