File indexing completed on 2025-08-27 09:37:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef MBEDTLS_SSL_CIPHERSUITES_H
0011 #define MBEDTLS_SSL_CIPHERSUITES_H
0012 #include "mbedtls/private_access.h"
0013
0014 #include "mbedtls/build_info.h"
0015
0016 #include "mbedtls/pk.h"
0017 #include "mbedtls/cipher.h"
0018 #include "mbedtls/md.h"
0019
0020 #ifdef __cplusplus
0021 extern "C" {
0022 #endif
0023
0024
0025
0026
0027 #define MBEDTLS_TLS_RSA_WITH_NULL_MD5 0x01
0028 #define MBEDTLS_TLS_RSA_WITH_NULL_SHA 0x02
0029
0030 #define MBEDTLS_TLS_PSK_WITH_NULL_SHA 0x2C
0031 #define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA 0x2D
0032 #define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA 0x2E
0033 #define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA 0x2F
0034
0035 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33
0036 #define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA 0x35
0037 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39
0038
0039 #define MBEDTLS_TLS_RSA_WITH_NULL_SHA256 0x3B
0040 #define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 0x3C
0041 #define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 0x3D
0042
0043 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x41
0044 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x45
0045
0046 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x67
0047 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x6B
0048
0049 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x84
0050 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x88
0051
0052 #define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA 0x8C
0053 #define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA 0x8D
0054
0055 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA 0x90
0056 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA 0x91
0057
0058 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA 0x94
0059 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA 0x95
0060
0061 #define MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 0x9C
0062 #define MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 0x9D
0063 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9E
0064 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9F
0065
0066 #define MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 0xA8
0067 #define MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 0xA9
0068 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 0xAA
0069 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 0xAB
0070 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 0xAC
0071 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 0xAD
0072
0073 #define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 0xAE
0074 #define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 0xAF
0075 #define MBEDTLS_TLS_PSK_WITH_NULL_SHA256 0xB0
0076 #define MBEDTLS_TLS_PSK_WITH_NULL_SHA384 0xB1
0077
0078 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 0xB2
0079 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 0xB3
0080 #define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 0xB4
0081 #define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 0xB5
0082
0083 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 0xB6
0084 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 0xB7
0085 #define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 0xB8
0086 #define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 0xB9
0087
0088 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBA
0089 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE
0090
0091 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC0
0092 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4
0093
0094 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001
0095 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004
0096 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005
0097
0098 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006
0099 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009
0100 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A
0101
0102 #define MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B
0103 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E
0104 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F
0105
0106 #define MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010
0107 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013
0108 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014
0109
0110 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023
0111 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024
0112 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025
0113 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026
0114 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027
0115 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028
0116 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029
0117 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A
0118
0119 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B
0120 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C
0121 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D
0122 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E
0123 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F
0124 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030
0125 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031
0126 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032
0127
0128 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035
0129 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036
0130 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037
0131 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038
0132 #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039
0133 #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A
0134 #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B
0135
0136 #define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C
0137 #define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D
0138 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044
0139 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045
0140 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048
0141 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049
0142 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A
0143 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B
0144 #define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C
0145 #define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D
0146 #define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E
0147 #define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F
0148 #define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050
0149 #define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051
0150 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052
0151 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053
0152 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C
0153 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D
0154 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E
0155 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F
0156 #define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060
0157 #define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061
0158 #define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062
0159 #define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063
0160 #define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064
0161 #define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065
0162 #define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066
0163 #define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067
0164 #define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068
0165 #define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069
0166 #define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A
0167 #define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B
0168 #define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C
0169 #define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D
0170 #define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E
0171 #define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F
0172 #define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070
0173 #define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071
0174
0175 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072
0176 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073
0177 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074
0178 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC075
0179 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076
0180 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077
0181 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC078
0182 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC079
0183
0184 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A
0185 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B
0186 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C
0187 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D
0188 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086
0189 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087
0190 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088
0191 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC089
0192 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08A
0193 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08B
0194 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08C
0195 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08D
0196
0197 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC08E
0198 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC08F
0199 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC090
0200 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC091
0201 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC092
0202 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC093
0203
0204 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094
0205 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095
0206 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096
0207 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097
0208 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098
0209 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099
0210 #define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A
0211 #define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B
0212
0213 #define MBEDTLS_TLS_RSA_WITH_AES_128_CCM 0xC09C
0214 #define MBEDTLS_TLS_RSA_WITH_AES_256_CCM 0xC09D
0215 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM 0xC09E
0216 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM 0xC09F
0217 #define MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8 0xC0A0
0218 #define MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8 0xC0A1
0219 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0A2
0220 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0A3
0221 #define MBEDTLS_TLS_PSK_WITH_AES_128_CCM 0xC0A4
0222 #define MBEDTLS_TLS_PSK_WITH_AES_256_CCM 0xC0A5
0223 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM 0xC0A6
0224 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM 0xC0A7
0225 #define MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8 0xC0A8
0226 #define MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8 0xC0A9
0227 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8 0xC0AA
0228 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8 0xC0AB
0229
0230
0231 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0AC
0232 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0AD
0233 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0AE
0234 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0AF
0235
0236 #define MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 0xC0FF
0237
0238
0239 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA8
0240 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA9
0241 #define MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCAA
0242 #define MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAB
0243 #define MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAC
0244 #define MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAD
0245 #define MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAE
0246
0247
0248 #define MBEDTLS_TLS1_3_AES_128_GCM_SHA256 0x1301
0249 #define MBEDTLS_TLS1_3_AES_256_GCM_SHA384 0x1302
0250 #define MBEDTLS_TLS1_3_CHACHA20_POLY1305_SHA256 0x1303
0251 #define MBEDTLS_TLS1_3_AES_128_CCM_SHA256 0x1304
0252 #define MBEDTLS_TLS1_3_AES_128_CCM_8_SHA256 0x1305
0253
0254
0255
0256
0257 typedef enum {
0258 MBEDTLS_KEY_EXCHANGE_NONE = 0,
0259 MBEDTLS_KEY_EXCHANGE_RSA,
0260 MBEDTLS_KEY_EXCHANGE_DHE_RSA,
0261 MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
0262 MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
0263 MBEDTLS_KEY_EXCHANGE_PSK,
0264 MBEDTLS_KEY_EXCHANGE_DHE_PSK,
0265 MBEDTLS_KEY_EXCHANGE_RSA_PSK,
0266 MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
0267 MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
0268 MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
0269 MBEDTLS_KEY_EXCHANGE_ECJPAKE,
0270 } mbedtls_key_exchange_type_t;
0271
0272
0273 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \
0274 defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
0275 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
0276 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
0277 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \
0278 defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \
0279 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
0280 #define MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED
0281 #endif
0282
0283
0284
0285 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
0286 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
0287 #define MBEDTLS_KEY_EXCHANGE_WITH_ECDSA_ANY_ENABLED
0288 #endif
0289
0290 #if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) || \
0291 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
0292 #define MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED
0293 #endif
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \
0305 defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
0306 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
0307 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
0308 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \
0309 defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)
0310 #define MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED
0311 #endif
0312
0313
0314
0315 #if defined(MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED) && \
0316 defined(MBEDTLS_PK_CAN_ECDSA_SIGN) && defined(MBEDTLS_PK_CAN_ECDSA_VERIFY)
0317 #define MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED
0318 #endif
0319
0320
0321 #if defined(MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ALLOWED_ENABLED) || \
0322 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
0323 #define MBEDTLS_KEY_EXCHANGE_ECDSA_CERT_REQ_ANY_ALLOWED_ENABLED
0324 #endif
0325
0326
0327 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
0328 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
0329 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
0330 #define MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED
0331 #endif
0332
0333
0334 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \
0335 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
0336 #define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED
0337 #endif
0338
0339
0340 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \
0341 defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \
0342 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \
0343 defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED)
0344 #define MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED
0345 #endif
0346
0347
0348 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
0349 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \
0350 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
0351 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \
0352 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
0353 defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
0354 #define MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED
0355 #endif
0356
0357
0358 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \
0359 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \
0360 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \
0361 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
0362 #define MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED
0363 #endif
0364
0365
0366 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
0367 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
0368 #define MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED
0369 #endif
0370
0371
0372 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
0373 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
0374 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
0375 #define MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED
0376 #endif
0377
0378
0379 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) || \
0380 defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED)
0381 #define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED
0382 #endif
0383
0384
0385 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED) || \
0386 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED)
0387 #define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED
0388 #endif
0389
0390
0391 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) || \
0392 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED)
0393 #define MBEDTLS_SSL_HANDSHAKE_WITH_PSK_ENABLED
0394 #endif
0395
0396
0397 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED) || \
0398 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED)
0399 #define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED
0400 #endif
0401
0402
0403 #if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED) && \
0404 defined(PSA_WANT_ALG_ECDH)
0405 #define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_ECDHE_ENABLED
0406 #endif
0407
0408
0409 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) || \
0410 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_ECDHE_ENABLED)
0411 #define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED
0412 #endif
0413
0414
0415 #if (defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) || \
0416 defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED))
0417 #define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_1_2_ENABLED
0418 #endif
0419
0420
0421
0422
0423
0424
0425 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) && \
0426 defined(MBEDTLS_USE_PSA_CRYPTO)
0427 #define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_1_2_ENABLED
0428 #endif
0429 #if defined(MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_1_2_ENABLED) || \
0430 defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_EPHEMERAL_ENABLED)
0431 #define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_PSA_ANY_ENABLED
0432 #endif
0433
0434 typedef struct mbedtls_ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t;
0435
0436 #define MBEDTLS_CIPHERSUITE_WEAK 0x01
0437 #define MBEDTLS_CIPHERSUITE_SHORT_TAG 0x02
0438
0439 #define MBEDTLS_CIPHERSUITE_NODTLS 0x04
0440
0441
0442
0443
0444
0445
0446
0447
0448 struct mbedtls_ssl_ciphersuite_t {
0449 int MBEDTLS_PRIVATE(id);
0450 const char *MBEDTLS_PRIVATE(name);
0451
0452 uint8_t MBEDTLS_PRIVATE(cipher);
0453 uint8_t MBEDTLS_PRIVATE(mac);
0454 uint8_t MBEDTLS_PRIVATE(key_exchange);
0455 uint8_t MBEDTLS_PRIVATE(flags);
0456
0457 uint16_t MBEDTLS_PRIVATE(min_tls_version);
0458 uint16_t MBEDTLS_PRIVATE(max_tls_version);
0459 };
0460
0461 const int *mbedtls_ssl_list_ciphersuites(void);
0462
0463 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_string(const char *ciphersuite_name);
0464 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_id(int ciphersuite_id);
0465
0466 static inline const char *mbedtls_ssl_ciphersuite_get_name(const mbedtls_ssl_ciphersuite_t *info)
0467 {
0468 return info->MBEDTLS_PRIVATE(name);
0469 }
0470
0471 static inline int mbedtls_ssl_ciphersuite_get_id(const mbedtls_ssl_ciphersuite_t *info)
0472 {
0473 return info->MBEDTLS_PRIVATE(id);
0474 }
0475
0476 size_t mbedtls_ssl_ciphersuite_get_cipher_key_bitlen(const mbedtls_ssl_ciphersuite_t *info);
0477
0478 #ifdef __cplusplus
0479 }
0480 #endif
0481
0482 #endif