Merge branch 'pr_1082' into mbedtls-2.1

This commit is contained in:
Gilles Peskine 2017-11-28 18:33:50 +01:00
commit 25aa833ac3
7 changed files with 43 additions and 12 deletions

View file

@ -40,6 +40,7 @@ Bugfix
RSA implementations. Raised by J.B. in the Mbed TLS forum. Fixes #1011. RSA implementations. Raised by J.B. in the Mbed TLS forum. Fixes #1011.
* Don't print X.509 version tag for v1 CRT's, and omit extensions for * Don't print X.509 version tag for v1 CRT's, and omit extensions for
non-v3 CRT's. non-v3 CRT's.
* Fix bugs in RSA test suite under MBEDTLS_NO_PLATFORM_ENTROPY. #1023 #1024
Changes Changes
* Extend cert_write example program by options to set the CRT version * Extend cert_write example program by options to set the CRT version

View file

@ -60,6 +60,9 @@ void mbedtls_entropy_init( mbedtls_entropy_context *ctx )
{ {
memset( ctx, 0, sizeof(mbedtls_entropy_context) ); memset( ctx, 0, sizeof(mbedtls_entropy_context) );
/* Reminder: Update ENTROPY_HAVE_STRONG in the test files
* when adding more strong entropy sources here. */
#if defined(MBEDTLS_THREADING_C) #if defined(MBEDTLS_THREADING_C)
mbedtls_mutex_init( &ctx->mutex ); mbedtls_mutex_init( &ctx->mutex );
#endif #endif

View file

@ -194,7 +194,7 @@ END
# and make check code # and make check code
my $dep_check_code; my $dep_check_code;
my @res = $test_data =~ /^depends_on:([\w:]+)/msg; my @res = $test_data =~ /^depends_on:([!:\w]+)/msg;
my %case_deps; my %case_deps;
foreach my $deps (@res) foreach my $deps (@res)
{ {
@ -204,6 +204,22 @@ foreach my $deps (@res)
} }
} }
while( my ($key, $value) = each(%case_deps) ) while( my ($key, $value) = each(%case_deps) )
{
if( substr($key, 0, 1) eq "!" )
{
my $key = substr($key, 1);
$dep_check_code .= << "END";
if( strcmp( str, "!$key" ) == 0 )
{
#if !defined($key)
return( 0 );
#else
return( 1 );
#endif
}
END
}
else
{ {
$dep_check_code .= << "END"; $dep_check_code .= << "END";
if( strcmp( str, "$key" ) == 0 ) if( strcmp( str, "$key" ) == 0 )
@ -216,6 +232,7 @@ while( my ($key, $value) = each(%case_deps) )
} }
END END
} }
}
# Make mapping code # Make mapping code
while( my ($key, $value) = each(%mapping_values) ) while( my ($key, $value) = each(%mapping_values) )

View file

@ -55,6 +55,17 @@ typedef UINT32 uint32_t;
} }
#endif #endif
/* Helper flags for complex dependencies */
/* Indicates whether we expect mbedtls_entropy_init
* to initialize some strong entropy source. */
#if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) && \
( !defined(MBEDTLS_NO_PLATFORM_ENTROPY) || \
defined(MBEDTLS_HAVEGE_C) || \
defined(MBEDTLS_ENTROPY_HARDWARE_ALT) )
#define ENTROPY_HAVE_STRONG
#endif
static int unhexify( unsigned char *obuf, const char *ibuf ) static int unhexify( unsigned char *obuf, const char *ibuf )
{ {
unsigned char c, c2; unsigned char c, c2;

View file

@ -31,10 +31,10 @@ entropy_threshold:16:2:8
Entropy threshold #2 Entropy threshold #2
entropy_threshold:32:1:32 entropy_threshold:32:1:32
Entropy thershold #3 Entropy threshold #3
entropy_threshold:16:0:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED entropy_threshold:16:0:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
Entropy thershold #4 Entropy threshold #4
entropy_threshold:1024:1:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED entropy_threshold:1024:1:MBEDTLS_ERR_ENTROPY_SOURCE_FAILED
Entropy self test Entropy self test

View file

@ -40,7 +40,7 @@ static int entropy_dummy_source( void *data, unsigned char *output,
* END_DEPENDENCIES * END_DEPENDENCIES
*/ */
/* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:ENTROPY_HAVE_STRONG */
void entropy_seed_file( char *path, int ret ) void entropy_seed_file( char *path, int ret )
{ {
mbedtls_entropy_context ctx; mbedtls_entropy_context ctx;
@ -80,7 +80,7 @@ exit:
} }
/* END_CASE */ /* END_CASE */
/* BEGIN_CASE */ /* BEGIN_CASE depends_on:ENTROPY_HAVE_STRONG */
void entropy_func_len( int len, int ret ) void entropy_func_len( int len, int ret )
{ {
mbedtls_entropy_context ctx; mbedtls_entropy_context ctx;
@ -141,7 +141,7 @@ exit:
} }
/* END_CASE */ /* END_CASE */
/* BEGIN_CASE */ /* BEGIN_CASE depends_on:ENTROPY_HAVE_STRONG */
void entropy_threshold( int threshold, int chunk_size, int result ) void entropy_threshold( int threshold, int chunk_size, int result )
{ {
mbedtls_entropy_context ctx; mbedtls_entropy_context ctx;
@ -172,7 +172,7 @@ exit:
} }
/* END_CASE */ /* END_CASE */
/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST:ENTROPY_HAVE_STRONG */
void entropy_selftest( ) void entropy_selftest( )
{ {
TEST_ASSERT( mbedtls_entropy_self_test( 0 ) == 0 ); TEST_ASSERT( mbedtls_entropy_self_test( 0 ) == 0 );

View file

@ -658,7 +658,7 @@ exit:
} }
/* END_CASE */ /* END_CASE */
/* BEGIN_CASE depends_on:MBEDTLS_CTR_DRBG_C:MBEDTLS_ENTROPY_C */ /* BEGIN_CASE depends_on:MBEDTLS_CTR_DRBG_C:MBEDTLS_ENTROPY_C:ENTROPY_HAVE_STRONG */
void mbedtls_rsa_gen_key( int nrbits, int exponent, int result) void mbedtls_rsa_gen_key( int nrbits, int exponent, int result)
{ {
mbedtls_rsa_context ctx; mbedtls_rsa_context ctx;
@ -667,13 +667,12 @@ void mbedtls_rsa_gen_key( int nrbits, int exponent, int result)
const char *pers = "test_suite_rsa"; const char *pers = "test_suite_rsa";
mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_ctr_drbg_init( &ctr_drbg );
mbedtls_entropy_init( &entropy ); mbedtls_entropy_init( &entropy );
mbedtls_rsa_init ( &ctx, 0, 0 );
TEST_ASSERT( mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, TEST_ASSERT( mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy,
(const unsigned char *) pers, strlen( pers ) ) == 0 ); (const unsigned char *) pers, strlen( pers ) ) == 0 );
mbedtls_rsa_init( &ctx, 0, 0 );
TEST_ASSERT( mbedtls_rsa_gen_key( &ctx, mbedtls_ctr_drbg_random, &ctr_drbg, nrbits, exponent ) == result ); TEST_ASSERT( mbedtls_rsa_gen_key( &ctx, mbedtls_ctr_drbg_random, &ctr_drbg, nrbits, exponent ) == result );
if( result == 0 ) if( result == 0 )
{ {