summaryrefslogtreecommitdiff
path: root/src/util/test_crypto_hkdf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/test_crypto_hkdf.c')
-rw-r--r--src/util/test_crypto_hkdf.c155
1 files changed, 80 insertions, 75 deletions
diff --git a/src/util/test_crypto_hkdf.c b/src/util/test_crypto_hkdf.c
index d4829791d..c41c3362b 100644
--- a/src/util/test_crypto_hkdf.c
+++ b/src/util/test_crypto_hkdf.c
@@ -33,7 +33,7 @@
33#include "gnunet_crypto_lib.h" 33#include "gnunet_crypto_lib.h"
34 34
35void 35void
36tc1() 36tc1 ()
37{ 37{
38 unsigned char ikm[22] = 38 unsigned char ikm[22] =
39 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 39 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
@@ -51,17 +51,17 @@ tc1()
51 unsigned char result[44]; 51 unsigned char result[44];
52 int l = 42; 52 int l = 42;
53 53
54 memset(result, 0, sizeof(result)); 54 memset (result, 0, sizeof(result));
55 GNUNET_assert(GNUNET_CRYPTO_hkdf 55 GNUNET_assert (GNUNET_CRYPTO_hkdf
56 (result, l, GCRY_MD_SHA256, GCRY_MD_SHA256, salt, 56 (result, l, GCRY_MD_SHA256, GCRY_MD_SHA256, salt,
57 sizeof(salt), ikm, sizeof(ikm), info, sizeof(info), 57 sizeof(salt), ikm, sizeof(ikm), info, sizeof(info),
58 NULL) == GNUNET_YES); 58 NULL) == GNUNET_YES);
59 GNUNET_assert(memcmp(result, okm, l) == 0); 59 GNUNET_assert (memcmp (result, okm, l) == 0);
60 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 60 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
61} 61}
62 62
63void 63void
64tc2() 64tc2 ()
65{ 65{
66 unsigned char ikm[80] = 66 unsigned char ikm[80] =
67 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 67 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
@@ -98,17 +98,17 @@ tc2()
98 char result[84]; 98 char result[84];
99 int l = 82; 99 int l = 82;
100 100
101 memset(result, 0, sizeof(result)); 101 memset (result, 0, sizeof(result));
102 GNUNET_assert(GNUNET_CRYPTO_hkdf 102 GNUNET_assert (GNUNET_CRYPTO_hkdf
103 (result, l, GCRY_MD_SHA256, GCRY_MD_SHA256, salt, 103 (result, l, GCRY_MD_SHA256, GCRY_MD_SHA256, salt,
104 sizeof(salt), ikm, sizeof(ikm), info, sizeof(info), 104 sizeof(salt), ikm, sizeof(ikm), info, sizeof(info),
105 NULL) == GNUNET_YES); 105 NULL) == GNUNET_YES);
106 GNUNET_assert(memcmp(result, okm, l) == 0); 106 GNUNET_assert (memcmp (result, okm, l) == 0);
107 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 107 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
108} 108}
109 109
110void 110void
111tc3() 111tc3 ()
112{ 112{
113 unsigned char ikm[22] = 113 unsigned char ikm[22] =
114 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 114 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
@@ -121,16 +121,16 @@ tc3()
121 unsigned char result[44]; 121 unsigned char result[44];
122 int l = 42; 122 int l = 42;
123 123
124 memset(result, 0, sizeof(result)); 124 memset (result, 0, sizeof(result));
125 GNUNET_assert(GNUNET_CRYPTO_hkdf 125 GNUNET_assert (GNUNET_CRYPTO_hkdf
126 (result, l, GCRY_MD_SHA256, GCRY_MD_SHA256, NULL, 0, ikm, 126 (result, l, GCRY_MD_SHA256, GCRY_MD_SHA256, NULL, 0, ikm,
127 sizeof(ikm), NULL, 0, NULL) == GNUNET_YES); 127 sizeof(ikm), NULL, 0, NULL) == GNUNET_YES);
128 GNUNET_assert(memcmp(result, okm, l) == 0); 128 GNUNET_assert (memcmp (result, okm, l) == 0);
129 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 129 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
130} 130}
131 131
132void 132void
133tc4() 133tc4 ()
134{ 134{
135 unsigned char ikm[11] = 135 unsigned char ikm[11] =
136 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 136 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
@@ -148,16 +148,16 @@ tc4()
148 char result[84]; 148 char result[84];
149 int l = 42; 149 int l = 42;
150 150
151 memset(result, 0, sizeof(result)); 151 memset (result, 0, sizeof(result));
152 GNUNET_assert(GNUNET_CRYPTO_hkdf 152 GNUNET_assert (GNUNET_CRYPTO_hkdf
153 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, salt, sizeof(salt), 153 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, salt, sizeof(salt),
154 ikm, sizeof(ikm), info, sizeof(info), NULL) == GNUNET_YES); 154 ikm, sizeof(ikm), info, sizeof(info), NULL) == GNUNET_YES);
155 GNUNET_assert(memcmp(result, okm, l) == 0); 155 GNUNET_assert (memcmp (result, okm, l) == 0);
156 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 156 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
157} 157}
158 158
159void 159void
160tc5() 160tc5 ()
161{ 161{
162 unsigned char ikm[80] = 162 unsigned char ikm[80] =
163 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 163 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
@@ -194,16 +194,16 @@ tc5()
194 char result[84]; 194 char result[84];
195 int l = 82; 195 int l = 82;
196 196
197 memset(result, 0, sizeof(result)); 197 memset (result, 0, sizeof(result));
198 GNUNET_assert(GNUNET_CRYPTO_hkdf 198 GNUNET_assert (GNUNET_CRYPTO_hkdf
199 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, salt, sizeof(salt), 199 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, salt, sizeof(salt),
200 ikm, sizeof(ikm), info, sizeof(info), NULL) == GNUNET_YES); 200 ikm, sizeof(ikm), info, sizeof(info), NULL) == GNUNET_YES);
201 GNUNET_assert(memcmp(result, okm, l) == 0); 201 GNUNET_assert (memcmp (result, okm, l) == 0);
202 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 202 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
203} 203}
204 204
205void 205void
206tc6() 206tc6 ()
207{ 207{
208 unsigned char ikm[22] = 208 unsigned char ikm[22] =
209 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 209 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
@@ -216,16 +216,16 @@ tc6()
216 char result[44]; 216 char result[44];
217 int l = 42; 217 int l = 42;
218 218
219 memset(result, 0, sizeof(result)); 219 memset (result, 0, sizeof(result));
220 GNUNET_assert(GNUNET_CRYPTO_hkdf 220 GNUNET_assert (GNUNET_CRYPTO_hkdf
221 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, NULL, 0, ikm, 221 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, NULL, 0, ikm,
222 sizeof(ikm), NULL, 0, NULL) == GNUNET_YES); 222 sizeof(ikm), NULL, 0, NULL) == GNUNET_YES);
223 GNUNET_assert(memcmp(result, okm, l) == 0); 223 GNUNET_assert (memcmp (result, okm, l) == 0);
224 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 224 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
225} 225}
226 226
227void 227void
228tc7() 228tc7 ()
229{ 229{
230 unsigned char ikm[80] = 230 unsigned char ikm[80] =
231 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 231 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
@@ -244,13 +244,18 @@ tc7()
244 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 244 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5,
245 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf }; 245 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf };
246 unsigned char info1[34] = { 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 246 unsigned char info1[34] = { 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
247 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 247 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
248 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 248 0xc0, 0xc1, 0xc2, 0xc3,
249 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb,
250 0xcc, 0xcd, 0xce, 0xcf,
249 0xd0, 0xd1 }; 251 0xd0, 0xd1 };
250 unsigned char info2[46] = { 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 252 unsigned char info2[46] = { 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
251 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 253 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1,
252 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 254 0xe2, 0xe3, 0xe4, 0xe5,
253 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 255 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,
256 0xee, 0xef, 0xf0, 0xf1,
257 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
258 0xfa, 0xfb, 0xfc, 0xfd,
254 0xfe, 0xff }; 259 0xfe, 0xff };
255 unsigned char okm[82] = 260 unsigned char okm[82] =
256 { 0x0b, 0xd7, 0x70, 0xa7, 0x4d, 0x11, 0x60, 0xf7, 0xc9, 0xf1, 261 { 0x0b, 0xd7, 0x70, 0xa7, 0x4d, 0x11, 0x60, 0xf7, 0xc9, 0xf1,
@@ -263,17 +268,17 @@ tc7()
263 char result[84]; 268 char result[84];
264 int l = 82; 269 int l = 82;
265 270
266 memset(result, 0, sizeof(result)); 271 memset (result, 0, sizeof(result));
267 GNUNET_assert(GNUNET_CRYPTO_hkdf 272 GNUNET_assert (GNUNET_CRYPTO_hkdf
268 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, salt, sizeof(salt), 273 (result, l, GCRY_MD_SHA1, GCRY_MD_SHA1, salt, sizeof(salt),
269 ikm, sizeof(ikm), info1, sizeof(info1), info2, 274 ikm, sizeof(ikm), info1, sizeof(info1), info2,
270 sizeof(info2), NULL) == GNUNET_YES); 275 sizeof(info2), NULL) == GNUNET_YES);
271 GNUNET_assert(memcmp(result, okm, l) == 0); 276 GNUNET_assert (memcmp (result, okm, l) == 0);
272 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 277 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
273} 278}
274 279
275void 280void
276tc8() 281tc8 ()
277{ 282{
278 unsigned char ikm[32] = 283 unsigned char ikm[32] =
279 { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72, 284 { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
@@ -295,31 +300,31 @@ tc8()
295 char result[18]; 300 char result[18];
296 int l = 16; 301 int l = 16;
297 302
298 memset(result, 0, sizeof(result)); 303 memset (result, 0, sizeof(result));
299 GNUNET_assert(GNUNET_CRYPTO_hkdf 304 GNUNET_assert (GNUNET_CRYPTO_hkdf
300 (result, l, GCRY_MD_SHA512, GCRY_MD_SHA256, salt, 305 (result, l, GCRY_MD_SHA512, GCRY_MD_SHA256, salt,
301 sizeof(salt), ikm, sizeof(ikm), info, sizeof(info), 306 sizeof(salt), ikm, sizeof(ikm), info, sizeof(info),
302 NULL) == GNUNET_YES); 307 NULL) == GNUNET_YES);
303 GNUNET_assert(memcmp(result, okm, l) == 0); 308 GNUNET_assert (memcmp (result, okm, l) == 0);
304 GNUNET_assert(memcmp(result + l, "\0", 2) == 0); 309 GNUNET_assert (memcmp (result + l, "\0", 2) == 0);
305} 310}
306 311
307int 312int
308main() 313main ()
309{ 314{
310 GNUNET_log_setup("test-crypto-hkdf", "WARNING", NULL); 315 GNUNET_log_setup ("test-crypto-hkdf", "WARNING", NULL);
311 316
312 /* Official test vectors */ 317 /* Official test vectors */
313 tc1(); 318 tc1 ();
314 tc2(); 319 tc2 ();
315 tc3(); 320 tc3 ();
316 tc4(); 321 tc4 ();
317 tc5(); 322 tc5 ();
318 tc6(); 323 tc6 ();
319 324
320 /* Additional tests */ 325 /* Additional tests */
321 tc7(); 326 tc7 ();
322 tc8(); 327 tc8 ();
323 328
324 return 0; 329 return 0;
325} 330}