mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-04-26 19:16:28 +00:00
Merge pull request #4621 from gilles-peskine-arm/default-hashes-curves-2.x
Backport 2.x: Curve and hash selection for X.509 and TLS
This commit is contained in:
commit
9a11ac9cc1
3
ChangeLog.d/ecp-window-size.txt
Normal file
3
ChangeLog.d/ecp-window-size.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Changes
|
||||||
|
* Reduce the default value of MBEDTLS_ECP_WINDOW_SIZE. This reduces RAM usage
|
||||||
|
during ECC operations at a negligible performance cost.
|
|
@ -3617,7 +3617,7 @@
|
||||||
|
|
||||||
/* ECP options */
|
/* ECP options */
|
||||||
//#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */
|
//#define MBEDTLS_ECP_MAX_BITS 521 /**< Maximum bit size of groups */
|
||||||
//#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< Maximum window size used */
|
//#define MBEDTLS_ECP_WINDOW_SIZE 4 /**< Maximum window size used */
|
||||||
//#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */
|
//#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */
|
||||||
|
|
||||||
/* Entropy options */
|
/* Entropy options */
|
||||||
|
|
|
@ -258,7 +258,8 @@ mbedtls_ecp_group;
|
||||||
#if !defined(MBEDTLS_ECP_WINDOW_SIZE)
|
#if !defined(MBEDTLS_ECP_WINDOW_SIZE)
|
||||||
/*
|
/*
|
||||||
* Maximum "window" size used for point multiplication.
|
* Maximum "window" size used for point multiplication.
|
||||||
* Default: 6.
|
* Default: a point where higher memory usage yields disminishing performance
|
||||||
|
* returns.
|
||||||
* Minimum value: 2. Maximum value: 7.
|
* Minimum value: 2. Maximum value: 7.
|
||||||
*
|
*
|
||||||
* Result is an array of at most ( 1 << ( MBEDTLS_ECP_WINDOW_SIZE - 1 ) )
|
* Result is an array of at most ( 1 << ( MBEDTLS_ECP_WINDOW_SIZE - 1 ) )
|
||||||
|
@ -275,7 +276,7 @@ mbedtls_ecp_group;
|
||||||
* 224 475 475 453 398 342
|
* 224 475 475 453 398 342
|
||||||
* 192 640 640 633 587 476
|
* 192 640 640 633 587 476
|
||||||
*/
|
*/
|
||||||
#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< The maximum window size used. */
|
#define MBEDTLS_ECP_WINDOW_SIZE 4 /**< The maximum window size used. */
|
||||||
#endif /* MBEDTLS_ECP_WINDOW_SIZE */
|
#endif /* MBEDTLS_ECP_WINDOW_SIZE */
|
||||||
|
|
||||||
#if !defined(MBEDTLS_ECP_FIXED_POINT_OPTIM)
|
#if !defined(MBEDTLS_ECP_FIXED_POINT_OPTIM)
|
||||||
|
@ -466,8 +467,7 @@ mbedtls_ecp_curve_type mbedtls_ecp_get_type( const mbedtls_ecp_group *grp );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief This function retrieves the information defined in
|
* \brief This function retrieves the information defined in
|
||||||
* mbedtls_ecp_curve_info() for all supported curves in order
|
* mbedtls_ecp_curve_info() for all supported curves.
|
||||||
* of preference.
|
|
||||||
*
|
*
|
||||||
* \note This function returns information about all curves
|
* \note This function returns information about all curves
|
||||||
* supported by the library. Some curves may not be
|
* supported by the library. Some curves may not be
|
||||||
|
|
|
@ -2987,7 +2987,9 @@ void mbedtls_ssl_conf_dhm_min_bitlen( mbedtls_ssl_config *conf,
|
||||||
#if defined(MBEDTLS_ECP_C)
|
#if defined(MBEDTLS_ECP_C)
|
||||||
/**
|
/**
|
||||||
* \brief Set the allowed curves in order of preference.
|
* \brief Set the allowed curves in order of preference.
|
||||||
* (Default: all defined curves.)
|
* (Default: all defined curves in order of decreasing size,
|
||||||
|
* except that Montgomery curves come last. This order
|
||||||
|
* is likely to change in a future version.)
|
||||||
*
|
*
|
||||||
* On server: this only affects selection of the ECDHE curve;
|
* On server: this only affects selection of the ECDHE curve;
|
||||||
* the curves used for ECDH and ECDSA are determined by the
|
* the curves used for ECDH and ECDSA are determined by the
|
||||||
|
@ -3019,7 +3021,9 @@ void mbedtls_ssl_conf_curves( mbedtls_ssl_config *conf,
|
||||||
#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED)
|
#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED)
|
||||||
/**
|
/**
|
||||||
* \brief Set the allowed hashes for signatures during the handshake.
|
* \brief Set the allowed hashes for signatures during the handshake.
|
||||||
* (Default: all available hashes except MD5.)
|
* (Default: all SHA-2 hashes, largest first. Also SHA-1 if
|
||||||
|
* the compile-time option
|
||||||
|
* `MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE` is enabled.)
|
||||||
*
|
*
|
||||||
* \note This only affects which hashes are offered and can be used
|
* \note This only affects which hashes are offered and can be used
|
||||||
* for signatures during the handshake. Hashes for message
|
* for signatures during the handshake. Hashes for message
|
||||||
|
|
|
@ -263,12 +263,21 @@ typedef void mbedtls_x509_crt_restart_ctx;
|
||||||
/**
|
/**
|
||||||
* Default security profile. Should provide a good balance between security
|
* Default security profile. Should provide a good balance between security
|
||||||
* and compatibility with current deployments.
|
* and compatibility with current deployments.
|
||||||
|
*
|
||||||
|
* This profile permits:
|
||||||
|
* - SHA2 hashes.
|
||||||
|
* - All supported elliptic curves.
|
||||||
|
* - RSA with 2048 bits and above.
|
||||||
|
*
|
||||||
|
* New minor versions of Mbed TLS may extend this profile, for example if
|
||||||
|
* new curves are added to the library. New minor versions of Mbed TLS will
|
||||||
|
* not reduce this profile unless serious security concerns require it.
|
||||||
*/
|
*/
|
||||||
extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default;
|
extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Expected next default profile. Recommended for new deployments.
|
* Expected next default profile. Recommended for new deployments.
|
||||||
* Currently targets a 128-bit security level, except for RSA-2048.
|
* Currently targets a 128-bit security level, except for allowing RSA-2048.
|
||||||
*/
|
*/
|
||||||
extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next;
|
extern const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next;
|
||||||
|
|
||||||
|
|
|
@ -91,9 +91,8 @@ typedef struct {
|
||||||
*/
|
*/
|
||||||
#define X509_MAX_VERIFY_CHAIN_SIZE ( MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2 )
|
#define X509_MAX_VERIFY_CHAIN_SIZE ( MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2 )
|
||||||
|
|
||||||
/*
|
/* Default profile. Do not remove items unless there are serious security
|
||||||
* Default profile
|
* concerns. */
|
||||||
*/
|
|
||||||
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default =
|
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default =
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES)
|
#if defined(MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES)
|
||||||
|
|
Loading…
Reference in a new issue