aboutsummaryrefslogtreecommitdiff
path: root/tests/src
diff options
context:
space:
mode:
authorAditya Deshpande <aditya.deshpande@arm.com>2022-11-22 17:58:52 +0000
committerAditya Deshpande <aditya.deshpande@arm.com>2022-11-22 17:58:52 +0000
commit5e3c70e3be4be3a88c4ec3265a60b880b59571fc (patch)
tree3dbdfceaf32d57834385eb31bccc07e63befbbe8 /tests/src
parent8cc1470c18cf37bafa78464191e0fd5f4ebcfc0c (diff)
parent0fc88779ece2a19eba979f03d35fb997d5f17bf7 (diff)
downloadmbedtls-5e3c70e3be4be3a88c4ec3265a60b880b59571fc.zip
mbedtls-5e3c70e3be4be3a88c4ec3265a60b880b59571fc.tar.gz
mbedtls-5e3c70e3be4be3a88c4ec3265a60b880b59571fc.tar.bz2
Merge branch 'development' into driver-wrapper-key-agreement
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/helpers.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/src/helpers.c b/tests/src/helpers.c
index cc23fd7..7c83714 100644
--- a/tests/src/helpers.c
+++ b/tests/src/helpers.c
@@ -89,6 +89,10 @@ void mbedtls_test_set_step( unsigned long step )
mbedtls_test_info.step = step;
}
+#if defined(MBEDTLS_BIGNUM_C)
+unsigned mbedtls_test_case_uses_negative_0 = 0;
+#endif
+
void mbedtls_test_info_reset( void )
{
mbedtls_test_info.result = MBEDTLS_TEST_RESULT_SUCCESS;
@@ -98,6 +102,9 @@ void mbedtls_test_info_reset( void )
mbedtls_test_info.filename = 0;
memset( mbedtls_test_info.line1, 0, sizeof( mbedtls_test_info.line1 ) );
memset( mbedtls_test_info.line2, 0, sizeof( mbedtls_test_info.line2 ) );
+#if defined(MBEDTLS_BIGNUM_C)
+ mbedtls_test_case_uses_negative_0 = 0;
+#endif
}
int mbedtls_test_equal( const char *test, int line_no, const char* filename,
@@ -396,6 +403,15 @@ exit:
int mbedtls_test_read_mpi( mbedtls_mpi *X, const char *s )
{
+ int negative = 0;
+ /* Always set the sign bit to -1 if the input has a minus sign, even for 0.
+ * This creates an invalid representation, which mbedtls_mpi_read_string()
+ * avoids but we want to be able to create that in test data. */
+ if( s[0] == '-' )
+ {
+ ++s;
+ negative = 1;
+ }
/* mbedtls_mpi_read_string() currently retains leading zeros.
* It always allocates at least one limb for the value 0. */
if( s[0] == 0 )
@@ -403,7 +419,15 @@ int mbedtls_test_read_mpi( mbedtls_mpi *X, const char *s )
mbedtls_mpi_free( X );
return( 0 );
}
- else
- return( mbedtls_mpi_read_string( X, 16, s ) );
+ int ret = mbedtls_mpi_read_string( X, 16, s );
+ if( ret != 0 )
+ return( ret );
+ if( negative )
+ {
+ if( mbedtls_mpi_cmp_int( X, 0 ) == 0 )
+ ++mbedtls_test_case_uses_negative_0;
+ X->s = -1;
+ }
+ return( 0 );
}
#endif