joey shelton / LED_Demo

Dependencies:   MAX44000 PWM_Tone_Library nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

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