aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libssh/libssh.h3
-rw-r--r--libssh/keyfiles.c14
2 files changed, 17 insertions, 0 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h
index faa07cec..22a8e1ec 100644
--- a/include/libssh/libssh.h
+++ b/include/libssh/libssh.h
@@ -396,6 +396,9 @@ LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap);
LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap);
LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void);
LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename);
+
+LIBSSH_API int ssh_privatekey_type(ssh_private_key privatekey);
+
LIBSSH_API void ssh_print_hexa(const char *descr, const unsigned char *what, size_t len);
LIBSSH_API int ssh_scp_accept_request(ssh_scp scp);
LIBSSH_API int ssh_scp_close(ssh_scp scp);
diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c
index 427087a9..f05cd736 100644
--- a/libssh/keyfiles.c
+++ b/libssh/keyfiles.c
@@ -796,6 +796,20 @@ ssh_private_key privatekey_from_file(ssh_session session, const char *filename,
return privkey;
}
+/**
+ * @brief returns the type of a private key
+ * @param privatekey[in] the private key handle
+ * @returns one of TYPE_RSA,TYPE_DSS,TYPE_RSA1
+ * @returns 0 if the type is unknown
+ * @see privatekey_from_file
+ * @see ssh_userauth_offer_pubkey
+ */
+int ssh_privatekey_type(ssh_private_key privatekey){
+ if (privatekey==NULL)
+ return 0;
+ return privatekey->type;
+}
+
/* same that privatekey_from_file() but without any passphrase things. */
ssh_private_key _privatekey_from_file(void *session, const char *filename,
int type) {