Subject: epa--key-widget-value-create ignores signing subkeys

From: John Wiegley <[email-masked]>
Date: Mon, 23 Nov 2015 09:38:52 -0800

When listing secret keys using `M-x epa-list-secret-keys', one can press RET
on the inserted widget to see a list of associated subkeys. This shows that
epa.el is correctly parsing the subkeys of one's secret key.

However, the :value of that widget always chooses the first subkey, as seen
here:

    (defun epa--key-widget-value-create (widget)
      (let* ((key (widget-get widget :value))
-->          (primary-sub-key (car (epg-key-sub-key-list key)))
             (primary-user-id (car (epg-key-user-id-list key))))
        ...))

For people with multiple subkeys -- especially those who use dedicated subkeys
for signing and/or encrypting -- it would be nice to be able to select which
subkey(s) to use. The only way I can see this fitting into the current EasyPG
selection architecture would be to present each subkey as if it were a
separate, virtual secret key. In other words, where every subkey becomes a
separate widget in the list and selection buffers.

This also affects mml signing in Gnus, since it also uses the widget :value to
determine which key to use for signing.

John