4 #ifdef POLARSSL_BIGNUM_C
5 #ifdef POLARSSL_GENPRIME
21 #if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
27 typedef UINT32 uint32_t;
40 #define GET_UINT32_BE(n,b,i) \
42 (n) = ( (uint32_t) (b)[(i) ] << 24 ) \
43 | ( (uint32_t) (b)[(i) + 1] << 16 ) \
44 | ( (uint32_t) (b)[(i) + 2] << 8 ) \
45 | ( (uint32_t) (b)[(i) + 3] ); \
50 #define PUT_UINT32_BE(n,b,i) \
52 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
53 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
54 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
55 (b)[(i) + 3] = (unsigned char) ( (n) ); \
59 static int unhexify(
unsigned char *obuf,
const char *ibuf)
62 int len = strlen(ibuf) / 2;
63 assert(!(strlen(ibuf) %1));
68 if( c >=
'0' && c <=
'9' )
70 else if( c >=
'a' && c <=
'f' )
72 else if( c >=
'A' && c <=
'F' )
78 if( c2 >=
'0' && c2 <=
'9' )
80 else if( c2 >=
'a' && c2 <=
'f' )
82 else if( c2 >=
'A' && c2 <=
'F' )
87 *obuf++ = ( c << 4 ) | c2;
93 static void hexify(
unsigned char *obuf,
const unsigned char *ibuf,
int len)
105 *obuf++ =
'a' + h - 10;
110 *obuf++ =
'a' + l - 10;
126 static int rnd_std_rand(
void *rng_state,
unsigned char *output,
size_t len )
130 if( rng_state != NULL )
133 for( i = 0; i < len; ++i )
144 static int rnd_zero_rand(
void *rng_state,
unsigned char *output,
size_t len )
146 if( rng_state != NULL )
149 memset( output, 0, len );
176 if( rng_state == NULL )
185 memcpy( output, info->
buf, use_len );
186 info->
buf += use_len;
190 if( len - use_len > 0 )
191 return(
rnd_std_rand( NULL, output + use_len, len - use_len ) );
220 uint32_t i, *k, sum, delta=0x9E3779B9;
221 unsigned char result[4];
223 if( rng_state == NULL )
230 size_t use_len = ( len > 4 ) ? 4 : len;
233 for( i = 0; i < 32; i++ )
235 info->
v0 += (((info->
v1 << 4) ^ (info->
v1 >> 5)) + info->
v1) ^ (sum + k[sum & 3]);
237 info->
v1 += (((info->
v0 << 4) ^ (info->
v0 >> 5)) + info->
v0) ^ (sum + k[(sum>>11) & 3]);
241 memcpy( output, result, use_len );
257 static int not_rnd(
void *in,
unsigned char *out,
size_t len )
260 const char *ibuf = in;
262 assert( len == strlen(ibuf) / 2 );
263 assert(!(strlen(ibuf) %1));
265 obuf = out + (len - 1);
269 if( c >=
'0' && c <=
'9' )
271 else if( c >=
'a' && c <=
'f' )
273 else if( c >=
'A' && c <=
'F' )
279 if( c2 >=
'0' && c2 <=
'9' )
281 else if( c2 >=
'a' && c2 <=
'f' )
283 else if( c2 >=
'A' && c2 <=
'F' )
288 *obuf-- = ( c << 4 ) | c2;
300 #ifdef POLARSSL_RSA_C
301 #ifdef POLARSSL_BIGNUM_C
302 #ifdef POLARSSL_GENPRIME
304 #define TEST_SUITE_ACTIVE
313 printf(
"FAILED\n" );
314 printf(
" %s\n", test );
319 #define TEST_ASSERT( TEST ) \
320 do { test_assert( (TEST) ? 1 : 0, #TEST ); \
321 if( test_errors) return; \
326 if( (*str)[0] !=
'"' ||
327 (*str)[strlen( *str ) - 1] !=
'"' )
329 printf(
"Expected string (with \"\") for parameter and got: %s\n", *str );
334 (*str)[strlen( *str ) - 1] =
'\0';
346 for( i = 0; i < strlen( str ); i++ )
348 if( i == 0 && str[i] ==
'-' )
354 if( ( ( minus && i == 2 ) || ( !minus && i == 1 ) ) &&
355 str[i - 1] ==
'0' && str[i] ==
'x' )
361 if( str[i] <
'0' || str[i] >
'9' )
371 *value = strtol( str, NULL, 16 );
373 *value = strtol( str, NULL, 10 );
378 if( strcmp( str,
"POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE" ) == 0 )
383 if( strcmp( str,
"POLARSSL_MD_MD4" ) == 0 )
388 if( strcmp( str,
"POLARSSL_MD_SHA256" ) == 0 )
393 if( strcmp( str,
"POLARSSL_MD_SHA512" ) == 0 )
398 if( strcmp( str,
"POLARSSL_ERR_RSA_VERIFY_FAILED" ) == 0 )
403 if( strcmp( str,
"POLARSSL_ERR_RSA_INVALID_PADDING" ) == 0 )
408 if( strcmp( str,
"POLARSSL_MD_SHA224" ) == 0 )
413 if( strcmp( str,
"POLARSSL_MD_MD5" ) == 0 )
418 if( strcmp( str,
"POLARSSL_MD_MD2" ) == 0 )
423 if( strcmp( str,
"POLARSSL_ERR_RSA_KEY_CHECK_FAILED" ) == 0 )
428 if( strcmp( str,
"RSA_PKCS_V15" ) == 0 )
433 if( strcmp( str,
"POLARSSL_ERR_RSA_BAD_INPUT_DATA" ) == 0 )
438 if( strcmp( str,
"POLARSSL_ERR_RSA_RNG_FAILED" ) == 0 )
443 if( strcmp( str,
"POLARSSL_MD_SHA1" ) == 0 )
448 if( strcmp( str,
"POLARSSL_MD_SHA384" ) == 0 )
455 printf(
"Expected integer for parameter and got: %s\n", str );
459 void test_suite_rsa_pkcs1_sign(
char *message_hex_string,
int padding_mode,
int digest,
460 int mod,
int radix_P,
char *input_P,
int radix_Q,
461 char *input_Q,
int radix_N,
char *input_N,
int radix_E,
462 char *input_E,
char *result_hex_str,
int result )
464 unsigned char message_str[1000];
465 unsigned char hash_result[1000];
466 unsigned char output[1000];
467 unsigned char output_str[1000];
476 memset( message_str, 0x00, 1000 );
477 memset( hash_result, 0x00, 1000 );
478 memset( output, 0x00, 1000 );
479 memset( output_str, 0x00, 1000 );
499 msg_len =
unhexify( message_str, message_hex_string );
509 TEST_ASSERT( strcasecmp( (
char *) output_str, result_hex_str ) == 0 );
516 void test_suite_rsa_pkcs1_verify(
char *message_hex_string,
int padding_mode,
int digest,
517 int mod,
int radix_N,
char *input_N,
int radix_E,
518 char *input_E,
char *result_hex_str,
int result )
520 unsigned char message_str[1000];
521 unsigned char hash_result[1000];
522 unsigned char result_str[1000];
527 memset( message_str, 0x00, 1000 );
528 memset( hash_result, 0x00, 1000 );
529 memset( result_str, 0x00, 1000 );
537 msg_len =
unhexify( message_str, message_hex_string );
538 unhexify( result_str, result_hex_str );
548 void test_suite_rsa_pkcs1_sign_raw(
char *message_hex_string,
char *hash_result_string,
549 int padding_mode,
int mod,
int radix_P,
char *input_P,
550 int radix_Q,
char *input_Q,
int radix_N,
551 char *input_N,
int radix_E,
char *input_E,
552 char *result_hex_str )
554 unsigned char message_str[1000];
555 unsigned char hash_result[1000];
556 unsigned char output[1000];
557 unsigned char output_str[1000];
566 memset( message_str, 0x00, 1000 );
567 memset( hash_result, 0x00, 1000 );
568 memset( output, 0x00, 1000 );
569 memset( output_str, 0x00, 1000 );
589 unhexify( message_str, message_hex_string );
590 hash_len =
unhexify( hash_result, hash_result_string );
596 TEST_ASSERT( strcasecmp( (
char *) output_str, result_hex_str ) == 0 );
602 void test_suite_rsa_pkcs1_verify_raw(
char *message_hex_string,
char *hash_result_string,
603 int padding_mode,
int mod,
int radix_N,
604 char *input_N,
int radix_E,
char *input_E,
605 char *result_hex_str,
int correct )
607 unsigned char message_str[1000];
608 unsigned char hash_result[1000];
609 unsigned char result_str[1000];
614 memset( message_str, 0x00, 1000 );
615 memset( hash_result, 0x00, 1000 );
616 memset( result_str, 0x00, 1000 );
624 unhexify( message_str, message_hex_string );
625 hash_len =
unhexify( hash_result, hash_result_string );
626 unhexify( result_str, result_hex_str );
633 void test_suite_rsa_pkcs1_encrypt(
char *message_hex_string,
int padding_mode,
int mod,
634 int radix_N,
char *input_N,
int radix_E,
char *input_E,
635 char *result_hex_str,
int result )
637 unsigned char message_str[1000];
638 unsigned char output[1000];
639 unsigned char output_str[1000];
647 memset( message_str, 0x00, 1000 );
648 memset( output, 0x00, 1000 );
649 memset( output_str, 0x00, 1000 );
657 msg_len =
unhexify( message_str, message_hex_string );
664 TEST_ASSERT( strcasecmp( (
char *) output_str, result_hex_str ) == 0 );
670 void test_suite_rsa_pkcs1_encrypt_bad_rng(
char *message_hex_string,
int padding_mode,
671 int mod,
int radix_N,
char *input_N,
672 int radix_E,
char *input_E,
673 char *result_hex_str,
int result )
675 unsigned char message_str[1000];
676 unsigned char output[1000];
677 unsigned char output_str[1000];
682 memset( message_str, 0x00, 1000 );
683 memset( output, 0x00, 1000 );
684 memset( output_str, 0x00, 1000 );
692 msg_len =
unhexify( message_str, message_hex_string );
699 TEST_ASSERT( strcasecmp( (
char *) output_str, result_hex_str ) == 0 );
705 void test_suite_rsa_pkcs1_decrypt(
char *message_hex_string,
int padding_mode,
int mod,
706 int radix_P,
char *input_P,
int radix_Q,
char *input_Q,
707 int radix_N,
char *input_N,
int radix_E,
char *input_E,
708 int max_output,
char *result_hex_str,
int result )
710 unsigned char message_str[1000];
711 unsigned char output[1000];
712 unsigned char output_str[1000];
721 memset( message_str, 0x00, 1000 );
722 memset( output, 0x00, 1000 );
723 memset( output_str, 0x00, 1000 );
743 unhexify( message_str, message_hex_string );
751 TEST_ASSERT( strncasecmp( (
char *) output_str, result_hex_str, strlen( result_hex_str ) ) == 0 );
758 void test_suite_rsa_public(
char *message_hex_string,
int mod,
int radix_N,
char *input_N,
759 int radix_E,
char *input_E,
char *result_hex_str,
int result )
761 unsigned char message_str[1000];
762 unsigned char output[1000];
763 unsigned char output_str[1000];
767 memset( message_str, 0x00, 1000 );
768 memset( output, 0x00, 1000 );
769 memset( output_str, 0x00, 1000 );
777 unhexify( message_str, message_hex_string );
784 TEST_ASSERT( strcasecmp( (
char *) output_str, result_hex_str ) == 0 );
790 void test_suite_rsa_private(
char *message_hex_string,
int mod,
int radix_P,
char *input_P,
791 int radix_Q,
char *input_Q,
int radix_N,
char *input_N,
792 int radix_E,
char *input_E,
char *result_hex_str,
int result )
794 unsigned char message_str[1000];
795 unsigned char output[1000];
796 unsigned char output_str[1000];
805 memset( message_str, 0x00, 1000 );
825 unhexify( message_str, message_hex_string );
828 for( i = 0; i < 3; i++ )
830 memset( output, 0x00, 1000 );
831 memset( output_str, 0x00, 1000 );
833 message_str, output ) == result );
839 result_hex_str ) == 0 );
847 void test_suite_rsa_check_privkey_null()
855 void test_suite_rsa_check_pubkey(
int radix_N,
char *input_N,
int radix_E,
char *input_E,
862 if( strlen( input_N ) )
866 if( strlen( input_E ) )
876 void test_suite_rsa_check_privkey(
int mod,
int radix_P,
char *input_P,
int radix_Q,
877 char *input_Q,
int radix_N,
char *input_N,
878 int radix_E,
char *input_E,
int radix_D,
char *input_D,
879 int radix_DP,
char *input_DP,
int radix_DQ,
880 char *input_DQ,
int radix_QP,
char *input_QP,
888 if( strlen( input_P ) )
892 if( strlen( input_Q ) )
896 if( strlen( input_N ) )
900 if( strlen( input_E ) )
904 if( strlen( input_D ) )
908 if( strlen( input_DP ) )
912 if( strlen( input_DQ ) )
916 if( strlen( input_QP ) )
926 void test_suite_rsa_gen_key(
int nrbits,
int exponent,
int result)
931 const char *pers =
"test_suite_rsa";
935 (
const unsigned char *) pers, strlen( pers ) ) == 0 );
949 #ifdef POLARSSL_SELF_TEST
950 void test_suite_rsa_selftest()
967 if( strcmp( str,
"POLARSSL_MD4_C" ) == 0 )
969 #if defined(POLARSSL_MD4_C)
975 if( strcmp( str,
"POLARSSL_SHA1_C" ) == 0 )
977 #if defined(POLARSSL_SHA1_C)
983 if( strcmp( str,
"POLARSSL_PKCS1_V15" ) == 0 )
985 #if defined(POLARSSL_PKCS1_V15)
991 if( strcmp( str,
"POLARSSL_CTR_DRBG_C" ) == 0 )
993 #if defined(POLARSSL_CTR_DRBG_C)
999 if( strcmp( str,
"POLARSSL_ENTROPY_C" ) == 0 )
1001 #if defined(POLARSSL_ENTROPY_C)
1007 if( strcmp( str,
"POLARSSL_SELF_TEST" ) == 0 )
1009 #if defined(POLARSSL_SELF_TEST)
1015 if( strcmp( str,
"POLARSSL_MD5_C" ) == 0 )
1017 #if defined(POLARSSL_MD5_C)
1023 if( strcmp( str,
"POLARSSL_SHA256_C" ) == 0 )
1025 #if defined(POLARSSL_SHA256_C)
1031 if( strcmp( str,
"POLARSSL_MD2_C" ) == 0 )
1033 #if defined(POLARSSL_MD2_C)
1039 if( strcmp( str,
"POLARSSL_SHA512_C" ) == 0 )
1041 #if defined(POLARSSL_SHA512_C)
1058 #if defined(TEST_SUITE_ACTIVE)
1059 if( strcmp( params[0],
"rsa_pkcs1_sign" ) == 0 )
1062 char *param1 = params[1];
1067 char *param6 = params[6];
1069 char *param8 = params[8];
1071 char *param10 = params[10];
1073 char *param12 = params[12];
1074 char *param13 = params[13];
1079 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 15 );
1084 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1085 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1086 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1087 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1089 if(
verify_int( params[7], ¶m7 ) != 0 )
return( 2 );
1091 if(
verify_int( params[9], ¶m9 ) != 0 )
return( 2 );
1093 if(
verify_int( params[11], ¶m11 ) != 0 )
return( 2 );
1096 if(
verify_int( params[14], ¶m14 ) != 0 )
return( 2 );
1098 test_suite_rsa_pkcs1_sign( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14 );
1104 if( strcmp( params[0],
"rsa_pkcs1_verify" ) == 0 )
1107 char *param1 = params[1];
1112 char *param6 = params[6];
1114 char *param8 = params[8];
1115 char *param9 = params[9];
1120 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 11 );
1125 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1126 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1127 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1128 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1130 if(
verify_int( params[7], ¶m7 ) != 0 )
return( 2 );
1133 if(
verify_int( params[10], ¶m10 ) != 0 )
return( 2 );
1135 test_suite_rsa_pkcs1_verify( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10 );
1141 if( strcmp( params[0],
"rsa_pkcs1_sign_raw" ) == 0 )
1144 char *param1 = params[1];
1145 char *param2 = params[2];
1149 char *param6 = params[6];
1151 char *param8 = params[8];
1153 char *param10 = params[10];
1155 char *param12 = params[12];
1156 char *param13 = params[13];
1160 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 14 );
1166 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1167 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1168 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1170 if(
verify_int( params[7], ¶m7 ) != 0 )
return( 2 );
1172 if(
verify_int( params[9], ¶m9 ) != 0 )
return( 2 );
1174 if(
verify_int( params[11], ¶m11 ) != 0 )
return( 2 );
1178 test_suite_rsa_pkcs1_sign_raw( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13 );
1184 if( strcmp( params[0],
"rsa_pkcs1_verify_raw" ) == 0 )
1187 char *param1 = params[1];
1188 char *param2 = params[2];
1192 char *param6 = params[6];
1194 char *param8 = params[8];
1195 char *param9 = params[9];
1200 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 11 );
1206 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1207 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1208 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1210 if(
verify_int( params[7], ¶m7 ) != 0 )
return( 2 );
1213 if(
verify_int( params[10], ¶m10 ) != 0 )
return( 2 );
1215 test_suite_rsa_pkcs1_verify_raw( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10 );
1221 if( strcmp( params[0],
"rsa_pkcs1_encrypt" ) == 0 )
1224 char *param1 = params[1];
1228 char *param5 = params[5];
1230 char *param7 = params[7];
1231 char *param8 = params[8];
1236 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 10 );
1241 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1242 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1243 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1245 if(
verify_int( params[6], ¶m6 ) != 0 )
return( 2 );
1248 if(
verify_int( params[9], ¶m9 ) != 0 )
return( 2 );
1250 test_suite_rsa_pkcs1_encrypt( param1, param2, param3, param4, param5, param6, param7, param8, param9 );
1256 if( strcmp( params[0],
"rsa_pkcs1_encrypt_bad_rng" ) == 0 )
1259 char *param1 = params[1];
1263 char *param5 = params[5];
1265 char *param7 = params[7];
1266 char *param8 = params[8];
1271 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 10 );
1276 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1277 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1278 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1280 if(
verify_int( params[6], ¶m6 ) != 0 )
return( 2 );
1283 if(
verify_int( params[9], ¶m9 ) != 0 )
return( 2 );
1285 test_suite_rsa_pkcs1_encrypt_bad_rng( param1, param2, param3, param4, param5, param6, param7, param8, param9 );
1291 if( strcmp( params[0],
"rsa_pkcs1_decrypt" ) == 0 )
1294 char *param1 = params[1];
1298 char *param5 = params[5];
1300 char *param7 = params[7];
1302 char *param9 = params[9];
1304 char *param11 = params[11];
1306 char *param13 = params[13];
1311 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 15 );
1316 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1317 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1318 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1320 if(
verify_int( params[6], ¶m6 ) != 0 )
return( 2 );
1322 if(
verify_int( params[8], ¶m8 ) != 0 )
return( 2 );
1324 if(
verify_int( params[10], ¶m10 ) != 0 )
return( 2 );
1326 if(
verify_int( params[12], ¶m12 ) != 0 )
return( 2 );
1328 if(
verify_int( params[14], ¶m14 ) != 0 )
return( 2 );
1330 test_suite_rsa_pkcs1_decrypt( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14 );
1336 if( strcmp( params[0],
"rsa_public" ) == 0 )
1339 char *param1 = params[1];
1342 char *param4 = params[4];
1344 char *param6 = params[6];
1345 char *param7 = params[7];
1350 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 9 );
1355 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1356 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1358 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1361 if(
verify_int( params[8], ¶m8 ) != 0 )
return( 2 );
1363 test_suite_rsa_public( param1, param2, param3, param4, param5, param6, param7, param8 );
1369 if( strcmp( params[0],
"rsa_private" ) == 0 )
1372 char *param1 = params[1];
1375 char *param4 = params[4];
1377 char *param6 = params[6];
1379 char *param8 = params[8];
1381 char *param10 = params[10];
1382 char *param11 = params[11];
1387 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 13 );
1392 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1393 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1395 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1397 if(
verify_int( params[7], ¶m7 ) != 0 )
return( 2 );
1399 if(
verify_int( params[9], ¶m9 ) != 0 )
return( 2 );
1402 if(
verify_int( params[12], ¶m12 ) != 0 )
return( 2 );
1404 test_suite_rsa_private( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12 );
1410 if( strcmp( params[0],
"rsa_check_privkey_null" ) == 0 )
1416 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 1 );
1421 test_suite_rsa_check_privkey_null( );
1427 if( strcmp( params[0],
"rsa_check_pubkey" ) == 0 )
1431 char *param2 = params[2];
1433 char *param4 = params[4];
1438 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 6 );
1442 if(
verify_int( params[1], ¶m1 ) != 0 )
return( 2 );
1444 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1446 if(
verify_int( params[5], ¶m5 ) != 0 )
return( 2 );
1448 test_suite_rsa_check_pubkey( param1, param2, param3, param4, param5 );
1454 if( strcmp( params[0],
"rsa_check_privkey" ) == 0 )
1459 char *param3 = params[3];
1461 char *param5 = params[5];
1463 char *param7 = params[7];
1465 char *param9 = params[9];
1467 char *param11 = params[11];
1469 char *param13 = params[13];
1471 char *param15 = params[15];
1473 char *param17 = params[17];
1478 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 19 );
1482 if(
verify_int( params[1], ¶m1 ) != 0 )
return( 2 );
1483 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1485 if(
verify_int( params[4], ¶m4 ) != 0 )
return( 2 );
1487 if(
verify_int( params[6], ¶m6 ) != 0 )
return( 2 );
1489 if(
verify_int( params[8], ¶m8 ) != 0 )
return( 2 );
1491 if(
verify_int( params[10], ¶m10 ) != 0 )
return( 2 );
1493 if(
verify_int( params[12], ¶m12 ) != 0 )
return( 2 );
1495 if(
verify_int( params[14], ¶m14 ) != 0 )
return( 2 );
1497 if(
verify_int( params[16], ¶m16 ) != 0 )
return( 2 );
1499 if(
verify_int( params[18], ¶m18 ) != 0 )
return( 2 );
1501 test_suite_rsa_check_privkey( param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18 );
1507 if( strcmp( params[0],
"rsa_gen_key" ) == 0 )
1516 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 4 );
1520 if(
verify_int( params[1], ¶m1 ) != 0 )
return( 2 );
1521 if(
verify_int( params[2], ¶m2 ) != 0 )
return( 2 );
1522 if(
verify_int( params[3], ¶m3 ) != 0 )
return( 2 );
1524 test_suite_rsa_gen_key( param1, param2, param3 );
1530 if( strcmp( params[0],
"rsa_selftest" ) == 0 )
1532 #ifdef POLARSSL_SELF_TEST
1537 fprintf( stderr,
"\nIncorrect argument count (%d != %d)\n", cnt, 1 );
1542 test_suite_rsa_selftest( );
1551 fprintf( stdout,
"FAILED\nSkipping unknown test function '%s'\n", params[0] );
1565 ret = fgets( buf, len, f );
1569 if( strlen( buf ) && buf[strlen(buf) - 1] ==
'\n' )
1570 buf[strlen(buf) - 1] =
'\0';
1571 if( strlen( buf ) && buf[strlen(buf) - 1] ==
'\r' )
1572 buf[strlen(buf) - 1] =
'\0';
1583 params[cnt++] = cur;
1585 while( *p !=
'\0' && p < buf + len )
1595 if( p + 1 < buf + len )
1598 params[cnt++] = cur;
1607 for( i = 0; i < cnt; i++ )
1614 if( *p ==
'\\' && *(p + 1) ==
'n' )
1619 else if( *p ==
'\\' && *(p + 1) ==
':' )
1624 else if( *p ==
'\\' && *(p + 1) ==
'?' )
1640 int ret, i, cnt, total_errors = 0, total_tests = 0, total_skipped = 0;
1641 const char *filename =
"/home/iurt/rpmbuild/BUILD/polarssl-1.3.1/tests/suites/test_suite_rsa.data";
1646 #if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
1647 unsigned char alloc_buf[1000000];
1648 memory_buffer_alloc_init( alloc_buf,
sizeof(alloc_buf) );
1651 file = fopen( filename,
"r" );
1654 fprintf( stderr,
"Failed to open\n" );
1658 while( !feof( file ) )
1662 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
1664 fprintf( stdout,
"%s%.66s",
test_errors ?
"\n" :
"", buf );
1665 fprintf( stdout,
" " );
1666 for( i = strlen( buf ) + 1; i < 67; i++ )
1667 fprintf( stdout,
"." );
1668 fprintf( stdout,
" " );
1673 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
1677 if( strcmp( params[0],
"depends_on" ) == 0 )
1679 for( i = 1; i < cnt; i++ )
1683 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
1694 if( skip == 1 || ret == 3 )
1697 fprintf( stdout,
"----\n" );
1702 fprintf( stdout,
"PASS\n" );
1707 fprintf( stderr,
"FAILED: FATAL PARSE ERROR\n" );
1714 if( ( ret =
get_line( file, buf,
sizeof(buf) ) ) != 0 )
1716 if( strlen(buf) != 0 )
1718 fprintf( stderr,
"Should be empty %d\n", (
int) strlen(buf) );
1724 fprintf( stdout,
"\n----------------------------------------------------------------------------\n\n");
1725 if( total_errors == 0 )
1726 fprintf( stdout,
"PASSED" );
1728 fprintf( stdout,
"FAILED" );
1730 fprintf( stdout,
" (%d / %d tests (%d skipped))\n",
1731 total_tests - total_errors, total_tests, total_skipped );
1733 #if defined(POLARSSL_MEMORY_BUFFER_ALLOC_C)
1734 #if defined(POLARSSL_MEMORY_DEBUG)
1735 memory_buffer_alloc_status();
1737 memory_buffer_alloc_free();
1740 return( total_errors != 0 );