diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2011-06-11 12:51:53 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-06-11 13:04:22 +0200 |
commit | 981190f8d3f5a24c321ec6d00ed2731088c031df (patch) | |
tree | d3a6d8b49eb53675d26f3971a77f872dabffa63f | |
parent | 88e2f17b9724c8087d41caabc2325cdbbc85a668 (diff) | |
download | libssh-981190f8d3f5a24c321ec6d00ed2731088c031df.tar.gz libssh-981190f8d3f5a24c321ec6d00ed2731088c031df.tar.xz libssh-981190f8d3f5a24c321ec6d00ed2731088c031df.zip |
pki: Add ssh_key_type_to_char() and ssh_key_type_from_name().
-rw-r--r-- | include/libssh/libssh.h | 2 | ||||
-rw-r--r-- | src/pki.c | 55 |
2 files changed, 57 insertions, 0 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 0682af4..bfd6815 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -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 void ssh_key_free (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, const char *b64_key, const char *passphrase); LIBSSH_API int ssh_userauth_pki_pubkey(ssh_session session, const char *username, @@ -96,6 +96,61 @@ enum ssh_keytypes_e ssh_key_type(ssh_key key){ } /** + * @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 * @param[out] key the ssh_key to update * @param[in] session The SSH Session to use. If a key decryption callback is set, it will |