11 typedef UINT32 uint32_t;
20 #define GET_ULONG_BE(n,b,i) \
22 (n) = ( (unsigned long) (b)[(i) ] << 24 ) \
23 | ( (unsigned long) (b)[(i) + 1] << 16 ) \
24 | ( (unsigned long) (b)[(i) + 2] << 8 ) \
25 | ( (unsigned long) (b)[(i) + 3] ); \
30 #define PUT_ULONG_BE(n,b,i) \
32 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
33 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
34 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
35 (b)[(i) + 3] = (unsigned char) ( (n) ); \
39 int unhexify(
unsigned char *obuf,
const char *ibuf)
42 int len = strlen(ibuf) / 2;
43 assert(!(strlen(ibuf) %1));
48 if( c >=
'0' && c <=
'9' )
50 else if( c >=
'a' && c <=
'f' )
52 else if( c >=
'A' && c <=
'F' )
58 if( c2 >=
'0' && c2 <=
'9' )
60 else if( c2 >=
'a' && c2 <=
'f' )
62 else if( c2 >=
'A' && c2 <=
'F' )
67 *obuf++ = ( c << 4 ) | c2;
73 void hexify(
unsigned char *obuf,
const unsigned char *ibuf,
int len)
85 *obuf++ =
'a' + h - 10;
90 *obuf++ =
'a' + l - 10;
106 static int rnd_std_rand(
void *rng_state,
unsigned char *output,
size_t len )
110 if( rng_state != NULL )
113 for( i = 0; i < len; ++i )
124 static int rnd_zero_rand(
void *rng_state,
unsigned char *output,
size_t len )
126 if( rng_state != NULL )
129 memset( output, 0, len );
156 if( rng_state == NULL )
165 memcpy( output, info->
buf, use_len );
166 info->
buf += use_len;
170 if( len - use_len > 0 )
171 return(
rnd_std_rand( NULL, output + use_len, len - use_len ) );
200 uint32_t i, *k, sum, delta=0x9E3779B9;
201 unsigned char result[4];
203 if( rng_state == NULL )
210 size_t use_len = ( len > 4 ) ? 4 : len;
213 for( i = 0; i < 32; i++ )
215 info->
v0 += (((info->
v1 << 4) ^ (info->
v1 >> 5)) + info->
v1) ^ (sum + k[sum & 3]);
217 info->
v1 += (((info->
v0 << 4) ^ (info->
v0 >> 5)) + info->
v0) ^ (sum + k[(sum>>11) & 3]);
221 memcpy( output, result, use_len );
233 FCT_SUITE_BGN(test_suite_mdx)
235 #ifdef POLARSSL_MD2_C
237 FCT_TEST_BGN(md2_test_vector_rfc1319_1)
239 unsigned char src_str[1000];
240 unsigned char hash_str[1000];
241 unsigned char output[33];
243 memset(src_str, 0x00, 1000);
244 memset(hash_str, 0x00, 1000);
245 memset(output, 0x00, 33);
247 strcpy( (
char *) src_str,
"" );
249 md2( src_str, strlen( (
char *) src_str ), output );
250 hexify( hash_str, output, 16 );
252 fct_chk( strcmp( (
char *) hash_str,
"8350e5a3e24c153df2275c9f80692773" ) == 0 );
257 #ifdef POLARSSL_MD2_C
259 FCT_TEST_BGN(md2_test_vector_rfc1319_2)
261 unsigned char src_str[1000];
262 unsigned char hash_str[1000];
263 unsigned char output[33];
265 memset(src_str, 0x00, 1000);
266 memset(hash_str, 0x00, 1000);
267 memset(output, 0x00, 33);
269 strcpy( (
char *) src_str,
"a" );
271 md2( src_str, strlen( (
char *) src_str ), output );
272 hexify( hash_str, output, 16 );
274 fct_chk( strcmp( (
char *) hash_str,
"32ec01ec4a6dac72c0ab96fb34c0b5d1" ) == 0 );
279 #ifdef POLARSSL_MD2_C
281 FCT_TEST_BGN(md2_test_vector_rfc1319_3)
283 unsigned char src_str[1000];
284 unsigned char hash_str[1000];
285 unsigned char output[33];
287 memset(src_str, 0x00, 1000);
288 memset(hash_str, 0x00, 1000);
289 memset(output, 0x00, 33);
291 strcpy( (
char *) src_str,
"abc" );
293 md2( src_str, strlen( (
char *) src_str ), output );
294 hexify( hash_str, output, 16 );
296 fct_chk( strcmp( (
char *) hash_str,
"da853b0d3f88d99b30283a69e6ded6bb" ) == 0 );
301 #ifdef POLARSSL_MD2_C
303 FCT_TEST_BGN(md2_test_vector_rfc1319_4)
305 unsigned char src_str[1000];
306 unsigned char hash_str[1000];
307 unsigned char output[33];
309 memset(src_str, 0x00, 1000);
310 memset(hash_str, 0x00, 1000);
311 memset(output, 0x00, 33);
313 strcpy( (
char *) src_str,
"message digest" );
315 md2( src_str, strlen( (
char *) src_str ), output );
316 hexify( hash_str, output, 16 );
318 fct_chk( strcmp( (
char *) hash_str,
"ab4f496bfb2a530b219ff33031fe06b0" ) == 0 );
323 #ifdef POLARSSL_MD2_C
325 FCT_TEST_BGN(md2_test_vector_rfc1319_5)
327 unsigned char src_str[1000];
328 unsigned char hash_str[1000];
329 unsigned char output[33];
331 memset(src_str, 0x00, 1000);
332 memset(hash_str, 0x00, 1000);
333 memset(output, 0x00, 33);
335 strcpy( (
char *) src_str,
"abcdefghijklmnopqrstuvwxyz" );
337 md2( src_str, strlen( (
char *) src_str ), output );
338 hexify( hash_str, output, 16 );
340 fct_chk( strcmp( (
char *) hash_str,
"4e8ddff3650292ab5a4108c3aa47940b" ) == 0 );
345 #ifdef POLARSSL_MD2_C
347 FCT_TEST_BGN(md2_test_vector_rfc1319_6)
349 unsigned char src_str[1000];
350 unsigned char hash_str[1000];
351 unsigned char output[33];
353 memset(src_str, 0x00, 1000);
354 memset(hash_str, 0x00, 1000);
355 memset(output, 0x00, 33);
357 strcpy( (
char *) src_str,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" );
359 md2( src_str, strlen( (
char *) src_str ), output );
360 hexify( hash_str, output, 16 );
362 fct_chk( strcmp( (
char *) hash_str,
"da33def2a42df13975352846c30338cd" ) == 0 );
367 #ifdef POLARSSL_MD2_C
369 FCT_TEST_BGN(md2_test_vector_rfc1319_7)
371 unsigned char src_str[1000];
372 unsigned char hash_str[1000];
373 unsigned char output[33];
375 memset(src_str, 0x00, 1000);
376 memset(hash_str, 0x00, 1000);
377 memset(output, 0x00, 33);
379 strcpy( (
char *) src_str,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890" );
381 md2( src_str, strlen( (
char *) src_str ), output );
382 hexify( hash_str, output, 16 );
384 fct_chk( strcmp( (
char *) hash_str,
"d5976f79d83d3a0dc9806c3c66f3efd8" ) == 0 );
389 #ifdef POLARSSL_MD4_C
391 FCT_TEST_BGN(md4_test_vector_rfc1320_1)
393 unsigned char src_str[1000];
394 unsigned char hash_str[1000];
395 unsigned char output[33];
397 memset(src_str, 0x00, 1000);
398 memset(hash_str, 0x00, 1000);
399 memset(output, 0x00, 33);
401 strcpy( (
char *) src_str,
"" );
403 md4( src_str, strlen( (
char *) src_str ), output );
404 hexify( hash_str, output, 16 );
406 fct_chk( strcmp( (
char *) hash_str,
"31d6cfe0d16ae931b73c59d7e0c089c0" ) == 0 );
411 #ifdef POLARSSL_MD4_C
413 FCT_TEST_BGN(md4_test_vector_rfc1320_2)
415 unsigned char src_str[1000];
416 unsigned char hash_str[1000];
417 unsigned char output[33];
419 memset(src_str, 0x00, 1000);
420 memset(hash_str, 0x00, 1000);
421 memset(output, 0x00, 33);
423 strcpy( (
char *) src_str,
"a" );
425 md4( src_str, strlen( (
char *) src_str ), output );
426 hexify( hash_str, output, 16 );
428 fct_chk( strcmp( (
char *) hash_str,
"bde52cb31de33e46245e05fbdbd6fb24" ) == 0 );
433 #ifdef POLARSSL_MD4_C
435 FCT_TEST_BGN(md4_test_vector_rfc1320_3)
437 unsigned char src_str[1000];
438 unsigned char hash_str[1000];
439 unsigned char output[33];
441 memset(src_str, 0x00, 1000);
442 memset(hash_str, 0x00, 1000);
443 memset(output, 0x00, 33);
445 strcpy( (
char *) src_str,
"abc" );
447 md4( src_str, strlen( (
char *) src_str ), output );
448 hexify( hash_str, output, 16 );
450 fct_chk( strcmp( (
char *) hash_str,
"a448017aaf21d8525fc10ae87aa6729d" ) == 0 );
455 #ifdef POLARSSL_MD4_C
457 FCT_TEST_BGN(md4_test_vector_rfc1320_4)
459 unsigned char src_str[1000];
460 unsigned char hash_str[1000];
461 unsigned char output[33];
463 memset(src_str, 0x00, 1000);
464 memset(hash_str, 0x00, 1000);
465 memset(output, 0x00, 33);
467 strcpy( (
char *) src_str,
"message digest" );
469 md4( src_str, strlen( (
char *) src_str ), output );
470 hexify( hash_str, output, 16 );
472 fct_chk( strcmp( (
char *) hash_str,
"d9130a8164549fe818874806e1c7014b" ) == 0 );
477 #ifdef POLARSSL_MD4_C
479 FCT_TEST_BGN(md4_test_vector_rfc1320_5)
481 unsigned char src_str[1000];
482 unsigned char hash_str[1000];
483 unsigned char output[33];
485 memset(src_str, 0x00, 1000);
486 memset(hash_str, 0x00, 1000);
487 memset(output, 0x00, 33);
489 strcpy( (
char *) src_str,
"abcdefghijklmnopqrstuvwxyz" );
491 md4( src_str, strlen( (
char *) src_str ), output );
492 hexify( hash_str, output, 16 );
494 fct_chk( strcmp( (
char *) hash_str,
"d79e1c308aa5bbcdeea8ed63df412da9" ) == 0 );
499 #ifdef POLARSSL_MD4_C
501 FCT_TEST_BGN(md4_test_vector_rfc1320_6)
503 unsigned char src_str[1000];
504 unsigned char hash_str[1000];
505 unsigned char output[33];
507 memset(src_str, 0x00, 1000);
508 memset(hash_str, 0x00, 1000);
509 memset(output, 0x00, 33);
511 strcpy( (
char *) src_str,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" );
513 md4( src_str, strlen( (
char *) src_str ), output );
514 hexify( hash_str, output, 16 );
516 fct_chk( strcmp( (
char *) hash_str,
"043f8582f241db351ce627e153e7f0e4" ) == 0 );
521 #ifdef POLARSSL_MD4_C
523 FCT_TEST_BGN(md4_test_vector_rfc1320_7)
525 unsigned char src_str[1000];
526 unsigned char hash_str[1000];
527 unsigned char output[33];
529 memset(src_str, 0x00, 1000);
530 memset(hash_str, 0x00, 1000);
531 memset(output, 0x00, 33);
533 strcpy( (
char *) src_str,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890" );
535 md4( src_str, strlen( (
char *) src_str ), output );
536 hexify( hash_str, output, 16 );
538 fct_chk( strcmp( (
char *) hash_str,
"e33b4ddc9c38f2199c3e7b164fcc0536" ) == 0 );
543 #ifdef POLARSSL_MD5_C
545 FCT_TEST_BGN(md5_test_vector_rfc1321_1)
547 unsigned char src_str[1000];
548 unsigned char hash_str[1000];
549 unsigned char output[33];
551 memset(src_str, 0x00, 1000);
552 memset(hash_str, 0x00, 1000);
553 memset(output, 0x00, 33);
555 strcpy( (
char *) src_str,
"" );
557 md5( src_str, strlen( (
char *) src_str ), output );
558 hexify( hash_str, output, 16 );
560 fct_chk( strcmp( (
char *) hash_str,
"d41d8cd98f00b204e9800998ecf8427e" ) == 0 );
565 #ifdef POLARSSL_MD5_C
567 FCT_TEST_BGN(md5_test_vector_rfc1321_2)
569 unsigned char src_str[1000];
570 unsigned char hash_str[1000];
571 unsigned char output[33];
573 memset(src_str, 0x00, 1000);
574 memset(hash_str, 0x00, 1000);
575 memset(output, 0x00, 33);
577 strcpy( (
char *) src_str,
"a" );
579 md5( src_str, strlen( (
char *) src_str ), output );
580 hexify( hash_str, output, 16 );
582 fct_chk( strcmp( (
char *) hash_str,
"0cc175b9c0f1b6a831c399e269772661" ) == 0 );
587 #ifdef POLARSSL_MD5_C
589 FCT_TEST_BGN(md5_test_vector_rfc1321_3)
591 unsigned char src_str[1000];
592 unsigned char hash_str[1000];
593 unsigned char output[33];
595 memset(src_str, 0x00, 1000);
596 memset(hash_str, 0x00, 1000);
597 memset(output, 0x00, 33);
599 strcpy( (
char *) src_str,
"abc" );
601 md5( src_str, strlen( (
char *) src_str ), output );
602 hexify( hash_str, output, 16 );
604 fct_chk( strcmp( (
char *) hash_str,
"900150983cd24fb0d6963f7d28e17f72" ) == 0 );
609 #ifdef POLARSSL_MD5_C
611 FCT_TEST_BGN(md5_test_vector_rfc1321_4)
613 unsigned char src_str[1000];
614 unsigned char hash_str[1000];
615 unsigned char output[33];
617 memset(src_str, 0x00, 1000);
618 memset(hash_str, 0x00, 1000);
619 memset(output, 0x00, 33);
621 strcpy( (
char *) src_str,
"message digest" );
623 md5( src_str, strlen( (
char *) src_str ), output );
624 hexify( hash_str, output, 16 );
626 fct_chk( strcmp( (
char *) hash_str,
"f96b697d7cb7938d525a2f31aaf161d0" ) == 0 );
631 #ifdef POLARSSL_MD5_C
633 FCT_TEST_BGN(md5_test_vector_rfc1321_5)
635 unsigned char src_str[1000];
636 unsigned char hash_str[1000];
637 unsigned char output[33];
639 memset(src_str, 0x00, 1000);
640 memset(hash_str, 0x00, 1000);
641 memset(output, 0x00, 33);
643 strcpy( (
char *) src_str,
"abcdefghijklmnopqrstuvwxyz" );
645 md5( src_str, strlen( (
char *) src_str ), output );
646 hexify( hash_str, output, 16 );
648 fct_chk( strcmp( (
char *) hash_str,
"c3fcd3d76192e4007dfb496cca67e13b" ) == 0 );
653 #ifdef POLARSSL_MD5_C
655 FCT_TEST_BGN(md5_test_vector_rfc1321_6)
657 unsigned char src_str[1000];
658 unsigned char hash_str[1000];
659 unsigned char output[33];
661 memset(src_str, 0x00, 1000);
662 memset(hash_str, 0x00, 1000);
663 memset(output, 0x00, 33);
665 strcpy( (
char *) src_str,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" );
667 md5( src_str, strlen( (
char *) src_str ), output );
668 hexify( hash_str, output, 16 );
670 fct_chk( strcmp( (
char *) hash_str,
"d174ab98d277d9f5a5611c2c9f419d9f" ) == 0 );
675 #ifdef POLARSSL_MD5_C
677 FCT_TEST_BGN(md5_test_vector_rfc1321_7)
679 unsigned char src_str[1000];
680 unsigned char hash_str[1000];
681 unsigned char output[33];
683 memset(src_str, 0x00, 1000);
684 memset(hash_str, 0x00, 1000);
685 memset(output, 0x00, 33);
687 strcpy( (
char *) src_str,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890" );
689 md5( src_str, strlen( (
char *) src_str ), output );
690 hexify( hash_str, output, 16 );
692 fct_chk( strcmp( (
char *) hash_str,
"57edf4a22be3c955ac49da2e2107b67a" ) == 0 );
697 #ifdef POLARSSL_MD2_C
699 FCT_TEST_BGN(hmac_md2_hash_file_openssl_test_1)
701 unsigned char src_str[10000];
702 unsigned char key_str[10000];
703 unsigned char hash_str[10000];
704 unsigned char output[33];
705 int key_len, src_len;
707 memset(src_str, 0x00, 10000);
708 memset(key_str, 0x00, 10000);
709 memset(hash_str, 0x00, 10000);
710 memset(output, 0x00, 33);
712 key_len =
unhexify( key_str,
"61616161616161616161616161616161" );
713 src_len =
unhexify( src_str,
"b91ce5ac77d33c234e61002ed6" );
715 md2_hmac( key_str, key_len, src_str, src_len, output );
716 hexify( hash_str, output, 16 );
718 fct_chk( strncmp( (
char *) hash_str,
"d5732582f494f5ddf35efd166c85af9c", 16 * 2 ) == 0 );
723 #ifdef POLARSSL_MD2_C
725 FCT_TEST_BGN(hmac_md2_hash_file_openssl_test_2)
727 unsigned char src_str[10000];
728 unsigned char key_str[10000];
729 unsigned char hash_str[10000];
730 unsigned char output[33];
731 int key_len, src_len;
733 memset(src_str, 0x00, 10000);
734 memset(key_str, 0x00, 10000);
735 memset(hash_str, 0x00, 10000);
736 memset(output, 0x00, 33);
738 key_len =
unhexify( key_str,
"61616161616161616161616161616161" );
739 src_len =
unhexify( src_str,
"270fcf11f27c27448457d7049a7edb084a3e554e0b2acf5806982213f0ad516402e4c869c4ff2171e18e3489baa3125d2c3056ebb616296f9b6aa97ef68eeabcdc0b6dde47775004096a241efcf0a90d19b34e898cc7340cdc940f8bdd46e23e352f34bca131d4d67a7c2ddb8d0d68b67f06152a128168e1c341c37e0a66c5018999b7059bcc300beed2c19dd1152d2fe062853293b8f3c8b5" );
741 md2_hmac( key_str, key_len, src_str, src_len, output );
742 hexify( hash_str, output, 16 );
744 fct_chk( strncmp( (
char *) hash_str,
"54ab68503f7d1b5c7741340dff2722a9", 16 * 2 ) == 0 );
749 #ifdef POLARSSL_MD2_C
751 FCT_TEST_BGN(hmac_md2_hash_file_openssl_test_3)
753 unsigned char src_str[10000];
754 unsigned char key_str[10000];
755 unsigned char hash_str[10000];
756 unsigned char output[33];
757 int key_len, src_len;
759 memset(src_str, 0x00, 10000);
760 memset(key_str, 0x00, 10000);
761 memset(hash_str, 0x00, 10000);
762 memset(output, 0x00, 33);
764 key_len =
unhexify( key_str,
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" );
765 src_len =
unhexify( src_str,
"b91ce5ac77d33c234e61002ed6" );
767 md2_hmac( key_str, key_len, src_str, src_len, output );
768 hexify( hash_str, output, 16 );
770 fct_chk( strncmp( (
char *) hash_str,
"d850e5f554558cf0fe79a0612e1d0365", 16 * 2 ) == 0 );
775 #ifdef POLARSSL_MD4_C
777 FCT_TEST_BGN(hmac_md4_hash_file_openssl_test_1)
779 unsigned char src_str[10000];
780 unsigned char key_str[10000];
781 unsigned char hash_str[10000];
782 unsigned char output[33];
783 int key_len, src_len;
785 memset(src_str, 0x00, 10000);
786 memset(key_str, 0x00, 10000);
787 memset(hash_str, 0x00, 10000);
788 memset(output, 0x00, 33);
790 key_len =
unhexify( key_str,
"61616161616161616161616161616161" );
791 src_len =
unhexify( src_str,
"b91ce5ac77d33c234e61002ed6" );
793 md4_hmac( key_str, key_len, src_str, src_len, output );
794 hexify( hash_str, output, 16 );
796 fct_chk( strncmp( (
char *) hash_str,
"eabd0fbefb82fb0063a25a6d7b8bdc0f", 16 * 2 ) == 0 );
801 #ifdef POLARSSL_MD4_C
803 FCT_TEST_BGN(hmac_md4_hash_file_openssl_test_2)
805 unsigned char src_str[10000];
806 unsigned char key_str[10000];
807 unsigned char hash_str[10000];
808 unsigned char output[33];
809 int key_len, src_len;
811 memset(src_str, 0x00, 10000);
812 memset(key_str, 0x00, 10000);
813 memset(hash_str, 0x00, 10000);
814 memset(output, 0x00, 33);
816 key_len =
unhexify( key_str,
"61616161616161616161616161616161" );
817 src_len =
unhexify( src_str,
"270fcf11f27c27448457d7049a7edb084a3e554e0b2acf5806982213f0ad516402e4c869c4ff2171e18e3489baa3125d2c3056ebb616296f9b6aa97ef68eeabcdc0b6dde47775004096a241efcf0a90d19b34e898cc7340cdc940f8bdd46e23e352f34bca131d4d67a7c2ddb8d0d68b67f06152a128168e1c341c37e0a66c5018999b7059bcc300beed2c19dd1152d2fe062853293b8f3c8b5" );
819 md4_hmac( key_str, key_len, src_str, src_len, output );
820 hexify( hash_str, output, 16 );
822 fct_chk( strncmp( (
char *) hash_str,
"cec3c5e421a7b783aa89cacf78daf6dc", 16 * 2 ) == 0 );
827 #ifdef POLARSSL_MD4_C
829 FCT_TEST_BGN(hmac_md4_hash_file_openssl_test_3)
831 unsigned char src_str[10000];
832 unsigned char key_str[10000];
833 unsigned char hash_str[10000];
834 unsigned char output[33];
835 int key_len, src_len;
837 memset(src_str, 0x00, 10000);
838 memset(key_str, 0x00, 10000);
839 memset(hash_str, 0x00, 10000);
840 memset(output, 0x00, 33);
842 key_len =
unhexify( key_str,
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" );
843 src_len =
unhexify( src_str,
"b91ce5ac77d33c234e61002ed6" );
845 md4_hmac( key_str, key_len, src_str, src_len, output );
846 hexify( hash_str, output, 16 );
848 fct_chk( strncmp( (
char *) hash_str,
"ad5f0a04116109b397b57f9cc9b6df4b", 16 * 2 ) == 0 );
853 #ifdef POLARSSL_MD5_C
855 FCT_TEST_BGN(hmac_md5_hash_file_openssl_test_1)
857 unsigned char src_str[10000];
858 unsigned char key_str[10000];
859 unsigned char hash_str[10000];
860 unsigned char output[33];
861 int key_len, src_len;
863 memset(src_str, 0x00, 10000);
864 memset(key_str, 0x00, 10000);
865 memset(hash_str, 0x00, 10000);
866 memset(output, 0x00, 33);
868 key_len =
unhexify( key_str,
"61616161616161616161616161616161" );
869 src_len =
unhexify( src_str,
"b91ce5ac77d33c234e61002ed6" );
871 md5_hmac( key_str, key_len, src_str, src_len, output );
872 hexify( hash_str, output, 16 );
874 fct_chk( strncmp( (
char *) hash_str,
"42552882f00bd4633ea81135a184b284", 16 * 2 ) == 0 );
879 #ifdef POLARSSL_MD5_C
881 FCT_TEST_BGN(hmac_md5_hash_file_openssl_test_2)
883 unsigned char src_str[10000];
884 unsigned char key_str[10000];
885 unsigned char hash_str[10000];
886 unsigned char output[33];
887 int key_len, src_len;
889 memset(src_str, 0x00, 10000);
890 memset(key_str, 0x00, 10000);
891 memset(hash_str, 0x00, 10000);
892 memset(output, 0x00, 33);
894 key_len =
unhexify( key_str,
"61616161616161616161616161616161" );
895 src_len =
unhexify( src_str,
"270fcf11f27c27448457d7049a7edb084a3e554e0b2acf5806982213f0ad516402e4c869c4ff2171e18e3489baa3125d2c3056ebb616296f9b6aa97ef68eeabcdc0b6dde47775004096a241efcf0a90d19b34e898cc7340cdc940f8bdd46e23e352f34bca131d4d67a7c2ddb8d0d68b67f06152a128168e1c341c37e0a66c5018999b7059bcc300beed2c19dd1152d2fe062853293b8f3c8b5" );
897 md5_hmac( key_str, key_len, src_str, src_len, output );
898 hexify( hash_str, output, 16 );
900 fct_chk( strncmp( (
char *) hash_str,
"a16a842891786d01fe50ba7731db7464", 16 * 2 ) == 0 );
905 #ifdef POLARSSL_MD5_C
907 FCT_TEST_BGN(hmac_md5_hash_file_openssl_test_3)
909 unsigned char src_str[10000];
910 unsigned char key_str[10000];
911 unsigned char hash_str[10000];
912 unsigned char output[33];
913 int key_len, src_len;
915 memset(src_str, 0x00, 10000);
916 memset(key_str, 0x00, 10000);
917 memset(hash_str, 0x00, 10000);
918 memset(output, 0x00, 33);
920 key_len =
unhexify( key_str,
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" );
921 src_len =
unhexify( src_str,
"b91ce5ac77d33c234e61002ed6" );
923 md5_hmac( key_str, key_len, src_str, src_len, output );
924 hexify( hash_str, output, 16 );
926 fct_chk( strncmp( (
char *) hash_str,
"e97f623936f98a7f741c4bd0612fecc2", 16 * 2 ) == 0 );
931 #ifdef POLARSSL_MD5_C
933 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_1)
935 unsigned char src_str[10000];
936 unsigned char key_str[10000];
937 unsigned char hash_str[10000];
938 unsigned char output[33];
939 int key_len, src_len;
941 memset(src_str, 0x00, 10000);
942 memset(key_str, 0x00, 10000);
943 memset(hash_str, 0x00, 10000);
944 memset(output, 0x00, 33);
946 key_len =
unhexify( key_str,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" );
947 src_len =
unhexify( src_str,
"4869205468657265" );
949 md5_hmac( key_str, key_len, src_str, src_len, output );
950 hexify( hash_str, output, 16 );
952 fct_chk( strncmp( (
char *) hash_str,
"9294727a3638bb1c13f48ef8158bfc9d", 16 * 2 ) == 0 );
957 #ifdef POLARSSL_MD5_C
959 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_2)
961 unsigned char src_str[10000];
962 unsigned char key_str[10000];
963 unsigned char hash_str[10000];
964 unsigned char output[33];
965 int key_len, src_len;
967 memset(src_str, 0x00, 10000);
968 memset(key_str, 0x00, 10000);
969 memset(hash_str, 0x00, 10000);
970 memset(output, 0x00, 33);
972 key_len =
unhexify( key_str,
"4a656665" );
973 src_len =
unhexify( src_str,
"7768617420646f2079612077616e7420666f72206e6f7468696e673f" );
975 md5_hmac( key_str, key_len, src_str, src_len, output );
976 hexify( hash_str, output, 16 );
978 fct_chk( strncmp( (
char *) hash_str,
"750c783e6ab0b503eaa86e310a5db738", 16 * 2 ) == 0 );
983 #ifdef POLARSSL_MD5_C
985 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_3)
987 unsigned char src_str[10000];
988 unsigned char key_str[10000];
989 unsigned char hash_str[10000];
990 unsigned char output[33];
991 int key_len, src_len;
993 memset(src_str, 0x00, 10000);
994 memset(key_str, 0x00, 10000);
995 memset(hash_str, 0x00, 10000);
996 memset(output, 0x00, 33);
998 key_len =
unhexify( key_str,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );
999 src_len =
unhexify( src_str,
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" );
1001 md5_hmac( key_str, key_len, src_str, src_len, output );
1002 hexify( hash_str, output, 16 );
1004 fct_chk( strncmp( (
char *) hash_str,
"56be34521d144c88dbb8c733f0e8b3f6", 16 * 2 ) == 0 );
1009 #ifdef POLARSSL_MD5_C
1011 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_4)
1013 unsigned char src_str[10000];
1014 unsigned char key_str[10000];
1015 unsigned char hash_str[10000];
1016 unsigned char output[33];
1017 int key_len, src_len;
1019 memset(src_str, 0x00, 10000);
1020 memset(key_str, 0x00, 10000);
1021 memset(hash_str, 0x00, 10000);
1022 memset(output, 0x00, 33);
1024 key_len =
unhexify( key_str,
"0102030405060708090a0b0c0d0e0f10111213141516171819" );
1025 src_len =
unhexify( src_str,
"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd" );
1027 md5_hmac( key_str, key_len, src_str, src_len, output );
1028 hexify( hash_str, output, 16 );
1030 fct_chk( strncmp( (
char *) hash_str,
"697eaf0aca3a3aea3a75164746ffaa79", 16 * 2 ) == 0 );
1035 #ifdef POLARSSL_MD5_C
1037 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_5)
1039 unsigned char src_str[10000];
1040 unsigned char key_str[10000];
1041 unsigned char hash_str[10000];
1042 unsigned char output[33];
1043 int key_len, src_len;
1045 memset(src_str, 0x00, 10000);
1046 memset(key_str, 0x00, 10000);
1047 memset(hash_str, 0x00, 10000);
1048 memset(output, 0x00, 33);
1050 key_len =
unhexify( key_str,
"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c" );
1051 src_len =
unhexify( src_str,
"546573742057697468205472756e636174696f6e" );
1053 md5_hmac( key_str, key_len, src_str, src_len, output );
1054 hexify( hash_str, output, 16 );
1056 fct_chk( strncmp( (
char *) hash_str,
"56461ef2342edc00f9bab995", 12 * 2 ) == 0 );
1061 #ifdef POLARSSL_MD5_C
1063 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_6)
1065 unsigned char src_str[10000];
1066 unsigned char key_str[10000];
1067 unsigned char hash_str[10000];
1068 unsigned char output[33];
1069 int key_len, src_len;
1071 memset(src_str, 0x00, 10000);
1072 memset(key_str, 0x00, 10000);
1073 memset(hash_str, 0x00, 10000);
1074 memset(output, 0x00, 33);
1076 key_len =
unhexify( key_str,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );
1077 src_len =
unhexify( src_str,
"54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374" );
1079 md5_hmac( key_str, key_len, src_str, src_len, output );
1080 hexify( hash_str, output, 16 );
1082 fct_chk( strncmp( (
char *) hash_str,
"6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd", 16 * 2 ) == 0 );
1087 #ifdef POLARSSL_MD5_C
1089 FCT_TEST_BGN(hmac_md5_test_vector_rfc2202_7)
1091 unsigned char src_str[10000];
1092 unsigned char key_str[10000];
1093 unsigned char hash_str[10000];
1094 unsigned char output[33];
1095 int key_len, src_len;
1097 memset(src_str, 0x00, 10000);
1098 memset(key_str, 0x00, 10000);
1099 memset(hash_str, 0x00, 10000);
1100 memset(output, 0x00, 33);
1102 key_len =
unhexify( key_str,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );
1103 src_len =
unhexify( src_str,
"54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b657920616e64204c6172676572205468616e204f6e6520426c6f636b2d53697a652044617461" );
1105 md5_hmac( key_str, key_len, src_str, src_len, output );
1106 hexify( hash_str, output, 16 );
1108 fct_chk( strncmp( (
char *) hash_str,
"6f630fad67cda0ee1fb1f562db3aa53e", 16 * 2 ) == 0 );
1113 #ifdef POLARSSL_MD2_C
1115 FCT_TEST_BGN(hmac_md2_bouncy_castle_test_1)
1117 unsigned char src_str[10000];
1118 unsigned char key_str[10000];
1119 unsigned char hash_str[10000];
1120 unsigned char output[33];
1121 int key_len, src_len;
1123 memset(src_str, 0x00, 10000);
1124 memset(key_str, 0x00, 10000);
1125 memset(hash_str, 0x00, 10000);
1126 memset(output, 0x00, 33);
1128 key_len =
unhexify( key_str,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" );
1129 src_len =
unhexify( src_str,
"4869205468657265" );
1131 md2_hmac( key_str, key_len, src_str, src_len, output );
1132 hexify( hash_str, output, 16 );
1134 fct_chk( strncmp( (
char *) hash_str,
"dc1923ef5f161d35bef839ca8c807808", 16 * 2 ) == 0 );
1139 #ifdef POLARSSL_MD4_C
1141 FCT_TEST_BGN(hmac_md4_bouncy_castle_test_1)
1143 unsigned char src_str[10000];
1144 unsigned char key_str[10000];
1145 unsigned char hash_str[10000];
1146 unsigned char output[33];
1147 int key_len, src_len;
1149 memset(src_str, 0x00, 10000);
1150 memset(key_str, 0x00, 10000);
1151 memset(hash_str, 0x00, 10000);
1152 memset(output, 0x00, 33);
1154 key_len =
unhexify( key_str,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" );
1155 src_len =
unhexify( src_str,
"4869205468657265" );
1157 md4_hmac( key_str, key_len, src_str, src_len, output );
1158 hexify( hash_str, output, 16 );
1160 fct_chk( strncmp( (
char *) hash_str,
"5570ce964ba8c11756cdc3970278ff5a", 16 * 2 ) == 0 );
1165 #ifdef POLARSSL_MD5_C
1167 FCT_TEST_BGN(hmac_md5_bouncy_castle_test_1)
1169 unsigned char src_str[10000];
1170 unsigned char key_str[10000];
1171 unsigned char hash_str[10000];
1172 unsigned char output[33];
1173 int key_len, src_len;
1175 memset(src_str, 0x00, 10000);
1176 memset(key_str, 0x00, 10000);
1177 memset(hash_str, 0x00, 10000);
1178 memset(output, 0x00, 33);
1180 key_len =
unhexify( key_str,
"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b" );
1181 src_len =
unhexify( src_str,
"4869205468657265" );
1183 md5_hmac( key_str, key_len, src_str, src_len, output );
1184 hexify( hash_str, output, 16 );
1186 fct_chk( strncmp( (
char *) hash_str,
"5ccec34ea9656392457fa1ac27f08fbc", 16 * 2 ) == 0 );
1191 #ifdef POLARSSL_MD2_C
1192 #ifdef POLARSSL_FS_IO
1194 FCT_TEST_BGN(md2_hash_file_1)
1196 unsigned char hash_str[65];
1197 unsigned char output[33];
1199 memset(hash_str, 0x00, 65);
1200 memset(output, 0x00, 33);
1202 md2_file(
"data_files/hash_file_1", output);
1203 hexify( hash_str, output, 16 );
1205 fct_chk( strcmp( (
char *) hash_str,
"b593c098712d2e21628c8986695451a8" ) == 0 );
1211 #ifdef POLARSSL_MD2_C
1212 #ifdef POLARSSL_FS_IO
1214 FCT_TEST_BGN(md2_hash_file_2)
1216 unsigned char hash_str[65];
1217 unsigned char output[33];
1219 memset(hash_str, 0x00, 65);
1220 memset(output, 0x00, 33);
1222 md2_file(
"data_files/hash_file_2", output);
1223 hexify( hash_str, output, 16 );
1225 fct_chk( strcmp( (
char *) hash_str,
"3c027b7409909a4c4b26bbab69ad9f4f" ) == 0 );
1231 #ifdef POLARSSL_MD2_C
1232 #ifdef POLARSSL_FS_IO
1234 FCT_TEST_BGN(md2_hash_file_3)
1236 unsigned char hash_str[65];
1237 unsigned char output[33];
1239 memset(hash_str, 0x00, 65);
1240 memset(output, 0x00, 33);
1242 md2_file(
"data_files/hash_file_3", output);
1243 hexify( hash_str, output, 16 );
1245 fct_chk( strcmp( (
char *) hash_str,
"6bb43eb285e81f414083a94cdbe2989d" ) == 0 );
1251 #ifdef POLARSSL_MD2_C
1252 #ifdef POLARSSL_FS_IO
1254 FCT_TEST_BGN(md2_hash_file_4)
1256 unsigned char hash_str[65];
1257 unsigned char output[33];
1259 memset(hash_str, 0x00, 65);
1260 memset(output, 0x00, 33);
1262 md2_file(
"data_files/hash_file_4", output);
1263 hexify( hash_str, output, 16 );
1265 fct_chk( strcmp( (
char *) hash_str,
"8350e5a3e24c153df2275c9f80692773" ) == 0 );
1271 #ifdef POLARSSL_MD4_C
1272 #ifdef POLARSSL_FS_IO
1274 FCT_TEST_BGN(md4_hash_file_1)
1276 unsigned char hash_str[65];
1277 unsigned char output[33];
1279 memset(hash_str, 0x00, 65);
1280 memset(output, 0x00, 33);
1282 md4_file(
"data_files/hash_file_1", output);
1283 hexify( hash_str, output, 16 );
1285 fct_chk( strcmp( (
char *) hash_str,
"8d19772c176bd27153b9486715e2c0b9" ) == 0 );
1291 #ifdef POLARSSL_MD4_C
1292 #ifdef POLARSSL_FS_IO
1294 FCT_TEST_BGN(md4_hash_file_2)
1296 unsigned char hash_str[65];
1297 unsigned char output[33];
1299 memset(hash_str, 0x00, 65);
1300 memset(output, 0x00, 33);
1302 md4_file(
"data_files/hash_file_2", output);
1303 hexify( hash_str, output, 16 );
1305 fct_chk( strcmp( (
char *) hash_str,
"f2ac53b8542882a5a0007c6f84b4d9fd" ) == 0 );
1311 #ifdef POLARSSL_MD4_C
1312 #ifdef POLARSSL_FS_IO
1314 FCT_TEST_BGN(md4_hash_file_3)
1316 unsigned char hash_str[65];
1317 unsigned char output[33];
1319 memset(hash_str, 0x00, 65);
1320 memset(output, 0x00, 33);
1322 md4_file(
"data_files/hash_file_3", output);
1323 hexify( hash_str, output, 16 );
1325 fct_chk( strcmp( (
char *) hash_str,
"195c15158e2d07881d9a654095ce4a42" ) == 0 );
1331 #ifdef POLARSSL_MD4_C
1332 #ifdef POLARSSL_FS_IO
1334 FCT_TEST_BGN(md4_hash_file_4)
1336 unsigned char hash_str[65];
1337 unsigned char output[33];
1339 memset(hash_str, 0x00, 65);
1340 memset(output, 0x00, 33);
1342 md4_file(
"data_files/hash_file_4", output);
1343 hexify( hash_str, output, 16 );
1345 fct_chk( strcmp( (
char *) hash_str,
"31d6cfe0d16ae931b73c59d7e0c089c0" ) == 0 );
1351 #ifdef POLARSSL_MD5_C
1352 #ifdef POLARSSL_FS_IO
1354 FCT_TEST_BGN(md5_hash_file_1)
1356 unsigned char hash_str[65];
1357 unsigned char output[33];
1359 memset(hash_str, 0x00, 65);
1360 memset(output, 0x00, 33);
1362 md5_file(
"data_files/hash_file_1", output);
1363 hexify( hash_str, output, 16 );
1365 fct_chk( strcmp( (
char *) hash_str,
"52bcdc983c9ed64fc148a759b3c7a415" ) == 0 );
1371 #ifdef POLARSSL_MD5_C
1372 #ifdef POLARSSL_FS_IO
1374 FCT_TEST_BGN(md5_hash_file_2)
1376 unsigned char hash_str[65];
1377 unsigned char output[33];
1379 memset(hash_str, 0x00, 65);
1380 memset(output, 0x00, 33);
1382 md5_file(
"data_files/hash_file_2", output);
1383 hexify( hash_str, output, 16 );
1385 fct_chk( strcmp( (
char *) hash_str,
"d17d466f15891df10542207ae78277f0" ) == 0 );
1391 #ifdef POLARSSL_MD5_C
1392 #ifdef POLARSSL_FS_IO
1394 FCT_TEST_BGN(md5_hash_file_3)
1396 unsigned char hash_str[65];
1397 unsigned char output[33];
1399 memset(hash_str, 0x00, 65);
1400 memset(output, 0x00, 33);
1402 md5_file(
"data_files/hash_file_3", output);
1403 hexify( hash_str, output, 16 );
1405 fct_chk( strcmp( (
char *) hash_str,
"d945bcc6200ea95d061a2a818167d920" ) == 0 );
1411 #ifdef POLARSSL_MD5_C
1412 #ifdef POLARSSL_FS_IO
1414 FCT_TEST_BGN(md5_hash_file_4)
1416 unsigned char hash_str[65];
1417 unsigned char output[33];
1419 memset(hash_str, 0x00, 65);
1420 memset(output, 0x00, 33);
1422 md5_file(
"data_files/hash_file_4", output);
1423 hexify( hash_str, output, 16 );
1425 fct_chk( strcmp( (
char *) hash_str,
"d41d8cd98f00b204e9800998ecf8427e" ) == 0 );
1431 #ifdef POLARSSL_MD2_C
1432 #ifdef POLARSSL_SELF_TEST
1434 FCT_TEST_BGN(md2_selftest)
1442 #ifdef POLARSSL_MD4_C
1443 #ifdef POLARSSL_SELF_TEST
1445 FCT_TEST_BGN(md4_selftest)
1453 #ifdef POLARSSL_MD5_C
1454 #ifdef POLARSSL_SELF_TEST
1456 FCT_TEST_BGN(md5_selftest)