8 typedef UINT32 uint32_t;
17 #define GET_UINT32_BE(n,b,i) \
19 (n) = ( (uint32_t) (b)[(i) ] << 24 ) \
20 | ( (uint32_t) (b)[(i) + 1] << 16 ) \
21 | ( (uint32_t) (b)[(i) + 2] << 8 ) \
22 | ( (uint32_t) (b)[(i) + 3] ); \
27 #define PUT_UINT32_BE(n,b,i) \
29 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
30 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
31 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
32 (b)[(i) + 3] = (unsigned char) ( (n) ); \
36 int unhexify(
unsigned char *obuf,
const char *ibuf)
39 int len = strlen(ibuf) / 2;
40 assert(!(strlen(ibuf) %1));
45 if( c >=
'0' && c <=
'9' )
47 else if( c >=
'a' && c <=
'f' )
49 else if( c >=
'A' && c <=
'F' )
55 if( c2 >=
'0' && c2 <=
'9' )
57 else if( c2 >=
'a' && c2 <=
'f' )
59 else if( c2 >=
'A' && c2 <=
'F' )
64 *obuf++ = ( c << 4 ) | c2;
70 void hexify(
unsigned char *obuf,
const unsigned char *ibuf,
int len)
82 *obuf++ =
'a' + h - 10;
87 *obuf++ =
'a' + l - 10;
103 static int rnd_std_rand(
void *rng_state,
unsigned char *output,
size_t len )
107 if( rng_state != NULL )
110 for( i = 0; i < len; ++i )
121 static int rnd_zero_rand(
void *rng_state,
unsigned char *output,
size_t len )
123 if( rng_state != NULL )
126 memset( output, 0, len );
153 if( rng_state == NULL )
162 memcpy( output, info->
buf, use_len );
163 info->
buf += use_len;
167 if( len - use_len > 0 )
168 return(
rnd_std_rand( NULL, output + use_len, len - use_len ) );
197 uint32_t i, *k, sum, delta=0x9E3779B9;
198 unsigned char result[4];
200 if( rng_state == NULL )
207 size_t use_len = ( len > 4 ) ? 4 : len;
210 for( i = 0; i < 32; i++ )
212 info->
v0 += (((info->
v1 << 4) ^ (info->
v1 >> 5)) + info->
v1) ^ (sum + k[sum & 3]);
214 info->
v1 += (((info->
v0 << 4) ^ (info->
v0 >> 5)) + info->
v0) ^ (sum + k[(sum>>11) & 3]);
218 memcpy( output, result, use_len );
228 #ifdef POLARSSL_AES_C
231 FCT_SUITE_BGN(test_suite_aes)
234 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_1)
236 unsigned char key_str[100];
237 unsigned char iv_str[100];
238 unsigned char src_str[100];
239 unsigned char dst_str[100];
240 unsigned char output[100];
242 int key_len, data_len;
244 memset(key_str, 0x00, 100);
245 memset(iv_str, 0x00, 100);
246 memset(src_str, 0x00, 100);
247 memset(dst_str, 0x00, 100);
248 memset(output, 0x00, 100);
250 key_len =
unhexify( key_str,
"fffffffffffff8000000000000000000" );
251 unhexify( iv_str,
"00000000000000000000000000000000" );
252 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
258 hexify( dst_str, output, data_len );
260 fct_chk( strcmp( (
char *) dst_str,
"8b527a6aebdaec9eaef8eda2cb7783e5" ) == 0 );
266 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_2)
268 unsigned char key_str[100];
269 unsigned char iv_str[100];
270 unsigned char src_str[100];
271 unsigned char dst_str[100];
272 unsigned char output[100];
274 int key_len, data_len;
276 memset(key_str, 0x00, 100);
277 memset(iv_str, 0x00, 100);
278 memset(src_str, 0x00, 100);
279 memset(dst_str, 0x00, 100);
280 memset(output, 0x00, 100);
282 key_len =
unhexify( key_str,
"fffffffffffffc000000000000000000" );
283 unhexify( iv_str,
"00000000000000000000000000000000" );
284 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
290 hexify( dst_str, output, data_len );
292 fct_chk( strcmp( (
char *) dst_str,
"43fdaf53ebbc9880c228617d6a9b548b" ) == 0 );
298 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_3)
300 unsigned char key_str[100];
301 unsigned char iv_str[100];
302 unsigned char src_str[100];
303 unsigned char dst_str[100];
304 unsigned char output[100];
306 int key_len, data_len;
308 memset(key_str, 0x00, 100);
309 memset(iv_str, 0x00, 100);
310 memset(src_str, 0x00, 100);
311 memset(dst_str, 0x00, 100);
312 memset(output, 0x00, 100);
314 key_len =
unhexify( key_str,
"fffffffffffffe000000000000000000" );
315 unhexify( iv_str,
"00000000000000000000000000000000" );
316 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
322 hexify( dst_str, output, data_len );
324 fct_chk( strcmp( (
char *) dst_str,
"53786104b9744b98f052c46f1c850d0b" ) == 0 );
330 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_4)
332 unsigned char key_str[100];
333 unsigned char iv_str[100];
334 unsigned char src_str[100];
335 unsigned char dst_str[100];
336 unsigned char output[100];
338 int key_len, data_len;
340 memset(key_str, 0x00, 100);
341 memset(iv_str, 0x00, 100);
342 memset(src_str, 0x00, 100);
343 memset(dst_str, 0x00, 100);
344 memset(output, 0x00, 100);
346 key_len =
unhexify( key_str,
"e37b1c6aa2846f6fdb413f238b089f23" );
347 unhexify( iv_str,
"00000000000000000000000000000000" );
348 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
354 hexify( dst_str, output, data_len );
356 fct_chk( strcmp( (
char *) dst_str,
"43c9f7e62f5d288bb27aa40ef8fe1ea8" ) == 0 );
362 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_5)
364 unsigned char key_str[100];
365 unsigned char iv_str[100];
366 unsigned char src_str[100];
367 unsigned char dst_str[100];
368 unsigned char output[100];
370 int key_len, data_len;
372 memset(key_str, 0x00, 100);
373 memset(iv_str, 0x00, 100);
374 memset(src_str, 0x00, 100);
375 memset(dst_str, 0x00, 100);
376 memset(output, 0x00, 100);
378 key_len =
unhexify( key_str,
"6c002b682483e0cabcc731c253be5674" );
379 unhexify( iv_str,
"00000000000000000000000000000000" );
380 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
386 hexify( dst_str, output, data_len );
388 fct_chk( strcmp( (
char *) dst_str,
"3580d19cff44f1014a7c966a69059de5" ) == 0 );
394 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_6)
396 unsigned char key_str[100];
397 unsigned char iv_str[100];
398 unsigned char src_str[100];
399 unsigned char dst_str[100];
400 unsigned char output[100];
402 int key_len, data_len;
404 memset(key_str, 0x00, 100);
405 memset(iv_str, 0x00, 100);
406 memset(src_str, 0x00, 100);
407 memset(dst_str, 0x00, 100);
408 memset(output, 0x00, 100);
410 key_len =
unhexify( key_str,
"143ae8ed6555aba96110ab58893a8ae1" );
411 unhexify( iv_str,
"00000000000000000000000000000000" );
412 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
418 hexify( dst_str, output, data_len );
420 fct_chk( strcmp( (
char *) dst_str,
"806da864dd29d48deafbe764f8202aef" ) == 0 );
426 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_7)
428 unsigned char key_str[100];
429 unsigned char iv_str[100];
430 unsigned char src_str[100];
431 unsigned char dst_str[100];
432 unsigned char output[100];
434 int key_len, data_len;
436 memset(key_str, 0x00, 100);
437 memset(iv_str, 0x00, 100);
438 memset(src_str, 0x00, 100);
439 memset(dst_str, 0x00, 100);
440 memset(output, 0x00, 100);
442 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
443 unhexify( iv_str,
"00000000000000000000000000000000" );
444 data_len =
unhexify( src_str,
"6a118a874519e64e9963798a503f1d35" );
450 hexify( dst_str, output, data_len );
452 fct_chk( strcmp( (
char *) dst_str,
"dc43be40be0e53712f7e2bf5ca707209" ) == 0 );
458 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_8)
460 unsigned char key_str[100];
461 unsigned char iv_str[100];
462 unsigned char src_str[100];
463 unsigned char dst_str[100];
464 unsigned char output[100];
466 int key_len, data_len;
468 memset(key_str, 0x00, 100);
469 memset(iv_str, 0x00, 100);
470 memset(src_str, 0x00, 100);
471 memset(dst_str, 0x00, 100);
472 memset(output, 0x00, 100);
474 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
475 unhexify( iv_str,
"00000000000000000000000000000000" );
476 data_len =
unhexify( src_str,
"cb9fceec81286ca3e989bd979b0cb284" );
482 hexify( dst_str, output, data_len );
484 fct_chk( strcmp( (
char *) dst_str,
"92beedab1895a94faa69b632e5cc47ce" ) == 0 );
490 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_9)
492 unsigned char key_str[100];
493 unsigned char iv_str[100];
494 unsigned char src_str[100];
495 unsigned char dst_str[100];
496 unsigned char output[100];
498 int key_len, data_len;
500 memset(key_str, 0x00, 100);
501 memset(iv_str, 0x00, 100);
502 memset(src_str, 0x00, 100);
503 memset(dst_str, 0x00, 100);
504 memset(output, 0x00, 100);
506 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
507 unhexify( iv_str,
"00000000000000000000000000000000" );
508 data_len =
unhexify( src_str,
"b26aeb1874e47ca8358ff22378f09144" );
514 hexify( dst_str, output, data_len );
516 fct_chk( strcmp( (
char *) dst_str,
"459264f4798f6a78bacb89c15ed3d601" ) == 0 );
522 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_10)
524 unsigned char key_str[100];
525 unsigned char iv_str[100];
526 unsigned char src_str[100];
527 unsigned char dst_str[100];
528 unsigned char output[100];
530 int key_len, data_len;
532 memset(key_str, 0x00, 100);
533 memset(iv_str, 0x00, 100);
534 memset(src_str, 0x00, 100);
535 memset(dst_str, 0x00, 100);
536 memset(output, 0x00, 100);
538 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
539 unhexify( iv_str,
"00000000000000000000000000000000" );
540 data_len =
unhexify( src_str,
"ffffffffffffffffffffffc000000000" );
546 hexify( dst_str, output, data_len );
548 fct_chk( strcmp( (
char *) dst_str,
"90684a2ac55fe1ec2b8ebd5622520b73" ) == 0 );
554 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_11)
556 unsigned char key_str[100];
557 unsigned char iv_str[100];
558 unsigned char src_str[100];
559 unsigned char dst_str[100];
560 unsigned char output[100];
562 int key_len, data_len;
564 memset(key_str, 0x00, 100);
565 memset(iv_str, 0x00, 100);
566 memset(src_str, 0x00, 100);
567 memset(dst_str, 0x00, 100);
568 memset(output, 0x00, 100);
570 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
571 unhexify( iv_str,
"00000000000000000000000000000000" );
572 data_len =
unhexify( src_str,
"ffffffffffffffffffffffe000000000" );
578 hexify( dst_str, output, data_len );
580 fct_chk( strcmp( (
char *) dst_str,
"7472f9a7988607ca79707795991035e6" ) == 0 );
586 FCT_TEST_BGN(aes_128_cbc_encrypt_nist_kat_12)
588 unsigned char key_str[100];
589 unsigned char iv_str[100];
590 unsigned char src_str[100];
591 unsigned char dst_str[100];
592 unsigned char output[100];
594 int key_len, data_len;
596 memset(key_str, 0x00, 100);
597 memset(iv_str, 0x00, 100);
598 memset(src_str, 0x00, 100);
599 memset(dst_str, 0x00, 100);
600 memset(output, 0x00, 100);
602 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
603 unhexify( iv_str,
"00000000000000000000000000000000" );
604 data_len =
unhexify( src_str,
"fffffffffffffffffffffff000000000" );
610 hexify( dst_str, output, data_len );
612 fct_chk( strcmp( (
char *) dst_str,
"56aff089878bf3352f8df172a3ae47d8" ) == 0 );
618 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_1)
620 unsigned char key_str[100];
621 unsigned char iv_str[100];
622 unsigned char src_str[100];
623 unsigned char dst_str[100];
624 unsigned char output[100];
626 int key_len, data_len;
628 memset(key_str, 0x00, 100);
629 memset(iv_str, 0x00, 100);
630 memset(src_str, 0x00, 100);
631 memset(dst_str, 0x00, 100);
632 memset(output, 0x00, 100);
634 key_len =
unhexify( key_str,
"ffffffffe00000000000000000000000" );
635 unhexify( iv_str,
"00000000000000000000000000000000" );
636 data_len =
unhexify( src_str,
"23f710842b9bb9c32f26648c786807ca" );
642 hexify( dst_str, output, data_len );
644 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
650 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_2)
652 unsigned char key_str[100];
653 unsigned char iv_str[100];
654 unsigned char src_str[100];
655 unsigned char dst_str[100];
656 unsigned char output[100];
658 int key_len, data_len;
660 memset(key_str, 0x00, 100);
661 memset(iv_str, 0x00, 100);
662 memset(src_str, 0x00, 100);
663 memset(dst_str, 0x00, 100);
664 memset(output, 0x00, 100);
666 key_len =
unhexify( key_str,
"fffffffff00000000000000000000000" );
667 unhexify( iv_str,
"00000000000000000000000000000000" );
668 data_len =
unhexify( src_str,
"44a98bf11e163f632c47ec6a49683a89" );
674 hexify( dst_str, output, data_len );
676 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
682 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_3)
684 unsigned char key_str[100];
685 unsigned char iv_str[100];
686 unsigned char src_str[100];
687 unsigned char dst_str[100];
688 unsigned char output[100];
690 int key_len, data_len;
692 memset(key_str, 0x00, 100);
693 memset(iv_str, 0x00, 100);
694 memset(src_str, 0x00, 100);
695 memset(dst_str, 0x00, 100);
696 memset(output, 0x00, 100);
698 key_len =
unhexify( key_str,
"fffffffff80000000000000000000000" );
699 unhexify( iv_str,
"00000000000000000000000000000000" );
700 data_len =
unhexify( src_str,
"0f18aff94274696d9b61848bd50ac5e5" );
706 hexify( dst_str, output, data_len );
708 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
714 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_4)
716 unsigned char key_str[100];
717 unsigned char iv_str[100];
718 unsigned char src_str[100];
719 unsigned char dst_str[100];
720 unsigned char output[100];
722 int key_len, data_len;
724 memset(key_str, 0x00, 100);
725 memset(iv_str, 0x00, 100);
726 memset(src_str, 0x00, 100);
727 memset(dst_str, 0x00, 100);
728 memset(output, 0x00, 100);
730 key_len =
unhexify( key_str,
"e234cdca2606b81f29408d5f6da21206" );
731 unhexify( iv_str,
"00000000000000000000000000000000" );
732 data_len =
unhexify( src_str,
"fff60a4740086b3b9c56195b98d91a7b" );
738 hexify( dst_str, output, data_len );
740 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
746 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_5)
748 unsigned char key_str[100];
749 unsigned char iv_str[100];
750 unsigned char src_str[100];
751 unsigned char dst_str[100];
752 unsigned char output[100];
754 int key_len, data_len;
756 memset(key_str, 0x00, 100);
757 memset(iv_str, 0x00, 100);
758 memset(src_str, 0x00, 100);
759 memset(dst_str, 0x00, 100);
760 memset(output, 0x00, 100);
762 key_len =
unhexify( key_str,
"13237c49074a3da078dc1d828bb78c6f" );
763 unhexify( iv_str,
"00000000000000000000000000000000" );
764 data_len =
unhexify( src_str,
"8146a08e2357f0caa30ca8c94d1a0544" );
770 hexify( dst_str, output, data_len );
772 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
778 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_6)
780 unsigned char key_str[100];
781 unsigned char iv_str[100];
782 unsigned char src_str[100];
783 unsigned char dst_str[100];
784 unsigned char output[100];
786 int key_len, data_len;
788 memset(key_str, 0x00, 100);
789 memset(iv_str, 0x00, 100);
790 memset(src_str, 0x00, 100);
791 memset(dst_str, 0x00, 100);
792 memset(output, 0x00, 100);
794 key_len =
unhexify( key_str,
"3071a2a48fe6cbd04f1a129098e308f8" );
795 unhexify( iv_str,
"00000000000000000000000000000000" );
796 data_len =
unhexify( src_str,
"4b98e06d356deb07ebb824e5713f7be3" );
802 hexify( dst_str, output, data_len );
804 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
810 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_7)
812 unsigned char key_str[100];
813 unsigned char iv_str[100];
814 unsigned char src_str[100];
815 unsigned char dst_str[100];
816 unsigned char output[100];
818 int key_len, data_len;
820 memset(key_str, 0x00, 100);
821 memset(iv_str, 0x00, 100);
822 memset(src_str, 0x00, 100);
823 memset(dst_str, 0x00, 100);
824 memset(output, 0x00, 100);
826 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
827 unhexify( iv_str,
"00000000000000000000000000000000" );
828 data_len =
unhexify( src_str,
"0336763e966d92595a567cc9ce537f5e" );
834 hexify( dst_str, output, data_len );
836 fct_chk( strcmp( (
char *) dst_str,
"f34481ec3cc627bacd5dc3fb08f273e6" ) == 0 );
842 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_8)
844 unsigned char key_str[100];
845 unsigned char iv_str[100];
846 unsigned char src_str[100];
847 unsigned char dst_str[100];
848 unsigned char output[100];
850 int key_len, data_len;
852 memset(key_str, 0x00, 100);
853 memset(iv_str, 0x00, 100);
854 memset(src_str, 0x00, 100);
855 memset(dst_str, 0x00, 100);
856 memset(output, 0x00, 100);
858 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
859 unhexify( iv_str,
"00000000000000000000000000000000" );
860 data_len =
unhexify( src_str,
"a9a1631bf4996954ebc093957b234589" );
866 hexify( dst_str, output, data_len );
868 fct_chk( strcmp( (
char *) dst_str,
"9798c4640bad75c7c3227db910174e72" ) == 0 );
874 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_9)
876 unsigned char key_str[100];
877 unsigned char iv_str[100];
878 unsigned char src_str[100];
879 unsigned char dst_str[100];
880 unsigned char output[100];
882 int key_len, data_len;
884 memset(key_str, 0x00, 100);
885 memset(iv_str, 0x00, 100);
886 memset(src_str, 0x00, 100);
887 memset(dst_str, 0x00, 100);
888 memset(output, 0x00, 100);
890 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
891 unhexify( iv_str,
"00000000000000000000000000000000" );
892 data_len =
unhexify( src_str,
"ff4f8391a6a40ca5b25d23bedd44a597" );
898 hexify( dst_str, output, data_len );
900 fct_chk( strcmp( (
char *) dst_str,
"96ab5c2ff612d9dfaae8c31f30c42168" ) == 0 );
906 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_10)
908 unsigned char key_str[100];
909 unsigned char iv_str[100];
910 unsigned char src_str[100];
911 unsigned char dst_str[100];
912 unsigned char output[100];
914 int key_len, data_len;
916 memset(key_str, 0x00, 100);
917 memset(iv_str, 0x00, 100);
918 memset(src_str, 0x00, 100);
919 memset(dst_str, 0x00, 100);
920 memset(output, 0x00, 100);
922 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
923 unhexify( iv_str,
"00000000000000000000000000000000" );
924 data_len =
unhexify( src_str,
"f9b0fda0c4a898f5b9e6f661c4ce4d07" );
930 hexify( dst_str, output, data_len );
932 fct_chk( strcmp( (
char *) dst_str,
"fffffffffffffffffffffffffffffff0" ) == 0 );
938 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_11)
940 unsigned char key_str[100];
941 unsigned char iv_str[100];
942 unsigned char src_str[100];
943 unsigned char dst_str[100];
944 unsigned char output[100];
946 int key_len, data_len;
948 memset(key_str, 0x00, 100);
949 memset(iv_str, 0x00, 100);
950 memset(src_str, 0x00, 100);
951 memset(dst_str, 0x00, 100);
952 memset(output, 0x00, 100);
954 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
955 unhexify( iv_str,
"00000000000000000000000000000000" );
956 data_len =
unhexify( src_str,
"8ade895913685c67c5269f8aae42983e" );
962 hexify( dst_str, output, data_len );
964 fct_chk( strcmp( (
char *) dst_str,
"fffffffffffffffffffffffffffffff8" ) == 0 );
970 FCT_TEST_BGN(aes_128_cbc_decrypt_nist_kat_12)
972 unsigned char key_str[100];
973 unsigned char iv_str[100];
974 unsigned char src_str[100];
975 unsigned char dst_str[100];
976 unsigned char output[100];
978 int key_len, data_len;
980 memset(key_str, 0x00, 100);
981 memset(iv_str, 0x00, 100);
982 memset(src_str, 0x00, 100);
983 memset(dst_str, 0x00, 100);
984 memset(output, 0x00, 100);
986 key_len =
unhexify( key_str,
"00000000000000000000000000000000" );
987 unhexify( iv_str,
"00000000000000000000000000000000" );
988 data_len =
unhexify( src_str,
"39bde67d5c8ed8a8b1c37eb8fa9f5ac0" );
994 hexify( dst_str, output, data_len );
996 fct_chk( strcmp( (
char *) dst_str,
"fffffffffffffffffffffffffffffffc" ) == 0 );
1002 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_1)
1004 unsigned char key_str[100];
1005 unsigned char iv_str[100];
1006 unsigned char src_str[100];
1007 unsigned char dst_str[100];
1008 unsigned char output[100];
1010 int key_len, data_len;
1012 memset(key_str, 0x00, 100);
1013 memset(iv_str, 0x00, 100);
1014 memset(src_str, 0x00, 100);
1015 memset(dst_str, 0x00, 100);
1016 memset(output, 0x00, 100);
1018 key_len =
unhexify( key_str,
"fffffffffffffffffffffffffffffffffffffffffffffe00" );
1019 unhexify( iv_str,
"00000000000000000000000000000000" );
1020 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1026 hexify( dst_str, output, data_len );
1028 fct_chk( strcmp( (
char *) dst_str,
"ddb505e6cc1384cbaec1df90b80beb20" ) == 0 );
1034 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_2)
1036 unsigned char key_str[100];
1037 unsigned char iv_str[100];
1038 unsigned char src_str[100];
1039 unsigned char dst_str[100];
1040 unsigned char output[100];
1042 int key_len, data_len;
1044 memset(key_str, 0x00, 100);
1045 memset(iv_str, 0x00, 100);
1046 memset(src_str, 0x00, 100);
1047 memset(dst_str, 0x00, 100);
1048 memset(output, 0x00, 100);
1050 key_len =
unhexify( key_str,
"ffffffffffffffffffffffffffffffffffffffffffffff00" );
1051 unhexify( iv_str,
"00000000000000000000000000000000" );
1052 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1058 hexify( dst_str, output, data_len );
1060 fct_chk( strcmp( (
char *) dst_str,
"5674a3bed27bf4bd3622f9f5fe208306" ) == 0 );
1066 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_3)
1068 unsigned char key_str[100];
1069 unsigned char iv_str[100];
1070 unsigned char src_str[100];
1071 unsigned char dst_str[100];
1072 unsigned char output[100];
1074 int key_len, data_len;
1076 memset(key_str, 0x00, 100);
1077 memset(iv_str, 0x00, 100);
1078 memset(src_str, 0x00, 100);
1079 memset(dst_str, 0x00, 100);
1080 memset(output, 0x00, 100);
1082 key_len =
unhexify( key_str,
"ffffffffffffffffffffffffffffffffffffffffffffff80" );
1083 unhexify( iv_str,
"00000000000000000000000000000000" );
1084 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1090 hexify( dst_str, output, data_len );
1092 fct_chk( strcmp( (
char *) dst_str,
"b687f26a89cfbfbb8e5eeac54055315e" ) == 0 );
1098 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_4)
1100 unsigned char key_str[100];
1101 unsigned char iv_str[100];
1102 unsigned char src_str[100];
1103 unsigned char dst_str[100];
1104 unsigned char output[100];
1106 int key_len, data_len;
1108 memset(key_str, 0x00, 100);
1109 memset(iv_str, 0x00, 100);
1110 memset(src_str, 0x00, 100);
1111 memset(dst_str, 0x00, 100);
1112 memset(output, 0x00, 100);
1114 key_len =
unhexify( key_str,
"25a39dbfd8034f71a81f9ceb55026e4037f8f6aa30ab44ce" );
1115 unhexify( iv_str,
"00000000000000000000000000000000" );
1116 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1122 hexify( dst_str, output, data_len );
1124 fct_chk( strcmp( (
char *) dst_str,
"3608c344868e94555d23a120f8a5502d" ) == 0 );
1130 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_5)
1132 unsigned char key_str[100];
1133 unsigned char iv_str[100];
1134 unsigned char src_str[100];
1135 unsigned char dst_str[100];
1136 unsigned char output[100];
1138 int key_len, data_len;
1140 memset(key_str, 0x00, 100);
1141 memset(iv_str, 0x00, 100);
1142 memset(src_str, 0x00, 100);
1143 memset(dst_str, 0x00, 100);
1144 memset(output, 0x00, 100);
1146 key_len =
unhexify( key_str,
"e08c15411774ec4a908b64eadc6ac4199c7cd453f3aaef53" );
1147 unhexify( iv_str,
"00000000000000000000000000000000" );
1148 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1154 hexify( dst_str, output, data_len );
1156 fct_chk( strcmp( (
char *) dst_str,
"77da2021935b840b7f5dcc39132da9e5" ) == 0 );
1162 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_6)
1164 unsigned char key_str[100];
1165 unsigned char iv_str[100];
1166 unsigned char src_str[100];
1167 unsigned char dst_str[100];
1168 unsigned char output[100];
1170 int key_len, data_len;
1172 memset(key_str, 0x00, 100);
1173 memset(iv_str, 0x00, 100);
1174 memset(src_str, 0x00, 100);
1175 memset(dst_str, 0x00, 100);
1176 memset(output, 0x00, 100);
1178 key_len =
unhexify( key_str,
"3b375a1ff7e8d44409696e6326ec9dec86138e2ae010b980" );
1179 unhexify( iv_str,
"00000000000000000000000000000000" );
1180 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1186 hexify( dst_str, output, data_len );
1188 fct_chk( strcmp( (
char *) dst_str,
"3b7c24f825e3bf9873c9f14d39a0e6f4" ) == 0 );
1194 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_7)
1196 unsigned char key_str[100];
1197 unsigned char iv_str[100];
1198 unsigned char src_str[100];
1199 unsigned char dst_str[100];
1200 unsigned char output[100];
1202 int key_len, data_len;
1204 memset(key_str, 0x00, 100);
1205 memset(iv_str, 0x00, 100);
1206 memset(src_str, 0x00, 100);
1207 memset(dst_str, 0x00, 100);
1208 memset(output, 0x00, 100);
1210 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1211 unhexify( iv_str,
"00000000000000000000000000000000" );
1212 data_len =
unhexify( src_str,
"51719783d3185a535bd75adc65071ce1" );
1218 hexify( dst_str, output, data_len );
1220 fct_chk( strcmp( (
char *) dst_str,
"4f354592ff7c8847d2d0870ca9481b7c" ) == 0 );
1226 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_8)
1228 unsigned char key_str[100];
1229 unsigned char iv_str[100];
1230 unsigned char src_str[100];
1231 unsigned char dst_str[100];
1232 unsigned char output[100];
1234 int key_len, data_len;
1236 memset(key_str, 0x00, 100);
1237 memset(iv_str, 0x00, 100);
1238 memset(src_str, 0x00, 100);
1239 memset(dst_str, 0x00, 100);
1240 memset(output, 0x00, 100);
1242 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1243 unhexify( iv_str,
"00000000000000000000000000000000" );
1244 data_len =
unhexify( src_str,
"26aa49dcfe7629a8901a69a9914e6dfd" );
1250 hexify( dst_str, output, data_len );
1252 fct_chk( strcmp( (
char *) dst_str,
"d5e08bf9a182e857cf40b3a36ee248cc" ) == 0 );
1258 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_9)
1260 unsigned char key_str[100];
1261 unsigned char iv_str[100];
1262 unsigned char src_str[100];
1263 unsigned char dst_str[100];
1264 unsigned char output[100];
1266 int key_len, data_len;
1268 memset(key_str, 0x00, 100);
1269 memset(iv_str, 0x00, 100);
1270 memset(src_str, 0x00, 100);
1271 memset(dst_str, 0x00, 100);
1272 memset(output, 0x00, 100);
1274 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1275 unhexify( iv_str,
"00000000000000000000000000000000" );
1276 data_len =
unhexify( src_str,
"941a4773058224e1ef66d10e0a6ee782" );
1282 hexify( dst_str, output, data_len );
1284 fct_chk( strcmp( (
char *) dst_str,
"067cd9d3749207791841562507fa9626" ) == 0 );
1290 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_10)
1292 unsigned char key_str[100];
1293 unsigned char iv_str[100];
1294 unsigned char src_str[100];
1295 unsigned char dst_str[100];
1296 unsigned char output[100];
1298 int key_len, data_len;
1300 memset(key_str, 0x00, 100);
1301 memset(iv_str, 0x00, 100);
1302 memset(src_str, 0x00, 100);
1303 memset(dst_str, 0x00, 100);
1304 memset(output, 0x00, 100);
1306 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1307 unhexify( iv_str,
"00000000000000000000000000000000" );
1308 data_len =
unhexify( src_str,
"ffc00000000000000000000000000000" );
1314 hexify( dst_str, output, data_len );
1316 fct_chk( strcmp( (
char *) dst_str,
"030d7e5b64f380a7e4ea5387b5cd7f49" ) == 0 );
1322 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_11)
1324 unsigned char key_str[100];
1325 unsigned char iv_str[100];
1326 unsigned char src_str[100];
1327 unsigned char dst_str[100];
1328 unsigned char output[100];
1330 int key_len, data_len;
1332 memset(key_str, 0x00, 100);
1333 memset(iv_str, 0x00, 100);
1334 memset(src_str, 0x00, 100);
1335 memset(dst_str, 0x00, 100);
1336 memset(output, 0x00, 100);
1338 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1339 unhexify( iv_str,
"00000000000000000000000000000000" );
1340 data_len =
unhexify( src_str,
"ffe00000000000000000000000000000" );
1346 hexify( dst_str, output, data_len );
1348 fct_chk( strcmp( (
char *) dst_str,
"0dc9a2610037009b698f11bb7e86c83e" ) == 0 );
1354 FCT_TEST_BGN(aes_192_cbc_encrypt_nist_kat_12)
1356 unsigned char key_str[100];
1357 unsigned char iv_str[100];
1358 unsigned char src_str[100];
1359 unsigned char dst_str[100];
1360 unsigned char output[100];
1362 int key_len, data_len;
1364 memset(key_str, 0x00, 100);
1365 memset(iv_str, 0x00, 100);
1366 memset(src_str, 0x00, 100);
1367 memset(dst_str, 0x00, 100);
1368 memset(output, 0x00, 100);
1370 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1371 unhexify( iv_str,
"00000000000000000000000000000000" );
1372 data_len =
unhexify( src_str,
"fff00000000000000000000000000000" );
1378 hexify( dst_str, output, data_len );
1380 fct_chk( strcmp( (
char *) dst_str,
"0046612c766d1840c226364f1fa7ed72" ) == 0 );
1386 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_1)
1388 unsigned char key_str[100];
1389 unsigned char iv_str[100];
1390 unsigned char src_str[100];
1391 unsigned char dst_str[100];
1392 unsigned char output[100];
1394 int key_len, data_len;
1396 memset(key_str, 0x00, 100);
1397 memset(iv_str, 0x00, 100);
1398 memset(src_str, 0x00, 100);
1399 memset(dst_str, 0x00, 100);
1400 memset(output, 0x00, 100);
1402 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1403 unhexify( iv_str,
"00000000000000000000000000000000" );
1404 data_len =
unhexify( src_str,
"902d88d13eae52089abd6143cfe394e9" );
1410 hexify( dst_str, output, data_len );
1412 fct_chk( strcmp( (
char *) dst_str,
"ffffffffe00000000000000000000000" ) == 0 );
1418 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_2)
1420 unsigned char key_str[100];
1421 unsigned char iv_str[100];
1422 unsigned char src_str[100];
1423 unsigned char dst_str[100];
1424 unsigned char output[100];
1426 int key_len, data_len;
1428 memset(key_str, 0x00, 100);
1429 memset(iv_str, 0x00, 100);
1430 memset(src_str, 0x00, 100);
1431 memset(dst_str, 0x00, 100);
1432 memset(output, 0x00, 100);
1434 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1435 unhexify( iv_str,
"00000000000000000000000000000000" );
1436 data_len =
unhexify( src_str,
"d49bceb3b823fedd602c305345734bd2" );
1442 hexify( dst_str, output, data_len );
1444 fct_chk( strcmp( (
char *) dst_str,
"fffffffff00000000000000000000000" ) == 0 );
1450 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_3)
1452 unsigned char key_str[100];
1453 unsigned char iv_str[100];
1454 unsigned char src_str[100];
1455 unsigned char dst_str[100];
1456 unsigned char output[100];
1458 int key_len, data_len;
1460 memset(key_str, 0x00, 100);
1461 memset(iv_str, 0x00, 100);
1462 memset(src_str, 0x00, 100);
1463 memset(dst_str, 0x00, 100);
1464 memset(output, 0x00, 100);
1466 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1467 unhexify( iv_str,
"00000000000000000000000000000000" );
1468 data_len =
unhexify( src_str,
"707b1dbb0ffa40ef7d95def421233fae" );
1474 hexify( dst_str, output, data_len );
1476 fct_chk( strcmp( (
char *) dst_str,
"fffffffff80000000000000000000000" ) == 0 );
1482 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_4)
1484 unsigned char key_str[100];
1485 unsigned char iv_str[100];
1486 unsigned char src_str[100];
1487 unsigned char dst_str[100];
1488 unsigned char output[100];
1490 int key_len, data_len;
1492 memset(key_str, 0x00, 100);
1493 memset(iv_str, 0x00, 100);
1494 memset(src_str, 0x00, 100);
1495 memset(dst_str, 0x00, 100);
1496 memset(output, 0x00, 100);
1498 key_len =
unhexify( key_str,
"fffffffffffffffffffc0000000000000000000000000000" );
1499 unhexify( iv_str,
"00000000000000000000000000000000" );
1500 data_len =
unhexify( src_str,
"8dfd999be5d0cfa35732c0ddc88ff5a5" );
1506 hexify( dst_str, output, data_len );
1508 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
1514 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_5)
1516 unsigned char key_str[100];
1517 unsigned char iv_str[100];
1518 unsigned char src_str[100];
1519 unsigned char dst_str[100];
1520 unsigned char output[100];
1522 int key_len, data_len;
1524 memset(key_str, 0x00, 100);
1525 memset(iv_str, 0x00, 100);
1526 memset(src_str, 0x00, 100);
1527 memset(dst_str, 0x00, 100);
1528 memset(output, 0x00, 100);
1530 key_len =
unhexify( key_str,
"fffffffffffffffffffe0000000000000000000000000000" );
1531 unhexify( iv_str,
"00000000000000000000000000000000" );
1532 data_len =
unhexify( src_str,
"02647c76a300c3173b841487eb2bae9f" );
1538 hexify( dst_str, output, data_len );
1540 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
1546 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_6)
1548 unsigned char key_str[100];
1549 unsigned char iv_str[100];
1550 unsigned char src_str[100];
1551 unsigned char dst_str[100];
1552 unsigned char output[100];
1554 int key_len, data_len;
1556 memset(key_str, 0x00, 100);
1557 memset(iv_str, 0x00, 100);
1558 memset(src_str, 0x00, 100);
1559 memset(dst_str, 0x00, 100);
1560 memset(output, 0x00, 100);
1562 key_len =
unhexify( key_str,
"ffffffffffffffffffff0000000000000000000000000000" );
1563 unhexify( iv_str,
"00000000000000000000000000000000" );
1564 data_len =
unhexify( src_str,
"172df8b02f04b53adab028b4e01acd87" );
1570 hexify( dst_str, output, data_len );
1572 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
1578 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_7)
1580 unsigned char key_str[100];
1581 unsigned char iv_str[100];
1582 unsigned char src_str[100];
1583 unsigned char dst_str[100];
1584 unsigned char output[100];
1586 int key_len, data_len;
1588 memset(key_str, 0x00, 100);
1589 memset(iv_str, 0x00, 100);
1590 memset(src_str, 0x00, 100);
1591 memset(dst_str, 0x00, 100);
1592 memset(output, 0x00, 100);
1594 key_len =
unhexify( key_str,
"b3ad5cea1dddc214ca969ac35f37dae1a9a9d1528f89bb35" );
1595 unhexify( iv_str,
"00000000000000000000000000000000" );
1596 data_len =
unhexify( src_str,
"3cf5e1d21a17956d1dffad6a7c41c659" );
1602 hexify( dst_str, output, data_len );
1604 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
1610 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_8)
1612 unsigned char key_str[100];
1613 unsigned char iv_str[100];
1614 unsigned char src_str[100];
1615 unsigned char dst_str[100];
1616 unsigned char output[100];
1618 int key_len, data_len;
1620 memset(key_str, 0x00, 100);
1621 memset(iv_str, 0x00, 100);
1622 memset(src_str, 0x00, 100);
1623 memset(dst_str, 0x00, 100);
1624 memset(output, 0x00, 100);
1626 key_len =
unhexify( key_str,
"45899367c3132849763073c435a9288a766c8b9ec2308516" );
1627 unhexify( iv_str,
"00000000000000000000000000000000" );
1628 data_len =
unhexify( src_str,
"69fd12e8505f8ded2fdcb197a121b362" );
1634 hexify( dst_str, output, data_len );
1636 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
1642 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_9)
1644 unsigned char key_str[100];
1645 unsigned char iv_str[100];
1646 unsigned char src_str[100];
1647 unsigned char dst_str[100];
1648 unsigned char output[100];
1650 int key_len, data_len;
1652 memset(key_str, 0x00, 100);
1653 memset(iv_str, 0x00, 100);
1654 memset(src_str, 0x00, 100);
1655 memset(dst_str, 0x00, 100);
1656 memset(output, 0x00, 100);
1658 key_len =
unhexify( key_str,
"ec250e04c3903f602647b85a401a1ae7ca2f02f67fa4253e" );
1659 unhexify( iv_str,
"00000000000000000000000000000000" );
1660 data_len =
unhexify( src_str,
"8aa584e2cc4d17417a97cb9a28ba29c8" );
1666 hexify( dst_str, output, data_len );
1668 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
1674 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_10)
1676 unsigned char key_str[100];
1677 unsigned char iv_str[100];
1678 unsigned char src_str[100];
1679 unsigned char dst_str[100];
1680 unsigned char output[100];
1682 int key_len, data_len;
1684 memset(key_str, 0x00, 100);
1685 memset(iv_str, 0x00, 100);
1686 memset(src_str, 0x00, 100);
1687 memset(dst_str, 0x00, 100);
1688 memset(output, 0x00, 100);
1690 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1691 unhexify( iv_str,
"00000000000000000000000000000000" );
1692 data_len =
unhexify( src_str,
"c9b8135ff1b5adc413dfd053b21bd96d" );
1698 hexify( dst_str, output, data_len );
1700 fct_chk( strcmp( (
char *) dst_str,
"9c2d8842e5f48f57648205d39a239af1" ) == 0 );
1706 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_11)
1708 unsigned char key_str[100];
1709 unsigned char iv_str[100];
1710 unsigned char src_str[100];
1711 unsigned char dst_str[100];
1712 unsigned char output[100];
1714 int key_len, data_len;
1716 memset(key_str, 0x00, 100);
1717 memset(iv_str, 0x00, 100);
1718 memset(src_str, 0x00, 100);
1719 memset(dst_str, 0x00, 100);
1720 memset(output, 0x00, 100);
1722 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1723 unhexify( iv_str,
"00000000000000000000000000000000" );
1724 data_len =
unhexify( src_str,
"4a3650c3371ce2eb35e389a171427440" );
1730 hexify( dst_str, output, data_len );
1732 fct_chk( strcmp( (
char *) dst_str,
"bff52510095f518ecca60af4205444bb" ) == 0 );
1738 FCT_TEST_BGN(aes_192_cbc_decrypt_nist_kat_12)
1740 unsigned char key_str[100];
1741 unsigned char iv_str[100];
1742 unsigned char src_str[100];
1743 unsigned char dst_str[100];
1744 unsigned char output[100];
1746 int key_len, data_len;
1748 memset(key_str, 0x00, 100);
1749 memset(iv_str, 0x00, 100);
1750 memset(src_str, 0x00, 100);
1751 memset(dst_str, 0x00, 100);
1752 memset(output, 0x00, 100);
1754 key_len =
unhexify( key_str,
"000000000000000000000000000000000000000000000000" );
1755 unhexify( iv_str,
"00000000000000000000000000000000" );
1756 data_len =
unhexify( src_str,
"4f354592ff7c8847d2d0870ca9481b7c" );
1762 hexify( dst_str, output, data_len );
1764 fct_chk( strcmp( (
char *) dst_str,
"51719783d3185a535bd75adc65071ce1" ) == 0 );
1770 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_1)
1772 unsigned char key_str[100];
1773 unsigned char iv_str[100];
1774 unsigned char src_str[100];
1775 unsigned char dst_str[100];
1776 unsigned char output[100];
1778 int key_len, data_len;
1780 memset(key_str, 0x00, 100);
1781 memset(iv_str, 0x00, 100);
1782 memset(src_str, 0x00, 100);
1783 memset(dst_str, 0x00, 100);
1784 memset(output, 0x00, 100);
1786 key_len =
unhexify( key_str,
"8000000000000000000000000000000000000000000000000000000000000000" );
1787 unhexify( iv_str,
"00000000000000000000000000000000" );
1788 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1794 hexify( dst_str, output, data_len );
1796 fct_chk( strcmp( (
char *) dst_str,
"e35a6dcb19b201a01ebcfa8aa22b5759" ) == 0 );
1802 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_2)
1804 unsigned char key_str[100];
1805 unsigned char iv_str[100];
1806 unsigned char src_str[100];
1807 unsigned char dst_str[100];
1808 unsigned char output[100];
1810 int key_len, data_len;
1812 memset(key_str, 0x00, 100);
1813 memset(iv_str, 0x00, 100);
1814 memset(src_str, 0x00, 100);
1815 memset(dst_str, 0x00, 100);
1816 memset(output, 0x00, 100);
1818 key_len =
unhexify( key_str,
"c000000000000000000000000000000000000000000000000000000000000000" );
1819 unhexify( iv_str,
"00000000000000000000000000000000" );
1820 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1826 hexify( dst_str, output, data_len );
1828 fct_chk( strcmp( (
char *) dst_str,
"b29169cdcf2d83e838125a12ee6aa400" ) == 0 );
1834 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_3)
1836 unsigned char key_str[100];
1837 unsigned char iv_str[100];
1838 unsigned char src_str[100];
1839 unsigned char dst_str[100];
1840 unsigned char output[100];
1842 int key_len, data_len;
1844 memset(key_str, 0x00, 100);
1845 memset(iv_str, 0x00, 100);
1846 memset(src_str, 0x00, 100);
1847 memset(dst_str, 0x00, 100);
1848 memset(output, 0x00, 100);
1850 key_len =
unhexify( key_str,
"e000000000000000000000000000000000000000000000000000000000000000" );
1851 unhexify( iv_str,
"00000000000000000000000000000000" );
1852 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1858 hexify( dst_str, output, data_len );
1860 fct_chk( strcmp( (
char *) dst_str,
"d8f3a72fc3cdf74dfaf6c3e6b97b2fa6" ) == 0 );
1866 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_4)
1868 unsigned char key_str[100];
1869 unsigned char iv_str[100];
1870 unsigned char src_str[100];
1871 unsigned char dst_str[100];
1872 unsigned char output[100];
1874 int key_len, data_len;
1876 memset(key_str, 0x00, 100);
1877 memset(iv_str, 0x00, 100);
1878 memset(src_str, 0x00, 100);
1879 memset(dst_str, 0x00, 100);
1880 memset(output, 0x00, 100);
1882 key_len =
unhexify( key_str,
"dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf" );
1883 unhexify( iv_str,
"00000000000000000000000000000000" );
1884 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1890 hexify( dst_str, output, data_len );
1892 fct_chk( strcmp( (
char *) dst_str,
"fc6aec906323480005c58e7e1ab004ad" ) == 0 );
1898 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_5)
1900 unsigned char key_str[100];
1901 unsigned char iv_str[100];
1902 unsigned char src_str[100];
1903 unsigned char dst_str[100];
1904 unsigned char output[100];
1906 int key_len, data_len;
1908 memset(key_str, 0x00, 100);
1909 memset(iv_str, 0x00, 100);
1910 memset(src_str, 0x00, 100);
1911 memset(dst_str, 0x00, 100);
1912 memset(output, 0x00, 100);
1914 key_len =
unhexify( key_str,
"f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9" );
1915 unhexify( iv_str,
"00000000000000000000000000000000" );
1916 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1922 hexify( dst_str, output, data_len );
1924 fct_chk( strcmp( (
char *) dst_str,
"a3944b95ca0b52043584ef02151926a8" ) == 0 );
1930 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_6)
1932 unsigned char key_str[100];
1933 unsigned char iv_str[100];
1934 unsigned char src_str[100];
1935 unsigned char dst_str[100];
1936 unsigned char output[100];
1938 int key_len, data_len;
1940 memset(key_str, 0x00, 100);
1941 memset(iv_str, 0x00, 100);
1942 memset(src_str, 0x00, 100);
1943 memset(dst_str, 0x00, 100);
1944 memset(output, 0x00, 100);
1946 key_len =
unhexify( key_str,
"797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e" );
1947 unhexify( iv_str,
"00000000000000000000000000000000" );
1948 data_len =
unhexify( src_str,
"00000000000000000000000000000000" );
1954 hexify( dst_str, output, data_len );
1956 fct_chk( strcmp( (
char *) dst_str,
"a74289fe73a4c123ca189ea1e1b49ad5" ) == 0 );
1962 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_7)
1964 unsigned char key_str[100];
1965 unsigned char iv_str[100];
1966 unsigned char src_str[100];
1967 unsigned char dst_str[100];
1968 unsigned char output[100];
1970 int key_len, data_len;
1972 memset(key_str, 0x00, 100);
1973 memset(iv_str, 0x00, 100);
1974 memset(src_str, 0x00, 100);
1975 memset(dst_str, 0x00, 100);
1976 memset(output, 0x00, 100);
1978 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
1979 unhexify( iv_str,
"00000000000000000000000000000000" );
1980 data_len =
unhexify( src_str,
"761c1fe41a18acf20d241650611d90f1" );
1986 hexify( dst_str, output, data_len );
1988 fct_chk( strcmp( (
char *) dst_str,
"623a52fcea5d443e48d9181ab32c7421" ) == 0 );
1994 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_8)
1996 unsigned char key_str[100];
1997 unsigned char iv_str[100];
1998 unsigned char src_str[100];
1999 unsigned char dst_str[100];
2000 unsigned char output[100];
2002 int key_len, data_len;
2004 memset(key_str, 0x00, 100);
2005 memset(iv_str, 0x00, 100);
2006 memset(src_str, 0x00, 100);
2007 memset(dst_str, 0x00, 100);
2008 memset(output, 0x00, 100);
2010 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2011 unhexify( iv_str,
"00000000000000000000000000000000" );
2012 data_len =
unhexify( src_str,
"8a560769d605868ad80d819bdba03771" );
2018 hexify( dst_str, output, data_len );
2020 fct_chk( strcmp( (
char *) dst_str,
"38f2c7ae10612415d27ca190d27da8b4" ) == 0 );
2026 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_9)
2028 unsigned char key_str[100];
2029 unsigned char iv_str[100];
2030 unsigned char src_str[100];
2031 unsigned char dst_str[100];
2032 unsigned char output[100];
2034 int key_len, data_len;
2036 memset(key_str, 0x00, 100);
2037 memset(iv_str, 0x00, 100);
2038 memset(src_str, 0x00, 100);
2039 memset(dst_str, 0x00, 100);
2040 memset(output, 0x00, 100);
2042 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2043 unhexify( iv_str,
"00000000000000000000000000000000" );
2044 data_len =
unhexify( src_str,
"91fbef2d15a97816060bee1feaa49afe" );
2050 hexify( dst_str, output, data_len );
2052 fct_chk( strcmp( (
char *) dst_str,
"1bc704f1bce135ceb810341b216d7abe" ) == 0 );
2058 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_10)
2060 unsigned char key_str[100];
2061 unsigned char iv_str[100];
2062 unsigned char src_str[100];
2063 unsigned char dst_str[100];
2064 unsigned char output[100];
2066 int key_len, data_len;
2068 memset(key_str, 0x00, 100);
2069 memset(iv_str, 0x00, 100);
2070 memset(src_str, 0x00, 100);
2071 memset(dst_str, 0x00, 100);
2072 memset(output, 0x00, 100);
2074 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2075 unhexify( iv_str,
"00000000000000000000000000000000" );
2076 data_len =
unhexify( src_str,
"ffffffffffffff800000000000000000" );
2082 hexify( dst_str, output, data_len );
2084 fct_chk( strcmp( (
char *) dst_str,
"0d9ac756eb297695eed4d382eb126d26" ) == 0 );
2090 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_11)
2092 unsigned char key_str[100];
2093 unsigned char iv_str[100];
2094 unsigned char src_str[100];
2095 unsigned char dst_str[100];
2096 unsigned char output[100];
2098 int key_len, data_len;
2100 memset(key_str, 0x00, 100);
2101 memset(iv_str, 0x00, 100);
2102 memset(src_str, 0x00, 100);
2103 memset(dst_str, 0x00, 100);
2104 memset(output, 0x00, 100);
2106 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2107 unhexify( iv_str,
"00000000000000000000000000000000" );
2108 data_len =
unhexify( src_str,
"ffffffffffffffc00000000000000000" );
2114 hexify( dst_str, output, data_len );
2116 fct_chk( strcmp( (
char *) dst_str,
"56ede9dda3f6f141bff1757fa689c3e1" ) == 0 );
2122 FCT_TEST_BGN(aes_256_cbc_encrypt_nist_kat_12)
2124 unsigned char key_str[100];
2125 unsigned char iv_str[100];
2126 unsigned char src_str[100];
2127 unsigned char dst_str[100];
2128 unsigned char output[100];
2130 int key_len, data_len;
2132 memset(key_str, 0x00, 100);
2133 memset(iv_str, 0x00, 100);
2134 memset(src_str, 0x00, 100);
2135 memset(dst_str, 0x00, 100);
2136 memset(output, 0x00, 100);
2138 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2139 unhexify( iv_str,
"00000000000000000000000000000000" );
2140 data_len =
unhexify( src_str,
"ffffffffffffffe00000000000000000" );
2146 hexify( dst_str, output, data_len );
2148 fct_chk( strcmp( (
char *) dst_str,
"768f520efe0f23e61d3ec8ad9ce91774" ) == 0 );
2154 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_1)
2156 unsigned char key_str[100];
2157 unsigned char iv_str[100];
2158 unsigned char src_str[100];
2159 unsigned char dst_str[100];
2160 unsigned char output[100];
2162 int key_len, data_len;
2164 memset(key_str, 0x00, 100);
2165 memset(iv_str, 0x00, 100);
2166 memset(src_str, 0x00, 100);
2167 memset(dst_str, 0x00, 100);
2168 memset(output, 0x00, 100);
2170 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2171 unhexify( iv_str,
"00000000000000000000000000000000" );
2172 data_len =
unhexify( src_str,
"49af6b372135acef10132e548f217b17" );
2178 hexify( dst_str, output, data_len );
2180 fct_chk( strcmp( (
char *) dst_str,
"ff000000000000000000000000000000" ) == 0 );
2186 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_2)
2188 unsigned char key_str[100];
2189 unsigned char iv_str[100];
2190 unsigned char src_str[100];
2191 unsigned char dst_str[100];
2192 unsigned char output[100];
2194 int key_len, data_len;
2196 memset(key_str, 0x00, 100);
2197 memset(iv_str, 0x00, 100);
2198 memset(src_str, 0x00, 100);
2199 memset(dst_str, 0x00, 100);
2200 memset(output, 0x00, 100);
2202 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2203 unhexify( iv_str,
"00000000000000000000000000000000" );
2204 data_len =
unhexify( src_str,
"8bcd40f94ebb63b9f7909676e667f1e7" );
2210 hexify( dst_str, output, data_len );
2212 fct_chk( strcmp( (
char *) dst_str,
"ff800000000000000000000000000000" ) == 0 );
2218 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_3)
2220 unsigned char key_str[100];
2221 unsigned char iv_str[100];
2222 unsigned char src_str[100];
2223 unsigned char dst_str[100];
2224 unsigned char output[100];
2226 int key_len, data_len;
2228 memset(key_str, 0x00, 100);
2229 memset(iv_str, 0x00, 100);
2230 memset(src_str, 0x00, 100);
2231 memset(dst_str, 0x00, 100);
2232 memset(output, 0x00, 100);
2234 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2235 unhexify( iv_str,
"00000000000000000000000000000000" );
2236 data_len =
unhexify( src_str,
"fe1cffb83f45dcfb38b29be438dbd3ab" );
2242 hexify( dst_str, output, data_len );
2244 fct_chk( strcmp( (
char *) dst_str,
"ffc00000000000000000000000000000" ) == 0 );
2250 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_4)
2252 unsigned char key_str[100];
2253 unsigned char iv_str[100];
2254 unsigned char src_str[100];
2255 unsigned char dst_str[100];
2256 unsigned char output[100];
2258 int key_len, data_len;
2260 memset(key_str, 0x00, 100);
2261 memset(iv_str, 0x00, 100);
2262 memset(src_str, 0x00, 100);
2263 memset(dst_str, 0x00, 100);
2264 memset(output, 0x00, 100);
2266 key_len =
unhexify( key_str,
"fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00" );
2267 unhexify( iv_str,
"00000000000000000000000000000000" );
2268 data_len =
unhexify( src_str,
"cca7c3086f5f9511b31233da7cab9160" );
2274 hexify( dst_str, output, data_len );
2276 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
2282 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_5)
2284 unsigned char key_str[100];
2285 unsigned char iv_str[100];
2286 unsigned char src_str[100];
2287 unsigned char dst_str[100];
2288 unsigned char output[100];
2290 int key_len, data_len;
2292 memset(key_str, 0x00, 100);
2293 memset(iv_str, 0x00, 100);
2294 memset(src_str, 0x00, 100);
2295 memset(dst_str, 0x00, 100);
2296 memset(output, 0x00, 100);
2298 key_len =
unhexify( key_str,
"fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00" );
2299 unhexify( iv_str,
"00000000000000000000000000000000" );
2300 data_len =
unhexify( src_str,
"5b40ff4ec9be536ba23035fa4f06064c" );
2306 hexify( dst_str, output, data_len );
2308 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
2314 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_6)
2316 unsigned char key_str[100];
2317 unsigned char iv_str[100];
2318 unsigned char src_str[100];
2319 unsigned char dst_str[100];
2320 unsigned char output[100];
2322 int key_len, data_len;
2324 memset(key_str, 0x00, 100);
2325 memset(iv_str, 0x00, 100);
2326 memset(src_str, 0x00, 100);
2327 memset(dst_str, 0x00, 100);
2328 memset(output, 0x00, 100);
2330 key_len =
unhexify( key_str,
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" );
2331 unhexify( iv_str,
"00000000000000000000000000000000" );
2332 data_len =
unhexify( src_str,
"60eb5af8416b257149372194e8b88749" );
2338 hexify( dst_str, output, data_len );
2340 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
2346 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_7)
2348 unsigned char key_str[100];
2349 unsigned char iv_str[100];
2350 unsigned char src_str[100];
2351 unsigned char dst_str[100];
2352 unsigned char output[100];
2354 int key_len, data_len;
2356 memset(key_str, 0x00, 100);
2357 memset(iv_str, 0x00, 100);
2358 memset(src_str, 0x00, 100);
2359 memset(dst_str, 0x00, 100);
2360 memset(output, 0x00, 100);
2362 key_len =
unhexify( key_str,
"90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1" );
2363 unhexify( iv_str,
"00000000000000000000000000000000" );
2364 data_len =
unhexify( src_str,
"798c7c005dee432b2c8ea5dfa381ecc3" );
2370 hexify( dst_str, output, data_len );
2372 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
2378 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_8)
2380 unsigned char key_str[100];
2381 unsigned char iv_str[100];
2382 unsigned char src_str[100];
2383 unsigned char dst_str[100];
2384 unsigned char output[100];
2386 int key_len, data_len;
2388 memset(key_str, 0x00, 100);
2389 memset(iv_str, 0x00, 100);
2390 memset(src_str, 0x00, 100);
2391 memset(dst_str, 0x00, 100);
2392 memset(output, 0x00, 100);
2394 key_len =
unhexify( key_str,
"b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07" );
2395 unhexify( iv_str,
"00000000000000000000000000000000" );
2396 data_len =
unhexify( src_str,
"637c31dc2591a07636f646b72daabbe7" );
2402 hexify( dst_str, output, data_len );
2404 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
2410 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_9)
2412 unsigned char key_str[100];
2413 unsigned char iv_str[100];
2414 unsigned char src_str[100];
2415 unsigned char dst_str[100];
2416 unsigned char output[100];
2418 int key_len, data_len;
2420 memset(key_str, 0x00, 100);
2421 memset(iv_str, 0x00, 100);
2422 memset(src_str, 0x00, 100);
2423 memset(dst_str, 0x00, 100);
2424 memset(output, 0x00, 100);
2426 key_len =
unhexify( key_str,
"fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e" );
2427 unhexify( iv_str,
"00000000000000000000000000000000" );
2428 data_len =
unhexify( src_str,
"179a49c712154bbffbe6e7a84a18e220" );
2434 hexify( dst_str, output, data_len );
2436 fct_chk( strcmp( (
char *) dst_str,
"00000000000000000000000000000000" ) == 0 );
2442 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_10)
2444 unsigned char key_str[100];
2445 unsigned char iv_str[100];
2446 unsigned char src_str[100];
2447 unsigned char dst_str[100];
2448 unsigned char output[100];
2450 int key_len, data_len;
2452 memset(key_str, 0x00, 100);
2453 memset(iv_str, 0x00, 100);
2454 memset(src_str, 0x00, 100);
2455 memset(dst_str, 0x00, 100);
2456 memset(output, 0x00, 100);
2458 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2459 unhexify( iv_str,
"00000000000000000000000000000000" );
2460 data_len =
unhexify( src_str,
"5c9d844ed46f9885085e5d6a4f94c7d7" );
2466 hexify( dst_str, output, data_len );
2468 fct_chk( strcmp( (
char *) dst_str,
"014730f80ac625fe84f026c60bfd547d" ) == 0 );
2474 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_11)
2476 unsigned char key_str[100];
2477 unsigned char iv_str[100];
2478 unsigned char src_str[100];
2479 unsigned char dst_str[100];
2480 unsigned char output[100];
2482 int key_len, data_len;
2484 memset(key_str, 0x00, 100);
2485 memset(iv_str, 0x00, 100);
2486 memset(src_str, 0x00, 100);
2487 memset(dst_str, 0x00, 100);
2488 memset(output, 0x00, 100);
2490 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2491 unhexify( iv_str,
"00000000000000000000000000000000" );
2492 data_len =
unhexify( src_str,
"a9ff75bd7cf6613d3731c77c3b6d0c04" );
2498 hexify( dst_str, output, data_len );
2500 fct_chk( strcmp( (
char *) dst_str,
"0b24af36193ce4665f2825d7b4749c98" ) == 0 );
2506 FCT_TEST_BGN(aes_256_cbc_decrypt_nist_kat_12)
2508 unsigned char key_str[100];
2509 unsigned char iv_str[100];
2510 unsigned char src_str[100];
2511 unsigned char dst_str[100];
2512 unsigned char output[100];
2514 int key_len, data_len;
2516 memset(key_str, 0x00, 100);
2517 memset(iv_str, 0x00, 100);
2518 memset(src_str, 0x00, 100);
2519 memset(dst_str, 0x00, 100);
2520 memset(output, 0x00, 100);
2522 key_len =
unhexify( key_str,
"0000000000000000000000000000000000000000000000000000000000000000" );
2523 unhexify( iv_str,
"00000000000000000000000000000000" );
2524 data_len =
unhexify( src_str,
"623a52fcea5d443e48d9181ab32c7421" );
2530 hexify( dst_str, output, data_len );
2532 fct_chk( strcmp( (
char *) dst_str,
"761c1fe41a18acf20d241650611d90f1" ) == 0 );