From 796b83eba45ad6926e1006ca6bad14a9cfbc757a Mon Sep 17 00:00:00 2001
From: Yury Korolev <yury.korolev@gmail.com>
Date: Wed, 3 Apr 2019 10:37:04 +0300
Subject: [PATCH] auth: Fix ecdsa agent pubkey auth

Signed-off-by: Yury Korolev <yury.korolev@gmail.com>
---
 src/auth.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/auth.c b/src/auth.c
index 2e26d97f..60355d38 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -777,7 +777,25 @@ static int ssh_userauth_agent_publickey(ssh_session session,
     if (rc < 0) {
         goto fail;
     }
-    sig_type_c = ssh_key_get_signature_algorithm(session, pubkey->type);
+
+    switch (pubkey->type) {
+    case SSH_KEYTYPE_UNKNOWN:
+        ssh_set_error(session,
+                      SSH_REQUEST_DENIED,
+                      "Invalid key type (unknown)");
+        return SSH_AUTH_DENIED;
+    case SSH_KEYTYPE_ECDSA:
+        sig_type_c = ssh_pki_key_ecdsa_name(pubkey);
+        break;
+    case SSH_KEYTYPE_DSS:
+    case SSH_KEYTYPE_RSA:
+    case SSH_KEYTYPE_RSA1:
+    case SSH_KEYTYPE_ED25519:
+    case SSH_KEYTYPE_DSS_CERT01:
+    case SSH_KEYTYPE_RSA_CERT01:
+        sig_type_c = ssh_key_get_signature_algorithm(session, pubkey->type);
+        break;
+    }
 
     /* Check if the given public key algorithm is allowed */
     if (!ssh_key_algorithm_allowed(session, sig_type_c)) {
-- 
2.21.0

