agent: SSH support improvement.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 9 Aug 2016 02:42:20 +0000 (11:42 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 9 Aug 2016 02:42:20 +0000 (11:42 +0900)
* agent/command-ssh.c (ssh_handler_request_identities): Skip a key with
error, not giving up to handle the request itself.
* agent/cvt-openpgp.c (extract_private_key): Support "ecdsa" key.

--

Note that "ecdsa" key is still in use by old versions of gpg-agent
through its SSH handling (until 2.1.14).  With old versions of
gpg-agent, adding ECDSA key by ssh-add command, "ecdsa" key will be
created.  So, "ecdsa" key should be supported.

For g10/gpg, "ecdsa" and "ecdh" was only used in some experimental
versions of libgcrypt, with parameters.  We now use "ecc" for all cases
in released versions.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
agent/command-ssh.c
agent/cvt-openpgp.c

index df38ad6..b01cc06 100644 (file)
@@ -2618,7 +2618,7 @@ ssh_handler_request_identities (ctrl_t ctrl,
       if (err)
         {
           log_error ("failed to read the public key\n");
-          goto out;
+          continue;
         }
 
       err = ssh_send_key_public (key_blobs, key_public, NULL);
index 40d9a3e..eb420b0 100644 (file)
@@ -1271,7 +1271,7 @@ extract_private_key (gcry_sexp_t s_key, int req_private_key_data,
                                      array+0, array+1, array+2, array+3,
                                      array+4, NULL);
     }
-  else if (!strcmp (name, "ecc"))
+  else if (!strcmp (name, "ecc") || !strcmp (name, "ecdsa"))
     {
       algoname = "ecc";
       format = "qd?";