mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
Remove the list of key algorithms in pageant.c.
The only reason those couldn't be replaced with a call to the centralised find_pubkey_alg is because that function takes a zero- terminated string and instead we had a (length,pointer) string. Easily fixed; there's now a find_pubkey_alg_len(), and we call that. This also fixes a string-matching bug in which the sense of memcmp was reversed by mistake for ECDSA keys!
This commit is contained in:
17
sshpubk.c
17
sshpubk.c
@ -557,22 +557,27 @@ struct ssh2_userkey ssh2_wrong_passphrase = {
|
||||
NULL, NULL, NULL
|
||||
};
|
||||
|
||||
const struct ssh_signkey *find_pubkey_alg(const char *name)
|
||||
const struct ssh_signkey *find_pubkey_alg_len(int namelen, const char *name)
|
||||
{
|
||||
if (!strcmp(name, "ssh-rsa"))
|
||||
if (match_ssh_id(namelen, name, "ssh-rsa"))
|
||||
return &ssh_rsa;
|
||||
else if (!strcmp(name, "ssh-dss"))
|
||||
else if (match_ssh_id(namelen, name, "ssh-dss"))
|
||||
return &ssh_dss;
|
||||
else if (!strcmp(name, "ecdsa-sha2-nistp256"))
|
||||
else if (match_ssh_id(namelen, name, "ecdsa-sha2-nistp256"))
|
||||
return &ssh_ecdsa_nistp256;
|
||||
else if (!strcmp(name, "ecdsa-sha2-nistp384"))
|
||||
else if (match_ssh_id(namelen, name, "ecdsa-sha2-nistp384"))
|
||||
return &ssh_ecdsa_nistp384;
|
||||
else if (!strcmp(name, "ecdsa-sha2-nistp521"))
|
||||
else if (match_ssh_id(namelen, name, "ecdsa-sha2-nistp521"))
|
||||
return &ssh_ecdsa_nistp521;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const struct ssh_signkey *find_pubkey_alg(const char *name)
|
||||
{
|
||||
return find_pubkey_alg_len(strlen(name), name);
|
||||
}
|
||||
|
||||
struct ssh2_userkey *ssh2_load_userkey(const Filename *filename,
|
||||
char *passphrase, const char **errorstr)
|
||||
{
|
||||
|
Reference in New Issue
Block a user