# HG changeset patch # User Matt Johnston # Date 1648569335 -28800 # Node ID 38c6fd7d7a82cde56d326d5afdbcd988a99c3c0a # Parent 8b4274d34fe86e7ef8bda85beb11cf362e6b8cbe Fix dropbearconvert ecdsa parsing error typo Simplify handling for different key types diff -r 8b4274d34fe8 -r 38c6fd7d7a82 keyimport.c --- a/keyimport.c Tue Mar 29 23:47:30 2022 +0800 +++ b/keyimport.c Tue Mar 29 23:55:35 2022 +0800 @@ -601,51 +601,35 @@ /* discard checkkey2 */ buf_getint(blobbuf); - if (type != DROPBEAR_SIGNKEY_NONE) { - retkey->type = type; + errmsg = "Unsupported OpenSSH key type"; + retkey->type = type; + ret = DROPBEAR_FAILURE; + /* Parse private key part */ #if DROPBEAR_RSA - if (type == DROPBEAR_SIGNKEY_RSA) { - if (buf_get_rsa_priv_ossh(blobbuf, retkey) - == DROPBEAR_SUCCESS) { - errmsg = NULL; - retval = retkey; - goto error; - } else { - errmsg = "Error parsing OpenSSH RSA key"; - goto ossh_error; - } - } + if (type == DROPBEAR_SIGNKEY_RSA) { + errmsg = "Error parsing OpenSSH RSA key"; + ret = buf_get_rsa_priv_ossh(blobbuf, retkey); + } #endif #if DROPBEAR_ED25519 - if (type == DROPBEAR_SIGNKEY_ED25519) { - if (buf_get_ed25519_priv_ossh(blobbuf, retkey) - == DROPBEAR_SUCCESS) { - errmsg = NULL; - retval = retkey; - goto error; - } else { - errmsg = "Error parsing OpenSSH ed25519 key"; - goto ossh_error; - } - } + if (type == DROPBEAR_SIGNKEY_ED25519) { + errmsg = "Error parsing OpenSSH ed25519 key"; + ret = buf_get_ed25519_priv_ossh(blobbuf, retkey); + } #endif #if DROPBEAR_ECDSA - if (signkey_is_ecdsa(type)) { - if (buf_get_ecdsa_priv_ossh(blobbuf, retkey) - == DROPBEAR_SUCCESS) { - errmsg = NULL; - retval = retkey; - goto error; - } else { - errmsg = "Error parsing OpenSSH ed25519 key"; - goto ossh_error; - } - } + if (signkey_is_ecdsa(type)) { + errmsg = "Error parsing OpenSSH ecdsa key"; + ret = buf_get_ecdsa_priv_ossh(blobbuf, retkey); + } #endif + if (ret == DROPBEAR_SUCCESS) { + errmsg = NULL; + retval = retkey; + goto error; } - errmsg = "Unsupported OpenSSH key type"; - ossh_error: +ossh_error: sign_key_free(retkey); retkey = NULL; goto error;