aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-03-29 13:39:32 +0000
committerWerner Koch <[email protected]>2021-05-03 16:59:07 +0000
commitbbf4bd3bfcb51e9d91e08ceefba3ff016bae50ff (patch)
treeacd1e45735c8986901065c5e0deea36bdc838169
parentgpgconf: Do not i18n an empty string to the PO files meta data. (diff)
downloadgnupg-bbf4bd3bfcb51e9d91e08ceefba3ff016bae50ff.tar.gz
gnupg-bbf4bd3bfcb51e9d91e08ceefba3ff016bae50ff.zip
agent: Skip unknown unknown ssh curves seen on cards.
* agent/command-ssh.c (ssh_handler_request_identities): Skip unknown curves. -- For example when using my standard ed25519 token and testing cards with only Brainpool support, the ssh-agent failed due to the unknown curves seen on the card. This patches fixes this by ignoring keys with unknown curves. Signed-off-by: Werner Koch <[email protected]> (cherry picked from commit 2d2391dfc25cfe160581b1bb4b4b8fc4764ac304)
-rw-r--r--agent/command-ssh.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/agent/command-ssh.c b/agent/command-ssh.c
index bcc78bd15..1ed541621 100644
--- a/agent/command-ssh.c
+++ b/agent/command-ssh.c
@@ -2608,19 +2608,29 @@ ssh_handler_request_identities (ctrl_t ctrl,
continue;
err = ssh_send_key_public (key_blobs, key_public, cardsn);
- if (err && opt.verbose)
- gcry_log_debugsxp ("pubkey", key_public);
gcry_sexp_release (key_public);
key_public = NULL;
xfree (cardsn);
if (err)
{
- xfree (serialno);
- free_strlist (card_list);
- goto out;
+ if (opt.verbose)
+ gcry_log_debugsxp ("pubkey", key_public);
+ if (gpg_err_code (err) == GPG_ERR_UNKNOWN_CURVE
+ || gpg_err_code (err) == GPG_ERR_INV_CURVE)
+ {
+ /* For example a Brainpool curve or a curve we don't
+ * support at all but a smartcard lists that curve.
+ * We ignore them. */
+ }
+ else
+ {
+ xfree (serialno);
+ free_strlist (card_list);
+ goto out;
+ }
}
-
- key_counter++;
+ else
+ key_counter++;
}
xfree (serialno);