mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-03 20:22:59 -05:00 
			
		
		
		
	Merge pull request #3927 from hanno-arm/ciphersuite_helper_macros
Unify naming scheme for macros indicating presence of classes of ciphersuites
This commit is contained in:
		
						commit
						9370f01391
					
				@ -130,6 +130,14 @@
 | 
			
		||||
 * counter (8) + header (5) + IV(16) + MAC (16-48) + padding (0-256).
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_PROTO_TLS1)   ||      \
 | 
			
		||||
    defined(MBEDTLS_SSL_PROTO_TLS1_1) ||      \
 | 
			
		||||
    defined(MBEDTLS_SSL_PROTO_TLS1_2)
 | 
			
		||||
#define MBEDTLS_SSL_PROTO_TLS1_2_OR_EARLIER
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_PROTO_TLS1_2_OR_EARLIER)
 | 
			
		||||
 | 
			
		||||
/* This macro determines whether CBC is supported. */
 | 
			
		||||
#if defined(MBEDTLS_CIPHER_MODE_CBC) &&                               \
 | 
			
		||||
    ( defined(MBEDTLS_AES_C)      ||                                  \
 | 
			
		||||
@ -139,6 +147,12 @@
 | 
			
		||||
#define MBEDTLS_SSL_SOME_SUITES_USE_CBC
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This macro determines whether a ciphersuite using a
 | 
			
		||||
 * stream cipher can be used. */
 | 
			
		||||
#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
 | 
			
		||||
#define MBEDTLS_SSL_SOME_SUITES_USE_STREAM
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This macro determines whether the CBC construct used in TLS 1.0-1.2 is supported. */
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC) && \
 | 
			
		||||
    ( defined(MBEDTLS_SSL_PROTO_TLS1) ||        \
 | 
			
		||||
@ -147,12 +161,14 @@
 | 
			
		||||
#define MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_CIPHER_NULL_CIPHER) ||   \
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_STREAM) || \
 | 
			
		||||
    defined(MBEDTLS_SSL_SOME_SUITES_USE_CBC)
 | 
			
		||||
#define MBEDTLS_SSL_SOME_MODES_USE_MAC
 | 
			
		||||
#define MBEDTLS_SSL_SOME_SUITES_USE_MAC
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#endif /* MBEDTLS_SSL_PROTO_TLS1_2_OR_EARLIER */
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
/* Ciphersuites using HMAC */
 | 
			
		||||
#if defined(MBEDTLS_SHA512_C)
 | 
			
		||||
#define MBEDTLS_SSL_MAC_ADD                 48  /* SHA-384 used for HMAC */
 | 
			
		||||
@ -161,7 +177,7 @@
 | 
			
		||||
#else
 | 
			
		||||
#define MBEDTLS_SSL_MAC_ADD                 20  /* SHA-1   used for HMAC */
 | 
			
		||||
#endif
 | 
			
		||||
#else /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#else /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
/* AEAD ciphersuites: GCM and CCM use a 128 bits tag */
 | 
			
		||||
#define MBEDTLS_SSL_MAC_ADD                 16
 | 
			
		||||
#endif
 | 
			
		||||
@ -711,7 +727,7 @@ struct mbedtls_ssl_transform
 | 
			
		||||
    unsigned char iv_enc[16];           /*!<  IV (encryption)         */
 | 
			
		||||
    unsigned char iv_dec[16];           /*!<  IV (decryption)         */
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
 | 
			
		||||
    mbedtls_md_context_t md_ctx_enc;            /*!<  MAC (encryption)        */
 | 
			
		||||
    mbedtls_md_context_t md_ctx_dec;            /*!<  MAC (decryption)        */
 | 
			
		||||
@ -720,7 +736,7 @@ struct mbedtls_ssl_transform
 | 
			
		||||
    int encrypt_then_mac;       /*!< flag for EtM activation                */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
 | 
			
		||||
    mbedtls_cipher_context_t cipher_ctx_enc;    /*!<  encryption context      */
 | 
			
		||||
    mbedtls_cipher_context_t cipher_ctx_dec;    /*!<  decryption context      */
 | 
			
		||||
@ -747,7 +763,7 @@ struct mbedtls_ssl_transform
 | 
			
		||||
static inline int mbedtls_ssl_transform_uses_aead(
 | 
			
		||||
        const mbedtls_ssl_transform *transform )
 | 
			
		||||
{
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    return( transform->maclen == 0 && transform->taglen != 0 );
 | 
			
		||||
#else
 | 
			
		||||
    (void) transform;
 | 
			
		||||
 | 
			
		||||
@ -633,7 +633,7 @@ int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
 | 
			
		||||
    /*
 | 
			
		||||
     * Add MAC before if needed
 | 
			
		||||
     */
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    if( mode == MBEDTLS_MODE_STREAM ||
 | 
			
		||||
        ( mode == MBEDTLS_MODE_CBC
 | 
			
		||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
 | 
			
		||||
@ -678,12 +678,12 @@ int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
 | 
			
		||||
        post_avail -= transform->maclen;
 | 
			
		||||
        auth_done++;
 | 
			
		||||
    }
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * Encrypt
 | 
			
		||||
     */
 | 
			
		||||
#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_STREAM)
 | 
			
		||||
    if( mode == MBEDTLS_MODE_STREAM )
 | 
			
		||||
    {
 | 
			
		||||
        int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
 | 
			
		||||
@ -708,7 +708,7 @@ int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
#endif /* MBEDTLS_CIPHER_NULL_CIPHER */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_STREAM */
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_GCM_C) || \
 | 
			
		||||
    defined(MBEDTLS_CCM_C) || \
 | 
			
		||||
@ -1209,7 +1209,7 @@ int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl,
 | 
			
		||||
    size_t olen;
 | 
			
		||||
    mbedtls_cipher_mode_t mode;
 | 
			
		||||
    int ret, auth_done = 0;
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    size_t padlen = 0, correct = 1;
 | 
			
		||||
#endif
 | 
			
		||||
    unsigned char* data;
 | 
			
		||||
@ -1245,7 +1245,7 @@ int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl,
 | 
			
		||||
    }
 | 
			
		||||
#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_STREAM)
 | 
			
		||||
    if( mode == MBEDTLS_MODE_STREAM )
 | 
			
		||||
    {
 | 
			
		||||
        padlen = 0;
 | 
			
		||||
@ -1266,7 +1266,7 @@ int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
#endif /* MBEDTLS_CIPHER_NULL_CIPHER */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_STREAM */
 | 
			
		||||
#if defined(MBEDTLS_GCM_C) || \
 | 
			
		||||
    defined(MBEDTLS_CCM_C) || \
 | 
			
		||||
    defined(MBEDTLS_CHACHAPOLY_C)
 | 
			
		||||
@ -1636,7 +1636,7 @@ int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl,
 | 
			
		||||
     * Authenticate if not done yet.
 | 
			
		||||
     * Compute the MAC regardless of the padding result (RFC4346, CBCTIME).
 | 
			
		||||
     */
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    if( auth_done == 0 )
 | 
			
		||||
    {
 | 
			
		||||
        unsigned char mac_expect[MBEDTLS_SSL_MAC_ADD];
 | 
			
		||||
@ -1712,7 +1712,7 @@ int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl,
 | 
			
		||||
     */
 | 
			
		||||
    if( correct == 0 )
 | 
			
		||||
        return( MBEDTLS_ERR_SSL_INVALID_MAC );
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
 | 
			
		||||
    /* Make extra sure authentication was performed, exactly once */
 | 
			
		||||
    if( auth_done != 1 )
 | 
			
		||||
@ -5628,7 +5628,7 @@ void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform )
 | 
			
		||||
    mbedtls_cipher_free( &transform->cipher_ctx_enc );
 | 
			
		||||
    mbedtls_cipher_free( &transform->cipher_ctx_dec );
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    mbedtls_md_free( &transform->md_ctx_enc );
 | 
			
		||||
    mbedtls_md_free( &transform->md_ctx_dec );
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -806,14 +806,14 @@ typedef int ssl_tls_prf_t(const unsigned char *, size_t, const char *,
 | 
			
		||||
static int ssl_populate_transform( mbedtls_ssl_transform *transform,
 | 
			
		||||
                                   int ciphersuite,
 | 
			
		||||
                                   const unsigned char master[48],
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
 | 
			
		||||
                                   int encrypt_then_mac,
 | 
			
		||||
#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */
 | 
			
		||||
#if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
 | 
			
		||||
                                   int trunc_hmac,
 | 
			
		||||
#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
                                   ssl_tls_prf_t tls_prf,
 | 
			
		||||
                                   const unsigned char randbytes[64],
 | 
			
		||||
                                   int minor_ver,
 | 
			
		||||
@ -846,7 +846,7 @@ static int ssl_populate_transform( mbedtls_ssl_transform *transform,
 | 
			
		||||
     * Some data just needs copying into the structure
 | 
			
		||||
     */
 | 
			
		||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) && \
 | 
			
		||||
    defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
    defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    transform->encrypt_then_mac = encrypt_then_mac;
 | 
			
		||||
#endif
 | 
			
		||||
    transform->minor_ver = minor_ver;
 | 
			
		||||
@ -967,7 +967,7 @@ static int ssl_populate_transform( mbedtls_ssl_transform *transform,
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
#endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C || MBEDTLS_CHACHAPOLY_C */
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    if( cipher_info->mode == MBEDTLS_MODE_STREAM ||
 | 
			
		||||
        cipher_info->mode == MBEDTLS_MODE_CBC )
 | 
			
		||||
    {
 | 
			
		||||
@ -1044,7 +1044,7 @@ static int ssl_populate_transform( mbedtls_ssl_transform *transform,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
    {
 | 
			
		||||
        MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) );
 | 
			
		||||
        return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
 | 
			
		||||
@ -1105,7 +1105,7 @@ static int ssl_populate_transform( mbedtls_ssl_transform *transform,
 | 
			
		||||
        goto end;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \
 | 
			
		||||
    defined(MBEDTLS_SSL_PROTO_TLS1_2)
 | 
			
		||||
    if( minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 )
 | 
			
		||||
@ -1125,7 +1125,7 @@ static int ssl_populate_transform( mbedtls_ssl_transform *transform,
 | 
			
		||||
        ret = MBEDTLS_ERR_SSL_INTERNAL_ERROR;
 | 
			
		||||
        goto end;
 | 
			
		||||
    }
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
 | 
			
		||||
    ((void) mac_dec);
 | 
			
		||||
    ((void) mac_enc);
 | 
			
		||||
@ -1518,14 +1518,14 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl )
 | 
			
		||||
    ret = ssl_populate_transform( ssl->transform_negotiate,
 | 
			
		||||
                                  ssl->session_negotiate->ciphersuite,
 | 
			
		||||
                                  ssl->session_negotiate->master,
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
 | 
			
		||||
                                  ssl->session_negotiate->encrypt_then_mac,
 | 
			
		||||
#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */
 | 
			
		||||
#if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
 | 
			
		||||
                                  ssl->session_negotiate->trunc_hmac,
 | 
			
		||||
#endif /* MBEDTLS_SSL_TRUNCATED_HMAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
                                  ssl->handshake->tls_prf,
 | 
			
		||||
                                  ssl->handshake->randbytes,
 | 
			
		||||
                                  ssl->minor_ver,
 | 
			
		||||
@ -3323,7 +3323,7 @@ void mbedtls_ssl_transform_init( mbedtls_ssl_transform *transform )
 | 
			
		||||
    mbedtls_cipher_init( &transform->cipher_ctx_enc );
 | 
			
		||||
    mbedtls_cipher_init( &transform->cipher_ctx_dec );
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    mbedtls_md_init( &transform->md_ctx_enc );
 | 
			
		||||
    mbedtls_md_init( &transform->md_ctx_dec );
 | 
			
		||||
#endif
 | 
			
		||||
@ -6162,14 +6162,14 @@ static int ssl_context_load( mbedtls_ssl_context *ssl,
 | 
			
		||||
    ret = ssl_populate_transform( ssl->transform,
 | 
			
		||||
                  ssl->session->ciphersuite,
 | 
			
		||||
                  ssl->session->master,
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
 | 
			
		||||
                  ssl->session->encrypt_then_mac,
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(MBEDTLS_SSL_TRUNCATED_HMAC)
 | 
			
		||||
                  ssl->session->trunc_hmac,
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
                  ssl_tls12prf_from_cs( ssl->session->ciphersuite ),
 | 
			
		||||
                  p, /* currently pointing to randbytes */
 | 
			
		||||
                  MBEDTLS_SSL_MINOR_VERSION_3, /* (D)TLS 1.2 is forced */
 | 
			
		||||
 | 
			
		||||
@ -1254,7 +1254,7 @@ static int build_transforms( mbedtls_ssl_transform *t_in,
 | 
			
		||||
                                keylen << 3, MBEDTLS_DECRYPT ) == 0 );
 | 
			
		||||
 | 
			
		||||
    /* Setup MAC contexts */
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    if( cipher_info->mode == MBEDTLS_MODE_CBC ||
 | 
			
		||||
        cipher_info->mode == MBEDTLS_MODE_STREAM )
 | 
			
		||||
    {
 | 
			
		||||
@ -1287,7 +1287,7 @@ static int build_transforms( mbedtls_ssl_transform *t_in,
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    ((void) hash_id);
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_MODES_USE_MAC */
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /* Pick IV's (regardless of whether they
 | 
			
		||||
@ -1301,7 +1301,7 @@ static int build_transforms( mbedtls_ssl_transform *t_in,
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) && \
 | 
			
		||||
    defined(MBEDTLS_SSL_SOME_MODES_USE_MAC)
 | 
			
		||||
    defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
 | 
			
		||||
    t_out->encrypt_then_mac = etm;
 | 
			
		||||
    t_in->encrypt_then_mac = etm;
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user