version 1.68, 2018/09/13 02:08:33 |
version 1.69, 2022/10/28 00:35:40 |
|
|
|
|
static int openssh_RSA_verify(int, u_char *, size_t, u_char *, size_t, RSA *); |
static int openssh_RSA_verify(int, u_char *, size_t, u_char *, size_t, RSA *); |
|
|
|
static u_int |
|
ssh_rsa_size(const struct sshkey *key) |
|
{ |
|
const BIGNUM *rsa_n; |
|
|
|
if (key->rsa == NULL) |
|
return 0; |
|
RSA_get0_key(key->rsa, &rsa_n, NULL, NULL); |
|
return BN_num_bits(rsa_n); |
|
} |
|
|
|
static int |
|
ssh_rsa_alloc(struct sshkey *k) |
|
{ |
|
if ((k->rsa = RSA_new()) == NULL) |
|
return SSH_ERR_ALLOC_FAIL; |
|
return 0; |
|
} |
|
|
|
static void |
|
ssh_rsa_cleanup(struct sshkey *k) |
|
{ |
|
RSA_free(k->rsa); |
|
k->rsa = NULL; |
|
} |
|
|
static const char * |
static const char * |
rsa_hash_alg_ident(int hash_alg) |
rsa_hash_alg_ident(int hash_alg) |
{ |
{ |
|
|
freezero(decrypted, rsasize); |
freezero(decrypted, rsasize); |
return ret; |
return ret; |
} |
} |
|
|
|
static const struct sshkey_impl_funcs sshkey_rsa_funcs = { |
|
/* .size = */ ssh_rsa_size, |
|
/* .alloc = */ ssh_rsa_alloc, |
|
/* .cleanup = */ ssh_rsa_cleanup, |
|
}; |
|
|
|
const struct sshkey_impl sshkey_rsa_impl = { |
|
/* .name = */ "ssh-rsa", |
|
/* .shortname = */ "RSA", |
|
/* .sigalg = */ NULL, |
|
/* .type = */ KEY_RSA, |
|
/* .nid = */ 0, |
|
/* .cert = */ 0, |
|
/* .sigonly = */ 0, |
|
/* .keybits = */ 0, |
|
/* .funcs = */ &sshkey_rsa_funcs, |
|
}; |
|
|
|
const struct sshkey_impl sshkey_rsa_cert_impl = { |
|
/* .name = */ "ssh-rsa-cert-v01@openssh.com", |
|
/* .shortname = */ "RSA-CERT", |
|
/* .sigalg = */ NULL, |
|
/* .type = */ KEY_RSA_CERT, |
|
/* .nid = */ 0, |
|
/* .cert = */ 1, |
|
/* .sigonly = */ 0, |
|
/* .keybits = */ 0, |
|
/* .funcs = */ &sshkey_rsa_funcs, |
|
}; |
|
|
|
/* SHA2 signature algorithms */ |
|
|
|
const struct sshkey_impl sshkey_rsa_sha256_impl = { |
|
/* .name = */ "rsa-sha2-256", |
|
/* .shortname = */ "RSA", |
|
/* .sigalg = */ NULL, |
|
/* .type = */ KEY_RSA, |
|
/* .nid = */ 0, |
|
/* .cert = */ 0, |
|
/* .sigonly = */ 1, |
|
/* .keybits = */ 0, |
|
/* .funcs = */ &sshkey_rsa_funcs, |
|
}; |
|
|
|
const struct sshkey_impl sshkey_rsa_sha512_impl = { |
|
/* .name = */ "rsa-sha2-512", |
|
/* .shortname = */ "RSA", |
|
/* .sigalg = */ NULL, |
|
/* .type = */ KEY_RSA, |
|
/* .nid = */ 0, |
|
/* .cert = */ 0, |
|
/* .sigonly = */ 1, |
|
/* .keybits = */ 0, |
|
/* .funcs = */ &sshkey_rsa_funcs, |
|
}; |
|
|
|
const struct sshkey_impl sshkey_rsa_sha256_cert_impl = { |
|
/* .name = */ "rsa-sha2-256-cert-v01@openssh.com", |
|
/* .shortname = */ "RSA-CERT", |
|
/* .sigalg = */ "rsa-sha2-256", |
|
/* .type = */ KEY_RSA_CERT, |
|
/* .nid = */ 0, |
|
/* .cert = */ 1, |
|
/* .sigonly = */ 1, |
|
/* .keybits = */ 0, |
|
/* .funcs = */ &sshkey_rsa_funcs, |
|
}; |
|
|
|
const struct sshkey_impl sshkey_rsa_sha512_cert_impl = { |
|
/* .name = */ "rsa-sha2-512-cert-v01@openssh.com", |
|
/* .shortname = */ "RSA-CERT", |
|
/* .sigalg = */ "rsa-sha2-512", |
|
/* .type = */ KEY_RSA_CERT, |
|
/* .nid = */ 0, |
|
/* .cert = */ 1, |
|
/* .sigonly = */ 1, |
|
/* .keybits = */ 0, |
|
/* .funcs = */ &sshkey_rsa_funcs, |
|
}; |