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/test_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/test_crypto_hkdf.c')
-rw-r--r-- | src/util/test_crypto_hkdf.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/util/test_crypto_hkdf.c b/src/util/test_crypto_hkdf.c index 3a00ce679..80523454e 100644 --- a/src/util/test_crypto_hkdf.c +++ b/src/util/test_crypto_hkdf.c | |||
@@ -242,6 +242,34 @@ tc7 () | |||
242 | GNUNET_assert (memcmp(result + l, "\0", 2) == 0); | 242 | GNUNET_assert (memcmp(result + l, "\0", 2) == 0); |
243 | } | 243 | } |
244 | 244 | ||
245 | void | ||
246 | tc8 () | ||
247 | { | ||
248 | unsigned char ikm[32] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72, | ||
249 | 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe, | ||
250 | 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde }; | ||
251 | unsigned char salt[4] = { 0xfc, 0x62, 0x76, 0x35 }; | ||
252 | unsigned char info[86] = { 0x8c, 0x0d, 0xcf, 0xb3, 0x25, 0x6e, 0x88, 0x0d, 0xc1, 0x0b, | ||
253 | 0x1d, 0x33, 0x15, 0x3e, 0x52, 0x0b, 0xb0, 0x77, 0xff, 0x7d, 0xc3, 0xc7, | ||
254 | 0xef, 0xe5, 0x8e, 0x3c, 0xc4, 0x4e, 0x8b, 0x41, 0x46, 0x1f, 0x02, 0x94, | ||
255 | 0x82, 0x35, 0xc5, 0xa6, 0x5e, 0x91, 0xd8, 0xa2, 0x90, 0xfd, 0x6f, 0xb4, | ||
256 | 0x07, 0xc9, 0xed, 0x6b, 0x18, 0x90, 0x31, 0xab, 0x0f, 0xb5, 0x6b, 0xec, | ||
257 | 0x9e, 0x45, 0xa2, 0x83, 0x65, 0x41, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, | ||
258 | 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x65, 0x63, | ||
259 | 0x74, 0x6f, 0x72, 0x00 }; | ||
260 | unsigned char okm[16] = { 0xd6, 0x90, 0xec, 0x9e, 0x62, 0xdf, 0xb9, 0x41, 0xff, 0x92, | ||
261 | 0x4f, 0xd2, 0xf6, 0x1d, 0x67, 0xe0 }; | ||
262 | char result[18]; | ||
263 | int l = 16; | ||
264 | |||
265 | memset (result, 0, sizeof(result)); | ||
266 | GNUNET_assert (GNUNET_CRYPTO_hkdf(result, l, GCRY_MD_SHA512, GCRY_MD_SHA256, salt, | ||
267 | sizeof(salt), ikm, sizeof(ikm), info, sizeof(info), | ||
268 | NULL) == GNUNET_YES); | ||
269 | GNUNET_assert (memcmp(result, okm, l) == 0); | ||
270 | GNUNET_assert (memcmp(result + l, "\0", 2) == 0); | ||
271 | } | ||
272 | |||
245 | int | 273 | int |
246 | main () | 274 | main () |
247 | { | 275 | { |
@@ -257,6 +285,7 @@ main () | |||
257 | 285 | ||
258 | /* Additional tests */ | 286 | /* Additional tests */ |
259 | tc7(); | 287 | tc7(); |
288 | tc8(); | ||
260 | 289 | ||
261 | return 0; | 290 | return 0; |
262 | } | 291 | } |