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_BIGNUM_C
231 FCT_SUITE_BGN(test_suite_mpi)
234 FCT_TEST_BGN(base_test_mpi_read_write_string_1)
248 fct_chk( strcasecmp( str,
"128" ) == 0 );
257 FCT_TEST_BGN(base_test_mpi_read_write_string_2)
271 fct_chk( strcasecmp( str,
"80" ) == 0 );
280 FCT_TEST_BGN(base_test_mpi_read_write_string_3_read_zero)
294 fct_chk( strcasecmp( str,
"0" ) == 0 );
303 FCT_TEST_BGN(base_test_mpi_read_write_string_3_negative_decimal)
317 fct_chk( strcasecmp( str,
"-23" ) == 0 );
326 FCT_TEST_BGN(base_test_mpi_read_write_string_3_negative_hex)
340 fct_chk( strcasecmp( str,
"-32" ) == 0 );
349 FCT_TEST_BGN(base_test_mpi_read_write_string_3_negative_decimal)
363 fct_chk( strcasecmp( str,
"-23" ) == 0 );
372 FCT_TEST_BGN(test_mpi_read_write_string_1_invalid_character)
386 fct_chk( strcasecmp( str,
"" ) == 0 );
395 FCT_TEST_BGN(test_mpi_read_write_string_2_illegal_input_radix)
409 fct_chk( strcasecmp( str,
"" ) == 0 );
418 FCT_TEST_BGN(test_mpi_read_write_string_3_buffer_just_fits)
432 fct_chk( strcasecmp( str,
"-23" ) == 0 );
441 FCT_TEST_BGN(test_mpi_read_write_string_4_buffer_too_small)
455 fct_chk( strcasecmp( str,
"-23" ) == 0 );
464 FCT_TEST_BGN(test_mpi_read_write_string_5_illegal_output_radix)
478 fct_chk( strcasecmp( str,
"-23" ) == 0 );
487 FCT_TEST_BGN(test_mpi_read_write_string_6_output_radix_of_15)
501 fct_chk( strcasecmp( str,
"1e" ) == 0 );
510 FCT_TEST_BGN(test_mpi_read_write_string_7)
518 fct_chk(
mpi_read_string( &X, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
524 fct_chk( strcasecmp( str,
"0941379d00fed1491fe15df284dfde4a142f68aa8d412023195cee66883e6290ffe703f4ea5963bf212713cee46b107c09182b5edcd955adac418bf4918e2889af48e1099d513830cec85c26ac1e158b52620e33ba8692f893efbb2f958b4424" ) == 0 );
533 FCT_TEST_BGN(base_test_mpi_read_binary_1)
536 unsigned char str[1000];
537 unsigned char buf[1000];
543 input_len =
unhexify( buf,
"0941379d00fed1491fe15df284dfde4a142f68aa8d412023195cee66883e6290ffe703f4ea5963bf212713cee46b107c09182b5edcd955adac418bf4918e2889af48e1099d513830cec85c26ac1e158b52620e33ba8692f893efbb2f958b4424" );
547 fct_chk( strcmp( (
char *) str,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
554 FCT_TEST_BGN(base_test_mpi_write_binary_1)
557 unsigned char str[1000];
558 unsigned char buf[1000];
561 memset( buf, 0x00, 1000 );
562 memset( str, 0x00, 1000 );
566 fct_chk(
mpi_read_string( &X, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
575 hexify( str, buf, buflen );
577 fct_chk( strcasecmp( (
char *) str,
"0941379d00fed1491fe15df284dfde4a142f68aa8d412023195cee66883e6290ffe703f4ea5963bf212713cee46b107c09182b5edcd955adac418bf4918e2889af48e1099d513830cec85c26ac1e158b52620e33ba8692f893efbb2f958b4424" ) == 0 );
585 FCT_TEST_BGN(test_mpi_write_binary_1_buffer_just_fits)
588 unsigned char str[1000];
589 unsigned char buf[1000];
592 memset( buf, 0x00, 1000 );
593 memset( str, 0x00, 1000 );
597 fct_chk(
mpi_read_string( &X, 16,
"123123123123123123123123123" ) == 0 );
606 hexify( str, buf, buflen );
608 fct_chk( strcasecmp( (
char *) str,
"0123123123123123123123123123" ) == 0 );
616 FCT_TEST_BGN(test_mpi_write_binary_2_buffer_too_small)
619 unsigned char str[1000];
620 unsigned char buf[1000];
623 memset( buf, 0x00, 1000 );
624 memset( str, 0x00, 1000 );
628 fct_chk(
mpi_read_string( &X, 16,
"123123123123123123123123123" ) == 0 );
637 hexify( str, buf, buflen );
639 fct_chk( strcasecmp( (
char *) str,
"123123123123123123123123123" ) == 0 );
646 #ifdef POLARSSL_FS_IO
648 FCT_TEST_BGN(base_test_mpi_read_file_1)
651 unsigned char str[1000];
652 unsigned char buf[1000];
656 memset( buf, 0x00, 1000 );
657 memset( str, 0x00, 1000 );
661 file = fopen(
"data_files/mpi_10",
"r" );
670 hexify( str, buf, buflen );
672 fct_chk( strcasecmp( (
char *) str,
"01f55332c3a48b910f9942f6c914e58bef37a47ee45cb164a5b6b8d1006bf59a059c21449939ebebfdf517d2e1dbac88010d7b1f141e997bd6801ddaec9d05910f4f2de2b2c4d714e2c14a72fc7f17aa428d59c531627f09" ) == 0 );
680 #ifdef POLARSSL_FS_IO
682 FCT_TEST_BGN(test_mpi_read_file_1_empty_file)
685 unsigned char str[1000];
686 unsigned char buf[1000];
690 memset( buf, 0x00, 1000 );
691 memset( str, 0x00, 1000 );
695 file = fopen(
"data_files/hash_file_4",
"r" );
704 hexify( str, buf, buflen );
706 fct_chk( strcasecmp( (
char *) str,
"" ) == 0 );
714 #ifdef POLARSSL_FS_IO
716 FCT_TEST_BGN(test_mpi_read_file_2_illegal_input)
719 unsigned char str[1000];
720 unsigned char buf[1000];
724 memset( buf, 0x00, 1000 );
725 memset( str, 0x00, 1000 );
729 file = fopen(
"data_files/hash_file_3",
"r" );
738 hexify( str, buf, buflen );
740 fct_chk( strcasecmp( (
char *) str,
"" ) == 0 );
748 #ifdef POLARSSL_FS_IO
750 FCT_TEST_BGN(test_mpi_read_file_3_input_too_big)
753 unsigned char str[1000];
754 unsigned char buf[1000];
758 memset( buf, 0x00, 1000 );
759 memset( str, 0x00, 1000 );
763 file = fopen(
"data_files/mpi_too_big",
"r" );
772 hexify( str, buf, buflen );
774 fct_chk( strcasecmp( (
char *) str,
"" ) == 0 );
782 #ifdef POLARSSL_FS_IO
784 FCT_TEST_BGN(base_test_mpi_write_file_1)
787 FILE *file_out, *file_in;
791 fct_chk(
mpi_read_string( &X, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
793 file_out = fopen(
"data_files/mpi_write",
"w" );
794 fct_chk( file_out != NULL );
798 file_in = fopen(
"data_files/mpi_write",
"r" );
799 fct_chk( file_in != NULL );
811 FCT_TEST_BGN(base_test_mpi_lsb_1)
816 fct_chk(
mpi_read_string( &X, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
824 FCT_TEST_BGN(base_test_mpi_lsb_2)
837 FCT_TEST_BGN(base_test_mpi_lsb_3)
850 FCT_TEST_BGN(base_test_mpi_lsb_4)
856 fct_chk(
mpi_lsb( &X ) == 13 );
863 FCT_TEST_BGN(base_test_mpi_msb_1)
868 fct_chk(
mpi_read_string( &X, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
869 fct_chk(
mpi_msb( &X ) == 764 );
876 FCT_TEST_BGN(base_test_mpi_msb_2)
889 FCT_TEST_BGN(base_test_mpi_msb_3)
902 FCT_TEST_BGN(base_test_mpi_msb_4)
915 FCT_TEST_BGN(base_test_mpi_msb_5)
928 FCT_TEST_BGN(base_test_mpi_msb_6)
941 FCT_TEST_BGN(base_test_mpi_msb_7)
954 FCT_TEST_BGN(base_test_mpi_cmp_int_1)
967 FCT_TEST_BGN(base_test_mpi_cmp_int_2)
980 FCT_TEST_BGN(base_test_mpi_cmp_int_3)
993 FCT_TEST_BGN(base_test_mpi_cmp_int_negative_values_1)
1006 FCT_TEST_BGN(base_test_mpi_cmp_int_negative_values_2)
1019 FCT_TEST_BGN(base_test_mpi_cmp_int_negative_values_3)
1032 FCT_TEST_BGN(base_test_mpi_cmp_mpi_1)
1046 FCT_TEST_BGN(base_test_mpi_cmp_mpi_2)
1060 FCT_TEST_BGN(base_test_mpi_cmp_mpi_3)
1074 FCT_TEST_BGN(base_test_mpi_cmp_mpi_negative_values_1)
1088 FCT_TEST_BGN(base_test_mpi_cmp_mpi_negative_values_2)
1102 FCT_TEST_BGN(base_test_mpi_cmp_mpi_negative_values_3)
1116 FCT_TEST_BGN(base_test_mpi_cmp_mpi_mixed_values_4)
1130 FCT_TEST_BGN(base_test_mpi_cmp_mpi_mixed_values_5)
1144 FCT_TEST_BGN(base_test_mpi_cmp_mpi_mixed_values_6)
1158 FCT_TEST_BGN(base_test_mpi_cmp_abs_1)
1172 FCT_TEST_BGN(base_test_mpi_cmp_abs_2)
1186 FCT_TEST_BGN(base_test_mpi_cmp_abs_3)
1200 FCT_TEST_BGN(base_test_mpi_cmp_abs_negative_values_1)
1214 FCT_TEST_BGN(base_test_mpi_cmp_abs_negative_values_2)
1228 FCT_TEST_BGN(base_test_mpi_cmp_abs_negative_values_3)
1242 FCT_TEST_BGN(base_test_mpi_cmp_abs_zero_and_zero_4)
1256 FCT_TEST_BGN(base_test_mpi_cmp_abs_mix_values_1)
1270 FCT_TEST_BGN(base_test_mpi_cmp_abs_mix_values_2)
1284 FCT_TEST_BGN(base_test_mpi_cmp_abs_mix_values_3)
1298 FCT_TEST_BGN(base_test_mpi_copy_1)
1304 fct_chk(
mpi_lset( &Y, 1500 ) == 0 );
1305 fct_chk(
mpi_lset( &A, 1500 ) == 0 );
1308 fct_chk(
mpi_copy( &Y, &X ) == 0 );
1317 FCT_TEST_BGN(base_test_mpi_copy_self_1)
1322 fct_chk(
mpi_lset( &X, 14 ) == 0 );
1323 fct_chk(
mpi_copy( &X, &X ) == 0 );
1331 FCT_TEST_BGN(base_test_mpi_swap_1)
1337 fct_chk(
mpi_lset( &Y, 1500 ) == 0 );
1350 FCT_TEST_BGN(base_test_mpi_add_abs_1)
1366 FCT_TEST_BGN(base_test_mpi_add_abs_2)
1382 FCT_TEST_BGN(base_test_mpi_add_abs_3)
1398 FCT_TEST_BGN(base_test_mpi_add_abs_4)
1414 FCT_TEST_BGN(test_mpi_add_abs_1)
1419 fct_chk(
mpi_read_string( &X, 10,
"-643808006803554439230129854961492699151386107534013432918073439524138264842370630061369715394739134090922937332590384720397133335969549256322620979036686633213903952966175107096769180017646161851573147596390153" ) == 0 );
1420 fct_chk(
mpi_read_string( &Y, 10,
"56125680981752282333498088313568935051383833838594899821664631784577337171193624243181360054669678410455329112434552942717084003541384594864129940145043086760031292483340068923506115878221189886491132772739661669044958531131327771" ) == 0 );
1421 fct_chk(
mpi_read_string( &A, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
1430 FCT_TEST_BGN(test_mpi_add_abs_2_add_to_first_value)
1446 FCT_TEST_BGN(test_mpi_add_abs_3_add_to_second_value)
1462 FCT_TEST_BGN(regression_mpi_add_abs_add_small_to_very_large_mpi_with_carry_rollover)
1467 fct_chk(
mpi_read_string( &X, 16,
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8" ) == 0 );
1469 fct_chk(
mpi_read_string( &A, 16,
"1000000000000000000000000000000" ) == 0 );
1478 FCT_TEST_BGN(regression_mpi_add_abs_add_small_to_very_large_mpi_with_carry_rollover)
1484 fct_chk(
mpi_read_string( &Y, 16,
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8" ) == 0 );
1485 fct_chk(
mpi_read_string( &A, 16,
"1000000000000000000000000000000" ) == 0 );
1494 FCT_TEST_BGN(base_test_mpi_add_mpi_1)
1510 FCT_TEST_BGN(base_test_mpi_add_mpi_2)
1526 FCT_TEST_BGN(base_test_mpi_add_mpi_3)
1542 FCT_TEST_BGN(base_test_mpi_add_mpi_4)
1558 FCT_TEST_BGN(test_mpi_add_mpi_1)
1563 fct_chk(
mpi_read_string( &X, 10,
"203956878356401977405765866929034577280193993314348263094772646453283062722701277632936616063144088173312372882677123879538709400158306567338328279154499698366071906766440037074217117805690872792848149112022286332144876183376326512083574821647933992961249917319836219304274280243803104015000563790123" ) == 0 );
1564 fct_chk(
mpi_read_string( &Y, 10,
"531872289054204184185084734375133399408303613982130856645299464930952178606045848877129147820387996428175564228204785846141207532462936339834139412401975338705794646595487324365194792822189473092273993580587964571659678084484152603881094176995594813302284232006001752128168901293560051833646881436219" ) == 0 );
1565 fct_chk(
mpi_read_string( &A, 10,
"735829167410606161590850601304167976688497607296479119740072111384235241328747126510065763883532084601487937110881909725679916932621242907172467691556475037071866553361927361439411910627880345885122142692610250903804554267860479115964668998643528806263534149325837971432443181537363155848647445226342" ) == 0 );
1574 FCT_TEST_BGN(test_mpi_add_mpi_2)
1579 fct_chk(
mpi_read_string( &X, 10,
"643808006803554439230129854961492699151386107534013432918073439524138264842370630061369715394739134090922937332590384720397133335969549256322620979036686633213903952966175107096769180017646161851573147596390153" ) == 0 );
1580 fct_chk(
mpi_read_string( &Y, 10,
"56125680981752282333498088313568935051383833838594899821664631784577337171193624243181360054669678410455329112434552942717084003541384594864129940145043086760031292483340068923506115878221189886491132772739661669044958531131327771" ) == 0 );
1581 fct_chk(
mpi_read_string( &A, 10,
"56125680981752282334141896320372489490613963693556392520816017892111350604111697682705498319512049040516698827829292076808006940873974979584527073481012636016353913462376755556720019831187364993587901952757307830896531678727717924" ) == 0 );
1590 FCT_TEST_BGN(test_mpi_add_int_1)
1595 fct_chk(
mpi_read_string( &X, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
1596 fct_chk(
mpi_read_string( &A, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227022647561" ) == 0 );
1605 FCT_TEST_BGN(test_mpi_add_int_2)
1610 fct_chk(
mpi_read_string( &X, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
1611 fct_chk(
mpi_read_string( &A, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227002905097" ) == 0 );
1620 FCT_TEST_BGN(base_test_mpi_sub_abs_1_test_with_larger_second_input)
1640 FCT_TEST_BGN(base_test_mpi_sub_abs_2_test_with_larger_second_input)
1660 FCT_TEST_BGN(base_test_mpi_sub_abs_3_test_with_larger_second_input)
1680 FCT_TEST_BGN(base_test_mpi_sub_abs_4_test_with_larger_second_input)
1700 FCT_TEST_BGN(base_test_mpi_sub_abs_1)
1711 fct_chk( res == 0 );
1720 FCT_TEST_BGN(base_test_mpi_sub_abs_2)
1731 fct_chk( res == 0 );
1740 FCT_TEST_BGN(base_test_mpi_sub_abs_3)
1751 fct_chk( res == 0 );
1760 FCT_TEST_BGN(base_test_mpi_sub_abs_4)
1771 fct_chk( res == 0 );
1780 FCT_TEST_BGN(test_mpi_sub_abs_1)
1791 fct_chk( res == 0 );
1800 FCT_TEST_BGN(test_mpi_sub_abs_2)
1811 fct_chk( res == 0 );
1820 FCT_TEST_BGN(test_mpi_sub_abs_3)
1831 fct_chk( res == 0 );
1840 FCT_TEST_BGN(test_mpi_sub_abs_4)
1851 fct_chk( res == 0 );
1860 FCT_TEST_BGN(base_test_mpi_sub_mpi_1_test_with_negative_result)
1876 FCT_TEST_BGN(base_test_mpi_sub_mpi_2_test_with_negative_inputs)
1892 FCT_TEST_BGN(base_test_mpi_sub_mpi_3_test_with_negative_base)
1908 FCT_TEST_BGN(base_test_mpi_sub_mpi_4_test_with_negative_substraction)
1924 FCT_TEST_BGN(test_mpi_sub_mpi_1)
1929 fct_chk(
mpi_read_string( &X, 10,
"531872289054204184185084734375133399408303613982130856645299464930952178606045848877129147820387996428175564228204785846141207532462936339834139412401975338705794646595487324365194792822189473092273993580587964571659678084484152603881094176995594813302284232006001752128168901293560051833646881436219" ) == 0 );
1930 fct_chk(
mpi_read_string( &Y, 10,
"203956878356401977405765866929034577280193993314348263094772646453283062722701277632936616063144088173312372882677123879538709400158306567338328279154499698366071906766440037074217117805690872792848149112022286332144876183376326512083574821647933992961249917319836219304274280243803104015000563790123" ) == 0 );
1931 fct_chk(
mpi_read_string( &A, 10,
"327915410697802206779318867446098822128109620667782593550526818477669115883344571244192531757243908254863191345527661966602498132304629772495811133247475640339722739829047287290977675016498600299425844468565678239514801901107826091797519355347660820341034314686165532823894621049756947818646317646096" ) == 0 );
1940 FCT_TEST_BGN(test_mpi_sub_mpi_2_test_for_negative_result)
1945 fct_chk(
mpi_read_string( &X, 10,
"643808006803554439230129854961492699151386107534013432918073439524138264842370630061369715394739134090922937332590384720397133335969549256322620979036686633213903952966175107096769180017646161851573147596390153" ) == 0 );
1946 fct_chk(
mpi_read_string( &Y, 10,
"56125680981752282333498088313568935051383833838594899821664631784577337171193624243181360054669678410455329112434552942717084003541384594864129940145043086760031292483340068923506115878221189886491132772739661669044958531131327771" ) == 0 );
1947 fct_chk(
mpi_read_string( &A, 10,
"-56125680981752282332854280306765380612153703983633407122513245677043323738275550803657221789827307780393959397039813808626161066208794210143732806809073537503708671504303382290292211925255014779394363592722015507193385383534937618" ) == 0 );
1956 FCT_TEST_BGN(test_mpi_sub_int_1)
1961 fct_chk(
mpi_read_string( &X, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
1962 fct_chk(
mpi_read_string( &A, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227022647561" ) == 0 );
1971 FCT_TEST_BGN(test_mpi_sub_int_2)
1976 fct_chk(
mpi_read_string( &X, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
1977 fct_chk(
mpi_read_string( &A, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227002905097" ) == 0 );
1986 FCT_TEST_BGN(test_mpi_shift_l_1)
2001 FCT_TEST_BGN(test_mpi_shift_l_2)
2006 fct_chk(
mpi_read_string( &X, 10,
"658385546911733550164516088405238961461880256029834598831972039469421755117818013653494814438931957316403111689187691446941406788869098983929874080332195117465344344350008880118042764943201875870917468833709791733282363323948005998269792207" ) == 0 );
2007 fct_chk(
mpi_read_string( &A, 10,
"90487820548639020691922304619723076305400961610119884872723190678642804168382367856686134531865643066983017249846286450251272364365605022750900439437595355052945035915579216557330505438734955340526145476988250171181404966718289259743378883640981192704" ) == 0 );
2016 FCT_TEST_BGN(test_mpi_shift_r_1)
2031 FCT_TEST_BGN(test_mpi_shift_r_2)
2036 fct_chk(
mpi_read_string( &X, 10,
"120815570979701484704906977000760567182871429114712069861589084706550626575967516787438008593490722779337547394120718248995900363209947025063336882559539208430319216688889117222633155838468458047056355241515415159736436403445579777425189969" ) == 0 );
2037 fct_chk(
mpi_read_string( &A, 10,
"3433785053053426415343295076376096153094051405637175942660777670498379921354157795219578264137985649407981651226029903483433269093721578004287291678324982297860947730012217028349628999378309630601971640587504883789518896817457" ) == 0 );
2046 FCT_TEST_BGN(test_mpi_shift_r_4)
2061 FCT_TEST_BGN(test_mpi_shift_r_4)
2076 FCT_TEST_BGN(test_mpi_shift_r_6)
2091 FCT_TEST_BGN(test_mpi_shift_r_7)
2106 FCT_TEST_BGN(base_test_mpi_mul_mpi_1)
2122 FCT_TEST_BGN(base_test_mpi_mul_mpi_2)
2138 FCT_TEST_BGN(base_test_mpi_mul_mpi_3)
2154 FCT_TEST_BGN(base_test_mpi_mul_mpi_4)
2170 FCT_TEST_BGN(test_mpi_mul_mpi_1)
2175 fct_chk(
mpi_read_string( &X, 10,
"28911710017320205966167820725313234361535259163045867986277478145081076845846493521348693253530011243988160148063424837895971948244167867236923919506962312185829914482993478947657472351461336729641485069323635424692930278888923450060546465883490944265147851036817433970984747733020522259537" ) == 0 );
2176 fct_chk(
mpi_read_string( &Y, 10,
"16471581891701794764704009719057349996270239948993452268812975037240586099924712715366967486587417803753916334331355573776945238871512026832810626226164346328807407669366029926221415383560814338828449642265377822759768011406757061063524768140567867350208554439342320410551341675119078050953" ) == 0 );
2177 fct_chk(
mpi_read_string( &A, 10,
"476221599179424887669515829231223263939342135681791605842540429321038144633323941248706405375723482912535192363845116154236465184147599697841273424891410002781967962186252583311115708128167171262206919514587899883547279647025952837516324649656913580411611297312678955801899536937577476819667861053063432906071315727948826276092545739432005962781562403795455162483159362585281248265005441715080197800335757871588045959754547836825977169125866324128449699877076762316768127816074587766799018626179199776188490087103869164122906791440101822594139648973454716256383294690817576188761" ) == 0 );
2186 FCT_TEST_BGN(test_mpi_mul_int_1)
2191 fct_chk(
mpi_read_string( &X, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
2192 fct_chk(
mpi_read_string( &A, 10,
"20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2201 FCT_TEST_BGN(test_mpi_mul_int_2_unsigned_thus_failure)
2206 fct_chk(
mpi_read_string( &X, 10,
"2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
2207 fct_chk(
mpi_read_string( &A, 10,
"-20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2216 FCT_TEST_BGN(test_mpi_mul_int_3)
2221 fct_chk(
mpi_read_string( &X, 10,
"-2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
2222 fct_chk(
mpi_read_string( &A, 10,
"-20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2231 FCT_TEST_BGN(test_mpi_mul_int_4_unsigned_thus_failure)
2236 fct_chk(
mpi_read_string( &X, 10,
"-2039568783564019774057658669290345772801939933143482630947726464532830627227012776329" ) == 0 );
2237 fct_chk(
mpi_read_string( &A, 10,
"20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2246 FCT_TEST_BGN(base_test_mpi_div_mpi_1)
2248 mpi X, Y, Q, R, A, B;
2258 fct_chk( res == 0 );
2271 FCT_TEST_BGN(base_test_mpi_div_mpi_2_divide_by_zero)
2273 mpi X, Y, Q, R, A, B;
2296 FCT_TEST_BGN(base_test_mpi_div_mpi_3)
2298 mpi X, Y, Q, R, A, B;
2308 fct_chk( res == 0 );
2321 FCT_TEST_BGN(test_mpi_div_mpi_1)
2323 mpi X, Y, Q, R, A, B;
2328 fct_chk(
mpi_read_string( &X, 10,
"20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2330 fct_chk(
mpi_read_string( &A, 10,
"592148724779947824773845002981655249516095268533053127589864347174804198178334111238460803" ) == 0 );
2333 fct_chk( res == 0 );
2346 FCT_TEST_BGN(test_mpi_div_mpi_2)
2348 mpi X, Y, Q, R, A, B;
2353 fct_chk(
mpi_read_string( &X, 10,
"476221599179424887669515829231223263939342135681791605842540429321038144633323941248706405375723482912535192363845116154236465184147599697841273424891410002781967962186252583311115708128167171262206919514587899883547279647025952837516324649656913580411611297312678955801899536937577476819667861053063432906071315727948826276092545739432005962781562403795455162483159362585281248265005441715080197800335757871588045959754547836825977169125866324128449699877076762316768127816074587766799018626179199776188490087103869164122906791440101822594139648973454716256383294690817576188762" ) == 0 );
2354 fct_chk(
mpi_read_string( &Y, 10,
"28911710017320205966167820725313234361535259163045867986277478145081076845846493521348693253530011243988160148063424837895971948244167867236923919506962312185829914482993478947657472351461336729641485069323635424692930278888923450060546465883490944265147851036817433970984747733020522259537" ) == 0 );
2355 fct_chk(
mpi_read_string( &A, 10,
"16471581891701794764704009719057349996270239948993452268812975037240586099924712715366967486587417803753916334331355573776945238871512026832810626226164346328807407669366029926221415383560814338828449642265377822759768011406757061063524768140567867350208554439342320410551341675119078050953" ) == 0 );
2358 fct_chk( res == 0 );
2371 FCT_TEST_BGN(test_mpi_div_mpi_3)
2373 mpi X, Y, Q, R, A, B;
2383 fct_chk( res == 0 );
2396 FCT_TEST_BGN(test_mpi_div_mpi_4)
2398 mpi X, Y, Q, R, A, B;
2408 fct_chk( res == 0 );
2421 FCT_TEST_BGN(base_test_mpi_div_int_1)
2432 fct_chk( res == 0 );
2445 FCT_TEST_BGN(base_test_mpi_div_int_2_divide_by_zero)
2469 FCT_TEST_BGN(base_test_mpi_div_int_3)
2480 fct_chk( res == 0 );
2493 FCT_TEST_BGN(test_mpi_div_int_1)
2500 fct_chk(
mpi_read_string( &X, 10,
"20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2501 fct_chk(
mpi_read_string( &A, 10,
"592148724779947824773845002981655249516095268533053127589864347174804198178334111238460803" ) == 0 );
2504 fct_chk( res == 0 );
2517 FCT_TEST_BGN(test_mpi_div_int_2)
2524 fct_chk(
mpi_read_string( &X, 10,
"20133056642518226042310730101376278483547239130123806338055387803943342738063359782107667328" ) == 0 );
2525 fct_chk(
mpi_read_string( &A, 10,
"-592148724779947824773845002981655249516095268533053127589864347174804198178334111238460803" ) == 0 );
2528 fct_chk( res == 0 );
2541 FCT_TEST_BGN(base_test_mpi_mod_mpi_1)
2551 fct_chk( res == 0 );
2562 FCT_TEST_BGN(base_test_mpi_mod_mpi_2_divide_by_zero)
2583 FCT_TEST_BGN(base_test_mpi_mod_mpi_3)
2593 fct_chk( res == 0 );
2604 FCT_TEST_BGN(base_test_mpi_mod_mpi_4_negative_modulo)
2625 FCT_TEST_BGN(base_test_mpi_mod_mpi_5_negative_modulo)
2646 FCT_TEST_BGN(base_test_mpi_mod_int_1)
2655 fct_chk( res == 0 );
2666 FCT_TEST_BGN(base_test_mpi_mod_int_2_divide_by_zero)
2686 FCT_TEST_BGN(base_test_mpi_mod_int_3)
2695 fct_chk( res == 0 );
2706 FCT_TEST_BGN(base_test_mpi_mod_int_4_negative_modulo)
2726 FCT_TEST_BGN(base_test_mpi_mod_int_5_negative_modulo)
2746 FCT_TEST_BGN(base_test_mpi_mod_int_6_by_1)
2755 fct_chk( res == 0 );
2766 FCT_TEST_BGN(base_test_mpi_mod_int_7_by_2)
2775 fct_chk( res == 0 );
2786 FCT_TEST_BGN(base_test_mpi_mod_int_8_by_2)
2795 fct_chk( res == 0 );
2806 FCT_TEST_BGN(base_test_mpi_exp_mod_1)
2808 mpi A, E, N, RR, Z, X;
2822 fct_chk( res == 0 );
2834 FCT_TEST_BGN(base_test_mpi_exp_mod_2_even_n)
2836 mpi A, E, N, RR, Z, X;
2862 FCT_TEST_BGN(base_test_mpi_exp_mod_3_negative_n)
2864 mpi A, E, N, RR, Z, X;
2890 FCT_TEST_BGN(base_test_mpi_exp_mod_4_negative_base)
2892 mpi A, E, N, RR, Z, X;
2906 fct_chk( res == 0 );
2918 FCT_TEST_BGN(base_test_mpi_exp_mod_5_negative_exponent)
2920 mpi A, E, N, RR, Z, X;
2946 FCT_TEST_BGN(base_test_mpi_exp_mod_7_negative_base__exponent)
2948 mpi A, E, N, RR, Z, X;
2974 FCT_TEST_BGN(test_mpi_exp_mod_1)
2976 mpi A, E, N, RR, Z, X;
2981 fct_chk(
mpi_read_string( &A, 10,
"433019240910377478217373572959560109819648647016096560523769010881172869083338285573756574557395862965095016483867813043663981946477698466501451832407592327356331263124555137732393938242285782144928753919588632679050799198937132922145084847" ) == 0 );
2982 fct_chk(
mpi_read_string( &E, 10,
"5781538327977828897150909166778407659250458379645823062042492461576758526757490910073628008613977550546382774775570888130029763571528699574717583228939535960234464230882573615930384979100379102915657483866755371559811718767760594919456971354184113721" ) == 0 );
2983 fct_chk(
mpi_read_string( &N, 10,
"583137007797276923956891216216022144052044091311388601652961409557516421612874571554415606746479105795833145583959622117418531166391184939066520869800857530421873250114773204354963864729386957427276448683092491947566992077136553066273207777134303397724679138833126700957" ) == 0 );
2984 fct_chk(
mpi_read_string( &X, 10,
"114597449276684355144920670007147953232659436380163461553186940113929777196018164149703566472936578890991049344459204199888254907113495794730452699842273939581048142004834330369483813876618772578869083248061616444392091693787039636316845512292127097865026290173004860736" ) == 0 );
2990 fct_chk( res == 0 );
3002 FCT_TEST_BGN(test_mpi_exp_mod_negative_base)
3004 mpi A, E, N, RR, Z, X;
3018 fct_chk( res == 0 );
3030 FCT_TEST_BGN(test_mpi_exp_mod_negative_base)
3032 mpi A, E, N, RR, Z, X;
3037 fct_chk(
mpi_read_string( &A, 16,
"-9f13012cd92aa72fb86ac8879d2fde4f7fd661aaae43a00971f081cc60ca277059d5c37e89652e2af2585d281d66ef6a9d38a117e9608e9e7574cd142dc55278838a2161dd56db9470d4c1da2d5df15a908ee2eb886aaa890f23be16de59386663a12f1afbb325431a3e835e3fd89b98b96a6f77382f458ef9a37e1f84a03045c8676ab55291a94c2228ea15448ee96b626b998" ) == 0 );
3038 fct_chk(
mpi_read_string( &E, 16,
"40a54d1b9e86789f06d9607fb158672d64867665c73ee9abb545fc7a785634b354c7bae5b962ce8040cf45f2c1f3d3659b2ee5ede17534c8fc2ec85c815e8df1fe7048d12c90ee31b88a68a081f17f0d8ce5f4030521e9400083bcea73a429031d4ca7949c2000d597088e0c39a6014d8bf962b73bb2e8083bd0390a4e00b9b3" ) == 0 );
3039 fct_chk(
mpi_read_string( &N, 16,
"eeaf0ab9adb38dd69c33f80afa8fc5e86072618775ff3c0b9ea2314c9c256576d674df7496ea81d3383b4813d692c6e0e0d5d8e250b98be48e495c1d6089dad15dc7d7b46154d6b6ce8ef4ad69b15d4982559b297bcf1885c529f566660e57ec68edbc3c05726cc02fd4cbf4976eaa9afd5138fe8376435b9fc61d2fc0eb06e3" ) == 0 );
3040 fct_chk(
mpi_read_string( &X, 16,
"21acc7199e1b90f9b4844ffe12c19f00ec548c5d32b21c647d48b6015d8eb9ec9db05b4f3d44db4227a2b5659c1a7cceb9d5fa8fa60376047953ce7397d90aaeb7465e14e820734f84aa52ad0fc66701bcbb991d57715806a11531268e1e83dd48288c72b424a6287e9ce4e5cc4db0dd67614aecc23b0124a5776d36e5c89483" ) == 0 );
3046 fct_chk( res == 0 );
3058 FCT_TEST_BGN(base_test_gcd_1)
3066 fct_chk(
mpi_gcd( &Z, &X, &Y ) == 0 );
3074 FCT_TEST_BGN(base_test_gcd_2)
3082 fct_chk(
mpi_gcd( &Z, &X, &Y ) == 0 );
3090 FCT_TEST_BGN(base_test_gcd_3)
3098 fct_chk(
mpi_gcd( &Z, &X, &Y ) == 0 );
3106 FCT_TEST_BGN(test_gcd_1)
3111 fct_chk(
mpi_read_string( &X, 10,
"433019240910377478217373572959560109819648647016096560523769010881172869083338285573756574557395862965095016483867813043663981946477698466501451832407592327356331263124555137732393938242285782144928753919588632679050799198937132922145084847" ) == 0 );
3112 fct_chk(
mpi_read_string( &Y, 10,
"5781538327977828897150909166778407659250458379645823062042492461576758526757490910073628008613977550546382774775570888130029763571528699574717583228939535960234464230882573615930384979100379102915657483866755371559811718767760594919456971354184113721" ) == 0 );
3114 fct_chk(
mpi_gcd( &Z, &X, &Y ) == 0 );
3121 #ifdef POLARSSL_GENPRIME
3123 FCT_TEST_BGN(base_test_mpi_inv_mod_1)
3133 fct_chk( res == 0 );
3144 #ifdef POLARSSL_GENPRIME
3146 FCT_TEST_BGN(base_test_mpi_inv_mod_2)
3167 #ifdef POLARSSL_GENPRIME
3169 FCT_TEST_BGN(base_test_mpi_inv_mod_3)
3190 #ifdef POLARSSL_GENPRIME
3192 FCT_TEST_BGN(base_test_mpi_inv_mod_4)
3213 #ifdef POLARSSL_GENPRIME
3215 FCT_TEST_BGN(test_mpi_inv_mod_1)
3221 fct_chk(
mpi_read_string( &X, 16,
"aa4df5cb14b4c31237f98bd1faf527c283c2d0f3eec89718664ba33f9762907c" ) == 0 );
3222 fct_chk(
mpi_read_string( &Y, 16,
"fffbbd660b94412ae61ead9c2906a344116e316a256fd387874c6c675b1d587d" ) == 0 );
3223 fct_chk(
mpi_read_string( &A, 16,
"8d6a5c1d7adeae3e94b9bcd2c47e0d46e778bc8804a2cc25c02d775dc3d05b0c" ) == 0 );
3225 fct_chk( res == 0 );
3236 #ifdef POLARSSL_GENPRIME
3238 FCT_TEST_BGN(base_test_mpi_is_prime_1)
3253 #ifdef POLARSSL_GENPRIME
3255 FCT_TEST_BGN(base_test_mpi_is_prime_2)
3270 #ifdef POLARSSL_GENPRIME
3272 FCT_TEST_BGN(base_test_mpi_is_prime_3)
3280 fct_chk( res == 0 );
3287 #ifdef POLARSSL_GENPRIME
3289 FCT_TEST_BGN(base_test_mpi_is_prime_4)
3297 fct_chk( res == 0 );
3304 #ifdef POLARSSL_GENPRIME
3306 FCT_TEST_BGN(base_test_mpi_is_prime_5)
3321 #ifdef POLARSSL_GENPRIME
3323 FCT_TEST_BGN(base_test_mpi_is_prime_6)
3331 fct_chk( res == 0 );
3338 #ifdef POLARSSL_GENPRIME
3340 FCT_TEST_BGN(base_test_mpi_is_prime_7)
3355 #ifdef POLARSSL_GENPRIME
3357 FCT_TEST_BGN(base_test_mpi_is_prime_8)
3365 fct_chk( res == 0 );
3372 #ifdef POLARSSL_GENPRIME
3374 FCT_TEST_BGN(test_mpi_is_prime_1)
3380 fct_chk(
mpi_read_string( &X, 10,
"827131507221654563937832686696200995595835694437983658840870036586124168186967796809117749047430768825822857042432722828096779098498192459819306321073968735177531164565305635281198148032612029767584644305912099" ) == 0 );
3382 fct_chk( res == 0 );
3389 #ifdef POLARSSL_GENPRIME
3391 FCT_TEST_BGN(test_mpi_is_prime_2)
3397 fct_chk(
mpi_read_string( &X, 10,
"827131507221654563937832686696200995595835694437983658840870036586124168186967796809117749047430768825822857042432722828096779098498192459819306321073968735177531164565305635281198148032612029767584644305912001" ) == 0 );
3406 #ifdef POLARSSL_GENPRIME
3408 FCT_TEST_BGN(test_mpi_is_prime_3)
3414 fct_chk(
mpi_read_string( &X, 10,
"2833419889721787128217599" ) == 0 );
3416 fct_chk( res == 0 );
3423 #ifdef POLARSSL_GENPRIME
3425 FCT_TEST_BGN(test_mpi_is_prime_4)
3431 fct_chk(
mpi_read_string( &X, 10,
"195845982777569926302400511" ) == 0 );
3433 fct_chk( res == 0 );
3440 #ifdef POLARSSL_GENPRIME
3442 FCT_TEST_BGN(test_mpi_is_prime_5)
3448 fct_chk(
mpi_read_string( &X, 10,
"4776913109852041418248056622882488319" ) == 0 );
3450 fct_chk( res == 0 );
3457 #ifdef POLARSSL_GENPRIME
3459 FCT_TEST_BGN(test_mpi_is_prime_5)
3467 fct_chk( res == 0 );
3474 #ifdef POLARSSL_GENPRIME
3476 FCT_TEST_BGN(test_mpi_is_prime_6)
3482 fct_chk(
mpi_read_string( &X, 10,
"201487636602438195784363" ) == 0 );
3484 fct_chk( res == 0 );
3491 #ifdef POLARSSL_GENPRIME
3493 FCT_TEST_BGN(test_mpi_is_prime_7)
3499 fct_chk(
mpi_read_string( &X, 10,
"845100400152152934331135470251" ) == 0 );
3501 fct_chk( res == 0 );
3508 #ifdef POLARSSL_GENPRIME
3510 FCT_TEST_BGN(test_mpi_is_prime_8)
3516 fct_chk(
mpi_read_string( &X, 10,
"56713727820156410577229101238628035243" ) == 0 );
3518 fct_chk( res == 0 );
3525 #ifdef POLARSSL_GENPRIME
3527 FCT_TEST_BGN(test_mpi_is_prime_9)
3533 fct_chk(
mpi_read_string( &X, 10,
"203956878356401977405765866929034577280193993314348263094772646453283062722701277632936616063144088173312372882677123879538709400158306567338328279154499698366071906766440037074217117805690872792848149112022286332144876183376326512083574821647933992961249917319836219304274280243803104015000563790123" ) == 0 );
3535 fct_chk( res == 0 );
3542 #ifdef POLARSSL_GENPRIME
3544 FCT_TEST_BGN(test_mpi_is_prime_10)
3550 fct_chk(
mpi_read_string( &X, 10,
"531872289054204184185084734375133399408303613982130856645299464930952178606045848877129147820387996428175564228204785846141207532462936339834139412401975338705794646595487324365194792822189473092273993580587964571659678084484152603881094176995594813302284232006001752128168901293560051833646881436219" ) == 0 );
3552 fct_chk( res == 0 );
3559 #ifdef POLARSSL_GENPRIME
3561 FCT_TEST_BGN(test_mpi_is_prime_11)
3567 fct_chk(
mpi_read_string( &X, 10,
"319705304701141539155720137200974664666792526059405792539680974929469783512821793995613718943171723765238853752439032835985158829038528214925658918372196742089464683960239919950882355844766055365179937610326127675178857306260955550407044463370239890187189750909036833976197804646589380690779463976173" ) == 0 );
3569 fct_chk( res == 0 );
3576 #ifdef POLARSSL_GENPRIME
3578 FCT_TEST_BGN(test_mpi_is_prime_12)
3584 fct_chk(
mpi_read_string( &X, 10,
"200603822195324642393516294012917598972967449320074999667103434371470616000652036570009912021332527788252300901905236578801044680456930305350440933538867383130165841118050781326291059830545891570648243241795871" ) == 0 );
3586 fct_chk( res == 0 );
3593 #ifdef POLARSSL_GENPRIME
3595 FCT_TEST_BGN(test_mpi_is_prime_13)
3601 fct_chk(
mpi_read_string( &X, 10,
"827131507221654563937832686696200995595835694437983658840870036586124168186967796809117749047430768825822857042432722828096779098498192459819306321073968735177531164565305635281198148032612029767584644305912099" ) == 0 );
3603 fct_chk( res == 0 );
3610 #ifdef POLARSSL_GENPRIME
3612 FCT_TEST_BGN(test_mpi_is_prime_14)
3618 fct_chk(
mpi_read_string( &X, 10,
"964274047248418797145090983157197980855078966882276492572788532954904112655338439361306213898569516593744267391754033306465125919199692703323878557833023573312685002670662846477592597659826113460619815244721311" ) == 0 );
3620 fct_chk( res == 0 );
3627 #ifdef POLARSSL_GENPRIME
3629 FCT_TEST_BGN(test_mpi_is_prime_15)
3635 fct_chk(
mpi_read_string( &X, 10,
"170141183460469231731687303715884105727" ) == 0 );
3637 fct_chk( res == 0 );
3644 #ifdef POLARSSL_GENPRIME
3646 FCT_TEST_BGN(test_mpi_is_prime_16)
3654 fct_chk( res == 0 );
3661 #ifdef POLARSSL_GENPRIME
3663 FCT_TEST_BGN(test_mpi_is_prime_17)
3671 fct_chk( res == 0 );
3678 #ifdef POLARSSL_GENPRIME
3680 FCT_TEST_BGN(test_mpi_is_prime_18)
3688 fct_chk( res == 0 );
3695 #ifdef POLARSSL_GENPRIME
3697 FCT_TEST_BGN(test_mpi_is_prime_19)
3705 fct_chk( res == 0 );
3712 #ifdef POLARSSL_GENPRIME
3714 FCT_TEST_BGN(test_mpi_is_prime_20)
3722 fct_chk( res == 0 );
3730 FCT_TEST_BGN(test_bit_getting_value_bit_25)
3742 FCT_TEST_BGN(test_bit_getting_larger_but_same_limb)
3754 FCT_TEST_BGN(test_bit_getting_larger_and_non_existing_limb)
3766 FCT_TEST_BGN(test_bit_getting_value_bit_24)
3778 FCT_TEST_BGN(test_bit_getting_value_bit_23)
3790 FCT_TEST_BGN(test_bit_set_change_existing_value_with_a_1)
3805 FCT_TEST_BGN(test_bit_set_change_existing_value_with_a_0)
3820 FCT_TEST_BGN(test_bit_set_add_above_existing_limbs_with_a_0)
3835 FCT_TEST_BGN(test_bit_set_add_above_existing_limbs_with_a_1)
3841 fct_chk(
mpi_read_string( &Y, 10,
"1208925819614629224685863" ) == 0 );
3849 #ifdef POLARSSL_SELF_TEST
3851 FCT_TEST_BGN(mpi_selftest)