Example program to test AES-GCM functionality. Used for a workshop

Dependencies:   mbed

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 PolarSSL
00005  *
00006  *  Copyright (C) 2006-2014, Brainspark B.V.
00007  *
00008  *  This file is part of PolarSSL (http://www.polarssl.org)
00009  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
00010  *
00011  *  All rights reserved.
00012  *
00013  *  This program is free software; you can redistribute it and/or modify
00014  *  it under the terms of the GNU General Public License as published by
00015  *  the Free Software Foundation; either version 2 of the License, or
00016  *  (at your option) any later version.
00017  *
00018  *  This program is distributed in the hope that it will be useful,
00019  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00020  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00021  *  GNU General Public License for more details.
00022  *
00023  *  You should have received a copy of the GNU General Public License along
00024  *  with this program; if not, write to the Free Software Foundation, Inc.,
00025  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00026  */
00027 
00028 #if !defined(POLARSSL_CONFIG_FILE)
00029 #include "polarssl/config.h"
00030 #else
00031 #include POLARSSL_CONFIG_FILE
00032 #endif
00033 
00034 #if defined(POLARSSL_SSL_TLS_C)
00035 
00036 #include "polarssl/ssl_ciphersuites.h"
00037 #include "polarssl/ssl.h"
00038 
00039 #include <stdlib.h>
00040 
00041 #if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
00042     !defined(EFI32)
00043 #define strcasecmp _stricmp
00044 #endif
00045 
00046 /*
00047  * Ordered from most preferred to least preferred in terms of security.
00048  *
00049  * Current rule (except rc4, weak and null which come last):
00050  * 1. By key exchange:
00051  *    Forward-secure non-PSK > forward-secure PSK > other non-PSK > other PSK
00052  * 2. By key length and cipher:
00053  *    AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES
00054  * 3. By cipher mode when relevant GCM > CBC
00055  * 4. By hash function used
00056  * 5. By key exchange/auth again: EC > non-EC
00057  */
00058 static const int ciphersuite_preference[] =
00059 {
00060     /* All AES-256 ephemeral suites */
00061     TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
00062     TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
00063     TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
00064     TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
00065     TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
00066     TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
00067     TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
00068     TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
00069     TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
00070 
00071     /* All CAMELLIA-256 ephemeral suites */
00072     TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
00073     TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00074     TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00075     TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
00076     TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
00077     TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
00078     TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
00079 
00080     /* All AES-128 ephemeral suites */
00081     TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
00082     TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
00083     TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
00084     TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
00085     TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
00086     TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
00087     TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
00088     TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
00089     TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
00090 
00091     /* All CAMELLIA-128 ephemeral suites */
00092     TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
00093     TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00094     TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00095     TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
00096     TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00097     TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00098     TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
00099 
00100     /* All remaining >= 128-bit ephemeral suites */
00101     TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
00102     TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
00103     TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
00104 
00105     /* The PSK ephemeral suites */
00106     TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
00107     TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
00108     TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
00109     TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
00110     TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
00111     TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00112     TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00113     TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00114 
00115     TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
00116     TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
00117     TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
00118     TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
00119     TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
00120     TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00121     TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00122     TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00123 
00124     TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
00125     TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
00126 
00127     /* All AES-256 suites */
00128     TLS_RSA_WITH_AES_256_GCM_SHA384,
00129     TLS_RSA_WITH_AES_256_CBC_SHA256,
00130     TLS_RSA_WITH_AES_256_CBC_SHA,
00131     TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
00132     TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
00133     TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
00134     TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
00135     TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
00136     TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
00137 
00138     /* All CAMELLIA-256 suites */
00139     TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00140     TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
00141     TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
00142     TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,
00143     TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
00144     TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
00145     TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
00146 
00147     /* All AES-128 suites */
00148     TLS_RSA_WITH_AES_128_GCM_SHA256,
00149     TLS_RSA_WITH_AES_128_CBC_SHA256,
00150     TLS_RSA_WITH_AES_128_CBC_SHA,
00151     TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
00152     TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
00153     TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
00154     TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
00155     TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
00156     TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
00157 
00158     /* All CAMELLIA-128 suites */
00159     TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00160     TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00161     TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
00162     TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,
00163     TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
00164     TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
00165     TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
00166 
00167     /* All remaining >= 128-bit suites */
00168     TLS_RSA_WITH_3DES_EDE_CBC_SHA,
00169     TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
00170     TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
00171 
00172     /* The RSA PSK suites */
00173     TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
00174     TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
00175     TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
00176     TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00177     TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00178 
00179     TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
00180     TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
00181     TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
00182     TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00183     TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00184 
00185     TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
00186 
00187     /* The PSK suites */
00188     TLS_PSK_WITH_AES_256_GCM_SHA384,
00189     TLS_PSK_WITH_AES_256_CBC_SHA384,
00190     TLS_PSK_WITH_AES_256_CBC_SHA,
00191     TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
00192     TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
00193 
00194     TLS_PSK_WITH_AES_128_GCM_SHA256,
00195     TLS_PSK_WITH_AES_128_CBC_SHA256,
00196     TLS_PSK_WITH_AES_128_CBC_SHA,
00197     TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
00198     TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
00199 
00200     TLS_PSK_WITH_3DES_EDE_CBC_SHA,
00201 
00202     /* RC4 suites */
00203     TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
00204     TLS_ECDHE_RSA_WITH_RC4_128_SHA,
00205     TLS_ECDHE_PSK_WITH_RC4_128_SHA,
00206     TLS_DHE_PSK_WITH_RC4_128_SHA,
00207     TLS_RSA_WITH_RC4_128_SHA,
00208     TLS_RSA_WITH_RC4_128_MD5,
00209     TLS_ECDH_RSA_WITH_RC4_128_SHA,
00210     TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
00211     TLS_RSA_PSK_WITH_RC4_128_SHA,
00212     TLS_PSK_WITH_RC4_128_SHA,
00213 
00214     /* Weak suites */
00215     TLS_DHE_RSA_WITH_DES_CBC_SHA,
00216     TLS_RSA_WITH_DES_CBC_SHA,
00217 
00218     /* NULL suites */
00219     TLS_ECDHE_ECDSA_WITH_NULL_SHA,
00220     TLS_ECDHE_RSA_WITH_NULL_SHA,
00221     TLS_ECDHE_PSK_WITH_NULL_SHA384,
00222     TLS_ECDHE_PSK_WITH_NULL_SHA256,
00223     TLS_ECDHE_PSK_WITH_NULL_SHA,
00224     TLS_DHE_PSK_WITH_NULL_SHA384,
00225     TLS_DHE_PSK_WITH_NULL_SHA256,
00226     TLS_DHE_PSK_WITH_NULL_SHA,
00227 
00228     TLS_RSA_WITH_NULL_SHA256,
00229     TLS_RSA_WITH_NULL_SHA,
00230     TLS_RSA_WITH_NULL_MD5,
00231     TLS_ECDH_RSA_WITH_NULL_SHA,
00232     TLS_ECDH_ECDSA_WITH_NULL_SHA,
00233     TLS_RSA_PSK_WITH_NULL_SHA384,
00234     TLS_RSA_PSK_WITH_NULL_SHA256,
00235     TLS_RSA_PSK_WITH_NULL_SHA,
00236     TLS_PSK_WITH_NULL_SHA384,
00237     TLS_PSK_WITH_NULL_SHA256,
00238     TLS_PSK_WITH_NULL_SHA,
00239 
00240     0
00241 };
00242 
00243 #define MAX_CIPHERSUITES    160
00244 static int supported_ciphersuites[MAX_CIPHERSUITES];
00245 static int supported_init = 0;
00246 
00247 static const ssl_ciphersuite_t ciphersuite_definitions[] =
00248 {
00249 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
00250 #if defined(POLARSSL_AES_C)
00251 #if defined(POLARSSL_SHA1_C)
00252 #if defined(POLARSSL_CIPHER_MODE_CBC)
00253     { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
00254       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00255       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00256       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00257       0 },
00258     { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
00259       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00260       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00261       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00262       0 },
00263 #endif /* POLARSSL_CIPHER_MODE_CBC */
00264 #endif /* POLARSSL_SHA1_C */
00265 #if defined(POLARSSL_SHA256_C)
00266 #if defined(POLARSSL_CIPHER_MODE_CBC)
00267     { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
00268       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00269       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00270       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00271       0 },
00272 #endif /* POLARSSL_CIPHER_MODE_CBC */
00273 #if defined(POLARSSL_GCM_C)
00274     { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
00275       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00276       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00277       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00278       0 },
00279 #endif /* POLARSSL_GCM_C */
00280 #endif /* POLARSSL_SHA256_C */
00281 #if defined(POLARSSL_SHA512_C)
00282 #if defined(POLARSSL_CIPHER_MODE_CBC)
00283     { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
00284       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00285       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00286       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00287       0 },
00288 #endif /* POLARSSL_CIPHER_MODE_CBC */
00289 #if defined(POLARSSL_GCM_C)
00290     { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
00291       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00292       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00293       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00294       0 },
00295 #endif /* POLARSSL_GCM_C */
00296 #endif /* POLARSSL_SHA512_C */
00297 #endif /* POLARSSL_AES_C */
00298 
00299 #if defined(POLARSSL_CAMELLIA_C)
00300 #if defined(POLARSSL_CIPHER_MODE_CBC)
00301 #if defined(POLARSSL_SHA256_C)
00302     { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
00303       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00304       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00305       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00306       0 },
00307 #endif /* POLARSSL_SHA256_C */
00308 #if defined(POLARSSL_SHA512_C)
00309     { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
00310       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00311       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00312       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00313       0 },
00314 #endif /* POLARSSL_SHA512_C */
00315 #endif /* POLARSSL_CIPHER_MODE_CBC */
00316 
00317 #if defined(POLARSSL_GCM_C)
00318 #if defined(POLARSSL_SHA256_C)
00319     { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
00320       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00321       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00322       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00323       0 },
00324 #endif /* POLARSSL_SHA256_C */
00325 #if defined(POLARSSL_SHA512_C)
00326     { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
00327       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00328       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00329       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00330       0 },
00331 #endif /* POLARSSL_SHA512_C */
00332 #endif /* POLARSSL_GCM_C */
00333 #endif /* POLARSSL_CAMELLIA_C */
00334 
00335 #if defined(POLARSSL_DES_C)
00336 #if defined(POLARSSL_CIPHER_MODE_CBC)
00337 #if defined(POLARSSL_SHA1_C)
00338     { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
00339       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00340       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00341       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00342       0 },
00343 #endif /* POLARSSL_SHA1_C */
00344 #endif /* POLARSSL_CIPHER_MODE_CBC */
00345 #endif /* POLARSSL_DES_C */
00346 
00347 #if defined(POLARSSL_ARC4_C)
00348 #if defined(POLARSSL_SHA1_C)
00349     { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
00350       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00351       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00352       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00353       0 },
00354 #endif /* POLARSSL_SHA1_C */
00355 #endif /* POLARSSL_ARC4_C */
00356 
00357 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00358 #if defined(POLARSSL_SHA1_C)
00359     { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
00360       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
00361       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00362       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00363       POLARSSL_CIPHERSUITE_WEAK },
00364 #endif /* POLARSSL_SHA1_C */
00365 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
00366 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
00367 
00368 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
00369 #if defined(POLARSSL_AES_C)
00370 #if defined(POLARSSL_SHA1_C)
00371 #if defined(POLARSSL_CIPHER_MODE_CBC)
00372     { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
00373       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00374       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00375       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00376       0 },
00377     { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
00378       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00379       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00380       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00381       0 },
00382 #endif /* POLARSSL_CIPHER_MODE_CBC */
00383 #endif /* POLARSSL_SHA1_C */
00384 #if defined(POLARSSL_SHA256_C)
00385 #if defined(POLARSSL_CIPHER_MODE_CBC)
00386     { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
00387       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00388       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00389       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00390       0 },
00391 #endif /* POLARSSL_CIPHER_MODE_CBC */
00392 #if defined(POLARSSL_GCM_C)
00393     { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
00394       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00395       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00396       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00397       0 },
00398 #endif /* POLARSSL_GCM_C */
00399 #endif /* POLARSSL_SHA256_C */
00400 #if defined(POLARSSL_SHA512_C)
00401 #if defined(POLARSSL_CIPHER_MODE_CBC)
00402     { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
00403       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00404       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00405       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00406       0 },
00407 #endif /* POLARSSL_CIPHER_MODE_CBC */
00408 #if defined(POLARSSL_GCM_C)
00409     { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
00410       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00411       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00412       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00413       0 },
00414 #endif /* POLARSSL_GCM_C */
00415 #endif /* POLARSSL_SHA512_C */
00416 #endif /* POLARSSL_AES_C */
00417 
00418 #if defined(POLARSSL_CAMELLIA_C)
00419 #if defined(POLARSSL_CIPHER_MODE_CBC)
00420 #if defined(POLARSSL_SHA256_C)
00421     { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00422       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00423       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00424       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00425       0 },
00426 #endif /* POLARSSL_SHA256_C */
00427 #if defined(POLARSSL_SHA512_C)
00428     { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
00429       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00430       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00431       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00432       0 },
00433 #endif /* POLARSSL_SHA512_C */
00434 #endif /* POLARSSL_CIPHER_MODE_CBC */
00435 
00436 #if defined(POLARSSL_GCM_C)
00437 #if defined(POLARSSL_SHA256_C)
00438     { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00439       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00440       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00441       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00442       0 },
00443 #endif /* POLARSSL_SHA256_C */
00444 #if defined(POLARSSL_SHA512_C)
00445     { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00446       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00447       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00448       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00449       0 },
00450 #endif /* POLARSSL_SHA512_C */
00451 #endif /* POLARSSL_GCM_C */
00452 #endif /* POLARSSL_CAMELLIA_C */
00453 
00454 #if defined(POLARSSL_DES_C)
00455 #if defined(POLARSSL_CIPHER_MODE_CBC)
00456 #if defined(POLARSSL_SHA1_C)
00457     { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
00458       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00459       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00460       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00461       0 },
00462 #endif /* POLARSSL_SHA1_C */
00463 #endif /* POLARSSL_CIPHER_MODE_CBC */
00464 #endif /* POLARSSL_DES_C */
00465 
00466 #if defined(POLARSSL_ARC4_C)
00467 #if defined(POLARSSL_SHA1_C)
00468     { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
00469       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00470       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00471       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00472       0 },
00473 #endif /* POLARSSL_SHA1_C */
00474 #endif /* POLARSSL_ARC4_C */
00475 
00476 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00477 #if defined(POLARSSL_SHA1_C)
00478     { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
00479       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
00480       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00481       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00482       POLARSSL_CIPHERSUITE_WEAK },
00483 #endif /* POLARSSL_SHA1_C */
00484 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
00485 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
00486 
00487 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
00488 #if defined(POLARSSL_AES_C)
00489 #if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
00490     { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
00491       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00492       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00493       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00494       0 },
00495 #endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
00496 
00497 #if defined(POLARSSL_SHA256_C)
00498 #if defined(POLARSSL_GCM_C)
00499     { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
00500       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00501       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00502       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00503       0 },
00504 #endif /* POLARSSL_GCM_C */
00505 
00506 #if defined(POLARSSL_CIPHER_MODE_CBC)
00507     { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
00508       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00509       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00510       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00511       0 },
00512 
00513     { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
00514       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00515       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00516       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00517       0 },
00518 #endif /* POLARSSL_CIPHER_MODE_CBC */
00519 #endif /* POLARSSL_SHA256_C */
00520 
00521 #if defined(POLARSSL_CIPHER_MODE_CBC)
00522 #if defined(POLARSSL_SHA1_C)
00523     { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
00524       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00525       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00526       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00527       0 },
00528 
00529     { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
00530       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00531       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00532       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00533       0 },
00534 #endif /* POLARSSL_SHA1_C */
00535 #endif /* POLARSSL_CIPHER_MODE_CBC */
00536 #endif /* POLARSSL_AES_C */
00537 
00538 #if defined(POLARSSL_CAMELLIA_C)
00539 #if defined(POLARSSL_CIPHER_MODE_CBC)
00540 #if defined(POLARSSL_SHA256_C)
00541     { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00542       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00543       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00544       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00545       0 },
00546 
00547     { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
00548       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00549       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00550       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00551       0 },
00552 #endif /* POLARSSL_SHA256_C */
00553 
00554 #if defined(POLARSSL_SHA1_C)
00555     { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
00556       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00557       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00558       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00559       0 },
00560 
00561     { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
00562       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00563       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00564       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00565       0 },
00566 #endif /* POLARSSL_SHA1_C */
00567 #endif /* POLARSSL_CIPHER_MODE_CBC */
00568 #if defined(POLARSSL_GCM_C)
00569 #if defined(POLARSSL_SHA256_C)
00570     { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00571       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00572       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00573       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00574       0 },
00575 #endif /* POLARSSL_SHA256_C */
00576 
00577 #if defined(POLARSSL_SHA512_C)
00578     { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00579       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00580       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00581       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00582       0 },
00583 #endif /* POLARSSL_SHA512_C */
00584 #endif /* POLARSSL_GCM_C */
00585 #endif /* POLARSSL_CAMELLIA_C */
00586 
00587 #if defined(POLARSSL_DES_C)
00588 #if defined(POLARSSL_CIPHER_MODE_CBC)
00589 #if defined(POLARSSL_SHA1_C)
00590     { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
00591       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
00592       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00593       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00594       0 },
00595 #endif /* POLARSSL_SHA1_C */
00596 #endif /* POLARSSL_CIPHER_MODE_CBC */
00597 #endif /* POLARSSL_DES_C */
00598 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
00599 
00600 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
00601 #if defined(POLARSSL_AES_C)
00602 #if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
00603     { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
00604       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
00605       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00606       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00607       0 },
00608 #endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
00609 
00610 #if defined(POLARSSL_SHA256_C)
00611 #if defined(POLARSSL_GCM_C)
00612     { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
00613       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00614       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00615       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00616       0 },
00617 #endif /* POLARSSL_GCM_C */
00618 
00619 #if defined(POLARSSL_CIPHER_MODE_CBC)
00620     { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
00621       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00622       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00623       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00624       0 },
00625 
00626     { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
00627       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00628       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00629       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00630       0 },
00631 #endif /* POLARSSL_CIPHER_MODE_CBC */
00632 #endif /* POLARSSL_SHA256_C */
00633 
00634 #if defined(POLARSSL_SHA1_C)
00635 #if defined(POLARSSL_CIPHER_MODE_CBC)
00636     { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
00637       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00638       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00639       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00640       0 },
00641 
00642     { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
00643       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00644       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00645       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00646       0 },
00647 #endif /* POLARSSL_CIPHER_MODE_CBC */
00648 #endif /* POLARSSL_SHA1_C */
00649 #endif /* POLARSSL_AES_C */
00650 
00651 #if defined(POLARSSL_CAMELLIA_C)
00652 #if defined(POLARSSL_CIPHER_MODE_CBC)
00653 #if defined(POLARSSL_SHA256_C)
00654     { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00655       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00656       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00657       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00658       0 },
00659 
00660     { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
00661       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00662       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00663       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00664       0 },
00665 #endif /* POLARSSL_SHA256_C */
00666 
00667 #if defined(POLARSSL_SHA1_C)
00668     { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
00669       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00670       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00671       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00672       0 },
00673 
00674     { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
00675       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00676       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00677       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00678       0 },
00679 #endif /* POLARSSL_SHA1_C */
00680 #endif /* POLARSSL_CIPHER_MODE_CBC */
00681 
00682 #if defined(POLARSSL_GCM_C)
00683 #if defined(POLARSSL_SHA256_C)
00684     { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00685       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
00686       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00687       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00688       0 },
00689 #endif /* POLARSSL_SHA256_C */
00690 
00691 #if defined(POLARSSL_SHA1_C)
00692     { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00693       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
00694       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00695       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00696       0 },
00697 #endif /* POLARSSL_SHA1_C */
00698 #endif /* POLARSSL_GCM_C */
00699 #endif /* POLARSSL_CAMELLIA_C */
00700 
00701 #if defined(POLARSSL_DES_C)
00702 #if defined(POLARSSL_CIPHER_MODE_CBC)
00703 #if defined(POLARSSL_SHA1_C)
00704     { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
00705       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00706       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00707       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00708       0 },
00709 #endif /* POLARSSL_SHA1_C */
00710 #endif /* POLARSSL_CIPHER_MODE_CBC */
00711 #endif /* POLARSSL_DES_C */
00712 
00713 #if defined(POLARSSL_ARC4_C)
00714 #if defined(POLARSSL_MD5_C)
00715     { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
00716       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
00717       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00718       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00719       0 },
00720 #endif
00721 
00722 #if defined(POLARSSL_SHA1_C)
00723     { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
00724       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
00725       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00726       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00727       0 },
00728 #endif
00729 #endif /* POLARSSL_ARC4_C */
00730 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
00731 
00732 #if defined(POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED)
00733 #if defined(POLARSSL_AES_C)
00734 #if defined(POLARSSL_SHA1_C)
00735 #if defined(POLARSSL_CIPHER_MODE_CBC)
00736     { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA",
00737       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00738       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00739       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00740       0 },
00741     { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA",
00742       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00743       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00744       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00745       0 },
00746 #endif /* POLARSSL_CIPHER_MODE_CBC */
00747 #endif /* POLARSSL_SHA1_C */
00748 #if defined(POLARSSL_SHA256_C)
00749 #if defined(POLARSSL_CIPHER_MODE_CBC)
00750     { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA256",
00751       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00752       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00753       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00754       0 },
00755 #endif /* POLARSSL_CIPHER_MODE_CBC */
00756 #if defined(POLARSSL_GCM_C)
00757     { TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256",
00758       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00759       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00760       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00761       0 },
00762 #endif /* POLARSSL_GCM_C */
00763 #endif /* POLARSSL_SHA256_C */
00764 #if defined(POLARSSL_SHA512_C)
00765 #if defined(POLARSSL_CIPHER_MODE_CBC)
00766     { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384",
00767       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00768       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00769       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00770       0 },
00771 #endif /* POLARSSL_CIPHER_MODE_CBC */
00772 #if defined(POLARSSL_GCM_C)
00773     { TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-AES-256-GCM-SHA384",
00774       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00775       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00776       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00777       0 },
00778 #endif /* POLARSSL_GCM_C */
00779 #endif /* POLARSSL_SHA512_C */
00780 #endif /* POLARSSL_AES_C */
00781 
00782 #if defined(POLARSSL_CAMELLIA_C)
00783 #if defined(POLARSSL_CIPHER_MODE_CBC)
00784 #if defined(POLARSSL_SHA256_C)
00785     { TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-CBC-SHA256",
00786       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00787       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00788       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00789       0 },
00790 #endif /* POLARSSL_SHA256_C */
00791 #if defined(POLARSSL_SHA512_C)
00792     { TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384",
00793       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00794       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00795       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00796       0 },
00797 #endif /* POLARSSL_SHA512_C */
00798 #endif /* POLARSSL_CIPHER_MODE_CBC */
00799 
00800 #if defined(POLARSSL_GCM_C)
00801 #if defined(POLARSSL_SHA256_C)
00802     { TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-GCM-SHA256",
00803       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00804       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00805       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00806       0 },
00807 #endif /* POLARSSL_SHA256_C */
00808 #if defined(POLARSSL_SHA512_C)
00809     { TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384",
00810       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00811       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00812       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00813       0 },
00814 #endif /* POLARSSL_SHA512_C */
00815 #endif /* POLARSSL_GCM_C */
00816 #endif /* POLARSSL_CAMELLIA_C */
00817 
00818 #if defined(POLARSSL_DES_C)
00819 #if defined(POLARSSL_CIPHER_MODE_CBC)
00820 #if defined(POLARSSL_SHA1_C)
00821     { TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-RSA-WITH-3DES-EDE-CBC-SHA",
00822       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00823       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00824       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00825       0 },
00826 #endif /* POLARSSL_SHA1_C */
00827 #endif /* POLARSSL_CIPHER_MODE_CBC */
00828 #endif /* POLARSSL_DES_C */
00829 
00830 #if defined(POLARSSL_ARC4_C)
00831 #if defined(POLARSSL_SHA1_C)
00832     { TLS_ECDH_RSA_WITH_RC4_128_SHA, "TLS-ECDH-RSA-WITH-RC4-128-SHA",
00833       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00834       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00835       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00836       0 },
00837 #endif /* POLARSSL_SHA1_C */
00838 #endif /* POLARSSL_ARC4_C */
00839 
00840 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00841 #if defined(POLARSSL_SHA1_C)
00842     { TLS_ECDH_RSA_WITH_NULL_SHA, "TLS-ECDH-RSA-WITH-NULL-SHA",
00843       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
00844       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00845       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00846       POLARSSL_CIPHERSUITE_WEAK },
00847 #endif /* POLARSSL_SHA1_C */
00848 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
00849 #endif /* POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED */
00850 
00851 #if defined(POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
00852 #if defined(POLARSSL_AES_C)
00853 #if defined(POLARSSL_SHA1_C)
00854 #if defined(POLARSSL_CIPHER_MODE_CBC)
00855     { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA",
00856       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00857       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00858       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00859       0 },
00860     { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA",
00861       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00862       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00863       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00864       0 },
00865 #endif /* POLARSSL_CIPHER_MODE_CBC */
00866 #endif /* POLARSSL_SHA1_C */
00867 #if defined(POLARSSL_SHA256_C)
00868 #if defined(POLARSSL_CIPHER_MODE_CBC)
00869     { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA256",
00870       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00871       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00872       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00873       0 },
00874 #endif /* POLARSSL_CIPHER_MODE_CBC */
00875 #if defined(POLARSSL_GCM_C)
00876     { TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256",
00877       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00878       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00879       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00880       0 },
00881 #endif /* POLARSSL_GCM_C */
00882 #endif /* POLARSSL_SHA256_C */
00883 #if defined(POLARSSL_SHA512_C)
00884 #if defined(POLARSSL_CIPHER_MODE_CBC)
00885     { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384",
00886       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00887       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00888       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00889       0 },
00890 #endif /* POLARSSL_CIPHER_MODE_CBC */
00891 #if defined(POLARSSL_GCM_C)
00892     { TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384",
00893       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00894       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00895       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00896       0 },
00897 #endif /* POLARSSL_GCM_C */
00898 #endif /* POLARSSL_SHA512_C */
00899 #endif /* POLARSSL_AES_C */
00900 
00901 #if defined(POLARSSL_CAMELLIA_C)
00902 #if defined(POLARSSL_CIPHER_MODE_CBC)
00903 #if defined(POLARSSL_SHA256_C)
00904     { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
00905       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00906       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00907       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00908       0 },
00909 #endif /* POLARSSL_SHA256_C */
00910 #if defined(POLARSSL_SHA512_C)
00911     { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
00912       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00913       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00914       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00915       0 },
00916 #endif /* POLARSSL_SHA512_C */
00917 #endif /* POLARSSL_CIPHER_MODE_CBC */
00918 
00919 #if defined(POLARSSL_GCM_C)
00920 #if defined(POLARSSL_SHA256_C)
00921     { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
00922       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00923       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00924       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00925       0 },
00926 #endif /* POLARSSL_SHA256_C */
00927 #if defined(POLARSSL_SHA512_C)
00928     { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
00929       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00930       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00931       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00932       0 },
00933 #endif /* POLARSSL_SHA512_C */
00934 #endif /* POLARSSL_GCM_C */
00935 #endif /* POLARSSL_CAMELLIA_C */
00936 
00937 #if defined(POLARSSL_DES_C)
00938 #if defined(POLARSSL_CIPHER_MODE_CBC)
00939 #if defined(POLARSSL_SHA1_C)
00940     { TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-ECDSA-WITH-3DES-EDE-CBC-SHA",
00941       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00942       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00943       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00944       0 },
00945 #endif /* POLARSSL_SHA1_C */
00946 #endif /* POLARSSL_CIPHER_MODE_CBC */
00947 #endif /* POLARSSL_DES_C */
00948 
00949 #if defined(POLARSSL_ARC4_C)
00950 #if defined(POLARSSL_SHA1_C)
00951     { TLS_ECDH_ECDSA_WITH_RC4_128_SHA, "TLS-ECDH-ECDSA-WITH-RC4-128-SHA",
00952       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00953       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00954       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00955       0 },
00956 #endif /* POLARSSL_SHA1_C */
00957 #endif /* POLARSSL_ARC4_C */
00958 
00959 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
00960 #if defined(POLARSSL_SHA1_C)
00961     { TLS_ECDH_ECDSA_WITH_NULL_SHA, "TLS-ECDH-ECDSA-WITH-NULL-SHA",
00962       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
00963       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
00964       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00965       POLARSSL_CIPHERSUITE_WEAK },
00966 #endif /* POLARSSL_SHA1_C */
00967 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
00968 #endif /* POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
00969 
00970 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
00971 #if defined(POLARSSL_AES_C)
00972 #if defined(POLARSSL_GCM_C)
00973 #if defined(POLARSSL_SHA256_C)
00974     { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
00975       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
00976       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00977       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00978       0 },
00979 #endif /* POLARSSL_SHA256_C */
00980 
00981 #if defined(POLARSSL_SHA512_C)
00982     { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
00983       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
00984       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00985       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00986       0 },
00987 #endif /* POLARSSL_SHA512_C */
00988 #endif /* POLARSSL_GCM_C */
00989 
00990 #if defined(POLARSSL_CIPHER_MODE_CBC)
00991 #if defined(POLARSSL_SHA256_C)
00992     { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
00993       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
00994       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
00995       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
00996       0 },
00997 #endif /* POLARSSL_SHA256_C */
00998 
00999 #if defined(POLARSSL_SHA512_C)
01000     { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
01001       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
01002       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01003       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01004       0 },
01005 #endif /* POLARSSL_SHA512_C */
01006 
01007 #if defined(POLARSSL_SHA1_C)
01008     { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
01009       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
01010       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01011       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01012       0 },
01013 
01014     { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
01015       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
01016       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01017       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01018       0 },
01019 #endif /* POLARSSL_SHA1_C */
01020 #endif /* POLARSSL_CIPHER_MODE_CBC */
01021 #endif /* POLARSSL_AES_C */
01022 
01023 #if defined(POLARSSL_CAMELLIA_C)
01024 #if defined(POLARSSL_CIPHER_MODE_CBC)
01025 #if defined(POLARSSL_SHA256_C)
01026     { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01027       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
01028       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01029       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01030       0 },
01031 #endif /* POLARSSL_SHA256_C */
01032 
01033 #if defined(POLARSSL_SHA512_C)
01034     { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01035       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
01036       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01037       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01038       0 },
01039 #endif /* POLARSSL_SHA512_C */
01040 #endif /* POLARSSL_CIPHER_MODE_CBC */
01041 
01042 #if defined(POLARSSL_GCM_C)
01043 #if defined(POLARSSL_SHA256_C)
01044     { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01045       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
01046       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01047       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01048       0 },
01049 #endif /* POLARSSL_SHA256_C */
01050 
01051 #if defined(POLARSSL_SHA512_C)
01052     { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01053       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
01054       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01055       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01056       0 },
01057 #endif /* POLARSSL_SHA512_C */
01058 #endif /* POLARSSL_GCM_C */
01059 #endif /* POLARSSL_CAMELLIA_C */
01060 
01061 #if defined(POLARSSL_DES_C)
01062 #if defined(POLARSSL_CIPHER_MODE_CBC)
01063 #if defined(POLARSSL_SHA1_C)
01064     { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
01065       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
01066       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01067       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01068       0 },
01069 #endif /* POLARSSL_SHA1_C */
01070 #endif /* POLARSSL_CIPHER_MODE_CBC */
01071 #endif /* POLARSSL_DES_C */
01072 
01073 #if defined(POLARSSL_ARC4_C)
01074 #if defined(POLARSSL_SHA1_C)
01075     { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
01076       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
01077       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01078       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01079       0 },
01080 #endif /* POLARSSL_SHA1_C */
01081 #endif /* POLARSSL_ARC4_C */
01082 #endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
01083 
01084 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
01085 #if defined(POLARSSL_AES_C)
01086 #if defined(POLARSSL_GCM_C)
01087 #if defined(POLARSSL_SHA256_C)
01088     { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
01089       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01090       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01091       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01092       0 },
01093 #endif /* POLARSSL_SHA256_C */
01094 
01095 #if defined(POLARSSL_SHA512_C)
01096     { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
01097       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01098       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01099       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01100       0 },
01101 #endif /* POLARSSL_SHA512_C */
01102 #endif /* POLARSSL_GCM_C */
01103 
01104 #if defined(POLARSSL_CIPHER_MODE_CBC)
01105 #if defined(POLARSSL_SHA256_C)
01106     { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
01107       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01108       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01109       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01110       0 },
01111 #endif /* POLARSSL_SHA256_C */
01112 
01113 #if defined(POLARSSL_SHA512_C)
01114     { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
01115       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01116       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01117       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01118       0 },
01119 #endif /* POLARSSL_SHA512_C */
01120 
01121 #if defined(POLARSSL_SHA1_C)
01122     { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
01123       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01124       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01125       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01126       0 },
01127 
01128     { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
01129       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01130       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01131       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01132       0 },
01133 #endif /* POLARSSL_SHA1_C */
01134 #endif /* POLARSSL_CIPHER_MODE_CBC */
01135 #endif /* POLARSSL_AES_C */
01136 
01137 #if defined(POLARSSL_CAMELLIA_C)
01138 #if defined(POLARSSL_CIPHER_MODE_CBC)
01139 #if defined(POLARSSL_SHA256_C)
01140     { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01141       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01142       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01143       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01144       0 },
01145 #endif /* POLARSSL_SHA256_C */
01146 
01147 #if defined(POLARSSL_SHA512_C)
01148     { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01149       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01150       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01151       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01152       0 },
01153 #endif /* POLARSSL_SHA512_C */
01154 #endif /* POLARSSL_CIPHER_MODE_CBC */
01155 
01156 #if defined(POLARSSL_GCM_C)
01157 #if defined(POLARSSL_SHA256_C)
01158     { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01159       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01160       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01161       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01162       0 },
01163 #endif /* POLARSSL_SHA256_C */
01164 
01165 #if defined(POLARSSL_SHA512_C)
01166     { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01167       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01168       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01169       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01170       0 },
01171 #endif /* POLARSSL_SHA512_C */
01172 #endif /* POLARSSL_GCM_C */
01173 #endif /* POLARSSL_CAMELLIA_C */
01174 
01175 #if defined(POLARSSL_DES_C)
01176 #if defined(POLARSSL_CIPHER_MODE_CBC)
01177 #if defined(POLARSSL_SHA1_C)
01178     { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
01179       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01180       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01181       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01182       0 },
01183 #endif /* POLARSSL_SHA1_C */
01184 #endif /* POLARSSL_CIPHER_MODE_CBC */
01185 #endif /* POLARSSL_DES_C */
01186 
01187 #if defined(POLARSSL_ARC4_C)
01188 #if defined(POLARSSL_SHA1_C)
01189     { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
01190       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01191       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01192       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01193       0 },
01194 #endif /* POLARSSL_SHA1_C */
01195 #endif /* POLARSSL_ARC4_C */
01196 #endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
01197 
01198 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
01199 #if defined(POLARSSL_AES_C)
01200 
01201 #if defined(POLARSSL_CIPHER_MODE_CBC)
01202 #if defined(POLARSSL_SHA256_C)
01203     { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
01204       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01205       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01206       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01207       0 },
01208 #endif /* POLARSSL_SHA256_C */
01209 
01210 #if defined(POLARSSL_SHA512_C)
01211     { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
01212       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01213       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01214       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01215       0 },
01216 #endif /* POLARSSL_SHA512_C */
01217 
01218 #if defined(POLARSSL_SHA1_C)
01219     { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
01220       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01221       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01222       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01223       0 },
01224 
01225     { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
01226       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01227       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01228       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01229       0 },
01230 #endif /* POLARSSL_SHA1_C */
01231 #endif /* POLARSSL_CIPHER_MODE_CBC */
01232 #endif /* POLARSSL_AES_C */
01233 
01234 #if defined(POLARSSL_CAMELLIA_C)
01235 #if defined(POLARSSL_CIPHER_MODE_CBC)
01236 #if defined(POLARSSL_SHA256_C)
01237     { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01238       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01239       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01240       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01241       0 },
01242 #endif /* POLARSSL_SHA256_C */
01243 
01244 #if defined(POLARSSL_SHA512_C)
01245     { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01246       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01247       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01248       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01249       0 },
01250 #endif /* POLARSSL_SHA512_C */
01251 #endif /* POLARSSL_CIPHER_MODE_CBC */
01252 #endif /* POLARSSL_CAMELLIA_C */
01253 
01254 #if defined(POLARSSL_DES_C)
01255 #if defined(POLARSSL_CIPHER_MODE_CBC)
01256 #if defined(POLARSSL_SHA1_C)
01257     { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
01258       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01259       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01260       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01261       0 },
01262 #endif /* POLARSSL_SHA1_C */
01263 #endif /* POLARSSL_CIPHER_MODE_CBC */
01264 #endif /* POLARSSL_DES_C */
01265 
01266 #if defined(POLARSSL_ARC4_C)
01267 #if defined(POLARSSL_SHA1_C)
01268     { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
01269       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01270       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01271       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01272       0 },
01273 #endif /* POLARSSL_SHA1_C */
01274 #endif /* POLARSSL_ARC4_C */
01275 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
01276 
01277 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
01278 #if defined(POLARSSL_AES_C)
01279 #if defined(POLARSSL_GCM_C)
01280 #if defined(POLARSSL_SHA256_C)
01281     { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
01282       POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01283       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01284       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01285       0 },
01286 #endif /* POLARSSL_SHA256_C */
01287 
01288 #if defined(POLARSSL_SHA512_C)
01289     { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
01290       POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01291       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01292       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01293       0 },
01294 #endif /* POLARSSL_SHA512_C */
01295 #endif /* POLARSSL_GCM_C */
01296 
01297 #if defined(POLARSSL_CIPHER_MODE_CBC)
01298 #if defined(POLARSSL_SHA256_C)
01299     { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
01300       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01301       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01302       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01303       0 },
01304 #endif /* POLARSSL_SHA256_C */
01305 
01306 #if defined(POLARSSL_SHA512_C)
01307     { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
01308       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01309       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01310       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01311       0 },
01312 #endif /* POLARSSL_SHA512_C */
01313 
01314 #if defined(POLARSSL_SHA1_C)
01315     { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
01316       POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01317       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01318       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01319       0 },
01320 
01321     { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
01322       POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01323       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01324       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01325       0 },
01326 #endif /* POLARSSL_SHA1_C */
01327 #endif /* POLARSSL_CIPHER_MODE_CBC */
01328 #endif /* POLARSSL_AES_C */
01329 
01330 #if defined(POLARSSL_CAMELLIA_C)
01331 #if defined(POLARSSL_CIPHER_MODE_CBC)
01332 #if defined(POLARSSL_SHA256_C)
01333     { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
01334       POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01335       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01336       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01337       0 },
01338 #endif /* POLARSSL_SHA256_C */
01339 
01340 #if defined(POLARSSL_SHA512_C)
01341     { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
01342       POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01343       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01344       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01345       0 },
01346 #endif /* POLARSSL_SHA512_C */
01347 #endif /* POLARSSL_CIPHER_MODE_CBC */
01348 
01349 #if defined(POLARSSL_GCM_C)
01350 #if defined(POLARSSL_SHA256_C)
01351     { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
01352       POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01353       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01354       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01355       0 },
01356 #endif /* POLARSSL_SHA256_C */
01357 
01358 #if defined(POLARSSL_SHA512_C)
01359     { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
01360       POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01361       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01362       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01363       0 },
01364 #endif /* POLARSSL_SHA512_C */
01365 #endif /* POLARSSL_GCM_C */
01366 #endif /* POLARSSL_CAMELLIA_C */
01367 
01368 #if defined(POLARSSL_DES_C)
01369 #if defined(POLARSSL_CIPHER_MODE_CBC)
01370 #if defined(POLARSSL_SHA1_C)
01371     { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
01372       POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01373       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01374       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01375       0 },
01376 #endif /* POLARSSL_SHA1_C */
01377 #endif /* POLARSSL_CIPHER_MODE_CBC */
01378 #endif /* POLARSSL_DES_C */
01379 
01380 #if defined(POLARSSL_ARC4_C)
01381 #if defined(POLARSSL_SHA1_C)
01382     { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
01383       POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01384       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01385       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01386       0 },
01387 #endif /* POLARSSL_SHA1_C */
01388 #endif /* POLARSSL_ARC4_C */
01389 #endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
01390 
01391 #if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
01392 #if defined(POLARSSL_CIPHER_NULL_CIPHER)
01393 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
01394 #if defined(POLARSSL_MD5_C)
01395     { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
01396       POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
01397       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01398       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01399       POLARSSL_CIPHERSUITE_WEAK },
01400 #endif
01401 
01402 #if defined(POLARSSL_SHA1_C)
01403     { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
01404       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
01405       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01406       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01407       POLARSSL_CIPHERSUITE_WEAK },
01408 #endif
01409 
01410 #if defined(POLARSSL_SHA256_C)
01411     { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
01412       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
01413       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01414       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01415       POLARSSL_CIPHERSUITE_WEAK },
01416 #endif
01417 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
01418 
01419 #if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
01420 #if defined(POLARSSL_SHA1_C)
01421     { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
01422       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
01423       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01424       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01425       POLARSSL_CIPHERSUITE_WEAK },
01426 #endif /* POLARSSL_SHA1_C */
01427 
01428 #if defined(POLARSSL_SHA256_C)
01429     { TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
01430       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
01431       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01432       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01433       POLARSSL_CIPHERSUITE_WEAK },
01434 #endif
01435 
01436 #if defined(POLARSSL_SHA512_C)
01437     { TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
01438       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
01439       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01440       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01441       POLARSSL_CIPHERSUITE_WEAK },
01442 #endif
01443 #endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
01444 
01445 #if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
01446 #if defined(POLARSSL_SHA1_C)
01447     { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
01448       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01449       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01450       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01451       POLARSSL_CIPHERSUITE_WEAK },
01452 #endif /* POLARSSL_SHA1_C */
01453 
01454 #if defined(POLARSSL_SHA256_C)
01455     { TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
01456       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01457       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01458       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01459       POLARSSL_CIPHERSUITE_WEAK },
01460 #endif
01461 
01462 #if defined(POLARSSL_SHA512_C)
01463     { TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
01464       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
01465       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01466       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01467       POLARSSL_CIPHERSUITE_WEAK },
01468 #endif
01469 #endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
01470 
01471 #if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
01472 #if defined(POLARSSL_SHA1_C)
01473     { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
01474       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01475       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01476       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01477       POLARSSL_CIPHERSUITE_WEAK },
01478 #endif /* POLARSSL_SHA1_C */
01479 
01480 #if defined(POLARSSL_SHA256_C)
01481     { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
01482       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01483       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01484       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01485       POLARSSL_CIPHERSUITE_WEAK },
01486 #endif
01487 
01488 #if defined(POLARSSL_SHA512_C)
01489     { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
01490       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
01491       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
01492       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01493       POLARSSL_CIPHERSUITE_WEAK },
01494 #endif
01495 #endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
01496 
01497 #if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
01498 #if defined(POLARSSL_SHA1_C)
01499     { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
01500       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01501       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01502       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01503       POLARSSL_CIPHERSUITE_WEAK },
01504 #endif /* POLARSSL_SHA1_C */
01505 
01506 #if defined(POLARSSL_SHA256_C)
01507     { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
01508       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01509       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01510       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01511       POLARSSL_CIPHERSUITE_WEAK },
01512 #endif
01513 
01514 #if defined(POLARSSL_SHA512_C)
01515     { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
01516       POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
01517       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01518       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01519       POLARSSL_CIPHERSUITE_WEAK },
01520 #endif
01521 #endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
01522 #endif /* POLARSSL_CIPHER_NULL_CIPHER */
01523 
01524 #if defined(POLARSSL_DES_C)
01525 #if defined(POLARSSL_CIPHER_MODE_CBC)
01526 #if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
01527 #if defined(POLARSSL_SHA1_C)
01528     { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
01529       POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
01530       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01531       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01532       POLARSSL_CIPHERSUITE_WEAK },
01533 #endif /* POLARSSL_SHA1_C */
01534 #endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
01535 
01536 #if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
01537 #if defined(POLARSSL_SHA1_C)
01538     { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
01539       POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
01540       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
01541       SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
01542       POLARSSL_CIPHERSUITE_WEAK },
01543 #endif /* POLARSSL_SHA1_C */
01544 #endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
01545 #endif /* POLARSSL_CIPHER_MODE_CBC */
01546 #endif /* POLARSSL_DES_C */
01547 #endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
01548 
01549     { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
01550 };
01551 
01552 const int *ssl_list_ciphersuites( void )
01553 {
01554     /*
01555      * On initial call filter out all ciphersuites not supported by current
01556      * build based on presence in the ciphersuite_definitions.
01557      */
01558     if( supported_init == 0 )
01559     {
01560         const int *p = ciphersuite_preference;
01561         int *q = supported_ciphersuites;
01562         size_t i;
01563         size_t max = sizeof(supported_ciphersuites) / sizeof(int);
01564 
01565         for( i = 0; i < max - 1 && p[i] != 0; i++ )
01566         {
01567             if( ssl_ciphersuite_from_id( p[i] ) != NULL )
01568                 *(q++) = p[i];
01569         }
01570         *q = 0;
01571 
01572         supported_init = 1;
01573     }
01574 
01575     return supported_ciphersuites;
01576 };
01577 
01578 const ssl_ciphersuite_t *ssl_ciphersuite_from_string(
01579                                                 const char *ciphersuite_name )
01580 {
01581     const ssl_ciphersuite_t *cur = ciphersuite_definitions;
01582 
01583     if( NULL == ciphersuite_name )
01584         return( NULL );
01585 
01586     while( cur->id != 0 )
01587     {
01588         if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
01589             return( cur );
01590 
01591         cur++;
01592     }
01593 
01594     return( NULL );
01595 }
01596 
01597 const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
01598 {
01599     const ssl_ciphersuite_t *cur = ciphersuite_definitions;
01600 
01601     while( cur->id != 0 )
01602     {
01603         if( cur->id == ciphersuite )
01604             return( cur );
01605 
01606         cur++;
01607     }
01608 
01609     return( NULL );
01610 }
01611 
01612 const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
01613 {
01614     const ssl_ciphersuite_t *cur;
01615 
01616     cur = ssl_ciphersuite_from_id( ciphersuite_id );
01617 
01618     if( cur == NULL )
01619         return( "unknown" );
01620 
01621     return( cur->name );
01622 }
01623 
01624 int ssl_get_ciphersuite_id( const char *ciphersuite_name )
01625 {
01626     const ssl_ciphersuite_t *cur;
01627 
01628     cur = ssl_ciphersuite_from_string( ciphersuite_name );
01629 
01630     if( cur == NULL )
01631         return( 0 );
01632 
01633     return( cur->id );
01634 }
01635 
01636 #if defined(POLARSSL_PK_C)
01637 pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
01638 {
01639     switch( info->key_exchange )
01640     {
01641         case POLARSSL_KEY_EXCHANGE_RSA:
01642         case POLARSSL_KEY_EXCHANGE_DHE_RSA:
01643         case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
01644         case POLARSSL_KEY_EXCHANGE_RSA_PSK:
01645             return( POLARSSL_PK_RSA );
01646 
01647         case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
01648             return( POLARSSL_PK_ECDSA );
01649 
01650         case POLARSSL_KEY_EXCHANGE_ECDH_RSA:
01651         case POLARSSL_KEY_EXCHANGE_ECDH_ECDSA:
01652             return( POLARSSL_PK_ECKEY );
01653 
01654         default:
01655             return( POLARSSL_PK_NONE );
01656     }
01657 }
01658 #endif /* POLARSSL_PK_C */
01659 
01660 #if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
01661 int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
01662 {
01663     switch( info->key_exchange )
01664     {
01665         case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
01666         case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
01667         case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
01668         case POLARSSL_KEY_EXCHANGE_ECDH_RSA:
01669         case POLARSSL_KEY_EXCHANGE_ECDH_ECDSA:
01670             return( 1 );
01671 
01672         default:
01673             return( 0 );
01674     }
01675 }
01676 #endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
01677 
01678 #if defined(POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED)
01679 int ssl_ciphersuite_uses_psk( const ssl_ciphersuite_t *info )
01680 {
01681     switch( info->key_exchange )
01682     {
01683         case POLARSSL_KEY_EXCHANGE_PSK:
01684         case POLARSSL_KEY_EXCHANGE_RSA_PSK:
01685         case POLARSSL_KEY_EXCHANGE_DHE_PSK:
01686         case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
01687             return( 1 );
01688 
01689         default:
01690             return( 0 );
01691     }
01692 }
01693 #endif /* POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED */
01694 
01695 #endif /* POLARSSL_SSL_TLS_C */
01696 
01697