mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-26 00:15:37 +01:00
Add entropy safety switch.
Add a switch that turns entropy collecting off entirely, but enables mbed TLS to run in an entirely unsafe mode. Enables to test mbed TLS on platforms that don't have their entropy sources integrated yet.
This commit is contained in:
parent
184eea6aa0
commit
53de78444c
@ -130,6 +130,17 @@
|
|||||||
#error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites"
|
#error "MBEDTLS_ENTROPY_FORCE_SHA256 defined, but not all prerequisites"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_WO_ENTROPY)
|
||||||
|
#warning "MBEDTLS_TEST_WO_ENTROPY defined, this build provides no security!"
|
||||||
|
#if !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
|
||||||
|
#error "MBEDTLS_TEST_WO_ENTROPY defined, but not all prerequisites"
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_ENTROPY_NV_SEED) || defined(MBEDTLS_ENTROPY_HARDWARE_ALT) || \
|
||||||
|
defined(MBEDTLS_HAVEGE_C)
|
||||||
|
#error "MBEDTLS_TEST_WO_ENTROPY defined, but entropy sources too"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_GCM_C) && ( \
|
#if defined(MBEDTLS_GCM_C) && ( \
|
||||||
!defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) )
|
!defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) )
|
||||||
#error "MBEDTLS_GCM_C defined, but not all prerequisites"
|
#error "MBEDTLS_GCM_C defined, but not all prerequisites"
|
||||||
|
@ -278,6 +278,29 @@
|
|||||||
//#define MBEDTLS_AES_ENCRYPT_ALT
|
//#define MBEDTLS_AES_ENCRYPT_ALT
|
||||||
//#define MBEDTLS_AES_DECRYPT_ALT
|
//#define MBEDTLS_AES_DECRYPT_ALT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \def MBEDTLS_TEST_WO_ENTROPY
|
||||||
|
*
|
||||||
|
* Enable testing mbed TLS without access to any entropy. This enables testing
|
||||||
|
* the library before the platforms entropy sources are integrated (, see for
|
||||||
|
* example the MBEDTLS_ENTROPY_HARDWARE_ALT or the MBEDTLS_ENTROPY_NV_SEED
|
||||||
|
* switch).
|
||||||
|
*
|
||||||
|
* WARNING! This switch is extremely DANGEROUS, don't use it in production code
|
||||||
|
* under any circumstances. This switch nullifies any security provided by the
|
||||||
|
* library.
|
||||||
|
*/
|
||||||
|
//#define MBEDTLS_TEST_WO_ENTROPY
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \def MBEDTLS_ENTROPY_NV_SEED
|
||||||
|
*
|
||||||
|
* Strong software entropy source. It is not yet implemented,
|
||||||
|
* adding it because it is mutually exclusive with MBEDTLS_TEST_WO_ENTROPY.
|
||||||
|
*/
|
||||||
|
//#define MBEDTLS_ENTROPY_NV_SEED
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \def MBEDTLS_ENTROPY_HARDWARE_ALT
|
* \def MBEDTLS_ENTROPY_HARDWARE_ALT
|
||||||
*
|
*
|
||||||
|
@ -43,6 +43,14 @@ extern "C" {
|
|||||||
#define MBEDTLS_ENTROPY_MIN_HARDCLOCK 4 /**< Minimum for mbedtls_timing_hardclock() */
|
#define MBEDTLS_ENTROPY_MIN_HARDCLOCK 4 /**< Minimum for mbedtls_timing_hardclock() */
|
||||||
#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Minimum for the hardware source */
|
#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Minimum for the hardware source */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Entropy poll callback that provides 0 entropy.
|
||||||
|
*/
|
||||||
|
#if defined(MBEDTLS_TEST_WO_ENTROPY)
|
||||||
|
int mbedtls_zero_entropy_poll( void *data,
|
||||||
|
unsigned char *output, size_t len, size_t *olen );
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
||||||
/**
|
/**
|
||||||
* \brief Platform-specific entropy poll callback
|
* \brief Platform-specific entropy poll callback
|
||||||
|
@ -73,6 +73,11 @@ void mbedtls_entropy_init( mbedtls_entropy_context *ctx )
|
|||||||
mbedtls_havege_init( &ctx->havege_data );
|
mbedtls_havege_init( &ctx->havege_data );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_WO_ENTROPY)
|
||||||
|
mbedtls_entropy_add_source( ctx, mbedtls_zero_entropy_poll, NULL,
|
||||||
|
1, MBEDTLS_ENTROPY_SOURCE_STRONG );
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
|
#if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
|
||||||
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
||||||
mbedtls_entropy_add_source( ctx, mbedtls_platform_entropy_poll, NULL,
|
mbedtls_entropy_add_source( ctx, mbedtls_platform_entropy_poll, NULL,
|
||||||
|
@ -188,6 +188,22 @@ int mbedtls_platform_entropy_poll( void *data,
|
|||||||
#endif /* _WIN32 && !EFIX64 && !EFI32 */
|
#endif /* _WIN32 && !EFIX64 && !EFI32 */
|
||||||
#endif /* !MBEDTLS_NO_PLATFORM_ENTROPY */
|
#endif /* !MBEDTLS_NO_PLATFORM_ENTROPY */
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_TEST_WO_ENTROPY)
|
||||||
|
int mbedtls_zero_entropy_poll( void *data,
|
||||||
|
unsigned char *output, size_t len, size_t *olen )
|
||||||
|
{
|
||||||
|
((void) data);
|
||||||
|
*olen = 0;
|
||||||
|
|
||||||
|
if( len < sizeof(unsigned char) )
|
||||||
|
return( 0 );
|
||||||
|
|
||||||
|
*olen = sizeof(unsigned char);
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_TIMING_C)
|
#if defined(MBEDTLS_TIMING_C)
|
||||||
int mbedtls_hardclock_poll( void *data,
|
int mbedtls_hardclock_poll( void *data,
|
||||||
unsigned char *output, size_t len, size_t *olen )
|
unsigned char *output, size_t len, size_t *olen )
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#
|
#
|
||||||
# Things that shouldn't be enabled with "full".
|
# Things that shouldn't be enabled with "full".
|
||||||
#
|
#
|
||||||
|
# MBEDTLS_TEST_WO_ENTROPY
|
||||||
# MBEDTLS_DEPRECATED_REMOVED
|
# MBEDTLS_DEPRECATED_REMOVED
|
||||||
# MBEDTLS_HAVE_SSE2
|
# MBEDTLS_HAVE_SSE2
|
||||||
# MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
|
# MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
|
||||||
@ -69,6 +70,7 @@ Options
|
|||||||
EOU
|
EOU
|
||||||
|
|
||||||
my @excluded = qw(
|
my @excluded = qw(
|
||||||
|
MBEDTLS_TEST_WO_ENTROPY
|
||||||
MBEDTLS_DEPRECATED_REMOVED
|
MBEDTLS_DEPRECATED_REMOVED
|
||||||
MBEDTLS_HAVE_SSE2
|
MBEDTLS_HAVE_SSE2
|
||||||
MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
|
MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
|
||||||
|
Loading…
Reference in New Issue
Block a user