diff options
author | Jan-Niklas Burfeind <libssh@aiyionpri.me> | 2018-08-09 11:00:00 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-10-09 10:16:14 +0200 |
commit | f3f140e65f0e58fc37b04dbe4173d6ecda0127ac (patch) | |
tree | bd7c83071602fca8bd2e50928c493370353ab230 | |
parent | c977a970933ad6a563cf6599497f6679dd04779d (diff) | |
download | libssh-f3f140e65f0e58fc37b04dbe4173d6ecda0127ac.tar.gz libssh-f3f140e65f0e58fc37b04dbe4173d6ecda0127ac.tar.xz libssh-f3f140e65f0e58fc37b04dbe4173d6ecda0127ac.zip |
dh: Add SSH_PUBLICKEY_HASH_SHA256 to ssh_get_publickey_hash()
Signed-off-by: Jan-Niklas Burfeind <libssh@aiyionpri.me>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit 1499b38aef17beac8b438522535daf428600d529)
-rw-r--r-- | include/libssh/libssh.h | 3 | ||||
-rw-r--r-- | src/dh.c | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 37214898..320dc032 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -444,7 +444,8 @@ LIBSSH_API int ssh_get_publickey(ssh_session session, ssh_key *key); enum ssh_publickey_hash_type { SSH_PUBLICKEY_HASH_SHA1, - SSH_PUBLICKEY_HASH_MD5 + SSH_PUBLICKEY_HASH_MD5, + SSH_PUBLICKEY_HASH_SHA256 }; LIBSSH_API int ssh_get_publickey_hash(const ssh_key key, enum ssh_publickey_hash_type type, @@ -1039,6 +1039,29 @@ int ssh_get_publickey_hash(const ssh_key key, *hlen = SHA_DIGEST_LEN; } break; + case SSH_PUBLICKEY_HASH_SHA256: + { + SHA256CTX ctx; + + h = malloc(SHA256_DIGEST_LEN); + if (h == NULL) { + rc = -1; + goto out; + } + + ctx = sha256_init(); + if (ctx == NULL) { + free(h); + rc = -1; + goto out; + } + + sha256_update(ctx, ssh_string_data(blob), ssh_string_len(blob)); + sha256_final(h, ctx); + + *hlen = SHA256_DIGEST_LEN; + } + break; case SSH_PUBLICKEY_HASH_MD5: { MD5CTX ctx; |