4 #define HMAC_TEST(alg, key, msg, mac) \
6 struct hmac_##alg##_ctx ctx; \
8 hmac_##alg##_set_key(&ctx, key->length, key->data); \
9 hmac_##alg##_update(&ctx, msg->length, msg->data); \
10 digest[mac->length] = 17; \
11 hmac_##alg##_digest(&ctx, mac->length, digest); \
12 ASSERT(MEMEQ (mac->length, digest, mac->data)); \
13 ASSERT(digest[mac->length] == 17); \
19 /* sha512's digests are longest */
20 uint8_t digest[SHA512_DIGEST_SIZE+1];
22 memset(digest, 0, sizeof(digest));
24 /* Test vectors for md5, from RFC-2202 */
28 SHEX("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"),
30 SHEX("9294727a3638bb1c 13f48ef8158bfc9d"));
36 SDATA("what do ya want for nothing?"),
37 SHEX("750c783e6ab0b503 eaa86e310a5db738"));
41 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
42 SHEX("dddddddddddddddd dddddddddddddddd"
43 "dddddddddddddddd dddddddddddddddd"
44 "dddddddddddddddd dddddddddddddddd"
46 SHEX("56be34521d144c88 dbb8c733f0e8b3f6"));
50 SHEX("0102030405060708 090a0b0c0d0e0f10"
51 "1112131415161718 19"),
52 SHEX("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
53 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
54 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
56 SHEX("697eaf0aca3a3aea 3a75164746ffaa79"));
60 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"),
61 SDATA("Test With Truncation"),
62 SHEX("56461ef2342edc00 f9bab995"));
66 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
67 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
68 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
69 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
70 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
71 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
72 SHEX("6b1ab7fe4bd7bf8f 0b62e6ce61b9d0cd"));
76 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
77 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
78 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
79 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
80 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
81 SDATA("Test Using Larger Than Block-Size Key and Larger "
82 "Than One Block-Size Data"),
83 SHEX("6f630fad67cda0ee 1fb1f562db3aa53e"));
85 /* Additional test vectors, from Daniel Kahn Gillmor */
87 SDATA("monkey monkey monkey monkey"),
89 SHEX("e84db42a188813f30a15e611d64c7869"));
92 SDATA("monkey monkey monkey monkey"),
94 SHEX("123662062e67c2aab371cc49db0df134"));
97 SDATA("monkey monkey monkey monkey"),
99 SHEX("0a46cc10a49d4b7025c040c597bf5d76"));
102 SDATA("monkey monkey monkey monkey"),
104 SHEX("d1f4d89f0e8b2b6ed0623c99ec298310"));
107 SDATA("monkey monkey monkey monkey"),
108 SDATA("message digest"),
109 SHEX("1627207b9bed5009a4f6e9ca8d2ca01e"));
112 SDATA("monkey monkey monkey monkey"),
113 SDATA("abcdefghijklmnopqrstuvwxyz"),
114 SHEX("922aae6ab3b3a29202e21ce5f916ae9a"));
117 SDATA("monkey monkey monkey monkey"),
118 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
119 SHEX("ede9cb83679ba82d88fbeae865b3f8fc"));
122 SDATA("monkey monkey monkey monkey"),
123 SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
124 SHEX("939dd45512ee3a594b6654f6b8de27f7"));
126 /* Test vectors for ripemd160, from
127 http://homes.esat.kuleuven.be/~bosselae/ripemd160.html */
129 SHEX("00112233445566778899aabbccddeeff01234567"),
131 SHEX("cf387677bfda8483e63b57e06c3b5ecd8b7fc055"));
134 SHEX("00112233445566778899aabbccddeeff01234567"),
136 SHEX("0d351d71b78e36dbb7391c810a0d2b6240ddbafc"));
139 SHEX("00112233445566778899aabbccddeeff01234567"),
141 SHEX("f7ef288cb1bbcc6160d76507e0a3bbf712fb67d6"));
144 SHEX("00112233445566778899aabbccddeeff01234567"),
145 SDATA("message digest"),
146 SHEX("f83662cc8d339c227e600fcd636c57d2571b1c34"));
149 SHEX("00112233445566778899aabbccddeeff01234567"),
150 SDATA("abcdefghijklmnopqrstuvwxyz"),
151 SHEX("843d1c4eb880ac8ac0c9c95696507957d0155ddb"));
154 SHEX("00112233445566778899aabbccddeeff01234567"),
155 SDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
156 SHEX("60f5ef198a2dd5745545c1f0c47aa3fb5776f881"));
159 SHEX("00112233445566778899aabbccddeeff01234567"),
160 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
161 SHEX("e49c136a9e5627e0681b808a3b97e6a6e661ae79"));
165 SHEX("0123456789abcdeffedcba987654321000112233"),
167 SHEX("fe69a66c7423eea9c8fa2eff8d9dafb4f17a62f5"));
170 SHEX("0123456789abcdeffedcba987654321000112233"),
172 SHEX("85743e899bc82dbfa36faaa7a25b7cfd372432cd"));
175 SHEX("0123456789abcdeffedcba987654321000112233"),
177 SHEX("6e4afd501fa6b4a1823ca3b10bd9aa0ba97ba182"));
180 SHEX("0123456789abcdeffedcba987654321000112233"),
181 SDATA("message digest"),
182 SHEX("2e066e624badb76a184c8f90fba053330e650e92"));
185 SHEX("0123456789abcdeffedcba987654321000112233"),
186 SDATA("abcdefghijklmnopqrstuvwxyz"),
187 SHEX("07e942aa4e3cd7c04dedc1d46e2e8cc4c741b3d9"));
190 SHEX("0123456789abcdeffedcba987654321000112233"),
191 SDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
192 SHEX("b6582318ddcfb67a53a67d676b8ad869aded629a"));
195 SHEX("0123456789abcdeffedcba987654321000112233"),
196 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
197 SHEX("f1be3ee877703140d34f97ea1ab3a07c141333e2"));
199 /* Test vectors for sha1, from RFC-2202 */
203 SHEX("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b 0b0b0b0b"),
205 SHEX("b617318655057264 e28bc0b6fb378c8e f146be00"));
210 SDATA("what do ya want for nothing?"),
211 SHEX("effcdf6ae5eb2fa2 d27416d5f184df9c 259a7c79"));
215 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaa"),
216 SHEX("dddddddddddddddd dddddddddddddddd"
217 "dddddddddddddddd dddddddddddddddd"
218 "dddddddddddddddd dddddddddddddddd"
220 SHEX("125d7342b9ac11cd 91a39af48aa17b4f 63f175d3"));
224 SHEX("0102030405060708 090a0b0c0d0e0f10"
225 "1112131415161718 19"),
226 SHEX("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
227 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
228 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
230 SHEX("4c9007f4026250c6 bc8414f9bf50c86c 2d7235da"));
234 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
235 SDATA("Test With Truncation"),
236 SHEX("4c1a03424b55e07f e7f27be1"));
240 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
241 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
242 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
243 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
244 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
245 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
246 SHEX("aa4ae5e15272d00e 95705637ce8a3b55 ed402112"));
250 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
251 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
252 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
253 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
254 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
255 SDATA("Test Using Larger Than Block-Size Key and Larger "
256 "Than One Block-Size Data"),
257 SHEX("e8e99d0f45237d78 6d6bbaa7965c7808 bbff1a91"));
259 /* Additional test vectors, from Daniel Kahn Gillmor */
261 SDATA("monkey monkey monkey monkey"),
263 SHEX("e84db42a188813f30a15e611d64c7869"));
266 SDATA("monkey monkey monkey monkey"),
268 SHEX("123662062e67c2aab371cc49db0df134"));
271 SDATA("monkey monkey monkey monkey"),
273 SHEX("0a46cc10a49d4b7025c040c597bf5d76"));
276 SDATA("monkey monkey monkey monkey"),
278 SHEX("d1f4d89f0e8b2b6ed0623c99ec298310"));
281 SDATA("monkey monkey monkey monkey"),
282 SDATA("message digest"),
283 SHEX("1627207b9bed5009a4f6e9ca8d2ca01e"));
286 SDATA("monkey monkey monkey monkey"),
287 SDATA("abcdefghijklmnopqrstuvwxyz"),
288 SHEX("922aae6ab3b3a29202e21ce5f916ae9a"));
291 SDATA("monkey monkey monkey monkey"),
292 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
293 SHEX("ede9cb83679ba82d88fbeae865b3f8fc"));
296 SDATA("monkey monkey monkey monkey"),
297 SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
298 SHEX("939dd45512ee3a594b6654f6b8de27f7"));
300 /* Test vectors for sha224, from RFC 4231 */
302 SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
305 SHEX("896fb1128abbdf196832107cd49df33f"
306 "47b4b1169912ba4f53684b22"));
310 SDATA("what do ya want for nothing?"),
311 SHEX("a30e01098bc6dbbf45690f3a7e9e6d0f"
312 "8bbea2a39e6148008fd05e44"));
315 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
317 SHEX("dddddddddddddddddddddddddddddddd"
318 "dddddddddddddddddddddddddddddddd"
319 "dddddddddddddddddddddddddddddddd"
321 SHEX("7fb3cb3588c6c1f6ffa9694d7d6ad264"
322 "9365b0c1f65d69d1ec8333ea"));
325 SHEX("0102030405060708090a0b0c0d0e0f10"
326 "111213141516171819"),
327 SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
328 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
329 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
331 SHEX("6c11506874013cac6a2abc1bb382627c"
332 "ec6a90d86efc012de7afec5a"));
335 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
336 SDATA("Test With Truncation"),
337 SHEX("0e2aea68a90c8d37c988bcdb9fca6fa8"));
340 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
341 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
342 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
343 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
344 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
345 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
346 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
347 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
349 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
350 SHEX("95e9a0db962095adaebe9b2d6f0dbce2"
351 "d499f112f2d2b7273fa6870e"));
354 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
355 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
356 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
357 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
358 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
359 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
360 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
361 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
363 SDATA("This is a test using a larger than block-size ke"
364 "y and a larger than block-size data. The key nee"
365 "ds to be hashed before being used by the HMAC al"
367 SHEX("3a854166ac5d9f023f54d517d0b39dbd"
368 "946770db9c2b95c9f6f565d1"));
370 /* Additional test vectors, from Daniel Kahn Gillmor */
372 SDATA("monkey monkey monkey monkey"),
374 SHEX("d12a49ae38177ffeaa548b2148bb5238"
375 "60849772d9391e675b103d89"));
378 SDATA("monkey monkey monkey monkey"),
380 SHEX("b04ff8522f904f553970bfa8ad3f0086"
381 "bce1e8580affd8a12c94e31a"));
384 SDATA("monkey monkey monkey monkey"),
386 SHEX("afcfb5511f710334f9350f57faec3c08"
387 "764b4bd126a6840f4347f116"));
390 SDATA("monkey monkey monkey monkey"),
392 SHEX("9df9907af127900c909376893565c6cf"
393 "2d7db244fdc4277da1e0b679"));
396 SDATA("monkey monkey monkey monkey"),
397 SDATA("message digest"),
398 SHEX("254ebf6b8ddd7a3271b3d9aca1699b0c"
399 "0bfb7df61e8a114922c88d27"));
402 SDATA("monkey monkey monkey monkey"),
403 SDATA("abcdefghijklmnopqrstuvwxyz"),
404 SHEX("6ec5bffba5880c3234a6cf257816e4d5"
405 "35ab178a7f12929769e378fb"));
408 SDATA("monkey monkey monkey monkey"),
409 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
410 SHEX("5f768179dbb29ca722875d0f461a2e2f"
411 "597d0210340a84df1a8e9c63"));
414 SDATA("monkey monkey monkey monkey"),
415 SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
416 SHEX("c7667b0d7e56b2b4f6fcc1d8da9e22da"
417 "a1556f44c47132a87303c6a2"));
419 /* Test vectors for sha256, from RFC 4231 */
421 SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
424 SHEX("b0344c61d8db38535ca8afceaf0bf12b"
425 "881dc200c9833da726e9376c2e32cff7"));
429 SDATA("what do ya want for nothing?"),
430 SHEX("5bdcc146bf60754e6a042426089575c7"
431 "5a003f089d2739839dec58b964ec3843"));
434 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
436 SHEX("dddddddddddddddddddddddddddddddd"
437 "dddddddddddddddddddddddddddddddd"
438 "dddddddddddddddddddddddddddddddd"
440 SHEX("773ea91e36800e46854db8ebd09181a7"
441 "2959098b3ef8c122d9635514ced565fe"));
444 SHEX("0102030405060708090a0b0c0d0e0f10"
445 "111213141516171819"),
446 SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
447 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
448 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
450 SHEX("82558a389a443c0ea4cc819899f2083a"
451 "85f0faa3e578f8077a2e3ff46729665b"));
454 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
455 SDATA("Test With Truncation"),
456 SHEX("a3b6167473100ee06e0c796c2955552b"));
459 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
460 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
461 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
462 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
463 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
464 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
465 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
466 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
468 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
469 SHEX("60e431591ee0b67f0d8a26aacbf5b77f"
470 "8e0bc6213728c5140546040f0ee37f54"));
473 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
474 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
475 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
476 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
477 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
478 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
479 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
480 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
482 SDATA("This is a test using a larger than block-size ke"
483 "y and a larger than block-size data. The key nee"
484 "ds to be hashed before being used by the HMAC al"
486 SHEX("9b09ffa71b942fcb27635fbcd5b0e944"
487 "bfdc63644f0713938a7f51535c3a35e2"));
489 /* Additional test vectors for sha256, from
490 draft-ietf-ipsec-ciph-sha-256-01.txt */
492 /* Test Case #1: HMAC-SHA-256 with 3-byte input and 32-byte key */
494 SHEX("0102030405060708 090a0b0c0d0e0f10"
495 "1112131415161718 191a1b1c1d1e1f20"),
497 SHEX("a21b1f5d4cf4f73a 4dd939750f7a066a"
498 "7f98cc131cb16a66 92759021cfab8181"));
500 /* Test Case #2: HMAC-SHA-256 with 56-byte input and 32-byte key */
502 SHEX("0102030405060708 090a0b0c0d0e0f10"
503 "1112131415161718 191a1b1c1d1e1f20"),
504 SDATA("abcdbcdecdefdefgefghfghighijhijk"
505 "ijkljklmklmnlmnomnopnopq"),
506 SHEX("104fdc1257328f08 184ba73131c53cae"
507 "e698e36119421149 ea8c712456697d30"));
509 /* Test Case #3: HMAC-SHA-256 with 112-byte (multi-block) input
512 SHEX("0102030405060708 090a0b0c0d0e0f10"
513 "1112131415161718 191a1b1c1d1e1f20"),
514 SDATA("abcdbcdecdefdefgefghfghighijhijk"
515 "ijkljklmklmnlmnomnopnopqabcdbcde"
516 "cdefdefgefghfghighijhijkijkljklm"
518 SHEX("470305fc7e40fe34 d3eeb3e773d95aab"
519 "73acf0fd060447a5 eb4595bf33a9d1a3"));
521 /* Test Case #4: HMAC-SHA-256 with 8-byte input and 32-byte key */
523 SHEX("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"
524 "0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"),
526 SHEX("198a607eb44bfbc6 9903a0f1cf2bbdc5"
527 "ba0aa3f3d9ae3c1c 7a3b1696a0b68cf7"));
529 /* Test Case #6: HMAC-SHA-256 with 50-byte input and 32-byte key */
531 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
532 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
533 SHEX("dddddddddddddddd dddddddddddddddd"
534 "dddddddddddddddd dddddddddddddddd"
535 "dddddddddddddddd dddddddddddddddd"
537 SHEX("cdcb1220d1ecccea 91e53aba3092f962"
538 "e549fe6ce9ed7fdc 43191fbde45c30b0"));
540 /* Test Case #7: HMAC-SHA-256 with 50-byte input and 37-byte key */
542 SHEX("0102030405060708 090a0b0c0d0e0f10"
543 "1112131415161718 191a1b1c1d1e1f20"
545 SHEX("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
546 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
547 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
549 SHEX("d4633c17f6fb8d74 4c66dee0f8f07455"
550 "6ec4af55ef079985 41468eb49bd2e917"));
552 /* Test Case #8: HMAC-SHA-256 with 20-byte input and 32-byte key */
554 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"
555 "0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"),
556 SDATA("Test With Truncation"),
557 SHEX("7546af01841fc09b 1ab9c3749a5f1c17"));
559 /* Test Case #9: HMAC-SHA-256 with 54-byte input and 80-byte key */
561 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
562 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
563 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
564 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
565 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
566 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
567 SHEX("6953025ed96f0c09 f80a96f78e6538db"
568 "e2e7b820e3dd970e 7ddd39091b32352f"));
570 /* Test Case #10: HMAC-SHA-256 with 73-byte (multi-block) input
573 SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
574 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
575 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
576 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
577 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
578 SDATA("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"),
579 SHEX("6355ac22e890d0a3 c8481a5ca4825bc8"
580 "84d3e7a1ff98a2fc 2ac7d8e064c3b2e6"));
582 /* Additional test vectors, from Daniel Kahn Gillmor */
584 SDATA("monkey monkey monkey monkey"),
586 SHEX("5c780648c90d121c50091c3a0c3afc1f"
587 "4ab847528005d99d9821ad3f341b651a"));
590 SDATA("monkey monkey monkey monkey"),
592 SHEX("6142364c0646b0cfe426866f21d613e0"
593 "55a136a7d9b45d85685e080a09cec463"));
596 SDATA("monkey monkey monkey monkey"),
598 SHEX("e49aa7839977e130ad87b63da9d4eb7b"
599 "263cd5a27c54a7604b6044eb35901171"));
602 SDATA("monkey monkey monkey monkey"),
604 SHEX("e5ef49f545c7af933a9d18c7c562bc91"
605 "08583fd5cf00d9e0db351d6d8f8e41bc"));
608 SDATA("monkey monkey monkey monkey"),
609 SDATA("message digest"),
610 SHEX("373b04877180fea27a41a8fb8f88201c"
611 "a6268411ee3c80b01a424483eb9156e1"));
614 SDATA("monkey monkey monkey monkey"),
615 SDATA("abcdefghijklmnopqrstuvwxyz"),
616 SHEX("eb5945d56eefbdb41602946ea6448d53"
617 "86b08d7d801a87f439fab52f8bb9736e"));
620 SDATA("monkey monkey monkey monkey"),
621 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
622 SHEX("3798f363c57afa6edaffe39016ca7bad"
623 "efd1e670afb0e3987194307dec3197db"));
626 SDATA("monkey monkey monkey monkey"),
627 SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
628 SHEX("c89a7039a62985ff813fe4509b918a43"
629 "6d7b1ffd8778e2c24dec464849fb6128"));
631 /* Test vectors for sha384, from RFC 4231 */
633 SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
636 SHEX("afd03944d84895626b0825f4ab46907f"
637 "15f9dadbe4101ec682aa034c7cebc59c"
638 "faea9ea9076ede7f4af152e8b2fa9cb6"));
642 SDATA("what do ya want for nothing?"),
643 SHEX("af45d2e376484031617f78d2b58a6b1b"
644 "9c7ef464f5a01b47e42ec3736322445e"
645 "8e2240ca5e69e2c78b3239ecfab21649"));
648 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
650 SHEX("dddddddddddddddddddddddddddddddd"
651 "dddddddddddddddddddddddddddddddd"
652 "dddddddddddddddddddddddddddddddd"
654 SHEX("88062608d3e6ad8a0aa2ace014c8a86f"
655 "0aa635d947ac9febe83ef4e55966144b"
656 "2a5ab39dc13814b94e3ab6e101a34f27"));
659 SHEX("0102030405060708090a0b0c0d0e0f10"
660 "111213141516171819"),
661 SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
662 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
663 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
665 SHEX("3e8a69b7783c25851933ab6290af6ca7"
666 "7a9981480850009cc5577c6e1f573b4e"
667 "6801dd23c4a7d679ccf8a386c674cffb"));
670 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
671 SDATA("Test With Truncation"),
672 SHEX("3abf34c3503b2a23a46efc619baef897"));
675 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
676 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
677 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
678 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
679 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
680 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
681 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
682 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
684 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
685 SHEX("4ece084485813e9088d2c63a041bc5b4"
686 "4f9ef1012a2b588f3cd11f05033ac4c6"
687 "0c2ef6ab4030fe8296248df163f44952"));
690 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
691 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
692 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
693 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
694 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
695 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
696 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
697 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
699 SDATA("This is a test using a larger than block-size ke"
700 "y and a larger than block-size data. The key nee"
701 "ds to be hashed before being used by the HMAC al"
703 SHEX("6617178e941f020d351e2f254e8fd32c"
704 "602420feb0b8fb9adccebb82461e99c5"
705 "a678cc31e799176d3860e6110c46523e"));
707 /* Test vectors for sha512, from RFC 4231 */
709 SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
712 SHEX("87aa7cdea5ef619d4ff0b4241a1d6cb0"
713 "2379f4e2ce4ec2787ad0b30545e17cde"
714 "daa833b7d6b8a702038b274eaea3f4e4"
715 "be9d914eeb61f1702e696c203a126854"));
719 SDATA("what do ya want for nothing?"),
720 SHEX("164b7a7bfcf819e2e395fbe73b56e0a3"
721 "87bd64222e831fd610270cd7ea250554"
722 "9758bf75c05a994a6d034f65f8f0e6fd"
723 "caeab1a34d4a6b4b636e070a38bce737"));
726 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
728 SHEX("dddddddddddddddddddddddddddddddd"
729 "dddddddddddddddddddddddddddddddd"
730 "dddddddddddddddddddddddddddddddd"
732 SHEX("fa73b0089d56a284efb0f0756c890be9"
733 "b1b5dbdd8ee81a3655f83e33b2279d39"
734 "bf3e848279a722c806b485a47e67c807"
735 "b946a337bee8942674278859e13292fb"));
738 SHEX("0102030405060708090a0b0c0d0e0f10"
739 "111213141516171819"),
740 SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
741 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
742 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
744 SHEX("b0ba465637458c6990e5a8c5f61d4af7"
745 "e576d97ff94b872de76f8050361ee3db"
746 "a91ca5c11aa25eb4d679275cc5788063"
747 "a5f19741120c4f2de2adebeb10a298dd"));
750 SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
751 SDATA("Test With Truncation"),
752 SHEX("415fad6271580a531d4179bc891d87a6"));
755 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
756 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
757 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
758 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
759 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
760 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
761 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
762 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
764 SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
765 SHEX("80b24263c7c1a3ebb71493c1dd7be8b4"
766 "9b46d1f41b4aeec1121b013783f8f352"
767 "6b56d037e05f2598bd0fd2215d6a1e52"
768 "95e64f73f63f0aec8b915a985d786598"));
771 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
772 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
773 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
774 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
775 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
776 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
777 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
778 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
780 SDATA("This is a test using a larger than block-size ke"
781 "y and a larger than block-size data. The key nee"
782 "ds to be hashed before being used by the HMAC al"
784 SHEX("e37b6a775dc87dbaa4dfa9f96e5e3ffd"
785 "debd71f8867289865df5a32d20cdc944"
786 "b6022cac3c4982b10d5eeb55c3e4de15"
787 "134676fb6de0446065c97440fa8c6a58"));
789 /* Additional test vectors, from Daniel Kahn Gillmor */
791 SDATA("monkey monkey monkey monkey"),
793 SHEX("34316413c2d6940572d0bbbf099d529d"
794 "148b424533cf562bc1b365f530e21a31"
795 "799fc51cef78060cc6f448a8e5d780c2"
796 "6cdf20d4c3e6f27fe5ef576bbd05e855"));
799 SDATA("monkey monkey monkey monkey"),
801 SHEX("cf1948507378bc3ab58cb6ec87f4d456"
802 "b90d3298395c29873f1ded1e111b50fe"
803 "c336ed24684bf19716efc309212f37aa"
804 "715cfb9ecccf3af13691ded167b4b336"));
807 SDATA("monkey monkey monkey monkey"),
809 SHEX("b8201784216ce01b83cdd282616c6e89"
810 "644c6dfd1269ed8580bbc39b92add364"
811 "c2b2a2018cffb1915e8625e473b67d0f"
812 "e54a50e475dfa0e2b1a97bac1383792c"));
815 SDATA("monkey monkey monkey monkey"),
817 SHEX("f097ee08b8c44e847a384f9fd645e35e"
818 "4816baa9791ba39d3dc611210500b044"
819 "873ee296bf1047dc06daa201a5767192"
820 "5b73b4ea59c60114881c8287d0699c83"));
823 SDATA("monkey monkey monkey monkey"),
824 SDATA("message digest"),
825 SHEX("921a441a884b83c76a8526da8e60d60d"
826 "17ded4eee5c29375e0d93717669a4c3e"
827 "eba7473e95f7c1a2a85afc24a0adbc4d"
828 "6c2bdd6ca6cab8b18d19f82d4a6c51bc"));
831 SDATA("monkey monkey monkey monkey"),
832 SDATA("abcdefghijklmnopqrstuvwxyz"),
833 SHEX("640054c96f35815095617d0a8c956066"
834 "1a6ff46bfb39110333b2c52c8866abfb"
835 "59d9152c9b0948c1ed65c3fd72a8fb82"
836 "190acc8830770afe5b0c5b6414c75a77"));
839 SDATA("monkey monkey monkey monkey"),
840 SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
841 SHEX("835a4f5b3750b4c1fccfa88da2f746a4"
842 "900160c9f18964309bb736c13b59491b"
843 "8e32d37b724cc5aebb0f554c6338a3b5"
844 "94c4ba26862b2dadb59b7ede1d08d53e"));
847 SDATA("monkey monkey monkey monkey"),
848 SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
849 SHEX("fdf83dc879e3476c8e8aceff2bf6fece"
850 "2e4f39c7e1a167845465bb549dfa5ffe"
851 "997e6c7cf3720eae51ed2b00ad2a8225"
852 "375092290edfa9d48ec7e4bc8e276088"));
854 /* Additional test vectors, from
855 draft-kelly-ipsec-ciph-sha2-01.txt */
857 /* Test case AUTH512-1: */
859 SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
860 "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
861 "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
862 "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
864 SHEX("637edc6e01dce7e6742a99451aae82df"
865 "23da3e92439e590e43e761b33e910fb8"
866 "ac2878ebd5803f6f0b61dbce5e251ff8"
867 "789a4722c1be65aea45fd464e89f8f5b"));
869 /* Test case AUTH512-2: */
871 SDATA("JefeJefeJefeJefe"
875 SDATA("what do ya want for nothing?"),
876 SHEX("cb370917ae8a7ce28cfd1d8f4705d614"
877 "1c173b2a9362c15df235dfb251b15454"
878 "6aa334ae9fb9afc2184932d8695e397b"
879 "fa0ffb93466cfcceaae38c833b7dba38"));
881 /* Test case AUTH512-3: */
883 SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
884 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
885 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
886 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
887 SHEX("dddddddddddddddddddddddddddddddd"
888 "dddddddddddddddddddddddddddddddd"
889 "dddddddddddddddddddddddddddddddd"
891 SHEX("2ee7acd783624ca9398710f3ee05ae41"
892 "b9f9b0510c87e49e586cc9bf961733d8"
893 "623c7b55cebefccf02d5581acc1c9d5f"
894 "b1ff68a1de45509fbe4da9a433922655"));
896 /* Test case AUTH512-3 from same document seems broken. */