1a8e1175bSopenharmony_ci/** 2a8e1175bSopenharmony_ci * \file ssl_ciphersuites.h 3a8e1175bSopenharmony_ci * 4a8e1175bSopenharmony_ci * \brief SSL Ciphersuites for Mbed TLS 5a8e1175bSopenharmony_ci */ 6a8e1175bSopenharmony_ci/* 7a8e1175bSopenharmony_ci * Copyright The Mbed TLS Contributors 8a8e1175bSopenharmony_ci * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 9a8e1175bSopenharmony_ci */ 10a8e1175bSopenharmony_ci#ifndef MBEDTLS_SSL_CIPHERSUITES_H 11a8e1175bSopenharmony_ci#define MBEDTLS_SSL_CIPHERSUITES_H 12a8e1175bSopenharmony_ci#include "mbedtls/private_access.h" 13a8e1175bSopenharmony_ci 14a8e1175bSopenharmony_ci#include "mbedtls/build_info.h" 15a8e1175bSopenharmony_ci 16a8e1175bSopenharmony_ci#include "mbedtls/pk.h" 17a8e1175bSopenharmony_ci#include "mbedtls/cipher.h" 18a8e1175bSopenharmony_ci#include "mbedtls/md.h" 19a8e1175bSopenharmony_ci 20a8e1175bSopenharmony_ci#ifdef __cplusplus 21a8e1175bSopenharmony_ciextern "C" { 22a8e1175bSopenharmony_ci#endif 23a8e1175bSopenharmony_ci 24a8e1175bSopenharmony_ci/* 25a8e1175bSopenharmony_ci * Supported ciphersuites (Official IANA names) 26a8e1175bSopenharmony_ci */ 27a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_NULL_MD5 0x01 /**< Weak! */ 28a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_NULL_SHA 0x02 /**< Weak! */ 29a8e1175bSopenharmony_ci 30a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_NULL_SHA 0x2C /**< Weak! */ 31a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA 0x2D /**< Weak! */ 32a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA 0x2E /**< Weak! */ 33a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA 0x2F 34a8e1175bSopenharmony_ci 35a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33 36a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA 0x35 37a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39 38a8e1175bSopenharmony_ci 39a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_NULL_SHA256 0x3B /**< Weak! */ 40a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 0x3C /**< TLS 1.2 */ 41a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 0x3D /**< TLS 1.2 */ 42a8e1175bSopenharmony_ci 43a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x41 44a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x45 45a8e1175bSopenharmony_ci 46a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x67 /**< TLS 1.2 */ 47a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x6B /**< TLS 1.2 */ 48a8e1175bSopenharmony_ci 49a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x84 50a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x88 51a8e1175bSopenharmony_ci 52a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA 0x8C 53a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA 0x8D 54a8e1175bSopenharmony_ci 55a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA 0x90 56a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA 0x91 57a8e1175bSopenharmony_ci 58a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA 0x94 59a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA 0x95 60a8e1175bSopenharmony_ci 61a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 0x9C /**< TLS 1.2 */ 62a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 0x9D /**< TLS 1.2 */ 63a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9E /**< TLS 1.2 */ 64a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9F /**< TLS 1.2 */ 65a8e1175bSopenharmony_ci 66a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 0xA8 /**< TLS 1.2 */ 67a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 0xA9 /**< TLS 1.2 */ 68a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 0xAA /**< TLS 1.2 */ 69a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 0xAB /**< TLS 1.2 */ 70a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 0xAC /**< TLS 1.2 */ 71a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 0xAD /**< TLS 1.2 */ 72a8e1175bSopenharmony_ci 73a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 0xAE 74a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 0xAF 75a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_NULL_SHA256 0xB0 /**< Weak! */ 76a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_NULL_SHA384 0xB1 /**< Weak! */ 77a8e1175bSopenharmony_ci 78a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 0xB2 79a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 0xB3 80a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 0xB4 /**< Weak! */ 81a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 0xB5 /**< Weak! */ 82a8e1175bSopenharmony_ci 83a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 0xB6 84a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 0xB7 85a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 0xB8 /**< Weak! */ 86a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 0xB9 /**< Weak! */ 87a8e1175bSopenharmony_ci 88a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBA /**< TLS 1.2 */ 89a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE /**< TLS 1.2 */ 90a8e1175bSopenharmony_ci 91a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC0 /**< TLS 1.2 */ 92a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4 /**< TLS 1.2 */ 93a8e1175bSopenharmony_ci 94a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001 /**< Weak! */ 95a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004 96a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005 97a8e1175bSopenharmony_ci 98a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006 /**< Weak! */ 99a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009 100a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A 101a8e1175bSopenharmony_ci 102a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B /**< Weak! */ 103a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E 104a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F 105a8e1175bSopenharmony_ci 106a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010 /**< Weak! */ 107a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013 108a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014 109a8e1175bSopenharmony_ci 110a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023 /**< TLS 1.2 */ 111a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024 /**< TLS 1.2 */ 112a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025 /**< TLS 1.2 */ 113a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026 /**< TLS 1.2 */ 114a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027 /**< TLS 1.2 */ 115a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028 /**< TLS 1.2 */ 116a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029 /**< TLS 1.2 */ 117a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A /**< TLS 1.2 */ 118a8e1175bSopenharmony_ci 119a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B /**< TLS 1.2 */ 120a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C /**< TLS 1.2 */ 121a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D /**< TLS 1.2 */ 122a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E /**< TLS 1.2 */ 123a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F /**< TLS 1.2 */ 124a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030 /**< TLS 1.2 */ 125a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031 /**< TLS 1.2 */ 126a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032 /**< TLS 1.2 */ 127a8e1175bSopenharmony_ci 128a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035 129a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036 130a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037 131a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038 132a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039 133a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A 134a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B 135a8e1175bSopenharmony_ci 136a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C /**< TLS 1.2 */ 137a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D /**< TLS 1.2 */ 138a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 /**< TLS 1.2 */ 139a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 /**< TLS 1.2 */ 140a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 /**< TLS 1.2 */ 141a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 /**< TLS 1.2 */ 142a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A /**< TLS 1.2 */ 143a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B /**< TLS 1.2 */ 144a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C /**< TLS 1.2 */ 145a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D /**< TLS 1.2 */ 146a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E /**< TLS 1.2 */ 147a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F /**< TLS 1.2 */ 148a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 /**< TLS 1.2 */ 149a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 /**< TLS 1.2 */ 150a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 /**< TLS 1.2 */ 151a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 /**< TLS 1.2 */ 152a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C /**< TLS 1.2 */ 153a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D /**< TLS 1.2 */ 154a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E /**< TLS 1.2 */ 155a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F /**< TLS 1.2 */ 156a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060 /**< TLS 1.2 */ 157a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061 /**< TLS 1.2 */ 158a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062 /**< TLS 1.2 */ 159a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063 /**< TLS 1.2 */ 160a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064 /**< TLS 1.2 */ 161a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065 /**< TLS 1.2 */ 162a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066 /**< TLS 1.2 */ 163a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067 /**< TLS 1.2 */ 164a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068 /**< TLS 1.2 */ 165a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069 /**< TLS 1.2 */ 166a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A /**< TLS 1.2 */ 167a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B /**< TLS 1.2 */ 168a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C /**< TLS 1.2 */ 169a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D /**< TLS 1.2 */ 170a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E /**< TLS 1.2 */ 171a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F /**< TLS 1.2 */ 172a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070 /**< TLS 1.2 */ 173a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071 /**< TLS 1.2 */ 174a8e1175bSopenharmony_ci 175a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072 176a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073 177a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074 178a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC075 179a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076 180a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077 181a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC078 182a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC079 183a8e1175bSopenharmony_ci 184a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A /**< TLS 1.2 */ 185a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B /**< TLS 1.2 */ 186a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C /**< TLS 1.2 */ 187a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D /**< TLS 1.2 */ 188a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086 /**< TLS 1.2 */ 189a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087 /**< TLS 1.2 */ 190a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088 /**< TLS 1.2 */ 191a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC089 /**< TLS 1.2 */ 192a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08A /**< TLS 1.2 */ 193a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08B /**< TLS 1.2 */ 194a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08C /**< TLS 1.2 */ 195a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08D /**< TLS 1.2 */ 196a8e1175bSopenharmony_ci 197a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC08E /**< TLS 1.2 */ 198a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC08F /**< TLS 1.2 */ 199a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC090 /**< TLS 1.2 */ 200a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC091 /**< TLS 1.2 */ 201a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC092 /**< TLS 1.2 */ 202a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC093 /**< TLS 1.2 */ 203a8e1175bSopenharmony_ci 204a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094 205a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095 206a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096 207a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097 208a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098 209a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099 210a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A 211a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B 212a8e1175bSopenharmony_ci 213a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_128_CCM 0xC09C /**< TLS 1.2 */ 214a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_256_CCM 0xC09D /**< TLS 1.2 */ 215a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM 0xC09E /**< TLS 1.2 */ 216a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM 0xC09F /**< TLS 1.2 */ 217a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8 0xC0A0 /**< TLS 1.2 */ 218a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8 0xC0A1 /**< TLS 1.2 */ 219a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0A2 /**< TLS 1.2 */ 220a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0A3 /**< TLS 1.2 */ 221a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_128_CCM 0xC0A4 /**< TLS 1.2 */ 222a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_256_CCM 0xC0A5 /**< TLS 1.2 */ 223a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM 0xC0A6 /**< TLS 1.2 */ 224a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM 0xC0A7 /**< TLS 1.2 */ 225a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8 0xC0A8 /**< TLS 1.2 */ 226a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8 0xC0A9 /**< TLS 1.2 */ 227a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8 0xC0AA /**< TLS 1.2 */ 228a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8 0xC0AB /**< TLS 1.2 */ 229a8e1175bSopenharmony_ci/* The last two are named with PSK_DHE in the RFC, which looks like a typo */ 230a8e1175bSopenharmony_ci 231a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0AC /**< TLS 1.2 */ 232a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0AD /**< TLS 1.2 */ 233a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0AE /**< TLS 1.2 */ 234a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0AF /**< TLS 1.2 */ 235a8e1175bSopenharmony_ci 236a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 0xC0FF /**< experimental */ 237a8e1175bSopenharmony_ci 238a8e1175bSopenharmony_ci/* RFC 7905 */ 239a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA8 /**< TLS 1.2 */ 240a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA9 /**< TLS 1.2 */ 241a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCAA /**< TLS 1.2 */ 242a8e1175bSopenharmony_ci#define MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAB /**< TLS 1.2 */ 243a8e1175bSopenharmony_ci#define MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAC /**< TLS 1.2 */ 244a8e1175bSopenharmony_ci#define MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAD /**< TLS 1.2 */ 245a8e1175bSopenharmony_ci#define MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAE /**< TLS 1.2 */ 246a8e1175bSopenharmony_ci 247a8e1175bSopenharmony_ci/* RFC 8446, Appendix B.4 */ 248a8e1175bSopenharmony_ci#define MBEDTLS_TLS1_3_AES_128_GCM_SHA256 0x1301 /**< TLS 1.3 */ 249a8e1175bSopenharmony_ci#define MBEDTLS_TLS1_3_AES_256_GCM_SHA384 0x1302 /**< TLS 1.3 */ 250a8e1175bSopenharmony_ci#define MBEDTLS_TLS1_3_CHACHA20_POLY1305_SHA256 0x1303 /**< TLS 1.3 */ 251a8e1175bSopenharmony_ci#define MBEDTLS_TLS1_3_AES_128_CCM_SHA256 0x1304 /**< TLS 1.3 */ 252a8e1175bSopenharmony_ci#define MBEDTLS_TLS1_3_AES_128_CCM_8_SHA256 0x1305 /**< TLS 1.3 */ 253a8e1175bSopenharmony_ci 254a8e1175bSopenharmony_ci/* Reminder: update mbedtls_ssl_premaster_secret when adding a new key exchange. 255a8e1175bSopenharmony_ci * Reminder: update MBEDTLS_KEY_EXCHANGE__xxx below 256a8e1175bSopenharmony_ci */ 257a8e1175bSopenharmony_citypedef enum { 258a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_NONE = 0, 259a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_RSA, 260a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_DHE_RSA, 261a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, 262a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, 263a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_PSK, 264a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_DHE_PSK, 265a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_RSA_PSK, 266a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, 267a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_ECDH_RSA, 268a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, 269a8e1175bSopenharmony_ci MBEDTLS_KEY_EXCHANGE_ECJPAKE, 270a8e1175bSopenharmony_ci} mbedtls_key_exchange_type_t; 271a8e1175bSopenharmony_ci 272a8e1175bSopenharmony_ci/* Key exchanges using a certificate */ 273a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ 274a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 275a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 276a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 277a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ 278a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ 279a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) 280a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED 281a8e1175bSopenharmony_ci#endif 282a8e1175bSopenharmony_ci 283a8e1175bSopenharmony_ci/* Key exchanges in either TLS 1.2 or 1.3 which are using an ECDSA 284a8e1175bSopenharmony_ci * signature */ 285a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 286a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED) 287a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_WITH_ECDSA_ANY_ENABLED 288a8e1175bSopenharmony_ci#endif 289a8e1175bSopenharmony_ci 290a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) || \ 291a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED) 292a8e1175bSopenharmony_ci#define MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED 293a8e1175bSopenharmony_ci#endif 294a8e1175bSopenharmony_ci 295a8e1175bSopenharmony_ci/* Key exchanges allowing client certificate requests. 296a8e1175bSopenharmony_ci * 297a8e1175bSopenharmony_ci * Note: that's almost the same as MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED 298a8e1175bSopenharmony_ci * above, except RSA-PSK uses a server certificate but no client cert. 299a8e1175bSopenharmony_ci * 300a8e1175bSopenharmony_ci * Note: this difference is specific to TLS 1.2, as with TLS 1.3, things are 301a8e1175bSopenharmony_ci * more symmetrical: client certs and server certs are either both allowed 302a8e1175bSopenharmony_ci * (Ephemeral mode) or both disallowed (PSK and PKS-Ephemeral modes). 303a8e1175bSopenharmony_ci */ 304a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ 305a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 306a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 307a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 308a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ 309a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) 310a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED 311a8e1175bSopenharmony_ci#endif 312a8e1175bSopenharmony_ci 313a8e1175bSopenharmony_ci/* Helper to state that certificate-based client authentication through ECDSA 314a8e1175bSopenharmony_ci * is supported in TLS 1.2 */ 315a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED) && \ 316a8e1175bSopenharmony_ci defined(MBEDTLS_PK_CAN_ECDSA_SIGN) && defined(MBEDTLS_PK_CAN_ECDSA_VERIFY) 317a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED 318a8e1175bSopenharmony_ci#endif 319a8e1175bSopenharmony_ci 320a8e1175bSopenharmony_ci/* ECDSA required for certificates in either TLS 1.2 or 1.3 */ 321a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED) || \ 322a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED) 323a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED 324a8e1175bSopenharmony_ci#endif 325a8e1175bSopenharmony_ci 326a8e1175bSopenharmony_ci/* Key exchanges involving server signature in ServerKeyExchange */ 327a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 328a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 329a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) 330a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED 331a8e1175bSopenharmony_ci#endif 332a8e1175bSopenharmony_ci 333a8e1175bSopenharmony_ci/* Key exchanges using ECDH */ 334a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ 335a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) 336a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED 337a8e1175bSopenharmony_ci#endif 338a8e1175bSopenharmony_ci 339a8e1175bSopenharmony_ci/* Key exchanges that don't involve ephemeral keys */ 340a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ 341a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ 342a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ 343a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) 344a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED 345a8e1175bSopenharmony_ci#endif 346a8e1175bSopenharmony_ci 347a8e1175bSopenharmony_ci/* Key exchanges that involve ephemeral keys */ 348a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 349a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ 350a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 351a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ 352a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 353a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) 354a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED 355a8e1175bSopenharmony_ci#endif 356a8e1175bSopenharmony_ci 357a8e1175bSopenharmony_ci/* Key exchanges using a PSK */ 358a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ 359a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ 360a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ 361a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) 362a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED 363a8e1175bSopenharmony_ci#endif 364a8e1175bSopenharmony_ci 365a8e1175bSopenharmony_ci/* Key exchanges using DHE */ 366a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 367a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) 368a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED 369a8e1175bSopenharmony_ci#endif 370a8e1175bSopenharmony_ci 371a8e1175bSopenharmony_ci/* Key exchanges using ECDHE */ 372a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 373a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 374a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) 375a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED 376a8e1175bSopenharmony_ci#endif 377a8e1175bSopenharmony_ci 378a8e1175bSopenharmony_ci/* TLS 1.2 key exchanges using ECDH or ECDHE*/ 379a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) || \ 380a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) 381a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED 382a8e1175bSopenharmony_ci#endif 383a8e1175bSopenharmony_ci 384a8e1175bSopenharmony_ci/* TLS 1.3 PSK key exchanges */ 385a8e1175bSopenharmony_ci#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED) || \ 386a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED) 387a8e1175bSopenharmony_ci#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED 388a8e1175bSopenharmony_ci#endif 389a8e1175bSopenharmony_ci 390a8e1175bSopenharmony_ci/* TLS 1.2 or 1.3 key exchanges with PSK */ 391a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) || \ 392a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED) 393a8e1175bSopenharmony_ci#define MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED 394a8e1175bSopenharmony_ci#endif 395a8e1175bSopenharmony_ci 396a8e1175bSopenharmony_ci/* TLS 1.3 ephemeral key exchanges */ 397a8e1175bSopenharmony_ci#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED) || \ 398a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED) 399a8e1175bSopenharmony_ci#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED 400a8e1175bSopenharmony_ci#endif 401a8e1175bSopenharmony_ci 402a8e1175bSopenharmony_ci/* TLS 1.3 key exchanges using ECDHE */ 403a8e1175bSopenharmony_ci#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) && \ 404a8e1175bSopenharmony_ci defined(PSA_WANT_ALG_ECDH) 405a8e1175bSopenharmony_ci#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_ECDHE_ENABLED 406a8e1175bSopenharmony_ci#endif 407a8e1175bSopenharmony_ci 408a8e1175bSopenharmony_ci/* TLS 1.2 or 1.3 key exchanges using ECDH or ECDHE */ 409a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) || \ 410a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_ECDHE_ENABLED) 411a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED 412a8e1175bSopenharmony_ci#endif 413a8e1175bSopenharmony_ci 414a8e1175bSopenharmony_ci/* TLS 1.2 XXDH key exchanges: ECDH or ECDHE or FFDH */ 415a8e1175bSopenharmony_ci#if (defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) || \ 416a8e1175bSopenharmony_ci defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED)) 417a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_1_2_ENABLED 418a8e1175bSopenharmony_ci#endif 419a8e1175bSopenharmony_ci 420a8e1175bSopenharmony_ci/* The handshake params structure has a set of fields called xxdh_psa which are used: 421a8e1175bSopenharmony_ci * - by TLS 1.2 with `USE_PSA` to do ECDH or ECDHE; 422a8e1175bSopenharmony_ci * - by TLS 1.3 to do ECDHE or FFDHE. 423a8e1175bSopenharmony_ci * The following macros can be used to guard their declaration and use. 424a8e1175bSopenharmony_ci */ 425a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) && \ 426a8e1175bSopenharmony_ci defined(MBEDTLS_USE_PSA_CRYPTO) 427a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_1_2_ENABLED 428a8e1175bSopenharmony_ci#endif 429a8e1175bSopenharmony_ci#if defined(MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_1_2_ENABLED) || \ 430a8e1175bSopenharmony_ci defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) 431a8e1175bSopenharmony_ci#define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_ANY_ENABLED 432a8e1175bSopenharmony_ci#endif 433a8e1175bSopenharmony_ci 434a8e1175bSopenharmony_citypedef struct mbedtls_ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t; 435a8e1175bSopenharmony_ci 436a8e1175bSopenharmony_ci#define MBEDTLS_CIPHERSUITE_WEAK 0x01 /**< Weak ciphersuite flag */ 437a8e1175bSopenharmony_ci#define MBEDTLS_CIPHERSUITE_SHORT_TAG 0x02 /**< Short authentication tag, 438a8e1175bSopenharmony_ci eg for CCM_8 */ 439a8e1175bSopenharmony_ci#define MBEDTLS_CIPHERSUITE_NODTLS 0x04 /**< Can't be used with DTLS */ 440a8e1175bSopenharmony_ci 441a8e1175bSopenharmony_ci/** 442a8e1175bSopenharmony_ci * \brief This structure is used for storing ciphersuite information 443a8e1175bSopenharmony_ci * 444a8e1175bSopenharmony_ci * \note members are defined using integral types instead of enums 445a8e1175bSopenharmony_ci * in order to pack structure and reduce memory usage by internal 446a8e1175bSopenharmony_ci * \c ciphersuite_definitions[] 447a8e1175bSopenharmony_ci */ 448a8e1175bSopenharmony_cistruct mbedtls_ssl_ciphersuite_t { 449a8e1175bSopenharmony_ci int MBEDTLS_PRIVATE(id); 450a8e1175bSopenharmony_ci const char *MBEDTLS_PRIVATE(name); 451a8e1175bSopenharmony_ci 452a8e1175bSopenharmony_ci uint8_t MBEDTLS_PRIVATE(cipher); /* mbedtls_cipher_type_t */ 453a8e1175bSopenharmony_ci uint8_t MBEDTLS_PRIVATE(mac); /* mbedtls_md_type_t */ 454a8e1175bSopenharmony_ci uint8_t MBEDTLS_PRIVATE(key_exchange); /* mbedtls_key_exchange_type_t */ 455a8e1175bSopenharmony_ci uint8_t MBEDTLS_PRIVATE(flags); 456a8e1175bSopenharmony_ci 457a8e1175bSopenharmony_ci uint16_t MBEDTLS_PRIVATE(min_tls_version); /* mbedtls_ssl_protocol_version */ 458a8e1175bSopenharmony_ci uint16_t MBEDTLS_PRIVATE(max_tls_version); /* mbedtls_ssl_protocol_version */ 459a8e1175bSopenharmony_ci}; 460a8e1175bSopenharmony_ci 461a8e1175bSopenharmony_ciconst int *mbedtls_ssl_list_ciphersuites(void); 462a8e1175bSopenharmony_ci 463a8e1175bSopenharmony_ciconst mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_string(const char *ciphersuite_name); 464a8e1175bSopenharmony_ciconst mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_id(int ciphersuite_id); 465a8e1175bSopenharmony_ci 466a8e1175bSopenharmony_cistatic inline const char *mbedtls_ssl_ciphersuite_get_name(const mbedtls_ssl_ciphersuite_t *info) 467a8e1175bSopenharmony_ci{ 468a8e1175bSopenharmony_ci return info->MBEDTLS_PRIVATE(name); 469a8e1175bSopenharmony_ci} 470a8e1175bSopenharmony_ci 471a8e1175bSopenharmony_cistatic inline int mbedtls_ssl_ciphersuite_get_id(const mbedtls_ssl_ciphersuite_t *info) 472a8e1175bSopenharmony_ci{ 473a8e1175bSopenharmony_ci return info->MBEDTLS_PRIVATE(id); 474a8e1175bSopenharmony_ci} 475a8e1175bSopenharmony_ci 476a8e1175bSopenharmony_cisize_t mbedtls_ssl_ciphersuite_get_cipher_key_bitlen(const mbedtls_ssl_ciphersuite_t *info); 477a8e1175bSopenharmony_ci 478a8e1175bSopenharmony_ci#ifdef __cplusplus 479a8e1175bSopenharmony_ci} 480a8e1175bSopenharmony_ci#endif 481a8e1175bSopenharmony_ci 482a8e1175bSopenharmony_ci#endif /* ssl_ciphersuites.h */ 483