mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-08 19:02:06 +03:00
pki: Add ecdsa key support.
This commit is contained in:
@@ -30,13 +30,19 @@ struct ssh_key_struct {
|
|||||||
enum ssh_keytypes_e type;
|
enum ssh_keytypes_e type;
|
||||||
int flags;
|
int flags;
|
||||||
const char *type_c; /* Don't free it ! it is static */
|
const char *type_c; /* Don't free it ! it is static */
|
||||||
|
int ecdsa_nid;
|
||||||
#ifdef HAVE_LIBGCRYPT
|
#ifdef HAVE_LIBGCRYPT
|
||||||
gcry_sexp_t dsa;
|
gcry_sexp_t dsa;
|
||||||
gcry_sexp_t rsa;
|
gcry_sexp_t rsa;
|
||||||
|
void *ecdsa;
|
||||||
#elif HAVE_LIBCRYPTO
|
#elif HAVE_LIBCRYPTO
|
||||||
DSA *dsa;
|
DSA *dsa;
|
||||||
RSA *rsa;
|
RSA *rsa;
|
||||||
|
#ifdef HAVE_OPENSSL_ECC
|
||||||
|
EC_KEY *ecdsa;
|
||||||
|
#else
|
||||||
void *ecdsa;
|
void *ecdsa;
|
||||||
|
#endif /* HAVE_OPENSSL_EC_H */
|
||||||
#endif
|
#endif
|
||||||
void *cert;
|
void *cert;
|
||||||
};
|
};
|
||||||
|
@@ -125,15 +125,21 @@ void ssh_key_clean (ssh_key key){
|
|||||||
#ifdef HAVE_LIBGCRYPT
|
#ifdef HAVE_LIBGCRYPT
|
||||||
if(key->dsa) gcry_sexp_release(key->dsa);
|
if(key->dsa) gcry_sexp_release(key->dsa);
|
||||||
if(key->rsa) gcry_sexp_release(key->rsa);
|
if(key->rsa) gcry_sexp_release(key->rsa);
|
||||||
|
if(key->ecdsa) gcry_sexp_release(key->ecdsa);
|
||||||
#elif defined HAVE_LIBCRYPTO
|
#elif defined HAVE_LIBCRYPTO
|
||||||
if(key->dsa) DSA_free(key->dsa);
|
if(key->dsa) DSA_free(key->dsa);
|
||||||
if(key->rsa) RSA_free(key->rsa);
|
if(key->rsa) RSA_free(key->rsa);
|
||||||
|
#ifdef HAVE_OPENSSL_ECC
|
||||||
|
if(key->ecdsa) EC_KEY_free(key->ecdsa);
|
||||||
|
#endif /* HAVE_OPENSSL_ECC */
|
||||||
#endif
|
#endif
|
||||||
key->flags=SSH_KEY_FLAG_EMPTY;
|
key->flags=SSH_KEY_FLAG_EMPTY;
|
||||||
key->type=SSH_KEYTYPE_UNKNOWN;
|
key->type=SSH_KEYTYPE_UNKNOWN;
|
||||||
|
key->ecdsa_nid = 0;
|
||||||
key->type_c=NULL;
|
key->type_c=NULL;
|
||||||
key->dsa = NULL;
|
key->dsa = NULL;
|
||||||
key->rsa = NULL;
|
key->rsa = NULL;
|
||||||
|
key->ecdsa = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -214,6 +220,7 @@ enum ssh_keytypes_e ssh_key_type_from_name(const char *name) {
|
|||||||
|| strcmp(name, "ecdsa-sha2-nistp256") == 0
|
|| strcmp(name, "ecdsa-sha2-nistp256") == 0
|
||||||
|| strcmp(name, "ecdsa-sha2-nistp384") == 0
|
|| strcmp(name, "ecdsa-sha2-nistp384") == 0
|
||||||
|| strcmp(name, "ecdsa-sha2-nistp521") == 0) {
|
|| strcmp(name, "ecdsa-sha2-nistp521") == 0) {
|
||||||
|
return SSH_KEYTYPE_ECDSA;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SSH_KEYTYPE_UNKNOWN;
|
return SSH_KEYTYPE_UNKNOWN;
|
||||||
|
Reference in New Issue
Block a user