aboutsummaryrefslogtreecommitdiff
path: root/src/util/test_crypto_hkdf.c
diff options
context:
space:
mode:
authorDavid Barksdale <amatus.amongus@gmail.com>2010-10-18 05:52:29 +0000
committerDavid Barksdale <amatus.amongus@gmail.com>2010-10-18 05:52:29 +0000
commit93326b9ca26d5dc7f4a50c76b7a84cd685af9b33 (patch)
treeac9be16421d16bb264ebb3c42ff448a0c5da74b1 /src/util/test_crypto_hkdf.c
parent0bdccef390726ec42400b5927d966a9066e7c243 (diff)
downloadgnunet-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.c29
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
245void
246tc8 ()
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
245int 273int
246main () 274main ()
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}