mirror of
https://git.suyu.dev/suyu/mbedtls.git
synced 2026-01-04 13:45:05 +01:00
Merge branch 'session-hash' into dtls
* session-hash: Update Changelog for session-hash Make session-hash depend on TLS versions Forbid extended master secret with SSLv3 compat.sh: allow git version of gnutls compat.sh: make options a bit more robust Implement extended master secret Add negotiation of Extended Master Secret Conflicts: include/polarssl/check_config.h programs/ssl/ssl_server2.c
This commit is contained in:
commit
56d985d0a6
11 changed files with 366 additions and 14 deletions
|
|
@ -283,6 +283,13 @@
|
|||
#error "POLARSSL_SSL_DTLS_BADMAC_LIMIT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1_1) && \
|
||||
!defined(POLARSSL_SSL_PROTO_TLS1_2)
|
||||
#error "POLARSSL_SSL_EXTENDED_MASTER_SECRET defined, but not all prerequsites"
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_SESSION_TICKETS) && defined(POLARSSL_SSL_TLS_C) && \
|
||||
( !defined(POLARSSL_AES_C) || !defined(POLARSSL_SHA256_C) || \
|
||||
!defined(POLARSSL_CIPHER_MODE_CBC) )
|
||||
|
|
|
|||
|
|
@ -811,6 +811,24 @@
|
|||
*/
|
||||
//#define POLARSSL_SSL_DEBUG_ALL
|
||||
|
||||
/** \def POLARSSL_SSL_EXTENDED_MASTER_SECRET
|
||||
*
|
||||
* Enable support for Extended Master Secret, aka Session Hash
|
||||
* (draft-ietf-tls-session-hash-02).
|
||||
*
|
||||
* This was introduced as "the proper fix" to the Triple Handshake familiy of
|
||||
* attacks, but it is recommended to always use it (even if you disable
|
||||
* renegotiation), since it actually fixes a more fundamental issue in the
|
||||
* original SSL/TLS design, and has implications beyond Triple Handshake.
|
||||
*
|
||||
* Requires: POLARSSL_SSL_PROTO_TLS1 or
|
||||
* POLARSSL_SSL_PROTO_TLS1_1 or
|
||||
* POLARSSL_SSL_PROTO_TLS1_2
|
||||
*
|
||||
* Comment this macro to disable support for Extended Master Secret.
|
||||
*/
|
||||
#define POLARSSL_SSL_EXTENDED_MASTER_SECRET
|
||||
|
||||
/**
|
||||
* \def POLARSSL_SSL_FALLBACK_SCSV
|
||||
*
|
||||
|
|
|
|||
|
|
@ -218,6 +218,9 @@
|
|||
#define SSL_IS_NOT_FALLBACK 0
|
||||
#define SSL_IS_FALLBACK 1
|
||||
|
||||
#define SSL_EXTENDED_MS_DISABLED 0
|
||||
#define SSL_EXTENDED_MS_ENABLED 1
|
||||
|
||||
#define SSL_COMPRESS_NULL 0
|
||||
#define SSL_COMPRESS_DEFLATE 1
|
||||
|
||||
|
|
@ -439,6 +442,8 @@
|
|||
|
||||
#define TLS_EXT_ALPN 16
|
||||
|
||||
#define TLS_EXT_EXTENDED_MASTER_SECRET 0x0017 /* 23 */
|
||||
|
||||
#define TLS_EXT_SESSION_TICKET 35
|
||||
|
||||
#define TLS_EXT_RENEGOTIATION_INFO 0xFF01
|
||||
|
|
@ -716,6 +721,9 @@ struct _ssl_handshake_params
|
|||
#if defined(POLARSSL_SSL_SESSION_TICKETS)
|
||||
int new_session_ticket; /*!< use NewSessionTicket? */
|
||||
#endif /* POLARSSL_SSL_SESSION_TICKETS */
|
||||
#if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET)
|
||||
int extended_ms; /*!< use Extended Master Secret? */
|
||||
#endif
|
||||
};
|
||||
|
||||
#if defined(POLARSSL_SSL_SESSION_TICKETS)
|
||||
|
|
@ -787,6 +795,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_EXTENDED_MASTER_SECRET)
|
||||
char extended_ms; /*!< flag for extended master secret */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Callbacks (RNG, debug, I/O, verification)
|
||||
|
|
@ -1743,6 +1754,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_EXTENDED_MASTER_SECRET)
|
||||
/**
|
||||
* \brief Enable or disable Extended Master Secret negotiation.
|
||||
* (Default: SSL_EXTENDED_MS_ENABLED)
|
||||
*
|
||||
* \note This should always be enabled, it is a security fix to the
|
||||
* protocol, and should not cause any interoperability issue
|
||||
* (used only if the peer supports it too).
|
||||
*
|
||||
* \param ssl SSL context
|
||||
* \param ems SSL_EXTENDED_MS_ENABLED or SSL_EXTENDED_MS_DISABLED
|
||||
*/
|
||||
void ssl_set_extended_master_secret( ssl_context *ssl, char ems );
|
||||
#endif /* POLARSSL_SSL_EXTENDED_MASTER_SECRET */
|
||||
|
||||
#if defined(POLARSSL_SSL_MAX_FRAGMENT_LENGTH)
|
||||
/**
|
||||
* \brief Set the maximum fragment length to emit and/or negotiate
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue