Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ssl_ciphersuites.c Source File

ssl_ciphersuites.c

Go to the documentation of this file.
00001 /**
00002  * \file ssl_ciphersuites.c
00003  *
00004  * \brief SSL ciphersuites for mbed TLS
00005  *
00006  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
00007  *  SPDX-License-Identifier: Apache-2.0
00008  *
00009  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
00010  *  not use this file except in compliance with the License.
00011  *  You may obtain a copy of the License at
00012  *
00013  *  http://www.apache.org/licenses/LICENSE-2.0
00014  *
00015  *  Unless required by applicable law or agreed to in writing, software
00016  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00017  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00018  *  See the License for the specific language governing permissions and
00019  *  limitations under the License.
00020  *
00021  *  This file is part of mbed TLS (https://tls.mbed.org)
00022  */
00023 
00024 #if !defined(MBEDTLS_CONFIG_FILE)
00025 #include "mbedtls/config.h"
00026 #else
00027 #include MBEDTLS_CONFIG_FILE
00028 #endif
00029 
00030 #if defined(MBEDTLS_SSL_TLS_C)
00031 
00032 #if defined(MBEDTLS_PLATFORM_C)
00033 #include "mbedtls/platform.h"
00034 #else
00035 #include <stdlib.h>
00036 #endif
00037 
00038 #include "mbedtls/ssl_ciphersuites.h"
00039 #include "mbedtls/ssl.h"
00040 
00041 #include <string.h>
00042 
00043 /*
00044  * Ordered from most preferred to least preferred in terms of security.
00045  *
00046  * Current rule (except rc4, weak and null which come last):
00047  * 1. By key exchange:
00048  *    Forward-secure non-PSK > forward-secure PSK > ECJPAKE > other non-PSK > other PSK
00049  * 2. By key length and cipher:
00050  *    AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES
00051  * 3. By cipher mode when relevant GCM > CCM > CBC > CCM_8
00052  * 4. By hash function used when relevant
00053  * 5. By key exchange/auth again: EC > non-EC
00054  */
00055 static const int ciphersuite_preference[] =
00056 {
00057 #if defined(MBEDTLS_SSL_CIPHERSUITES)
00058     MBEDTLS_SSL_CIPHERSUITES,
00059 #else
00060     /* All AES-256 ephemeral suites */
00061     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
00062     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
00063     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
00064     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM,
00065     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM,
00066     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
00067     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
00068     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
00069     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
00070     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
00071     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
00072     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8,
00073     MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8,
00074 
00075     /* All CAMELLIA-256 ephemeral suites */
00076     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
00077     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00078     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00079     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
00080     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
00081     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
00082     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
00083 
00084     /* All AES-128 ephemeral suites */
00085     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
00086     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
00087     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
00088     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM,
00089     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM,
00090     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
00091     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
00092     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
00093     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
00094     MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
00095     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
00096     MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,
00097     MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8,
00098 
00099     /* All CAMELLIA-128 ephemeral suites */
00100     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
00101     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00102     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00103     MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
00104     MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00105     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00106     MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
00107 
00108     /* All remaining >= 128-bit ephemeral suites */
00109     MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
00110     MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
00111     MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
00112 
00113     /* The PSK ephemeral suites */
00114     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
00115     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM,
00116     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
00117     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
00118     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
00119     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
00120     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00121     MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00122     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00123     MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8,
00124 
00125     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
00126     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM,
00127     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
00128     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
00129     MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
00130     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
00131     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00132     MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00133     MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00134     MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8,
00135 
00136     MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
00137     MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
00138 
00139     /* The ECJPAKE suite */
00140     MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8,
00141 
00142     /* All AES-256 suites */
00143     MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384,
00144     MBEDTLS_TLS_RSA_WITH_AES_256_CCM,
00145     MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256,
00146     MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA,
00147     MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
00148     MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
00149     MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
00150     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
00151     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
00152     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
00153     MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8,
00154 
00155     /* All CAMELLIA-256 suites */
00156     MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00157     MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
00158     MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
00159     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00160     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
00161     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
00162     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
00163 
00164     /* All AES-128 suites */
00165     MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256,
00166     MBEDTLS_TLS_RSA_WITH_AES_128_CCM,
00167     MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256,
00168     MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA,
00169     MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
00170     MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
00171     MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
00172     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
00173     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
00174     MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
00175     MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8,
00176 
00177     /* All CAMELLIA-128 suites */
00178     MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00179     MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00180     MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
00181     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00182     MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00183     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
00184     MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
00185 
00186     /* All remaining >= 128-bit suites */
00187     MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA,
00188     MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
00189     MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
00190 
00191     /* The RSA PSK suites */
00192     MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
00193     MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
00194     MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
00195     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00196     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00197 
00198     MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
00199     MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
00200     MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
00201     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00202     MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00203 
00204     MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
00205 
00206     /* The PSK suites */
00207     MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384,
00208     MBEDTLS_TLS_PSK_WITH_AES_256_CCM,
00209     MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384,
00210     MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA,
00211     MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00212     MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00213     MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8,
00214 
00215     MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256,
00216     MBEDTLS_TLS_PSK_WITH_AES_128_CCM,
00217     MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256,
00218     MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA,
00219     MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00220     MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00221     MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8,
00222 
00223     MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA,
00224 
00225     /* RC4 suites */
00226     MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
00227     MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA,
00228     MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA,
00229     MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA,
00230     MBEDTLS_TLS_RSA_WITH_RC4_128_SHA,
00231     MBEDTLS_TLS_RSA_WITH_RC4_128_MD5,
00232     MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA,
00233     MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
00234     MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA,
00235     MBEDTLS_TLS_PSK_WITH_RC4_128_SHA,
00236 
00237     /* Weak suites */
00238     MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA,
00239     MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA,
00240 
00241     /* NULL suites */
00242     MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA,
00243     MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA,
00244     MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384,
00245     MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256,
00246     MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA,
00247     MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384,
00248     MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256,
00249     MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA,
00250 
00251     MBEDTLS_TLS_RSA_WITH_NULL_SHA256,
00252     MBEDTLS_TLS_RSA_WITH_NULL_SHA,
00253     MBEDTLS_TLS_RSA_WITH_NULL_MD5,
00254     MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA,
00255     MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA,
00256     MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384,
00257     MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256,
00258     MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA,
00259     MBEDTLS_TLS_PSK_WITH_NULL_SHA384,
00260     MBEDTLS_TLS_PSK_WITH_NULL_SHA256,
00261     MBEDTLS_TLS_PSK_WITH_NULL_SHA,
00262 
00263 #endif /* MBEDTLS_SSL_CIPHERSUITES */
00264     0
00265 };
00266 
00267 static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] =
00268 {
00269 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
00270 #if defined(MBEDTLS_AES_C)
00271 #if defined(MBEDTLS_SHA1_C)
00272 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00273     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
00274       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00275       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00276       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00277       0 },
00278     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
00279       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00280       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00281       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00282       0 },
00283 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00284 #endif /* MBEDTLS_SHA1_C */
00285 #if defined(MBEDTLS_SHA256_C)
00286 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00287     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
00288       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00289       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00290       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00291       0 },
00292 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00293 #if defined(MBEDTLS_GCM_C)
00294     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
00295       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00296       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00297       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00298       0 },
00299 #endif /* MBEDTLS_GCM_C */
00300 #endif /* MBEDTLS_SHA256_C */
00301 #if defined(MBEDTLS_SHA512_C)
00302 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00303     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
00304       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00305       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00306       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00307       0 },
00308 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00309 #if defined(MBEDTLS_GCM_C)
00310     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
00311       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00312       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00313       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00314       0 },
00315 #endif /* MBEDTLS_GCM_C */
00316 #endif /* MBEDTLS_SHA512_C */
00317 #if defined(MBEDTLS_CCM_C)
00318     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM",
00319       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00320       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00321       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00322       0 },
00323     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8",
00324       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00325       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00326       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00327       MBEDTLS_CIPHERSUITE_SHORT_TAG },
00328     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM",
00329       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00330       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00331       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00332       0 },
00333     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8",
00334       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00335       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00336       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00337       MBEDTLS_CIPHERSUITE_SHORT_TAG },
00338 #endif /* MBEDTLS_CCM_C */
00339 #endif /* MBEDTLS_AES_C */
00340 
00341 #if defined(MBEDTLS_CAMELLIA_C)
00342 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00343 #if defined(MBEDTLS_SHA256_C)
00344     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
00345       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00346       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00347       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00348       0 },
00349 #endif /* MBEDTLS_SHA256_C */
00350 #if defined(MBEDTLS_SHA512_C)
00351     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
00352       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00353       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00354       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00355       0 },
00356 #endif /* MBEDTLS_SHA512_C */
00357 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00358 
00359 #if defined(MBEDTLS_GCM_C)
00360 #if defined(MBEDTLS_SHA256_C)
00361     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
00362       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00363       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00364       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00365       0 },
00366 #endif /* MBEDTLS_SHA256_C */
00367 #if defined(MBEDTLS_SHA512_C)
00368     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
00369       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00370       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00371       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00372       0 },
00373 #endif /* MBEDTLS_SHA512_C */
00374 #endif /* MBEDTLS_GCM_C */
00375 #endif /* MBEDTLS_CAMELLIA_C */
00376 
00377 #if defined(MBEDTLS_DES_C)
00378 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00379 #if defined(MBEDTLS_SHA1_C)
00380     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
00381       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00382       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00383       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00384       0 },
00385 #endif /* MBEDTLS_SHA1_C */
00386 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00387 #endif /* MBEDTLS_DES_C */
00388 
00389 #if defined(MBEDTLS_ARC4_C)
00390 #if defined(MBEDTLS_SHA1_C)
00391     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
00392       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00393       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00394       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00395       MBEDTLS_CIPHERSUITE_NODTLS },
00396 #endif /* MBEDTLS_SHA1_C */
00397 #endif /* MBEDTLS_ARC4_C */
00398 
00399 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
00400 #if defined(MBEDTLS_SHA1_C)
00401     { MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
00402       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
00403       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00404       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00405       MBEDTLS_CIPHERSUITE_WEAK },
00406 #endif /* MBEDTLS_SHA1_C */
00407 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
00408 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
00409 
00410 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
00411 #if defined(MBEDTLS_AES_C)
00412 #if defined(MBEDTLS_SHA1_C)
00413 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00414     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
00415       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00416       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00417       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00418       0 },
00419     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
00420       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00421       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00422       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00423       0 },
00424 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00425 #endif /* MBEDTLS_SHA1_C */
00426 #if defined(MBEDTLS_SHA256_C)
00427 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00428     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
00429       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00430       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00431       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00432       0 },
00433 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00434 #if defined(MBEDTLS_GCM_C)
00435     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
00436       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00437       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00438       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00439       0 },
00440 #endif /* MBEDTLS_GCM_C */
00441 #endif /* MBEDTLS_SHA256_C */
00442 #if defined(MBEDTLS_SHA512_C)
00443 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00444     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
00445       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00446       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00447       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00448       0 },
00449 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00450 #if defined(MBEDTLS_GCM_C)
00451     { MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
00452       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00453       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00454       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00455       0 },
00456 #endif /* MBEDTLS_GCM_C */
00457 #endif /* MBEDTLS_SHA512_C */
00458 #endif /* MBEDTLS_AES_C */
00459 
00460 #if defined(MBEDTLS_CAMELLIA_C)
00461 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00462 #if defined(MBEDTLS_SHA256_C)
00463     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00464       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00465       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00466       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00467       0 },
00468 #endif /* MBEDTLS_SHA256_C */
00469 #if defined(MBEDTLS_SHA512_C)
00470     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
00471       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00472       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00473       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00474       0 },
00475 #endif /* MBEDTLS_SHA512_C */
00476 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00477 
00478 #if defined(MBEDTLS_GCM_C)
00479 #if defined(MBEDTLS_SHA256_C)
00480     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00481       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00482       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00483       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00484       0 },
00485 #endif /* MBEDTLS_SHA256_C */
00486 #if defined(MBEDTLS_SHA512_C)
00487     { MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00488       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00489       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00490       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00491       0 },
00492 #endif /* MBEDTLS_SHA512_C */
00493 #endif /* MBEDTLS_GCM_C */
00494 #endif /* MBEDTLS_CAMELLIA_C */
00495 
00496 #if defined(MBEDTLS_DES_C)
00497 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00498 #if defined(MBEDTLS_SHA1_C)
00499     { MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
00500       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00501       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00502       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00503       0 },
00504 #endif /* MBEDTLS_SHA1_C */
00505 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00506 #endif /* MBEDTLS_DES_C */
00507 
00508 #if defined(MBEDTLS_ARC4_C)
00509 #if defined(MBEDTLS_SHA1_C)
00510     { MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
00511       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00512       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00513       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00514       MBEDTLS_CIPHERSUITE_NODTLS },
00515 #endif /* MBEDTLS_SHA1_C */
00516 #endif /* MBEDTLS_ARC4_C */
00517 
00518 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
00519 #if defined(MBEDTLS_SHA1_C)
00520     { MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
00521       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
00522       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00523       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00524       MBEDTLS_CIPHERSUITE_WEAK },
00525 #endif /* MBEDTLS_SHA1_C */
00526 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
00527 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
00528 
00529 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
00530 #if defined(MBEDTLS_AES_C)
00531 #if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_GCM_C)
00532     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
00533       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00534       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00535       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00536       0 },
00537 #endif /* MBEDTLS_SHA512_C && MBEDTLS_GCM_C */
00538 
00539 #if defined(MBEDTLS_SHA256_C)
00540 #if defined(MBEDTLS_GCM_C)
00541     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
00542       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00543       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00544       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00545       0 },
00546 #endif /* MBEDTLS_GCM_C */
00547 
00548 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00549     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
00550       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00551       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00552       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00553       0 },
00554 
00555     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
00556       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00557       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00558       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00559       0 },
00560 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00561 #endif /* MBEDTLS_SHA256_C */
00562 
00563 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00564 #if defined(MBEDTLS_SHA1_C)
00565     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
00566       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00567       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00568       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00569       0 },
00570 
00571     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
00572       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00573       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00574       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00575       0 },
00576 #endif /* MBEDTLS_SHA1_C */
00577 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00578 #if defined(MBEDTLS_CCM_C)
00579     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM, "TLS-DHE-RSA-WITH-AES-256-CCM",
00580       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00581       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00582       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00583       0 },
00584     { MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8, "TLS-DHE-RSA-WITH-AES-256-CCM-8",
00585       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00586       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00587       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00588       MBEDTLS_CIPHERSUITE_SHORT_TAG },
00589     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM, "TLS-DHE-RSA-WITH-AES-128-CCM",
00590       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00591       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00592       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00593       0 },
00594     { MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8, "TLS-DHE-RSA-WITH-AES-128-CCM-8",
00595       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00596       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00597       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00598       MBEDTLS_CIPHERSUITE_SHORT_TAG },
00599 #endif /* MBEDTLS_CCM_C */
00600 #endif /* MBEDTLS_AES_C */
00601 
00602 #if defined(MBEDTLS_CAMELLIA_C)
00603 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00604 #if defined(MBEDTLS_SHA256_C)
00605     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00606       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00607       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00608       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00609       0 },
00610 
00611     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
00612       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00613       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00614       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00615       0 },
00616 #endif /* MBEDTLS_SHA256_C */
00617 
00618 #if defined(MBEDTLS_SHA1_C)
00619     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
00620       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00621       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00622       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00623       0 },
00624 
00625     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
00626       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00627       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00628       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00629       0 },
00630 #endif /* MBEDTLS_SHA1_C */
00631 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00632 #if defined(MBEDTLS_GCM_C)
00633 #if defined(MBEDTLS_SHA256_C)
00634     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00635       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00636       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00637       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00638       0 },
00639 #endif /* MBEDTLS_SHA256_C */
00640 
00641 #if defined(MBEDTLS_SHA512_C)
00642     { MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00643       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00644       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00645       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00646       0 },
00647 #endif /* MBEDTLS_SHA512_C */
00648 #endif /* MBEDTLS_GCM_C */
00649 #endif /* MBEDTLS_CAMELLIA_C */
00650 
00651 #if defined(MBEDTLS_DES_C)
00652 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00653 #if defined(MBEDTLS_SHA1_C)
00654     { MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
00655       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
00656       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00657       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00658       0 },
00659 #endif /* MBEDTLS_SHA1_C */
00660 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00661 #endif /* MBEDTLS_DES_C */
00662 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */
00663 
00664 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
00665 #if defined(MBEDTLS_AES_C)
00666 #if defined(MBEDTLS_SHA512_C) && defined(MBEDTLS_GCM_C)
00667     { MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
00668       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA,
00669       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00670       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00671       0 },
00672 #endif /* MBEDTLS_SHA512_C && MBEDTLS_GCM_C */
00673 
00674 #if defined(MBEDTLS_SHA256_C)
00675 #if defined(MBEDTLS_GCM_C)
00676     { MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
00677       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00678       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00679       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00680       0 },
00681 #endif /* MBEDTLS_GCM_C */
00682 
00683 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00684     { MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
00685       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00686       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00687       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00688       0 },
00689 
00690     { MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
00691       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00692       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00693       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00694       0 },
00695 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00696 #endif /* MBEDTLS_SHA256_C */
00697 
00698 #if defined(MBEDTLS_SHA1_C)
00699 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00700     { MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
00701       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
00702       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00703       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00704       0 },
00705 
00706     { MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
00707       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
00708       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00709       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00710       0 },
00711 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00712 #endif /* MBEDTLS_SHA1_C */
00713 #if defined(MBEDTLS_CCM_C)
00714     { MBEDTLS_TLS_RSA_WITH_AES_256_CCM, "TLS-RSA-WITH-AES-256-CCM",
00715       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00716       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00717       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00718       0 },
00719     { MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8, "TLS-RSA-WITH-AES-256-CCM-8",
00720       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00721       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00722       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00723       MBEDTLS_CIPHERSUITE_SHORT_TAG },
00724     { MBEDTLS_TLS_RSA_WITH_AES_128_CCM, "TLS-RSA-WITH-AES-128-CCM",
00725       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00726       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00727       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00728       0 },
00729     { MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8, "TLS-RSA-WITH-AES-128-CCM-8",
00730       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00731       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00732       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00733       MBEDTLS_CIPHERSUITE_SHORT_TAG },
00734 #endif /* MBEDTLS_CCM_C */
00735 #endif /* MBEDTLS_AES_C */
00736 
00737 #if defined(MBEDTLS_CAMELLIA_C)
00738 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00739 #if defined(MBEDTLS_SHA256_C)
00740     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00741       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00742       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00743       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00744       0 },
00745 
00746     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
00747       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00748       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00749       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00750       0 },
00751 #endif /* MBEDTLS_SHA256_C */
00752 
00753 #if defined(MBEDTLS_SHA1_C)
00754     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
00755       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
00756       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00757       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00758       0 },
00759 
00760     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
00761       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
00762       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00763       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00764       0 },
00765 #endif /* MBEDTLS_SHA1_C */
00766 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00767 
00768 #if defined(MBEDTLS_GCM_C)
00769 #if defined(MBEDTLS_SHA256_C)
00770     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00771       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
00772       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00773       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00774       0 },
00775 #endif /* MBEDTLS_SHA256_C */
00776 
00777 #if defined(MBEDTLS_SHA1_C)
00778     { MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00779       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA,
00780       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00781       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00782       0 },
00783 #endif /* MBEDTLS_SHA1_C */
00784 #endif /* MBEDTLS_GCM_C */
00785 #endif /* MBEDTLS_CAMELLIA_C */
00786 
00787 #if defined(MBEDTLS_DES_C)
00788 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00789 #if defined(MBEDTLS_SHA1_C)
00790     { MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
00791       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
00792       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00793       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00794       0 },
00795 #endif /* MBEDTLS_SHA1_C */
00796 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00797 #endif /* MBEDTLS_DES_C */
00798 
00799 #if defined(MBEDTLS_ARC4_C)
00800 #if defined(MBEDTLS_MD5_C)
00801     { MBEDTLS_TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
00802       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_MD5, MBEDTLS_KEY_EXCHANGE_RSA,
00803       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00804       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00805       MBEDTLS_CIPHERSUITE_NODTLS },
00806 #endif
00807 
00808 #if defined(MBEDTLS_SHA1_C)
00809     { MBEDTLS_TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
00810       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
00811       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
00812       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00813       MBEDTLS_CIPHERSUITE_NODTLS },
00814 #endif
00815 #endif /* MBEDTLS_ARC4_C */
00816 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */
00817 
00818 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)
00819 #if defined(MBEDTLS_AES_C)
00820 #if defined(MBEDTLS_SHA1_C)
00821 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00822     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA",
00823       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00824       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00825       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00826       0 },
00827     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA",
00828       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00829       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00830       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00831       0 },
00832 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00833 #endif /* MBEDTLS_SHA1_C */
00834 #if defined(MBEDTLS_SHA256_C)
00835 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00836     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA256",
00837       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00838       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00839       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00840       0 },
00841 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00842 #if defined(MBEDTLS_GCM_C)
00843     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256",
00844       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00845       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00846       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00847       0 },
00848 #endif /* MBEDTLS_GCM_C */
00849 #endif /* MBEDTLS_SHA256_C */
00850 #if defined(MBEDTLS_SHA512_C)
00851 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00852     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384",
00853       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00854       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00855       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00856       0 },
00857 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00858 #if defined(MBEDTLS_GCM_C)
00859     { MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-AES-256-GCM-SHA384",
00860       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00861       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00862       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00863       0 },
00864 #endif /* MBEDTLS_GCM_C */
00865 #endif /* MBEDTLS_SHA512_C */
00866 #endif /* MBEDTLS_AES_C */
00867 
00868 #if defined(MBEDTLS_CAMELLIA_C)
00869 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00870 #if defined(MBEDTLS_SHA256_C)
00871     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00872       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00873       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00874       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00875       0 },
00876 #endif /* MBEDTLS_SHA256_C */
00877 #if defined(MBEDTLS_SHA512_C)
00878     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384",
00879       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00880       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00881       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00882       0 },
00883 #endif /* MBEDTLS_SHA512_C */
00884 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00885 
00886 #if defined(MBEDTLS_GCM_C)
00887 #if defined(MBEDTLS_SHA256_C)
00888     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00889       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00890       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00891       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00892       0 },
00893 #endif /* MBEDTLS_SHA256_C */
00894 #if defined(MBEDTLS_SHA512_C)
00895     { MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00896       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00897       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00898       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00899       0 },
00900 #endif /* MBEDTLS_SHA512_C */
00901 #endif /* MBEDTLS_GCM_C */
00902 #endif /* MBEDTLS_CAMELLIA_C */
00903 
00904 #if defined(MBEDTLS_DES_C)
00905 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00906 #if defined(MBEDTLS_SHA1_C)
00907     { MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-RSA-WITH-3DES-EDE-CBC-SHA",
00908       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00909       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00910       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00911       0 },
00912 #endif /* MBEDTLS_SHA1_C */
00913 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00914 #endif /* MBEDTLS_DES_C */
00915 
00916 #if defined(MBEDTLS_ARC4_C)
00917 #if defined(MBEDTLS_SHA1_C)
00918     { MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA, "TLS-ECDH-RSA-WITH-RC4-128-SHA",
00919       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00920       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00921       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00922       MBEDTLS_CIPHERSUITE_NODTLS },
00923 #endif /* MBEDTLS_SHA1_C */
00924 #endif /* MBEDTLS_ARC4_C */
00925 
00926 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
00927 #if defined(MBEDTLS_SHA1_C)
00928     { MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA, "TLS-ECDH-RSA-WITH-NULL-SHA",
00929       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_RSA,
00930       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00931       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00932       MBEDTLS_CIPHERSUITE_WEAK },
00933 #endif /* MBEDTLS_SHA1_C */
00934 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
00935 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */
00936 
00937 #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
00938 #if defined(MBEDTLS_AES_C)
00939 #if defined(MBEDTLS_SHA1_C)
00940 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00941     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA",
00942       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00943       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00944       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00945       0 },
00946     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA",
00947       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00948       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00949       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00950       0 },
00951 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00952 #endif /* MBEDTLS_SHA1_C */
00953 #if defined(MBEDTLS_SHA256_C)
00954 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00955     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA256",
00956       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00957       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00958       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00959       0 },
00960 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00961 #if defined(MBEDTLS_GCM_C)
00962     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256",
00963       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00964       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00965       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00966       0 },
00967 #endif /* MBEDTLS_GCM_C */
00968 #endif /* MBEDTLS_SHA256_C */
00969 #if defined(MBEDTLS_SHA512_C)
00970 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00971     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384",
00972       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00973       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00974       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00975       0 },
00976 #endif /* MBEDTLS_CIPHER_MODE_CBC */
00977 #if defined(MBEDTLS_GCM_C)
00978     { MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384",
00979       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00980       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00981       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00982       0 },
00983 #endif /* MBEDTLS_GCM_C */
00984 #endif /* MBEDTLS_SHA512_C */
00985 #endif /* MBEDTLS_AES_C */
00986 
00987 #if defined(MBEDTLS_CAMELLIA_C)
00988 #if defined(MBEDTLS_CIPHER_MODE_CBC)
00989 #if defined(MBEDTLS_SHA256_C)
00990     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
00991       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00992       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
00993       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
00994       0 },
00995 #endif /* MBEDTLS_SHA256_C */
00996 #if defined(MBEDTLS_SHA512_C)
00997     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
00998       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
00999       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01000       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01001       0 },
01002 #endif /* MBEDTLS_SHA512_C */
01003 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01004 
01005 #if defined(MBEDTLS_GCM_C)
01006 #if defined(MBEDTLS_SHA256_C)
01007     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
01008       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
01009       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01010       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01011       0 },
01012 #endif /* MBEDTLS_SHA256_C */
01013 #if defined(MBEDTLS_SHA512_C)
01014     { MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
01015       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
01016       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01017       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01018       0 },
01019 #endif /* MBEDTLS_SHA512_C */
01020 #endif /* MBEDTLS_GCM_C */
01021 #endif /* MBEDTLS_CAMELLIA_C */
01022 
01023 #if defined(MBEDTLS_DES_C)
01024 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01025 #if defined(MBEDTLS_SHA1_C)
01026     { MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-ECDSA-WITH-3DES-EDE-CBC-SHA",
01027       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
01028       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01029       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01030       0 },
01031 #endif /* MBEDTLS_SHA1_C */
01032 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01033 #endif /* MBEDTLS_DES_C */
01034 
01035 #if defined(MBEDTLS_ARC4_C)
01036 #if defined(MBEDTLS_SHA1_C)
01037     { MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA, "TLS-ECDH-ECDSA-WITH-RC4-128-SHA",
01038       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
01039       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01040       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01041       MBEDTLS_CIPHERSUITE_NODTLS },
01042 #endif /* MBEDTLS_SHA1_C */
01043 #endif /* MBEDTLS_ARC4_C */
01044 
01045 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
01046 #if defined(MBEDTLS_SHA1_C)
01047     { MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA, "TLS-ECDH-ECDSA-WITH-NULL-SHA",
01048       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA,
01049       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01050       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01051       MBEDTLS_CIPHERSUITE_WEAK },
01052 #endif /* MBEDTLS_SHA1_C */
01053 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
01054 #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
01055 
01056 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
01057 #if defined(MBEDTLS_AES_C)
01058 #if defined(MBEDTLS_GCM_C)
01059 #if defined(MBEDTLS_SHA256_C)
01060     { MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
01061       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01062       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01063       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01064       0 },
01065 #endif /* MBEDTLS_SHA256_C */
01066 
01067 #if defined(MBEDTLS_SHA512_C)
01068     { MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
01069       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,
01070       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01071       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01072       0 },
01073 #endif /* MBEDTLS_SHA512_C */
01074 #endif /* MBEDTLS_GCM_C */
01075 
01076 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01077 #if defined(MBEDTLS_SHA256_C)
01078     { MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
01079       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01080       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01081       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01082       0 },
01083 #endif /* MBEDTLS_SHA256_C */
01084 
01085 #if defined(MBEDTLS_SHA512_C)
01086     { MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
01087       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,
01088       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01089       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01090       0 },
01091 #endif /* MBEDTLS_SHA512_C */
01092 
01093 #if defined(MBEDTLS_SHA1_C)
01094     { MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
01095       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,
01096       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01097       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01098       0 },
01099 
01100     { MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
01101       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,
01102       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01103       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01104       0 },
01105 #endif /* MBEDTLS_SHA1_C */
01106 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01107 #if defined(MBEDTLS_CCM_C)
01108     { MBEDTLS_TLS_PSK_WITH_AES_256_CCM, "TLS-PSK-WITH-AES-256-CCM",
01109       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01110       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01111       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01112       0 },
01113     { MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8, "TLS-PSK-WITH-AES-256-CCM-8",
01114       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01115       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01116       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01117       MBEDTLS_CIPHERSUITE_SHORT_TAG },
01118     { MBEDTLS_TLS_PSK_WITH_AES_128_CCM, "TLS-PSK-WITH-AES-128-CCM",
01119       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01120       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01121       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01122       0 },
01123     { MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8, "TLS-PSK-WITH-AES-128-CCM-8",
01124       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01125       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01126       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01127       MBEDTLS_CIPHERSUITE_SHORT_TAG },
01128 #endif /* MBEDTLS_CCM_C */
01129 #endif /* MBEDTLS_AES_C */
01130 
01131 #if defined(MBEDTLS_CAMELLIA_C)
01132 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01133 #if defined(MBEDTLS_SHA256_C)
01134     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01135       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01136       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01137       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01138       0 },
01139 #endif /* MBEDTLS_SHA256_C */
01140 
01141 #if defined(MBEDTLS_SHA512_C)
01142     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01143       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,
01144       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01145       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01146       0 },
01147 #endif /* MBEDTLS_SHA512_C */
01148 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01149 
01150 #if defined(MBEDTLS_GCM_C)
01151 #if defined(MBEDTLS_SHA256_C)
01152     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01153       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01154       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01155       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01156       0 },
01157 #endif /* MBEDTLS_SHA256_C */
01158 
01159 #if defined(MBEDTLS_SHA512_C)
01160     { MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01161       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,
01162       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01163       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01164       0 },
01165 #endif /* MBEDTLS_SHA512_C */
01166 #endif /* MBEDTLS_GCM_C */
01167 #endif /* MBEDTLS_CAMELLIA_C */
01168 
01169 #if defined(MBEDTLS_DES_C)
01170 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01171 #if defined(MBEDTLS_SHA1_C)
01172     { MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
01173       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,
01174       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01175       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01176       0 },
01177 #endif /* MBEDTLS_SHA1_C */
01178 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01179 #endif /* MBEDTLS_DES_C */
01180 
01181 #if defined(MBEDTLS_ARC4_C)
01182 #if defined(MBEDTLS_SHA1_C)
01183     { MBEDTLS_TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
01184       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,
01185       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01186       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01187       MBEDTLS_CIPHERSUITE_NODTLS },
01188 #endif /* MBEDTLS_SHA1_C */
01189 #endif /* MBEDTLS_ARC4_C */
01190 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */
01191 
01192 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
01193 #if defined(MBEDTLS_AES_C)
01194 #if defined(MBEDTLS_GCM_C)
01195 #if defined(MBEDTLS_SHA256_C)
01196     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
01197       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01198       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01199       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01200       0 },
01201 #endif /* MBEDTLS_SHA256_C */
01202 
01203 #if defined(MBEDTLS_SHA512_C)
01204     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
01205       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01206       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01207       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01208       0 },
01209 #endif /* MBEDTLS_SHA512_C */
01210 #endif /* MBEDTLS_GCM_C */
01211 
01212 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01213 #if defined(MBEDTLS_SHA256_C)
01214     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
01215       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01216       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01217       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01218       0 },
01219 #endif /* MBEDTLS_SHA256_C */
01220 
01221 #if defined(MBEDTLS_SHA512_C)
01222     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
01223       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01224       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01225       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01226       0 },
01227 #endif /* MBEDTLS_SHA512_C */
01228 
01229 #if defined(MBEDTLS_SHA1_C)
01230     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
01231       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01232       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01233       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01234       0 },
01235 
01236     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
01237       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01238       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01239       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01240       0 },
01241 #endif /* MBEDTLS_SHA1_C */
01242 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01243 #if defined(MBEDTLS_CCM_C)
01244     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM, "TLS-DHE-PSK-WITH-AES-256-CCM",
01245       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01246       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01247       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01248       0 },
01249     { MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8, "TLS-DHE-PSK-WITH-AES-256-CCM-8",
01250       MBEDTLS_CIPHER_AES_256_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01251       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01252       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01253       MBEDTLS_CIPHERSUITE_SHORT_TAG },
01254     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM, "TLS-DHE-PSK-WITH-AES-128-CCM",
01255       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01256       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01257       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01258       0 },
01259     { MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8, "TLS-DHE-PSK-WITH-AES-128-CCM-8",
01260       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01261       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01262       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01263       MBEDTLS_CIPHERSUITE_SHORT_TAG },
01264 #endif /* MBEDTLS_CCM_C */
01265 #endif /* MBEDTLS_AES_C */
01266 
01267 #if defined(MBEDTLS_CAMELLIA_C)
01268 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01269 #if defined(MBEDTLS_SHA256_C)
01270     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01271       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01272       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01273       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01274       0 },
01275 #endif /* MBEDTLS_SHA256_C */
01276 
01277 #if defined(MBEDTLS_SHA512_C)
01278     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01279       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01280       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01281       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01282       0 },
01283 #endif /* MBEDTLS_SHA512_C */
01284 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01285 
01286 #if defined(MBEDTLS_GCM_C)
01287 #if defined(MBEDTLS_SHA256_C)
01288     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01289       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01290       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01291       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01292       0 },
01293 #endif /* MBEDTLS_SHA256_C */
01294 
01295 #if defined(MBEDTLS_SHA512_C)
01296     { MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01297       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01298       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01299       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01300       0 },
01301 #endif /* MBEDTLS_SHA512_C */
01302 #endif /* MBEDTLS_GCM_C */
01303 #endif /* MBEDTLS_CAMELLIA_C */
01304 
01305 #if defined(MBEDTLS_DES_C)
01306 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01307 #if defined(MBEDTLS_SHA1_C)
01308     { MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
01309       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01310       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01311       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01312       0 },
01313 #endif /* MBEDTLS_SHA1_C */
01314 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01315 #endif /* MBEDTLS_DES_C */
01316 
01317 #if defined(MBEDTLS_ARC4_C)
01318 #if defined(MBEDTLS_SHA1_C)
01319     { MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
01320       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01321       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01322       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01323       MBEDTLS_CIPHERSUITE_NODTLS },
01324 #endif /* MBEDTLS_SHA1_C */
01325 #endif /* MBEDTLS_ARC4_C */
01326 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */
01327 
01328 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
01329 #if defined(MBEDTLS_AES_C)
01330 
01331 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01332 #if defined(MBEDTLS_SHA256_C)
01333     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
01334       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01335       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01336       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01337       0 },
01338 #endif /* MBEDTLS_SHA256_C */
01339 
01340 #if defined(MBEDTLS_SHA512_C)
01341     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
01342       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01343       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01344       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01345       0 },
01346 #endif /* MBEDTLS_SHA512_C */
01347 
01348 #if defined(MBEDTLS_SHA1_C)
01349     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
01350       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01351       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01352       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01353       0 },
01354 
01355     { MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
01356       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01357       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01358       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01359       0 },
01360 #endif /* MBEDTLS_SHA1_C */
01361 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01362 #endif /* MBEDTLS_AES_C */
01363 
01364 #if defined(MBEDTLS_CAMELLIA_C)
01365 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01366 #if defined(MBEDTLS_SHA256_C)
01367     { MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01368       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01369       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01370       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01371       0 },
01372 #endif /* MBEDTLS_SHA256_C */
01373 
01374 #if defined(MBEDTLS_SHA512_C)
01375     { MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01376       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01377       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01378       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01379       0 },
01380 #endif /* MBEDTLS_SHA512_C */
01381 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01382 #endif /* MBEDTLS_CAMELLIA_C */
01383 
01384 #if defined(MBEDTLS_DES_C)
01385 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01386 #if defined(MBEDTLS_SHA1_C)
01387     { MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
01388       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01389       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01390       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01391       0 },
01392 #endif /* MBEDTLS_SHA1_C */
01393 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01394 #endif /* MBEDTLS_DES_C */
01395 
01396 #if defined(MBEDTLS_ARC4_C)
01397 #if defined(MBEDTLS_SHA1_C)
01398     { MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
01399       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01400       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01401       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01402       MBEDTLS_CIPHERSUITE_NODTLS },
01403 #endif /* MBEDTLS_SHA1_C */
01404 #endif /* MBEDTLS_ARC4_C */
01405 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
01406 
01407 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)
01408 #if defined(MBEDTLS_AES_C)
01409 #if defined(MBEDTLS_GCM_C)
01410 #if defined(MBEDTLS_SHA256_C)
01411     { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
01412       MBEDTLS_CIPHER_AES_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01413       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01414       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01415       0 },
01416 #endif /* MBEDTLS_SHA256_C */
01417 
01418 #if defined(MBEDTLS_SHA512_C)
01419     { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
01420       MBEDTLS_CIPHER_AES_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01421       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01422       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01423       0 },
01424 #endif /* MBEDTLS_SHA512_C */
01425 #endif /* MBEDTLS_GCM_C */
01426 
01427 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01428 #if defined(MBEDTLS_SHA256_C)
01429     { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
01430       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01431       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01432       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01433       0 },
01434 #endif /* MBEDTLS_SHA256_C */
01435 
01436 #if defined(MBEDTLS_SHA512_C)
01437     { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
01438       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01439       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01440       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01441       0 },
01442 #endif /* MBEDTLS_SHA512_C */
01443 
01444 #if defined(MBEDTLS_SHA1_C)
01445     { MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
01446       MBEDTLS_CIPHER_AES_128_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01447       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01448       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01449       0 },
01450 
01451     { MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
01452       MBEDTLS_CIPHER_AES_256_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01453       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01454       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01455       0 },
01456 #endif /* MBEDTLS_SHA1_C */
01457 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01458 #endif /* MBEDTLS_AES_C */
01459 
01460 #if defined(MBEDTLS_CAMELLIA_C)
01461 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01462 #if defined(MBEDTLS_SHA256_C)
01463     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01464       MBEDTLS_CIPHER_CAMELLIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01465       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01466       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01467       0 },
01468 #endif /* MBEDTLS_SHA256_C */
01469 
01470 #if defined(MBEDTLS_SHA512_C)
01471     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01472       MBEDTLS_CIPHER_CAMELLIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01473       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01474       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01475       0 },
01476 #endif /* MBEDTLS_SHA512_C */
01477 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01478 
01479 #if defined(MBEDTLS_GCM_C)
01480 #if defined(MBEDTLS_SHA256_C)
01481     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01482       MBEDTLS_CIPHER_CAMELLIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01483       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01484       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01485       0 },
01486 #endif /* MBEDTLS_SHA256_C */
01487 
01488 #if defined(MBEDTLS_SHA512_C)
01489     { MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01490       MBEDTLS_CIPHER_CAMELLIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01491       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01492       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01493       0 },
01494 #endif /* MBEDTLS_SHA512_C */
01495 #endif /* MBEDTLS_GCM_C */
01496 #endif /* MBEDTLS_CAMELLIA_C */
01497 
01498 #if defined(MBEDTLS_DES_C)
01499 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01500 #if defined(MBEDTLS_SHA1_C)
01501     { MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
01502       MBEDTLS_CIPHER_DES_EDE3_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01503       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01504       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01505       0 },
01506 #endif /* MBEDTLS_SHA1_C */
01507 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01508 #endif /* MBEDTLS_DES_C */
01509 
01510 #if defined(MBEDTLS_ARC4_C)
01511 #if defined(MBEDTLS_SHA1_C)
01512     { MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
01513       MBEDTLS_CIPHER_ARC4_128, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01514       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01515       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01516       MBEDTLS_CIPHERSUITE_NODTLS },
01517 #endif /* MBEDTLS_SHA1_C */
01518 #endif /* MBEDTLS_ARC4_C */
01519 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */
01520 
01521 #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
01522 #if defined(MBEDTLS_AES_C)
01523 #if defined(MBEDTLS_CCM_C)
01524     { MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8, "TLS-ECJPAKE-WITH-AES-128-CCM-8",
01525       MBEDTLS_CIPHER_AES_128_CCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECJPAKE,
01526       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01527       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01528       MBEDTLS_CIPHERSUITE_SHORT_TAG },
01529 #endif /* MBEDTLS_CCM_C */
01530 #endif /* MBEDTLS_AES_C */
01531 #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */
01532 
01533 #if defined(MBEDTLS_ENABLE_WEAK_CIPHERSUITES)
01534 #if defined(MBEDTLS_CIPHER_NULL_CIPHER)
01535 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
01536 #if defined(MBEDTLS_MD5_C)
01537     { MBEDTLS_TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
01538       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_MD5, MBEDTLS_KEY_EXCHANGE_RSA,
01539       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01540       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01541       MBEDTLS_CIPHERSUITE_WEAK },
01542 #endif
01543 
01544 #if defined(MBEDTLS_SHA1_C)
01545     { MBEDTLS_TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
01546       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
01547       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01548       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01549       MBEDTLS_CIPHERSUITE_WEAK },
01550 #endif
01551 
01552 #if defined(MBEDTLS_SHA256_C)
01553     { MBEDTLS_TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
01554       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA,
01555       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01556       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01557       MBEDTLS_CIPHERSUITE_WEAK },
01558 #endif
01559 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */
01560 
01561 #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
01562 #if defined(MBEDTLS_SHA1_C)
01563     { MBEDTLS_TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
01564       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_PSK,
01565       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01566       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01567       MBEDTLS_CIPHERSUITE_WEAK },
01568 #endif /* MBEDTLS_SHA1_C */
01569 
01570 #if defined(MBEDTLS_SHA256_C)
01571     { MBEDTLS_TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
01572       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK,
01573       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01574       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01575       MBEDTLS_CIPHERSUITE_WEAK },
01576 #endif
01577 
01578 #if defined(MBEDTLS_SHA512_C)
01579     { MBEDTLS_TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
01580       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK,
01581       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01582       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01583       MBEDTLS_CIPHERSUITE_WEAK },
01584 #endif
01585 #endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */
01586 
01587 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
01588 #if defined(MBEDTLS_SHA1_C)
01589     { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
01590       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01591       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01592       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01593       MBEDTLS_CIPHERSUITE_WEAK },
01594 #endif /* MBEDTLS_SHA1_C */
01595 
01596 #if defined(MBEDTLS_SHA256_C)
01597     { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
01598       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01599       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01600       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01601       MBEDTLS_CIPHERSUITE_WEAK },
01602 #endif
01603 
01604 #if defined(MBEDTLS_SHA512_C)
01605     { MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
01606       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK,
01607       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01608       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01609       MBEDTLS_CIPHERSUITE_WEAK },
01610 #endif
01611 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */
01612 
01613 #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
01614 #if defined(MBEDTLS_SHA1_C)
01615     { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
01616       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01617       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01618       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01619       MBEDTLS_CIPHERSUITE_WEAK },
01620 #endif /* MBEDTLS_SHA1_C */
01621 
01622 #if defined(MBEDTLS_SHA256_C)
01623     { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
01624       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01625       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01626       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01627       MBEDTLS_CIPHERSUITE_WEAK },
01628 #endif
01629 
01630 #if defined(MBEDTLS_SHA512_C)
01631     { MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
01632       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK,
01633       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01634       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01635       MBEDTLS_CIPHERSUITE_WEAK },
01636 #endif
01637 #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
01638 
01639 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)
01640 #if defined(MBEDTLS_SHA1_C)
01641     { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
01642       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01643       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01644       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01645       MBEDTLS_CIPHERSUITE_WEAK },
01646 #endif /* MBEDTLS_SHA1_C */
01647 
01648 #if defined(MBEDTLS_SHA256_C)
01649     { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
01650       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01651       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01652       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01653       MBEDTLS_CIPHERSUITE_WEAK },
01654 #endif
01655 
01656 #if defined(MBEDTLS_SHA512_C)
01657     { MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
01658       MBEDTLS_CIPHER_NULL, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK,
01659       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_1,
01660       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01661       MBEDTLS_CIPHERSUITE_WEAK },
01662 #endif
01663 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */
01664 #endif /* MBEDTLS_CIPHER_NULL_CIPHER */
01665 
01666 #if defined(MBEDTLS_DES_C)
01667 #if defined(MBEDTLS_CIPHER_MODE_CBC)
01668 #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
01669 #if defined(MBEDTLS_SHA1_C)
01670     { MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
01671       MBEDTLS_CIPHER_DES_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_DHE_RSA,
01672       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01673       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01674       MBEDTLS_CIPHERSUITE_WEAK },
01675 #endif /* MBEDTLS_SHA1_C */
01676 #endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */
01677 
01678 #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
01679 #if defined(MBEDTLS_SHA1_C)
01680     { MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
01681       MBEDTLS_CIPHER_DES_CBC, MBEDTLS_MD_SHA1, MBEDTLS_KEY_EXCHANGE_RSA,
01682       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_0,
01683       MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3,
01684       MBEDTLS_CIPHERSUITE_WEAK },
01685 #endif /* MBEDTLS_SHA1_C */
01686 #endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */
01687 #endif /* MBEDTLS_CIPHER_MODE_CBC */
01688 #endif /* MBEDTLS_DES_C */
01689 #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */
01690 
01691     { 0, "",
01692       MBEDTLS_CIPHER_NONE, MBEDTLS_MD_NONE, MBEDTLS_KEY_EXCHANGE_NONE,
01693       0, 0, 0, 0, 0 }
01694 };
01695 
01696 #if defined(MBEDTLS_SSL_CIPHERSUITES)
01697 const int *mbedtls_ssl_list_ciphersuites( void )
01698 {
01699     return( ciphersuite_preference );
01700 }
01701 #else
01702 #define MAX_CIPHERSUITES    sizeof( ciphersuite_definitions     ) /         \
01703                             sizeof( ciphersuite_definitions[0]  )
01704 static int supported_ciphersuites[MAX_CIPHERSUITES];
01705 static int supported_init = 0;
01706 
01707 const int *mbedtls_ssl_list_ciphersuites( void )
01708 {
01709     /*
01710      * On initial call filter out all ciphersuites not supported by current
01711      * build based on presence in the ciphersuite_definitions.
01712      */
01713     if( supported_init == 0 )
01714     {
01715         const int *p;
01716         int *q;
01717 
01718         for( p = ciphersuite_preference, q = supported_ciphersuites;
01719              *p != 0 && q < supported_ciphersuites + MAX_CIPHERSUITES - 1;
01720              p++ )
01721         {
01722 #if defined(MBEDTLS_REMOVE_ARC4_CIPHERSUITES)
01723             const mbedtls_ssl_ciphersuite_t *cs_info;
01724             if( ( cs_info = mbedtls_ssl_ciphersuite_from_id( *p ) ) != NULL &&
01725                 cs_info->cipher != MBEDTLS_CIPHER_ARC4_128 )
01726 #else
01727             if( mbedtls_ssl_ciphersuite_from_id( *p ) != NULL )
01728 #endif
01729                 *(q++) = *p;
01730         }
01731         *q = 0;
01732 
01733         supported_init = 1;
01734     }
01735 
01736     return( supported_ciphersuites );
01737 }
01738 #endif /* MBEDTLS_SSL_CIPHERSUITES */
01739 
01740 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_string(
01741                                                 const char *ciphersuite_name )
01742 {
01743     const mbedtls_ssl_ciphersuite_t *cur = ciphersuite_definitions;
01744 
01745     if( NULL == ciphersuite_name )
01746         return( NULL );
01747 
01748     while( cur->id != 0 )
01749     {
01750         if( 0 == strcmp( cur->name, ciphersuite_name ) )
01751             return( cur );
01752 
01753         cur++;
01754     }
01755 
01756     return( NULL );
01757 }
01758 
01759 const mbedtls_ssl_ciphersuite_t *mbedtls_ssl_ciphersuite_from_id( int ciphersuite )
01760 {
01761     const mbedtls_ssl_ciphersuite_t *cur = ciphersuite_definitions;
01762 
01763     while( cur->id != 0 )
01764     {
01765         if( cur->id == ciphersuite )
01766             return( cur );
01767 
01768         cur++;
01769     }
01770 
01771     return( NULL );
01772 }
01773 
01774 const char *mbedtls_ssl_get_ciphersuite_name( const int ciphersuite_id )
01775 {
01776     const mbedtls_ssl_ciphersuite_t *cur;
01777 
01778     cur = mbedtls_ssl_ciphersuite_from_id( ciphersuite_id );
01779 
01780     if( cur == NULL )
01781         return( "unknown" );
01782 
01783     return( cur->name );
01784 }
01785 
01786 int mbedtls_ssl_get_ciphersuite_id( const char *ciphersuite_name )
01787 {
01788     const mbedtls_ssl_ciphersuite_t *cur;
01789 
01790     cur = mbedtls_ssl_ciphersuite_from_string( ciphersuite_name );
01791 
01792     if( cur == NULL )
01793         return( 0 );
01794 
01795     return( cur->id );
01796 }
01797 
01798 #if defined(MBEDTLS_PK_C)
01799 mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_pk_alg( const mbedtls_ssl_ciphersuite_t *info )
01800 {
01801     switch( info->key_exchange )
01802     {
01803         case MBEDTLS_KEY_EXCHANGE_RSA:
01804         case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
01805         case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
01806         case MBEDTLS_KEY_EXCHANGE_RSA_PSK:
01807             return( MBEDTLS_PK_RSA );
01808 
01809         case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
01810             return( MBEDTLS_PK_ECDSA );
01811 
01812         case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
01813         case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
01814             return( MBEDTLS_PK_ECKEY );
01815 
01816         default:
01817             return( MBEDTLS_PK_NONE );
01818     }
01819 }
01820 
01821 mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphersuite_t *info )
01822 {
01823     switch( info->key_exchange )
01824     {
01825         case MBEDTLS_KEY_EXCHANGE_RSA:
01826         case MBEDTLS_KEY_EXCHANGE_DHE_RSA:
01827         case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
01828             return( MBEDTLS_PK_RSA );
01829 
01830         case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
01831             return( MBEDTLS_PK_ECDSA );
01832 
01833         default:
01834             return( MBEDTLS_PK_NONE );
01835     }
01836 }
01837 
01838 #endif /* MBEDTLS_PK_C */
01839 
01840 #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C)
01841 int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info )
01842 {
01843     switch( info->key_exchange )
01844     {
01845         case MBEDTLS_KEY_EXCHANGE_ECDHE_RSA:
01846         case MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA:
01847         case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:
01848         case MBEDTLS_KEY_EXCHANGE_ECDH_RSA:
01849         case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA:
01850             return( 1 );
01851 
01852         default:
01853             return( 0 );
01854     }
01855 }
01856 #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C */
01857 
01858 #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED)
01859 int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info )
01860 {
01861     switch( info->key_exchange )
01862     {
01863         case MBEDTLS_KEY_EXCHANGE_PSK:
01864         case MBEDTLS_KEY_EXCHANGE_RSA_PSK:
01865         case MBEDTLS_KEY_EXCHANGE_DHE_PSK:
01866         case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK:
01867             return( 1 );
01868 
01869         default:
01870             return( 0 );
01871     }
01872 }
01873 #endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */
01874 
01875 #endif /* MBEDTLS_SSL_TLS_C */