summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libssh/libssh.h1
-rw-r--r--libssh/dh.c16
2 files changed, 17 insertions, 0 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h
index 76ede946..699fe28e 100644
--- a/include/libssh/libssh.h
+++ b/include/libssh/libssh.h
@@ -245,6 +245,7 @@ int ssh_get_random(void *where,int len,int strong);
/* this one can be called by the client to see the hash of the public key before accepting it */
int ssh_get_pubkey_hash(SSH_SESSION *session, unsigned char **hash);
+void ssh_clean_pubkey_hash(unsigned char **hash);
ssh_string ssh_get_pubkey(SSH_SESSION *session);
/* in connect.c */
diff --git a/libssh/dh.c b/libssh/dh.c
index 0edd19da..26bcbc7a 100644
--- a/libssh/dh.c
+++ b/libssh/dh.c
@@ -847,6 +847,22 @@ int ssh_get_pubkey_hash(SSH_SESSION *session, unsigned char **hash) {
return MD5_DIGEST_LEN;
}
+/** \addtogroup ssh_session
+ * @{ */
+/**
+ * @brief Deallocate the hash obtained by ssh_get_pubkey_hash.
+ * This is required under Microsoft platform as this library might use a
+ * different C library than your software, hence a different heap.
+ *
+ * @param hash The buffer to deallocate.
+ *
+ * @see ssh_get_pubkey_hash()
+ */
+void ssh_clean_pubkey_hash(unsigned char **hash) {
+ SAFE_FREE(*hash);
+ *hash = NULL;
+}
+
ssh_string ssh_get_pubkey(SSH_SESSION *session){
return string_copy(session->current_crypto->server_pubkey);
}