aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g10/pubkey-enc.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/g10/pubkey-enc.c b/g10/pubkey-enc.c
index 32b1ed08b..ad0a77e59 100644
--- a/g10/pubkey-enc.c
+++ b/g10/pubkey-enc.c
@@ -110,6 +110,16 @@ get_session_key (ctrl_t ctrl, struct pubkey_enc_list *list, DEK *dek)
continue;
}
+ /* FIXME: The list needs to be sorted so that we try the keys in
+ * an appropriate order. For example:
+ * - On-disk keys w/o protection
+ * - On-disk keys with a cached passphrase
+ * - On-card keys of an active card
+ * - On-disk keys with protection
+ * - On-card keys from cards which are not plugged it. Here a
+ * cancel-all button should stop aksing for other cards.
+ * Without any anonymous keys the sorting can be skipped.
+ */
for (k = list; k; k = k->next)
{
if (!(k->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E
@@ -129,6 +139,9 @@ get_session_key (ctrl_t ctrl, struct pubkey_enc_list *list, DEK *dek)
if (!k->keyid[0] && !k->keyid[1])
{
+ if (opt.skip_hidden_recipients)
+ continue;
+
if (!opt.quiet)
log_info (_("anonymous recipient; trying secret key %s ...\n"),
keystr (keyid));