summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2020-02-29 13:13:54 +0100
committerSébastien Helleu <flashcode@flashtux.org>2020-02-29 15:46:25 +0100
commit7e808e2ef7e3e6eee0027502d8670157bd4983f9 (patch)
tree721c58b870024cf175dd92082a006db6c36c60fb /src/core
parent600c43dcf5fcbdf8a111d0bd63e6d1ffecfdc70c (diff)
downloadweechat-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.c19
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;