mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-07-29 11:41:15 +03:00
Merge branch 'etm' into dtls
* etm: Fix warning in reduced config Update Changelog for EtM Keep EtM state across renegotiations Adjust minimum length for EtM Don't send back EtM extension if not using CBC Fix for the RFC erratum Implement EtM Preparation for EtM Implement initial negotiation of EtM Conflicts: include/polarssl/check_config.h
This commit is contained in:
@ -283,6 +283,13 @@
|
||||
#error "POLARSSL_SSL_DTLS_BADMAC_LIMIT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_ENCRYPT_THEN_MAC) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1_1) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1_2)
|
||||
#error "POLARSSL_SSL_ENCRYPT_THEN_MAC defined, but not all prerequsites"
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1_1) && \
|
||||
|
@ -811,6 +811,24 @@
|
||||
*/
|
||||
//#define POLARSSL_SSL_DEBUG_ALL
|
||||
|
||||
/** \def POLARSSL_SSL_ENCRYPT_THEN_MAC
|
||||
*
|
||||
* Enable support for Encrypt-then-MAC, RFC 7366.
|
||||
*
|
||||
* This allows peers that both support it to use a more robust protection for
|
||||
* ciphersuites using CBC, providing deep resistance against timing attacks
|
||||
* on the padding or underlying cipher.
|
||||
*
|
||||
* This only affects CBC ciphersuites, and is useless if none is defined.
|
||||
*
|
||||
* Requires: POLARSSL_SSL_PROTO_TLS1 or
|
||||
* POLARSSL_SSL_PROTO_TLS1_1 or
|
||||
* POLARSSL_SSL_PROTO_TLS1_2
|
||||
*
|
||||
* Comment this macro to disable support for Encrypt-then-MAC
|
||||
*/
|
||||
#define POLARSSL_SSL_ENCRYPT_THEN_MAC
|
||||
|
||||
/** \def POLARSSL_SSL_EXTENDED_MASTER_SECRET
|
||||
*
|
||||
* Enable support for Extended Master Secret, aka Session Hash
|
||||
|
@ -221,6 +221,9 @@
|
||||
#define SSL_EXTENDED_MS_DISABLED 0
|
||||
#define SSL_EXTENDED_MS_ENABLED 1
|
||||
|
||||
#define SSL_ETM_DISABLED 0
|
||||
#define SSL_ETM_ENABLED 1
|
||||
|
||||
#define SSL_COMPRESS_NULL 0
|
||||
#define SSL_COMPRESS_DEFLATE 1
|
||||
|
||||
@ -442,6 +445,7 @@
|
||||
|
||||
#define TLS_EXT_ALPN 16
|
||||
|
||||
#define TLS_EXT_ENCRYPT_THEN_MAC 22 /* 0x16 */
|
||||
#define TLS_EXT_EXTENDED_MASTER_SECRET 0x0017 /* 23 */
|
||||
|
||||
#define TLS_EXT_SESSION_TICKET 35
|
||||
@ -585,6 +589,10 @@ struct _ssl_session
|
||||
#if defined(POLARSSL_SSL_TRUNCATED_HMAC)
|
||||
int trunc_hmac; /*!< flag for truncated hmac activation */
|
||||
#endif /* POLARSSL_SSL_TRUNCATED_HMAC */
|
||||
|
||||
#if defined(POLARSSL_SSL_ENCRYPT_THEN_MAC)
|
||||
int encrypt_then_mac; /*!< flag for EtM activation */
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
@ -795,6 +803,9 @@ struct _ssl_context
|
||||
#if defined(POLARSSL_SSL_FALLBACK_SCSV) && defined(POLARSSL_SSL_CLI_C)
|
||||
char fallback; /*!< flag for fallback connections */
|
||||
#endif
|
||||
#if defined(POLARSSL_SSL_ENCRYPT_THEN_MAC)
|
||||
char encrypt_then_mac; /*!< flag for encrypt-then-mac */
|
||||
#endif
|
||||
#if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET)
|
||||
char extended_ms; /*!< flag for extended master secret */
|
||||
#endif
|
||||
@ -1754,6 +1765,21 @@ int ssl_set_min_version( ssl_context *ssl, int major, int minor );
|
||||
void ssl_set_fallback( ssl_context *ssl, char fallback );
|
||||
#endif /* POLARSSL_SSL_FALLBACK_SCSV && POLARSSL_SSL_CLI_C */
|
||||
|
||||
#if defined(POLARSSL_SSL_ENCRYPT_THEN_MAC)
|
||||
/**
|
||||
* \brief Enable or disable Encrypt-then-MAC
|
||||
* (Default: SSL_ETM_ENABLED)
|
||||
*
|
||||
* \note This should always be enabled, it is a security
|
||||
* improvement, and should not cause any interoperability
|
||||
* issue (used only if the peer supports it too).
|
||||
*
|
||||
* \param ssl SSL context
|
||||
* \param etm SSL_ETM_ENABLED or SSL_ETM_DISABLED
|
||||
*/
|
||||
void ssl_set_encrypt_then_mac( ssl_context *ssl, char etm );
|
||||
#endif /* POLARSSL_SSL_ENCRYPT_THEN_MAC */
|
||||
|
||||
#if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET)
|
||||
/**
|
||||
* \brief Enable or disable Extended Master Secret negotiation.
|
||||
|
Reference in New Issue
Block a user