mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-08 19:02:06 +03:00
pki: Add ssh_key_type_to_char() and ssh_key_type_from_name().
This commit is contained in:
@@ -418,6 +418,8 @@ LIBSSH_API enum ssh_keytypes_e ssh_privatekey_type(ssh_private_key privatekey);
|
|||||||
LIBSSH_API ssh_key ssh_key_new(void);
|
LIBSSH_API ssh_key ssh_key_new(void);
|
||||||
LIBSSH_API void ssh_key_free (ssh_key key);
|
LIBSSH_API void ssh_key_free (ssh_key key);
|
||||||
LIBSSH_API enum ssh_keytypes_e ssh_key_type(ssh_key key);
|
LIBSSH_API enum ssh_keytypes_e ssh_key_type(ssh_key key);
|
||||||
|
LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type);
|
||||||
|
LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name);
|
||||||
LIBSSH_API int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session,
|
LIBSSH_API int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session,
|
||||||
const char *b64_key, const char *passphrase);
|
const char *b64_key, const char *passphrase);
|
||||||
LIBSSH_API int ssh_userauth_pki_pubkey(ssh_session session, const char *username,
|
LIBSSH_API int ssh_userauth_pki_pubkey(ssh_session session, const char *username,
|
||||||
|
55
src/pki.c
55
src/pki.c
@@ -95,6 +95,61 @@ enum ssh_keytypes_e ssh_key_type(ssh_key key){
|
|||||||
return key->type;
|
return key->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Convert a key type to a string.
|
||||||
|
*
|
||||||
|
* @param[in] type The type to convert.
|
||||||
|
*
|
||||||
|
* @return A string for the keytype or NULL if unknown.
|
||||||
|
*/
|
||||||
|
const char *ssh_key_type_to_char(enum ssh_keytypes_e type) {
|
||||||
|
switch (type) {
|
||||||
|
case SSH_KEYTYPE_DSS:
|
||||||
|
return "ssh-dss";
|
||||||
|
case SSH_KEYTYPE_RSA:
|
||||||
|
return "ssh-rsa";
|
||||||
|
case SSH_KEYTYPE_RSA1:
|
||||||
|
return "ssh-rsa1";
|
||||||
|
case SSH_KEYTYPE_ECDSA:
|
||||||
|
return "ssh-ecdsa";
|
||||||
|
case SSH_KEYTYPE_UNKNOWN:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We should never reach this */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Convert a ssh key name to a ssh key type.
|
||||||
|
*
|
||||||
|
* @param[in] name The name to convert.
|
||||||
|
*
|
||||||
|
* @return The enum ssh key type.
|
||||||
|
*/
|
||||||
|
enum ssh_keytypes_e ssh_key_type_from_name(const char *name) {
|
||||||
|
if (strcmp(name, "rsa1") == 0) {
|
||||||
|
return SSH_KEYTYPE_RSA1;
|
||||||
|
} else if (strcmp(name, "rsa") == 0) {
|
||||||
|
return SSH_KEYTYPE_RSA;
|
||||||
|
} else if (strcmp(name, "dsa") == 0) {
|
||||||
|
return SSH_KEYTYPE_DSS;
|
||||||
|
} else if (strcmp(name, "ssh-rsa1") == 0) {
|
||||||
|
return SSH_KEYTYPE_RSA1;
|
||||||
|
} else if (strcmp(name, "ssh-rsa") == 0) {
|
||||||
|
return SSH_KEYTYPE_RSA;
|
||||||
|
} else if (strcmp(name, "ssh-dss") == 0) {
|
||||||
|
return SSH_KEYTYPE_DSS;
|
||||||
|
} else if (strcmp(name, "ssh-ecdsa") == 0
|
||||||
|
|| strcmp(name, "ecdsa") == 0
|
||||||
|
|| strcmp(name, "ecdsa-sha2-nistp256") == 0
|
||||||
|
|| strcmp(name, "ecdsa-sha2-nistp384") == 0
|
||||||
|
|| strcmp(name, "ecdsa-sha2-nistp521") == 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
return SSH_KEYTYPE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief import a key from a file
|
* @brief import a key from a file
|
||||||
* @param[out] key the ssh_key to update
|
* @param[out] key the ssh_key to update
|
||||||
|
Reference in New Issue
Block a user