mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-12-23 05:45:27 +00:00
Merge remote-tracking branch 'upstream-restricted/mbedtls-2.7-proposed' into mbedtls-2.7-restricted
This commit is contained in:
commit
ad72522fad
|
@ -35,6 +35,9 @@ Bugfix
|
|||
* Enable Suite B with subset of ECP curves. Make sure the code compiles even
|
||||
if some curves are not defined. Fixes #1591 reported by dbedev.
|
||||
* Fix misuse of signed arithmetic in the HAVEGE module. #2598
|
||||
* Update test certificates that were about to expire. Reported by
|
||||
Bernhard M. Wiedemann in #2357.
|
||||
* Make NV seed test support MBEDTLS_ENTROPY_FORCE_SHA256.
|
||||
|
||||
Changes
|
||||
* Make `make clean` clean all programs always. Fixes #1862.
|
||||
|
|
|
@ -211,14 +211,13 @@ filter_ciphersuites()
|
|||
G_CIPHERS=$( filter "$G_CIPHERS" )
|
||||
fi
|
||||
|
||||
# OpenSSL 1.0.1h doesn't support DTLS 1.2
|
||||
if [ `minor_ver "$MODE"` -ge 3 ] && is_dtls "$MODE"; then
|
||||
# OpenSSL <1.0.2 doesn't support DTLS 1.2. Check what OpenSSL
|
||||
# supports from the s_server help. (The s_client help isn't
|
||||
# accurate as of 1.0.2g: it supports DTLS 1.2 but doesn't list it.
|
||||
# But the s_server help seems to be accurate.)
|
||||
if ! $OPENSSL_CMD s_server -help 2>&1 | grep -q "^ *-$MODE "; then
|
||||
M_CIPHERS=""
|
||||
O_CIPHERS=""
|
||||
case "$PEER" in
|
||||
[Oo]pen*)
|
||||
M_CIPHERS=""
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# For GnuTLS client -> mbed TLS server,
|
||||
|
|
|
@ -852,6 +852,26 @@ component_test_platform_calloc_macro () {
|
|||
component_test_make_shared () {
|
||||
msg "build/test: make shared" # ~ 40s
|
||||
make SHARED=1 all check
|
||||
ldd programs/util/strerror | grep libmbedcrypto
|
||||
}
|
||||
|
||||
component_test_cmake_shared () {
|
||||
msg "build/test: cmake shared" # ~ 2min
|
||||
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
|
||||
make
|
||||
ldd programs/util/strerror | grep libmbedcrypto
|
||||
make test
|
||||
}
|
||||
|
||||
component_build_mbedtls_config_file () {
|
||||
msg "build: make with MBEDTLS_CONFIG_FILE" # ~40s
|
||||
# Use the full config so as to catch a maximum of places where
|
||||
# the check of MBEDTLS_CONFIG_FILE might be missing.
|
||||
scripts/config.pl full
|
||||
sed 's!"check_config.h"!"mbedtls/check_config.h"!' <"$CONFIG_H" >full_config.h
|
||||
echo '#error "MBEDTLS_CONFIG_FILE is not working"' >"$CONFIG_H"
|
||||
make CFLAGS="-I '$PWD' -DMBEDTLS_CONFIG_FILE='\"full_config.h\"'"
|
||||
rm -f full_config.h
|
||||
}
|
||||
|
||||
component_test_m32_o0 () {
|
||||
|
|
|
@ -300,11 +300,24 @@ void entropy_nv_seed_std_io()
|
|||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_PLATFORM_NV_SEED_ALT:MBEDTLS_ENTROPY_SHA512_ACCUMULATOR */
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_MD_C:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_PLATFORM_NV_SEED_ALT */
|
||||
void entropy_nv_seed( char *read_seed_str )
|
||||
{
|
||||
mbedtls_sha512_context accumulator;
|
||||
#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR)
|
||||
const mbedtls_md_info_t *md_info =
|
||||
mbedtls_md_info_from_type( MBEDTLS_MD_SHA512 );
|
||||
#elif defined(MBEDTLS_ENTROPY_SHA256_ACCUMULATOR)
|
||||
const mbedtls_md_info_t *md_info =
|
||||
mbedtls_md_info_from_type( MBEDTLS_MD_SHA256 );
|
||||
#else
|
||||
#error "Unsupported entropy accumulator"
|
||||
#endif
|
||||
mbedtls_md_context_t accumulator;
|
||||
mbedtls_entropy_context ctx;
|
||||
int (*original_mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len ) =
|
||||
mbedtls_nv_seed_read;
|
||||
int (*original_mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len ) =
|
||||
mbedtls_nv_seed_write;
|
||||
|
||||
unsigned char header[2];
|
||||
unsigned char entropy[MBEDTLS_ENTROPY_BLOCK_SIZE];
|
||||
|
@ -316,18 +329,14 @@ void entropy_nv_seed( char *read_seed_str )
|
|||
|
||||
memset( entropy, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
memset( buf, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
memset( buffer_seed, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
memset( empty, 0, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
memset( check_seed, 2, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
memset( check_entropy, 3, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
|
||||
// Set the initial NV seed to read
|
||||
unhexify( read_seed, read_seed_str );
|
||||
memcpy( buffer_seed, read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
|
||||
// Make sure we read/write NV seed from our buffers
|
||||
mbedtls_platform_set_nv_seed( buffer_nv_seed_read, buffer_nv_seed_write );
|
||||
|
||||
mbedtls_md_init( &accumulator );
|
||||
mbedtls_entropy_init( &ctx );
|
||||
entropy_clear_sources( &ctx );
|
||||
|
||||
|
@ -335,45 +344,60 @@ void entropy_nv_seed( char *read_seed_str )
|
|||
MBEDTLS_ENTROPY_BLOCK_SIZE,
|
||||
MBEDTLS_ENTROPY_SOURCE_STRONG ) == 0 );
|
||||
|
||||
// Set the initial NV seed to read.
|
||||
// Get exactly MBEDTLS_ENTROPY_BLOCK_SIZE bytes from read_str.
|
||||
TEST_ASSERT( strlen( read_seed ) / 2 >= MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
read_seed_str[MBEDTLS_ENTROPY_BLOCK_SIZE * 2] = '\0';
|
||||
unhexify( read_seed, read_seed_str );
|
||||
memcpy( buffer_seed, read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
|
||||
// Do an entropy run
|
||||
TEST_ASSERT( mbedtls_entropy_func( &ctx, entropy, sizeof( entropy ) ) == 0 );
|
||||
|
||||
// Determine what should have happened with manual entropy internal logic
|
||||
// Only use the SHA-512 version to check
|
||||
|
||||
// Init accumulator
|
||||
header[1] = MBEDTLS_ENTROPY_BLOCK_SIZE;
|
||||
mbedtls_sha512_starts( &accumulator, 0 );
|
||||
TEST_ASSERT( mbedtls_md_setup( &accumulator, md_info, 0 ) == 0 );
|
||||
|
||||
// First run for updating write_seed
|
||||
header[0] = 0;
|
||||
mbedtls_sha512_update( &accumulator, header, 2 );
|
||||
mbedtls_sha512_update( &accumulator, read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
mbedtls_sha512_finish( &accumulator, buf );
|
||||
TEST_ASSERT( mbedtls_md_starts( &accumulator ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator, header, 2 ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator,
|
||||
read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_finish( &accumulator, buf ) == 0 );
|
||||
|
||||
memset( &accumulator, 0, sizeof( mbedtls_sha512_context ) );
|
||||
mbedtls_sha512_starts( &accumulator, 0 );
|
||||
mbedtls_sha512_update( &accumulator, buf, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
TEST_ASSERT( mbedtls_md_starts( &accumulator ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator,
|
||||
buf, MBEDTLS_ENTROPY_BLOCK_SIZE ) == 0 );
|
||||
|
||||
mbedtls_sha512( buf, MBEDTLS_ENTROPY_BLOCK_SIZE, check_seed, 0 );
|
||||
TEST_ASSERT( mbedtls_md( md_info, buf, MBEDTLS_ENTROPY_BLOCK_SIZE,
|
||||
check_seed ) == 0 );
|
||||
|
||||
// Second run for actual entropy (triggers mbedtls_entropy_update_nv_seed)
|
||||
header[0] = MBEDTLS_ENTROPY_SOURCE_MANUAL;
|
||||
mbedtls_sha512_update( &accumulator, header, 2 );
|
||||
mbedtls_sha512_update( &accumulator, empty, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator, header, 2 ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator,
|
||||
empty, MBEDTLS_ENTROPY_BLOCK_SIZE ) == 0 );
|
||||
|
||||
header[0] = 0;
|
||||
mbedtls_sha512_update( &accumulator, header, 2 );
|
||||
mbedtls_sha512_update( &accumulator, check_seed, MBEDTLS_ENTROPY_BLOCK_SIZE );
|
||||
mbedtls_sha512_finish( &accumulator, buf );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator, header, 2 ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_update( &accumulator,
|
||||
check_seed, MBEDTLS_ENTROPY_BLOCK_SIZE ) == 0 );
|
||||
TEST_ASSERT( mbedtls_md_finish( &accumulator, buf ) == 0 );
|
||||
|
||||
mbedtls_sha512( buf, MBEDTLS_ENTROPY_BLOCK_SIZE, check_entropy, 0 );
|
||||
TEST_ASSERT( mbedtls_md( md_info, buf, MBEDTLS_ENTROPY_BLOCK_SIZE,
|
||||
check_entropy ) == 0 );
|
||||
|
||||
// Check result of both NV file and entropy received with the manual calculations
|
||||
TEST_ASSERT( memcmp( check_seed, buffer_seed, MBEDTLS_ENTROPY_BLOCK_SIZE ) == 0 );
|
||||
TEST_ASSERT( memcmp( check_entropy, entropy, MBEDTLS_ENTROPY_BLOCK_SIZE ) == 0 );
|
||||
|
||||
exit:
|
||||
mbedtls_md_free( &accumulator );
|
||||
mbedtls_entropy_free( &ctx );
|
||||
mbedtls_nv_seed_read = original_mbedtls_nv_seed_read;
|
||||
mbedtls_nv_seed_write = original_mbedtls_nv_seed_write;
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
|
|
Loading…
Reference in a new issue