mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-08-07 06:42:56 +03:00
Fix boolean options in the wrong section
Boolean options that modify the behavior of a module are supposed to be in the "feature support" section, not in the "configuration options" support: that section is documented to contain commented-out definitions with a value, for which the comment contains the default version. In particular, merely uncommenting a definition in the "configuration options" section is not supposed to change anything. Move the offending boolean options to the proper section. This causes those options to be enabled by `config.py full` unless explicitly excluded. For the moved options: * Everest is already explicitly excluded. * The ALT options need to link against a custom function, so exclude them. * `MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE` is ok for testing, and is currently never tested in `all.sh`. With this commit, we will now test the library with it enabled in configurations based on `full`. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
@@ -265,6 +265,45 @@
|
|||||||
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
||||||
//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
|
//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Uncomment the macro to let Mbed TLS use your alternate implementation of
|
||||||
|
* mbedtls_platform_gmtime_r(). This replaces the default implementation in
|
||||||
|
* platform_util.c.
|
||||||
|
*
|
||||||
|
* gmtime() is not a thread-safe function as defined in the C standard. The
|
||||||
|
* library will try to use safer implementations of this function, such as
|
||||||
|
* gmtime_r() when available. However, if Mbed TLS cannot identify the target
|
||||||
|
* system, the implementation of mbedtls_platform_gmtime_r() will default to
|
||||||
|
* using the standard gmtime(). In this case, calls from the library to
|
||||||
|
* gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex
|
||||||
|
* if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the
|
||||||
|
* library are also guarded with this mutex to avoid race conditions. However,
|
||||||
|
* if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will
|
||||||
|
* unconditionally use the implementation for mbedtls_platform_gmtime_r()
|
||||||
|
* supplied at compile time.
|
||||||
|
*/
|
||||||
|
//#define MBEDTLS_PLATFORM_GMTIME_R_ALT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Uncomment the macro to let mbed TLS use your alternate implementation of
|
||||||
|
* mbedtls_platform_zeroize(). This replaces the default implementation in
|
||||||
|
* platform_util.c.
|
||||||
|
*
|
||||||
|
* mbedtls_platform_zeroize() is a widely used function across the library to
|
||||||
|
* zero a block of memory. The implementation is expected to be secure in the
|
||||||
|
* sense that it has been written to prevent the compiler from removing calls
|
||||||
|
* to mbedtls_platform_zeroize() as part of redundant code elimination
|
||||||
|
* optimizations. However, it is difficult to guarantee that calls to
|
||||||
|
* mbedtls_platform_zeroize() will not be optimized by the compiler as older
|
||||||
|
* versions of the C language standards do not provide a secure implementation
|
||||||
|
* of memset(). Therefore, MBEDTLS_PLATFORM_ZEROIZE_ALT enables users to
|
||||||
|
* configure their own implementation of mbedtls_platform_zeroize(), for
|
||||||
|
* example by using directives specific to their compiler, features from newer
|
||||||
|
* C standards (e.g using memset_s() in C11) or calling a secure memset() from
|
||||||
|
* their system (e.g explicit_bzero() in BSD).
|
||||||
|
*/
|
||||||
|
//#define MBEDTLS_PLATFORM_ZEROIZE_ALT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \def MBEDTLS_DEPRECATED_WARNING
|
* \def MBEDTLS_DEPRECATED_WARNING
|
||||||
*
|
*
|
||||||
@@ -818,6 +857,15 @@
|
|||||||
*/
|
*/
|
||||||
#define MBEDTLS_REMOVE_3DES_CIPHERSUITES
|
#define MBEDTLS_REMOVE_3DES_CIPHERSUITES
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable the verified implementations of ECDH primitives from Project Everest
|
||||||
|
* (currently only Curve25519). This feature changes the layout of ECDH
|
||||||
|
* contexts and therefore is a compatibility break for applications that access
|
||||||
|
* fields of a mbedtls_ecdh_context structure directly. See also
|
||||||
|
* MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h.
|
||||||
|
*/
|
||||||
|
//#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \def MBEDTLS_ECP_DP_SECP192R1_ENABLED
|
* \def MBEDTLS_ECP_DP_SECP192R1_ENABLED
|
||||||
*
|
*
|
||||||
@@ -2117,6 +2165,23 @@
|
|||||||
*/
|
*/
|
||||||
//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
|
//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake
|
||||||
|
* signature and ciphersuite selection. Without this build-time option, SHA-1
|
||||||
|
* support must be activated explicitly through mbedtls_ssl_conf_sig_hashes.
|
||||||
|
* The use of SHA-1 in TLS <= 1.1 and in HMAC-SHA-1 is always allowed by
|
||||||
|
* default. At the time of writing, there is no practical attack on the use
|
||||||
|
* of SHA-1 in handshake signatures, hence this option is turned on by default
|
||||||
|
* to preserve compatibility with existing peers, but the general
|
||||||
|
* warning applies nonetheless:
|
||||||
|
*
|
||||||
|
* \warning SHA-1 is considered a weak message digest and its use constitutes
|
||||||
|
* a security risk. If possible, we recommend avoiding dependencies
|
||||||
|
* on it, and considering stronger message digests instead.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \def MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
|
* \def MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN
|
||||||
*
|
*
|
||||||
@@ -4141,71 +4206,6 @@
|
|||||||
//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
|
//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
|
||||||
//#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */
|
//#define MBEDTLS_X509_MAX_FILE_PATH_LEN 512 /**< Maximum length of a path/filename string in bytes including the null terminator character ('\0'). */
|
||||||
|
|
||||||
/**
|
|
||||||
* Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake
|
|
||||||
* signature and ciphersuite selection. Without this build-time option, SHA-1
|
|
||||||
* support must be activated explicitly through mbedtls_ssl_conf_sig_hashes.
|
|
||||||
* The use of SHA-1 in TLS <= 1.1 and in HMAC-SHA-1 is always allowed by
|
|
||||||
* default. At the time of writing, there is no practical attack on the use
|
|
||||||
* of SHA-1 in handshake signatures, hence this option is turned on by default
|
|
||||||
* to preserve compatibility with existing peers, but the general
|
|
||||||
* warning applies nonetheless:
|
|
||||||
*
|
|
||||||
* \warning SHA-1 is considered a weak message digest and its use constitutes
|
|
||||||
* a security risk. If possible, we recommend avoiding dependencies
|
|
||||||
* on it, and considering stronger message digests instead.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
//#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Uncomment the macro to let mbed TLS use your alternate implementation of
|
|
||||||
* mbedtls_platform_zeroize(). This replaces the default implementation in
|
|
||||||
* platform_util.c.
|
|
||||||
*
|
|
||||||
* mbedtls_platform_zeroize() is a widely used function across the library to
|
|
||||||
* zero a block of memory. The implementation is expected to be secure in the
|
|
||||||
* sense that it has been written to prevent the compiler from removing calls
|
|
||||||
* to mbedtls_platform_zeroize() as part of redundant code elimination
|
|
||||||
* optimizations. However, it is difficult to guarantee that calls to
|
|
||||||
* mbedtls_platform_zeroize() will not be optimized by the compiler as older
|
|
||||||
* versions of the C language standards do not provide a secure implementation
|
|
||||||
* of memset(). Therefore, MBEDTLS_PLATFORM_ZEROIZE_ALT enables users to
|
|
||||||
* configure their own implementation of mbedtls_platform_zeroize(), for
|
|
||||||
* example by using directives specific to their compiler, features from newer
|
|
||||||
* C standards (e.g using memset_s() in C11) or calling a secure memset() from
|
|
||||||
* their system (e.g explicit_bzero() in BSD).
|
|
||||||
*/
|
|
||||||
//#define MBEDTLS_PLATFORM_ZEROIZE_ALT
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Uncomment the macro to let Mbed TLS use your alternate implementation of
|
|
||||||
* mbedtls_platform_gmtime_r(). This replaces the default implementation in
|
|
||||||
* platform_util.c.
|
|
||||||
*
|
|
||||||
* gmtime() is not a thread-safe function as defined in the C standard. The
|
|
||||||
* library will try to use safer implementations of this function, such as
|
|
||||||
* gmtime_r() when available. However, if Mbed TLS cannot identify the target
|
|
||||||
* system, the implementation of mbedtls_platform_gmtime_r() will default to
|
|
||||||
* using the standard gmtime(). In this case, calls from the library to
|
|
||||||
* gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex
|
|
||||||
* if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the
|
|
||||||
* library are also guarded with this mutex to avoid race conditions. However,
|
|
||||||
* if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will
|
|
||||||
* unconditionally use the implementation for mbedtls_platform_gmtime_r()
|
|
||||||
* supplied at compile time.
|
|
||||||
*/
|
|
||||||
//#define MBEDTLS_PLATFORM_GMTIME_R_ALT
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable the verified implementations of ECDH primitives from Project Everest
|
|
||||||
* (currently only Curve25519). This feature changes the layout of ECDH
|
|
||||||
* contexts and therefore is a compatibility break for applications that access
|
|
||||||
* fields of a mbedtls_ecdh_context structure directly. See also
|
|
||||||
* MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h.
|
|
||||||
*/
|
|
||||||
//#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
|
|
||||||
|
|
||||||
/** \} name SECTION: Module configuration options */
|
/** \} name SECTION: Module configuration options */
|
||||||
|
|
||||||
/* Target and application specific configurations
|
/* Target and application specific configurations
|
||||||
|
@@ -225,7 +225,11 @@ def is_seamless_alt(name):
|
|||||||
Exclude alternative implementations of library functions since they require
|
Exclude alternative implementations of library functions since they require
|
||||||
an implementation of the relevant functions and an xxx_alt.h header.
|
an implementation of the relevant functions and an xxx_alt.h header.
|
||||||
"""
|
"""
|
||||||
if name == 'MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT':
|
if name in (
|
||||||
|
'MBEDTLS_PLATFORM_GMTIME_R_ALT',
|
||||||
|
'MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT',
|
||||||
|
'MBEDTLS_PLATFORM_ZEROIZE_ALT',
|
||||||
|
):
|
||||||
# Similar to non-platform xxx_ALT, requires platform_alt.h
|
# Similar to non-platform xxx_ALT, requires platform_alt.h
|
||||||
return False
|
return False
|
||||||
return name.startswith('MBEDTLS_PLATFORM_')
|
return name.startswith('MBEDTLS_PLATFORM_')
|
||||||
|
Reference in New Issue
Block a user