Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ssl_ciphersuites.h
00001 /** 00002 * \file ssl_ciphersuites.h 00003 * 00004 * \brief SSL Ciphersuites for mbed TLS 00005 */ 00006 /* 00007 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved 00008 * SPDX-License-Identifier: Apache-2.0 00009 * 00010 * Licensed under the Apache License, Version 2.0 (the "License"); you may 00011 * not use this file except in compliance with the License. 00012 * You may obtain a copy of the License at 00013 * 00014 * http://www.apache.org/licenses/LICENSE-2.0 00015 * 00016 * Unless required by applicable law or agreed to in writing, software 00017 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 00018 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00019 * See the License for the specific language governing permissions and 00020 * limitations under the License. 00021 * 00022 * This file is part of mbed TLS (https://tls.mbed.org) 00023 */ 00024 #ifndef MBEDTLS_SSL_CIPHERSUITES_H 00025 #define MBEDTLS_SSL_CIPHERSUITES_H 00026 00027 #include "pk.h" 00028 #include "cipher.h" 00029 #include "md.h" 00030 00031 #ifdef __cplusplus 00032 extern "C" { 00033 #endif 00034 00035 /* 00036 * Supported ciphersuites (Official IANA names) 00037 */ 00038 #define MBEDTLS_TLS_RSA_WITH_NULL_MD5 0x01 /**< Weak! */ 00039 #define MBEDTLS_TLS_RSA_WITH_NULL_SHA 0x02 /**< Weak! */ 00040 00041 #define MBEDTLS_TLS_RSA_WITH_RC4_128_MD5 0x04 00042 #define MBEDTLS_TLS_RSA_WITH_RC4_128_SHA 0x05 00043 #define MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA 0x09 /**< Weak! Not in TLS 1.2 */ 00044 00045 #define MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA 0x0A 00046 00047 #define MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA 0x15 /**< Weak! Not in TLS 1.2 */ 00048 #define MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x16 00049 00050 #define MBEDTLS_TLS_PSK_WITH_NULL_SHA 0x2C /**< Weak! */ 00051 #define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA 0x2D /**< Weak! */ 00052 #define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA 0x2E /**< Weak! */ 00053 #define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA 0x2F 00054 00055 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33 00056 #define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA 0x35 00057 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39 00058 00059 #define MBEDTLS_TLS_RSA_WITH_NULL_SHA256 0x3B /**< Weak! */ 00060 #define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 0x3C /**< TLS 1.2 */ 00061 #define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 0x3D /**< TLS 1.2 */ 00062 00063 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x41 00064 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x45 00065 00066 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x67 /**< TLS 1.2 */ 00067 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x6B /**< TLS 1.2 */ 00068 00069 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x84 00070 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x88 00071 00072 #define MBEDTLS_TLS_PSK_WITH_RC4_128_SHA 0x8A 00073 #define MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA 0x8B 00074 #define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA 0x8C 00075 #define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA 0x8D 00076 00077 #define MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA 0x8E 00078 #define MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x8F 00079 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA 0x90 00080 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA 0x91 00081 00082 #define MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA 0x92 00083 #define MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x93 00084 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA 0x94 00085 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA 0x95 00086 00087 #define MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 0x9C /**< TLS 1.2 */ 00088 #define MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 0x9D /**< TLS 1.2 */ 00089 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9E /**< TLS 1.2 */ 00090 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9F /**< TLS 1.2 */ 00091 00092 #define MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 0xA8 /**< TLS 1.2 */ 00093 #define MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 0xA9 /**< TLS 1.2 */ 00094 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 0xAA /**< TLS 1.2 */ 00095 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 0xAB /**< TLS 1.2 */ 00096 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 0xAC /**< TLS 1.2 */ 00097 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 0xAD /**< TLS 1.2 */ 00098 00099 #define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256 0xAE 00100 #define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384 0xAF 00101 #define MBEDTLS_TLS_PSK_WITH_NULL_SHA256 0xB0 /**< Weak! */ 00102 #define MBEDTLS_TLS_PSK_WITH_NULL_SHA384 0xB1 /**< Weak! */ 00103 00104 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 0xB2 00105 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 0xB3 00106 #define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256 0xB4 /**< Weak! */ 00107 #define MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384 0xB5 /**< Weak! */ 00108 00109 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 0xB6 00110 #define MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 0xB7 00111 #define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256 0xB8 /**< Weak! */ 00112 #define MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384 0xB9 /**< Weak! */ 00113 00114 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBA /**< TLS 1.2 */ 00115 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE /**< TLS 1.2 */ 00116 00117 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC0 /**< TLS 1.2 */ 00118 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4 /**< TLS 1.2 */ 00119 00120 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001 /**< Weak! */ 00121 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA 0xC002 /**< Not in SSL3! */ 00122 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC003 /**< Not in SSL3! */ 00123 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004 /**< Not in SSL3! */ 00124 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005 /**< Not in SSL3! */ 00125 00126 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006 /**< Weak! */ 00127 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 0xC007 /**< Not in SSL3! */ 00128 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC008 /**< Not in SSL3! */ 00129 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009 /**< Not in SSL3! */ 00130 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A /**< Not in SSL3! */ 00131 00132 #define MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B /**< Weak! */ 00133 #define MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA 0xC00C /**< Not in SSL3! */ 00134 #define MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA 0xC00D /**< Not in SSL3! */ 00135 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E /**< Not in SSL3! */ 00136 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F /**< Not in SSL3! */ 00137 00138 #define MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010 /**< Weak! */ 00139 #define MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA 0xC011 /**< Not in SSL3! */ 00140 #define MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0xC012 /**< Not in SSL3! */ 00141 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013 /**< Not in SSL3! */ 00142 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014 /**< Not in SSL3! */ 00143 00144 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023 /**< TLS 1.2 */ 00145 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024 /**< TLS 1.2 */ 00146 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025 /**< TLS 1.2 */ 00147 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026 /**< TLS 1.2 */ 00148 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027 /**< TLS 1.2 */ 00149 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028 /**< TLS 1.2 */ 00150 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029 /**< TLS 1.2 */ 00151 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A /**< TLS 1.2 */ 00152 00153 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B /**< TLS 1.2 */ 00154 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C /**< TLS 1.2 */ 00155 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D /**< TLS 1.2 */ 00156 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E /**< TLS 1.2 */ 00157 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F /**< TLS 1.2 */ 00158 #define MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030 /**< TLS 1.2 */ 00159 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031 /**< TLS 1.2 */ 00160 #define MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032 /**< TLS 1.2 */ 00161 00162 #define MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA 0xC033 /**< Not in SSL3! */ 00163 #define MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0xC034 /**< Not in SSL3! */ 00164 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035 /**< Not in SSL3! */ 00165 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036 /**< Not in SSL3! */ 00166 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037 /**< Not in SSL3! */ 00167 #define MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038 /**< Not in SSL3! */ 00168 #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039 /**< Weak! No SSL3! */ 00169 #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A /**< Weak! No SSL3! */ 00170 #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B /**< Weak! No SSL3! */ 00171 00172 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072 /**< Not in SSL3! */ 00173 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073 /**< Not in SSL3! */ 00174 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074 /**< Not in SSL3! */ 00175 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC075 /**< Not in SSL3! */ 00176 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076 /**< Not in SSL3! */ 00177 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077 /**< Not in SSL3! */ 00178 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC078 /**< Not in SSL3! */ 00179 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC079 /**< Not in SSL3! */ 00180 00181 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A /**< TLS 1.2 */ 00182 #define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B /**< TLS 1.2 */ 00183 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C /**< TLS 1.2 */ 00184 #define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D /**< TLS 1.2 */ 00185 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086 /**< TLS 1.2 */ 00186 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087 /**< TLS 1.2 */ 00187 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088 /**< TLS 1.2 */ 00188 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC089 /**< TLS 1.2 */ 00189 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08A /**< TLS 1.2 */ 00190 #define MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08B /**< TLS 1.2 */ 00191 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08C /**< TLS 1.2 */ 00192 #define MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08D /**< TLS 1.2 */ 00193 00194 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC08E /**< TLS 1.2 */ 00195 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC08F /**< TLS 1.2 */ 00196 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC090 /**< TLS 1.2 */ 00197 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC091 /**< TLS 1.2 */ 00198 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC092 /**< TLS 1.2 */ 00199 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC093 /**< TLS 1.2 */ 00200 00201 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094 00202 #define MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095 00203 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096 00204 #define MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097 00205 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098 00206 #define MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099 00207 #define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A /**< Not in SSL3! */ 00208 #define MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B /**< Not in SSL3! */ 00209 00210 #define MBEDTLS_TLS_RSA_WITH_AES_128_CCM 0xC09C /**< TLS 1.2 */ 00211 #define MBEDTLS_TLS_RSA_WITH_AES_256_CCM 0xC09D /**< TLS 1.2 */ 00212 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM 0xC09E /**< TLS 1.2 */ 00213 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM 0xC09F /**< TLS 1.2 */ 00214 #define MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8 0xC0A0 /**< TLS 1.2 */ 00215 #define MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8 0xC0A1 /**< TLS 1.2 */ 00216 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0A2 /**< TLS 1.2 */ 00217 #define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0A3 /**< TLS 1.2 */ 00218 #define MBEDTLS_TLS_PSK_WITH_AES_128_CCM 0xC0A4 /**< TLS 1.2 */ 00219 #define MBEDTLS_TLS_PSK_WITH_AES_256_CCM 0xC0A5 /**< TLS 1.2 */ 00220 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM 0xC0A6 /**< TLS 1.2 */ 00221 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM 0xC0A7 /**< TLS 1.2 */ 00222 #define MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8 0xC0A8 /**< TLS 1.2 */ 00223 #define MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8 0xC0A9 /**< TLS 1.2 */ 00224 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8 0xC0AA /**< TLS 1.2 */ 00225 #define MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8 0xC0AB /**< TLS 1.2 */ 00226 /* The last two are named with PSK_DHE in the RFC, which looks like a typo */ 00227 00228 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0AC /**< TLS 1.2 */ 00229 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0AD /**< TLS 1.2 */ 00230 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0AE /**< TLS 1.2 */ 00231 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0AF /**< TLS 1.2 */ 00232 00233 #define MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 0xC0FF /**< experimental */ 00234 00235 /* Reminder: update mbedtls_ssl_premaster_secret when adding a new key exchange. 00236 * Reminder: update MBEDTLS_KEY_EXCHANGE__xxx below 00237 */ 00238 typedef enum { 00239 MBEDTLS_KEY_EXCHANGE_NONE = 0, 00240 MBEDTLS_KEY_EXCHANGE_RSA, 00241 MBEDTLS_KEY_EXCHANGE_DHE_RSA, 00242 MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, 00243 MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, 00244 MBEDTLS_KEY_EXCHANGE_PSK, 00245 MBEDTLS_KEY_EXCHANGE_DHE_PSK, 00246 MBEDTLS_KEY_EXCHANGE_RSA_PSK, 00247 MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, 00248 MBEDTLS_KEY_EXCHANGE_ECDH_RSA, 00249 MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, 00250 MBEDTLS_KEY_EXCHANGE_ECJPAKE, 00251 } mbedtls_key_exchange_type_t; 00252 00253 /* Key exchanges using a certificate */ 00254 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ 00255 defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 00256 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 00257 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 00258 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ 00259 defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ 00260 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) 00261 #define MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED 00262 #endif 00263 00264 /* Key exchanges allowing client certificate requests */ 00265 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ 00266 defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 00267 defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ 00268 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 00269 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ 00270 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) 00271 #define MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED 00272 #endif 00273 00274 /* Key exchanges involving server signature in ServerKeyExchange */ 00275 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 00276 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 00277 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) 00278 #define MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED 00279 #endif 00280 00281 /* Key exchanges using ECDH */ 00282 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ 00283 defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) 00284 #define MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED 00285 #endif 00286 00287 /* Key exchanges that don't involve ephemeral keys */ 00288 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ 00289 defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ 00290 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ 00291 defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) 00292 #define MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED 00293 #endif 00294 00295 /* Key exchanges that involve ephemeral keys */ 00296 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 00297 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ 00298 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 00299 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ 00300 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 00301 defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) 00302 #define MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED 00303 #endif 00304 00305 /* Key exchanges using a PSK */ 00306 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ 00307 defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ 00308 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ 00309 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) 00310 #define MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED 00311 #endif 00312 00313 /* Key exchanges using DHE */ 00314 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ 00315 defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) 00316 #define MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED 00317 #endif 00318 00319 /* Key exchanges using ECDHE */ 00320 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ 00321 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ 00322 defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) 00323 #define MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED 00324 #endif 00325 00326 typedef struct mbedtls_ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t; 00327 00328 #define MBEDTLS_CIPHERSUITE_WEAK 0x01 /**< Weak ciphersuite flag */ 00329 #define MBEDTLS_CIPHERSUITE_SHORT_TAG 0x02 /**< Short authentication tag, 00330 eg for CCM_8 */ 00331 #define MBEDTLS_CIPHERSUITE_NODTLS 0x04 /**< Can't be used with DTLS */ 00332 00333 /** 00334 * \brief This structure is used for storing ciphersuite information 00335 */ 00336 struct mbedtls_ssl_ciphersuite_t 00337 { 00338 int id; 00339 const char * name; 00340 00341 mbedtls_cipher_type_t cipher; 00342 mbedtls_md_type_t mac; 00343 mbedtls_key_exchange_type_t key_exchange; 00344 00345 int min_major_ver; 00346 int min_minor_ver; 00347 int max_major_ver; 00348 int max_minor_ver; 00349 00350 unsigned char flags; 00351 }; 00352 00353 const int *mbedtls_ssl_list_ciphersuites( void ); 00354 00355 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_string( const char *ciphersuite_name ); 00356 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_id( int ciphersuite_id ); 00357 00358 #if defined(MBEDTLS_PK_C) 00359 mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg( const mbedtls_ssl_ciphersuite_t *info ); 00360 mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphersuite_t *info ); 00361 #endif 00362 00363 int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ); 00364 int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ); 00365 00366 #if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) 00367 static inline int mbedtls_ssl_ciphersuite_has_pfs( const mbedtls_ssl_ciphersuite_t *info ) 00368 { 00369 switch( info->key_exchange ) 00370 { 00371 case MBEDTLS_KEY_EXCHANGE_DHE_RSA: 00372 case MBEDTLS_KEY_EXCHANGE_DHE_PSK: 00373 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: 00374 case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: 00375 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: 00376 case MBEDTLS_KEY_EXCHANGE_ECJPAKE: 00377 return( 1 ); 00378 00379 default: 00380 return( 0 ); 00381 } 00382 } 00383 #endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ 00384 00385 #if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) 00386 static inline int mbedtls_ssl_ciphersuite_no_pfs( const mbedtls_ssl_ciphersuite_t *info ) 00387 { 00388 switch( info->key_exchange ) 00389 { 00390 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: 00391 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: 00392 case MBEDTLS_KEY_EXCHANGE_RSA: 00393 case MBEDTLS_KEY_EXCHANGE_PSK: 00394 case MBEDTLS_KEY_EXCHANGE_RSA_PSK: 00395 return( 1 ); 00396 00397 default: 00398 return( 0 ); 00399 } 00400 } 00401 #endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ 00402 00403 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) 00404 static inline int mbedtls_ssl_ciphersuite_uses_ecdh( const mbedtls_ssl_ciphersuite_t *info ) 00405 { 00406 switch( info->key_exchange ) 00407 { 00408 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: 00409 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: 00410 return( 1 ); 00411 00412 default: 00413 return( 0 ); 00414 } 00415 } 00416 #endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED */ 00417 00418 static inline int mbedtls_ssl_ciphersuite_cert_req_allowed( const mbedtls_ssl_ciphersuite_t *info ) 00419 { 00420 switch( info->key_exchange ) 00421 { 00422 case MBEDTLS_KEY_EXCHANGE_RSA: 00423 case MBEDTLS_KEY_EXCHANGE_DHE_RSA: 00424 case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: 00425 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: 00426 case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: 00427 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: 00428 return( 1 ); 00429 00430 default: 00431 return( 0 ); 00432 } 00433 } 00434 00435 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) 00436 static inline int mbedtls_ssl_ciphersuite_uses_dhe( const mbedtls_ssl_ciphersuite_t *info ) 00437 { 00438 switch( info->key_exchange ) 00439 { 00440 case MBEDTLS_KEY_EXCHANGE_DHE_RSA: 00441 case MBEDTLS_KEY_EXCHANGE_DHE_PSK: 00442 return( 1 ); 00443 00444 default: 00445 return( 0 ); 00446 } 00447 } 00448 #endif /* MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) */ 00449 00450 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) 00451 static inline int mbedtls_ssl_ciphersuite_uses_ecdhe( const mbedtls_ssl_ciphersuite_t *info ) 00452 { 00453 switch( info->key_exchange ) 00454 { 00455 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: 00456 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: 00457 case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: 00458 return( 1 ); 00459 00460 default: 00461 return( 0 ); 00462 } 00463 } 00464 #endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) */ 00465 00466 #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) 00467 static inline int mbedtls_ssl_ciphersuite_uses_server_signature( const mbedtls_ssl_ciphersuite_t *info ) 00468 { 00469 switch( info->key_exchange ) 00470 { 00471 case MBEDTLS_KEY_EXCHANGE_DHE_RSA: 00472 case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA: 00473 case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA: 00474 return( 1 ); 00475 00476 default: 00477 return( 0 ); 00478 } 00479 } 00480 #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ 00481 00482 #ifdef __cplusplus 00483 } 00484 #endif 00485 00486 #endif /* ssl_ciphersuites.h */
Generated on Tue Jul 12 2022 14:24:38 by
