aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libssh/libssh.h1
-rw-r--r--include/libssh/pki.h2
-rw-r--r--src/pki.c15
3 files changed, 16 insertions, 2 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h
index 45e11127..e6f08472 100644
--- a/include/libssh/libssh.h
+++ b/include/libssh/libssh.h
@@ -423,6 +423,7 @@ 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_key_is_public(ssh_key k);
+LIBSSH_API int ssh_key_is_private(ssh_key k);
LIBSSH_API int ssh_pki_import_privkey_base64(ssh_key key, ssh_session session,
const char *b64_key, const char *passphrase);
diff --git a/include/libssh/pki.h b/include/libssh/pki.h
index d51a3582..8d3ef0c9 100644
--- a/include/libssh/pki.h
+++ b/include/libssh/pki.h
@@ -39,8 +39,6 @@ struct ssh_key_struct {
#endif
};
-#define ssh_key_is_private(k) (k && k->flags & SSH_KEY_FLAG_PRIVATE)
-
void ssh_key_clean (ssh_key key);
int ssh_key_import_private(ssh_key key, ssh_session session,
const char *filename, const char *passphrase);
diff --git a/src/pki.c b/src/pki.c
index 52672dbb..fd30ee4f 100644
--- a/src/pki.c
+++ b/src/pki.c
@@ -166,6 +166,21 @@ int ssh_key_is_public(ssh_key k) {
}
/**
+ * @brief Check if the key is a private key.
+ *
+ * @param[in] k The key to check.
+ *
+ * @return 1 if it is a private key, 0 if not.
+ */
+int ssh_key_is_private(ssh_key k) {
+ if (k == NULL) {
+ return 0;
+ }
+
+ return (k->flags & SSH_KEY_FLAG_PRIVATE);
+}
+
+/**
* @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