initremote, enableremote: Support gpg subkeys suffixed with an exclamation mark, which forces gpg to use a specific subkey.

This commit was sponsored by Peter Hogg on Patreon.
This commit is contained in:
Joey Hess 2017-05-24 14:08:02 -04:00
parent dd65ea52c3
commit 35465b6062
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 29 additions and 1 deletions

View file

@ -1,3 +1,10 @@
git-annex (6.20170520) UNRELEASED; urgency=medium
* initremote, enableremote: Support gpg subkeys suffixed with an
exclamation mark, which forces gpg to use a specific subkey.
-- Joey Hess <id@joeyh.name> Wed, 24 May 2017 14:03:40 -0400
git-annex (6.20170519) unstable; urgency=medium
* Ssh password prompting improved when using -J for concurrency.

View file

@ -157,7 +157,11 @@ pipeLazy (GpgCmd cmd) params feeder reader = do
- a key id, or a name; See the section 'HOW TO SPECIFY A USER ID' of
- GnuPG's manpage.) -}
findPubKeys :: GpgCmd -> String -> IO KeyIds
findPubKeys cmd for = KeyIds . parse . lines <$> readStrict cmd params
findPubKeys cmd for
-- "subkey!" tells gpg to force use of a specific subkey,
-- so pass it through as-is rather than looking up the master key.
| "!" `isSuffixOf` for = return $ KeyIds [for]
| otherwise = KeyIds . parse . lines <$> readStrict cmd params
where
params = [Param "--with-colons", Param "--list-public-keys", Param for]
parse = mapMaybe (keyIdField . splitc ':')

View file

@ -0,0 +1,17 @@
[[!comment format=mdwn
username="joey"
subject="""comment 10"""
date="2017-05-24T17:47:46Z"
content="""
@Yurt, git-annex will let you specify the gpg key id using anything that gpg
accepts, including a keyid with a appended '!'. However, when I tried that,
gpg seemed to still pick the master key instead of the subkey. That
happens because git-annex runs the input through `gpg --list-public-keys`
(in order to convert eg, email addresses to key ids)
which always lists the master key even when given a subkey.
I made a small change to git-annex to special case this '!' suffix
behavior. Seems to work in my very limited testing.
Please file bug reports about this kind of thing!
"""]]