[PATCH] g10: Skip signing keys where no secret key is available.

Patrick Brunschwig patrick at enigmail.net
Thu Apr 27 08:22:23 CEST 2017


On 27.04.17 04:02, Daniel Kahn Gillmor wrote:
> On Wed 2017-04-26 08:22:31 +0200, Patrick Brunschwig wrote:
>> On 26.04.17 03:27, Daniel Kahn Gillmor wrote:
>>> On Mon 2017-02-06 09:57:59 +0100, Patrick Brunschwig wrote:
>>>> Would this patch still issue a "MISSING_KEY" line for --status-fd? If
>>>> no, you break existing logic (which for example Enigmail relies on).
>>>
>>> in what case does enigmail expect a "MISSING_KEY" line?  the scenario is
>>> that the user has a primary key A and two valid, non-expired,
>>> signing-capable subkeys, B and C.  C is the newer subkey, and the user
>>> has specified that they want to sign with A.  We'd like to go ahead and
>>> sign with B if it is available and C is missing.
>>>
>>> What should enigmail do in that case with a MISSING_KEY line?  shouldn't
>>> it just accept that a valid signature has been made?
>>>
>>> I've pushed the proposed fix to a new git branch dkg/T1967, and updated
>>> https://dev.gnupg.org/T1967 to note that branch.
>>
>> Sorry, I meant INV_SGNR. Enigmail looks for this when a message is
>> supposed to be signed but there is no suitable key.
> 
> So you're asking whether INV_SGNR shows up in the case where there
> really is *no* signing subkey, right?  because if gpg finds a different
> signing subkey available and uses it successfully, you don't want it to
> appear.  right?
> 
> I just did the following test in a fresh $GNUPGHOME (manually extracting
> $PRIMARY_FPR and $SUBKEY0_GRIP from the relevant places), with the patch
> under discussion applied here.  Note that i'm renaming
> private-keys-v1.d/*.key files to emulate removal of secret key material
> by any other means:
> 
> 
>   gpg --quick-gen-key 'testing <test at example.org>' rsa cert
>   gpg --quick-add-key ${PRIMARY_FPR} rsa sign # signing-capable subkey 0
>   gpg --with-keygrip --list-keys
>   echo test | gpg -u 'testing <test at example.org>' --status-fd=2 --clearsign
>      ## makes valid signature with subkey 0, no INV_SGNR  
>   mv $GNUPGHOME/private-keys-v1.d/${SUBKEY0_GRIP}{,.bak}
>   echo test | gpg -u 'testing <test at example.org>' --status-fd=2 --clearsign
>      ## produces INV_SGNR on stderr
>   gpg --quick-add-key ${PRIMARY_FPR} rsa sign  # signing-capable subkey 1
>   echo test | gpg -u 'testing <test at example.org>' --status-fd=2 --clearsign
>      ## makes valid signature with subkey 1, no INV_SGNR  
>   mv $GNUPGHOME/private-keys-v1.d/${SUBKEY1_GRIP}{,.bak}
>   echo test | gpg -u 'testing <test at example.org>' --status-fd=2 --clearsign
>      ## produces INV_SGNR on stderr
>   mv $GNUPGHOME/private-keys-v1.d/${SUBKEY1_GRIP}{,.bak}
>   echo test | gpg -u 'testing <test at example.org>' --status-fd=2 --clearsign
>      ## makes valid signature with subkey 0, no INV_SGNR  
> 
> This seems like the sensible logic to me -- as long as some
> signing-capable subkey is available.  Does enigmail need something
> different?

Perfect - that's exactly what Enigmail would expect.

Thanks,
Patrick


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: </pipermail/attachments/20170427/b6484741/attachment.sig>


More information about the Gnupg-devel mailing list