diff options
author | David Barksdale <amatus.amongus@gmail.com> | 2010-10-18 05:52:29 +0000 |
---|---|---|
committer | David Barksdale <amatus.amongus@gmail.com> | 2010-10-18 05:52:29 +0000 |
commit | 93326b9ca26d5dc7f4a50c76b7a84cd685af9b33 (patch) | |
tree | ac9be16421d16bb264ebb3c42ff448a0c5da74b1 /src/util/crypto_hkdf.c | |
parent | 0bdccef390726ec42400b5927d966a9066e7c243 (diff) | |
download | gnunet-93326b9ca26d5dc7f4a50c76b7a84cd685af9b33.tar.gz gnunet-93326b9ca26d5dc7f4a50c76b7a84cd685af9b33.zip |
Fix logic error in HKDF and provide test case for regressions.
Diffstat (limited to 'src/util/crypto_hkdf.c')
-rw-r--r-- | src/util/crypto_hkdf.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/util/crypto_hkdf.c b/src/util/crypto_hkdf.c index eb91780cb..e27f31bb8 100644 --- a/src/util/crypto_hkdf.c +++ b/src/util/crypto_hkdf.c | |||
@@ -246,8 +246,12 @@ GNUNET_CRYPTO_hkdf_v (void *result, size_t out_len, | |||
246 | if (d > 0) | 246 | if (d > 0) |
247 | { | 247 | { |
248 | if (t > 0) | 248 | if (t > 0) |
249 | memcpy (plain, result - k, k); | 249 | { |
250 | memset (plain + k + ctx_len, i + 1, 1); | 250 | memcpy (plain, result - k, k); |
251 | memset (plain + k + ctx_len, i + 1, 1); | ||
252 | } | ||
253 | else | ||
254 | memset (plain + k + ctx_len, 1, 1); | ||
251 | gcry_md_reset (prf); | 255 | gcry_md_reset (prf); |
252 | #if DEBUG_HKDF | 256 | #if DEBUG_HKDF |
253 | dump("K(t):d", plain, plain_len); | 257 | dump("K(t):d", plain, plain_len); |