diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2020-02-29 13:13:54 +0100 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2020-02-29 15:46:25 +0100 |
commit | 7e808e2ef7e3e6eee0027502d8670157bd4983f9 (patch) | |
tree | 721c58b870024cf175dd92082a006db6c36c60fb /src/core | |
parent | 600c43dcf5fcbdf8a111d0bd63e6d1ffecfdc70c (diff) | |
download | weechat-7e808e2ef7e3e6eee0027502d8670157bd4983f9.zip |
core: call function secure_hash_binary in secure_derive_key to compute SHA512 hash
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/wee-secure.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/core/wee-secure.c b/src/core/wee-secure.c index 064f080bb..97a007631 100644 --- a/src/core/wee-secure.c +++ b/src/core/wee-secure.c @@ -175,9 +175,8 @@ int secure_derive_key (const char *salt, const char *passphrase, unsigned char *key, int length_key) { - unsigned char *buffer, *ptr_hash; + char *buffer, *hash; int length, length_hash; - gcry_md_hd_t hd_md; if (!salt || !passphrase || !key || (length_key < 1)) return 0; @@ -194,26 +193,18 @@ secure_derive_key (const char *salt, const char *passphrase, memcpy (buffer + SECURE_SALT_SIZE, passphrase, strlen (passphrase)); /* compute hash of buffer */ - if (gcry_md_open (&hd_md, GCRY_MD_SHA512, 0) != 0) - { - free (buffer); - return 0; - } - length_hash = gcry_md_get_algo_dlen (GCRY_MD_SHA512); - gcry_md_write (hd_md, buffer, length); - ptr_hash = gcry_md_read (hd_md, GCRY_MD_SHA512); - if (!ptr_hash) + secure_hash_binary (buffer, length, GCRY_MD_SHA512, &hash, &length_hash); + if (!hash) { - gcry_md_close (hd_md); free (buffer); return 0; } /* copy beginning of hash (or full hash) in the key */ - memcpy (key, ptr_hash, + memcpy (key, hash, (length_hash > length_key) ? length_key : length_hash); - gcry_md_close (hd_md); + free (hash); free (buffer); return 1; |