Skip to content

Commit fdc15bd

Browse files
Ron EldorRon Eldor
authored andcommitted
Reduce stack usage of test_suite_rsa
Reduce the stack usage of the `test_suite_rsa` by reducing the size of the buffers used in the tests, to a reasonable big enough size, and change the data size to decrypt in the data file.
1 parent 58e3f69 commit fdc15bd

File tree

2 files changed

+29
-29
lines changed

2 files changed

+29
-29
lines changed

tests/suites/test_suite_rsa.data

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,15 +272,15 @@ mbedtls_rsa_pkcs1_encrypt:"4E636AF98E40F3ADCFCCB698F4E80B9F":MBEDTLS_RSA_PKCS_V1
272272

273273
RSA PKCS1 Decrypt #1 (Verify)
274274
depends_on:MBEDTLS_PKCS1_V15
275-
mbedtls_rsa_pkcs1_decrypt:"a42eda41e56235e666e7faaa77100197f657288a1bf183e4820f0c37ce2c456b960278d6003e0bbcd4be4a969f8e8fd9231e1f492414f00ed09844994c86ec32db7cde3bec7f0c3dbf6ae55baeb2712fa609f5fc3207a824eb3dace31849cd6a6084318523912bccb84cf42e3c6d6d1685131d69bb545acec827d2b0dfdd5568b7dcc4f5a11d6916583fefa689d367f8c9e1d95dcd2240895a9470b0c1730f97cd6e8546860bd254801769f54be96e16362ddcbf34d56035028890199e0f48db38642cb66a4181e028a6443a404fea284ce02b4614b683367d40874e505611d23142d49f06feea831d52d347b13610b413c4efc43a6de9f0b08d2a951dc503b6":MBEDTLS_RSA_PKCS_V15:2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":1000:"4E636AF98E40F3ADCFCCB698F4E80B9F":0
275+
mbedtls_rsa_pkcs1_decrypt:"a42eda41e56235e666e7faaa77100197f657288a1bf183e4820f0c37ce2c456b960278d6003e0bbcd4be4a969f8e8fd9231e1f492414f00ed09844994c86ec32db7cde3bec7f0c3dbf6ae55baeb2712fa609f5fc3207a824eb3dace31849cd6a6084318523912bccb84cf42e3c6d6d1685131d69bb545acec827d2b0dfdd5568b7dcc4f5a11d6916583fefa689d367f8c9e1d95dcd2240895a9470b0c1730f97cd6e8546860bd254801769f54be96e16362ddcbf34d56035028890199e0f48db38642cb66a4181e028a6443a404fea284ce02b4614b683367d40874e505611d23142d49f06feea831d52d347b13610b413c4efc43a6de9f0b08d2a951dc503b6":MBEDTLS_RSA_PKCS_V15:2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":32:"4E636AF98E40F3ADCFCCB698F4E80B9F":0
276276

277277
RSA PKCS1 Encrypt #2 (Data too large)
278278
depends_on:MBEDTLS_PKCS1_V15
279279
mbedtls_rsa_pkcs1_encrypt:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":MBEDTLS_RSA_PKCS_V15:2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"a42eda41e56235e666e7faaa77100197f657288a1bf183e4820f0c37ce2c456b960278d6003e0bbcd4be4a969f8e8fd9231e1f492414f00ed09844994c86ec32db7cde3bec7f0c3dbf6ae55baeb2712fa609f5fc3207a824eb3dace31849cd6a6084318523912bccb84cf42e3c6d6d1685131d69bb545acec827d2b0dfdd5568b7dcc4f5a11d6916583fefa689d367f8c9e1d95dcd2240895a9470b0c1730f97cd6e8546860bd254801769f54be96e16362ddcbf34d56035028890199e0f48db38642cb66a4181e028a6443a404fea284ce02b4614b683367d40874e505611d23142d49f06feea831d52d347b13610b413c4efc43a6de9f0b08d2a951dc503b6":MBEDTLS_ERR_RSA_BAD_INPUT_DATA
280280

281281
RSA PKCS1 Decrypt #2 (Data too small)
282282
depends_on:MBEDTLS_PKCS1_V15
283-
mbedtls_rsa_pkcs1_decrypt:"deadbeafcafedeadbeeffedcba9876":MBEDTLS_RSA_PKCS_V15:2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":1000:"4E636AF98E40F3ADCFCCB698F4E80B9F":MBEDTLS_ERR_RSA_PRIVATE_FAILED + MBEDTLS_ERR_MPI_BAD_INPUT_DATA
283+
mbedtls_rsa_pkcs1_decrypt:"deadbeafcafedeadbeeffedcba9876":MBEDTLS_RSA_PKCS_V15:2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":32:"4E636AF98E40F3ADCFCCB698F4E80B9F":MBEDTLS_ERR_RSA_PRIVATE_FAILED + MBEDTLS_ERR_MPI_BAD_INPUT_DATA
284284

285285
RSA PKCS1 Decrypt #4 (Output buffer too small)
286286
depends_on:MBEDTLS_PKCS1_V15

tests/suites/test_suite_rsa.function

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,8 @@ void mbedtls_rsa_pkcs1_sign( data_t * message_str, int padding_mode,
472472
char * input_N, int radix_E, char * input_E,
473473
data_t * result_hex_str, int result )
474474
{
475-
unsigned char hash_result[1000];
476-
unsigned char output[1000];
475+
unsigned char hash_result[MBEDTLS_MD_MAX_SIZE];
476+
unsigned char output[256];
477477
mbedtls_rsa_context ctx;
478478
mbedtls_mpi N, P, Q, E;
479479
rnd_pseudo_info rnd_info;
@@ -482,8 +482,8 @@ void mbedtls_rsa_pkcs1_sign( data_t * message_str, int padding_mode,
482482
mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E );
483483
mbedtls_rsa_init( &ctx, padding_mode, 0 );
484484

485-
memset( hash_result, 0x00, 1000 );
486-
memset( output, 0x00, 1000 );
485+
memset( hash_result, 0x00, sizeof( hash_result ) );
486+
memset( output, 0x00, sizeof( output ) );
487487
memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) );
488488

489489
TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 );
@@ -522,14 +522,14 @@ void mbedtls_rsa_pkcs1_verify( data_t * message_str, int padding_mode,
522522
char * input_N, int radix_E, char * input_E,
523523
data_t * result_str, int result )
524524
{
525-
unsigned char hash_result[1000];
525+
unsigned char hash_result[MBEDTLS_MD_MAX_SIZE];
526526
mbedtls_rsa_context ctx;
527527

528528
mbedtls_mpi N, E;
529529

530530
mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E );
531531
mbedtls_rsa_init( &ctx, padding_mode, 0 );
532-
memset( hash_result, 0x00, 1000 );
532+
memset( hash_result, 0x00, sizeof( hash_result ) );
533533

534534
TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
535535
TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
@@ -557,7 +557,7 @@ void rsa_pkcs1_sign_raw( data_t * hash_result,
557557
int radix_N, char * input_N, int radix_E,
558558
char * input_E, data_t * result_hex_str )
559559
{
560-
unsigned char output[1000];
560+
unsigned char output[256];
561561
mbedtls_rsa_context ctx;
562562
mbedtls_mpi N, P, Q, E;
563563
rnd_pseudo_info rnd_info;
@@ -566,7 +566,7 @@ void rsa_pkcs1_sign_raw( data_t * hash_result,
566566
mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P );
567567
mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E );
568568

569-
memset( output, 0x00, 1000 );
569+
memset( output, 0x00, sizeof( output ) );
570570
memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) );
571571

572572
TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 );
@@ -593,7 +593,7 @@ void rsa_pkcs1_sign_raw( data_t * hash_result,
593593
if( padding_mode == MBEDTLS_RSA_PKCS_V15 )
594594
{
595595
int res;
596-
memset( output, 0x00, 1000 );
596+
memset( output, 0x00, sizeof( output) );
597597

598598
res = mbedtls_rsa_rsaes_pkcs1_v15_encrypt( &ctx,
599599
&rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE,
@@ -627,7 +627,7 @@ void rsa_pkcs1_verify_raw( data_t * hash_result,
627627
char * input_N, int radix_E, char * input_E,
628628
data_t * result_str, int correct )
629629
{
630-
unsigned char output[1000];
630+
unsigned char output[256];
631631
mbedtls_rsa_context ctx;
632632

633633
mbedtls_mpi N, E;
@@ -688,7 +688,7 @@ void mbedtls_rsa_pkcs1_encrypt( data_t * message_str, int padding_mode,
688688
int radix_E, char * input_E,
689689
data_t * result_hex_str, int result )
690690
{
691-
unsigned char output[1000];
691+
unsigned char output[256];
692692
mbedtls_rsa_context ctx;
693693
rnd_pseudo_info rnd_info;
694694

@@ -698,7 +698,7 @@ void mbedtls_rsa_pkcs1_encrypt( data_t * message_str, int padding_mode,
698698
memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) );
699699

700700
mbedtls_rsa_init( &ctx, padding_mode, 0 );
701-
memset( output, 0x00, 1000 );
701+
memset( output, 0x00, sizeof( output ) );
702702

703703
TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
704704
TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
@@ -729,14 +729,14 @@ void rsa_pkcs1_encrypt_bad_rng( data_t * message_str, int padding_mode,
729729
int radix_E, char * input_E,
730730
data_t * result_hex_str, int result )
731731
{
732-
unsigned char output[1000];
732+
unsigned char output[256];
733733
mbedtls_rsa_context ctx;
734734

735735
mbedtls_mpi N, E;
736736

737737
mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E );
738738
mbedtls_rsa_init( &ctx, padding_mode, 0 );
739-
memset( output, 0x00, 1000 );
739+
memset( output, 0x00, sizeof( output ) );
740740

741741
TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
742742
TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
@@ -769,7 +769,7 @@ void mbedtls_rsa_pkcs1_decrypt( data_t * message_str, int padding_mode,
769769
int max_output, data_t * result_hex_str,
770770
int result )
771771
{
772-
unsigned char output[1000];
772+
unsigned char output[32];
773773
mbedtls_rsa_context ctx;
774774
size_t output_len;
775775
rnd_pseudo_info rnd_info;
@@ -780,7 +780,7 @@ void mbedtls_rsa_pkcs1_decrypt( data_t * message_str, int padding_mode,
780780

781781
mbedtls_rsa_init( &ctx, padding_mode, 0 );
782782

783-
memset( output, 0x00, 1000 );
783+
memset( output, 0x00, sizeof( output ) );
784784
memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) );
785785

786786

@@ -815,15 +815,15 @@ void mbedtls_rsa_public( data_t * message_str, int mod, int radix_N,
815815
char * input_N, int radix_E, char * input_E,
816816
data_t * result_hex_str, int result )
817817
{
818-
unsigned char output[1000];
818+
unsigned char output[256];
819819
mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */
820820

821821
mbedtls_mpi N, E;
822822

823823
mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E );
824824
mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, 0 );
825825
mbedtls_rsa_init( &ctx2, MBEDTLS_RSA_PKCS_V15, 0 );
826-
memset( output, 0x00, 1000 );
826+
memset( output, 0x00, sizeof( output ) );
827827

828828
TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 );
829829
TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 );
@@ -847,7 +847,7 @@ void mbedtls_rsa_public( data_t * message_str, int mod, int radix_N,
847847

848848
TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx2 ) == 0 );
849849

850-
memset( output, 0x00, 1000 );
850+
memset( output, 0x00, sizeof( output ) );
851851
TEST_ASSERT( mbedtls_rsa_public( &ctx2, message_str->x, output ) == result );
852852
if( result == 0 )
853853
{
@@ -869,7 +869,7 @@ void mbedtls_rsa_private( data_t * message_str, int mod, int radix_P,
869869
char * input_E, data_t * result_hex_str,
870870
int result )
871871
{
872-
unsigned char output[1000];
872+
unsigned char output[256];
873873
mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */
874874
mbedtls_mpi N, P, Q, E;
875875
rnd_pseudo_info rnd_info;
@@ -896,7 +896,7 @@ void mbedtls_rsa_private( data_t * message_str, int mod, int radix_P,
896896
/* repeat three times to test updating of blinding values */
897897
for( i = 0; i < 3; i++ )
898898
{
899-
memset( output, 0x00, 1000 );
899+
memset( output, 0x00, sizeof( output ) );
900900
TEST_ASSERT( mbedtls_rsa_private( &ctx, rnd_pseudo_rand, &rnd_info,
901901
message_str->x, output ) == result );
902902
if( result == 0 )
@@ -913,7 +913,7 @@ void mbedtls_rsa_private( data_t * message_str, int mod, int radix_P,
913913

914914
TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx2 ) == 0 );
915915

916-
memset( output, 0x00, 1000 );
916+
memset( output, 0x00, sizeof( output ) );
917917
TEST_ASSERT( mbedtls_rsa_private( &ctx2, rnd_pseudo_rand, &rnd_info,
918918
message_str->x, output ) == result );
919919
if( result == 0 )
@@ -1577,11 +1577,11 @@ void mbedtls_rsa_export_raw( data_t *input_N, data_t *input_P,
15771577
int successive )
15781578
{
15791579
/* Exported buffers */
1580-
unsigned char bufNe[1000];
1581-
unsigned char bufPe[1000];
1582-
unsigned char bufQe[1000];
1583-
unsigned char bufDe[1000];
1584-
unsigned char bufEe[1000];
1580+
unsigned char bufNe[256];
1581+
unsigned char bufPe[128];
1582+
unsigned char bufQe[128];
1583+
unsigned char bufDe[256];
1584+
unsigned char bufEe[1];
15851585

15861586
mbedtls_rsa_context ctx;
15871587

0 commit comments

Comments
 (0)