blob: d4f8c7e529450134ca94f163796ca7ad57843495 [file] [log] [blame]
Paul Bakker68884e32013-01-07 18:20:04 +01001/**
2 * \file ssl_ciphersuites.c
3 *
4 * \brief SSL ciphersuites for PolarSSL
5 *
6 * Copyright (C) 2006-2013, Brainspark B.V.
7 *
8 * This file is part of PolarSSL (http://www.polarssl.org)
9 * Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
10 *
11 * All rights reserved.
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License along
24 * with this program; if not, write to the Free Software Foundation, Inc.,
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26 */
27
28#include "polarssl/config.h"
29
30#if defined(POLARSSL_SSL_TLS_C)
31
32#include "polarssl/ssl_ciphersuites.h"
33#include "polarssl/ssl.h"
34
35#include <stdlib.h>
36
Paul Bakker6edcd412013-10-29 15:22:54 +010037#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
38 !defined(EFI32)
Manuel Pégourié-Gonnard9654fb12013-10-03 11:53:05 +020039#define strcasecmp _stricmp
40#endif
41
Paul Bakker41c83d32013-03-20 14:39:14 +010042/*
43 * Ordered from most preferred to least preferred in terms of security.
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020044 *
45 * Current rule (except weak and null which come last):
46 * 1. By key exchange:
47 * Forward-secure non-PSK > forward-secure PSK > other non-PSK > other PSK
48 * 2. By key length and cipher:
49 * AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES > RC4
50 * 3. By cipher mode when relevant GCM > CBC
51 * 4. By hash function used
52 * 5. By key exchange/auth again: EC > non-EC
Paul Bakker41c83d32013-03-20 14:39:14 +010053 */
54static const int ciphersuite_preference[] =
Paul Bakker68884e32013-01-07 18:20:04 +010055{
Paul Bakker27714b12013-04-07 23:07:12 +020056 /* All AES-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020057 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010058 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010059 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020060 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
61 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
62 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020063 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010064 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010065 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020066
67 /* All CAMELLIA-256 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020068 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
69 TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
70 TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020071 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020072 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010073 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010074 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020075
76 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020077 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010078 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010079 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020080 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
81 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
82 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020083 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010084 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
85 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020086
87 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020088 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
89 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
90 TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020091 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +020092 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010093 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010094 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020095
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020096 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020097 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010098 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010099 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200100 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100101 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200102
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200103 /* The PSK ephemeral suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200104 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200105 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
106 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
107 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
108 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200109 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200110 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200111 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200112
Paul Bakker40afb4b2013-04-19 22:03:30 +0200113 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200114 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
115 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
116 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
117 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200118 TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200119 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200120 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
121
122 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200123 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200124 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200125 TLS_DHE_PSK_WITH_RC4_128_SHA,
126
Paul Bakker27714b12013-04-07 23:07:12 +0200127 /* All AES-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100128 TLS_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200129 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100130 TLS_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200131
132 /* All CAMELLIA-256 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200133 TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100134 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100135 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200136
137 /* All AES-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100138 TLS_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200139 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100140 TLS_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200141
142 /* All CAMELLIA-128 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200143 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100144 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100145 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200146
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200147 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100148 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100149 TLS_RSA_WITH_RC4_128_SHA,
150 TLS_RSA_WITH_RC4_128_MD5,
Paul Bakker27714b12013-04-07 23:07:12 +0200151
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200152 /* The RSA PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200153 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200154 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200155 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200156 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200157 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200158
159 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200160 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200161 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200162 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200163 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200164
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200165 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
166 TLS_RSA_PSK_WITH_RC4_128_SHA,
167
168 /* The PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200169 TLS_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200170 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200171 TLS_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200172 TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200173 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200174
175 TLS_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200176 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200177 TLS_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200178 TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200179 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200180
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200181 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
182 TLS_PSK_WITH_RC4_128_SHA,
183
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200184 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100185 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100186 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200187
188 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200189 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100190 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200191 TLS_ECDHE_PSK_WITH_NULL_SHA384,
192 TLS_ECDHE_PSK_WITH_NULL_SHA256,
193 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200194 TLS_DHE_PSK_WITH_NULL_SHA384,
195 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200196 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200197
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200198 TLS_RSA_WITH_NULL_SHA256,
199 TLS_RSA_WITH_NULL_SHA,
200 TLS_RSA_WITH_NULL_MD5,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200201 TLS_RSA_PSK_WITH_NULL_SHA384,
202 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200203 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200204 TLS_PSK_WITH_NULL_SHA384,
205 TLS_PSK_WITH_NULL_SHA256,
206 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200207
Paul Bakker68884e32013-01-07 18:20:04 +0100208 0
209};
210
Manuel Pégourié-Gonnard57a87832013-08-27 16:13:54 +0200211#define MAX_CIPHERSUITES 128
Paul Bakker41c83d32013-03-20 14:39:14 +0100212static int supported_ciphersuites[MAX_CIPHERSUITES];
213static int supported_init = 0;
214
Paul Bakker68884e32013-01-07 18:20:04 +0100215static const ssl_ciphersuite_t ciphersuite_definitions[] =
216{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200217#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
218#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200219#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200220#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200221 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
222 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
223 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
224 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200225 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200226 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
227 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
228 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
229 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200230 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200231#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200232#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200233#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200234#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200235 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
236 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
237 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
238 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200239 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200240#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200241#if defined(POLARSSL_GCM_C)
242 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
243 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
244 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
245 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200246 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200247#endif /* POLARSSL_GCM_C */
248#endif /* POLARSSL_SHA256_C */
249#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200250#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200251 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
252 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
253 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
254 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200255 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200256#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200257#if defined(POLARSSL_GCM_C)
258 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
259 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
261 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200262 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200263#endif /* POLARSSL_GCM_C */
264#endif /* POLARSSL_SHA512_C */
265#endif /* POLARSSL_AES_C */
266
267#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200268#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200269#if defined(POLARSSL_SHA256_C)
270 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
271 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100272 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200273 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200274 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200275#endif /* POLARSSL_SHA256_C */
276#if defined(POLARSSL_SHA512_C)
277 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
278 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100279 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200280 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200281 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200282#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200283#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200284
285#if defined(POLARSSL_GCM_C)
286#if defined(POLARSSL_SHA256_C)
287 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
288 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
289 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
290 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
291 0 },
292#endif /* POLARSSL_SHA256_C */
293#if defined(POLARSSL_SHA512_C)
294 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
295 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
296 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
297 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
298 0 },
299#endif /* POLARSSL_SHA512_C */
300#endif /* POLARSSL_GCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200301#endif /* POLARSSL_CAMELLIA_C */
302
303#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200304#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200305#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200306 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
307 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
308 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
309 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200310 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200311#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200312#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200313#endif /* POLARSSL_DES_C */
314
315#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200316#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200317 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
318 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
319 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
320 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200321 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200322#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200323#endif /* POLARSSL_ARC4_C */
324
325#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200326#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200327 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
328 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
329 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
330 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200331 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200332#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200333#endif /* POLARSSL_CIPHER_NULL_CIPHER */
334#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
335
Paul Bakkere07f41d2013-04-19 09:08:57 +0200336#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100337#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200338#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200339#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100340 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
341 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
342 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
343 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200344 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100345 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
346 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
347 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
348 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200349 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200350#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200351#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200352#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200353#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100354 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
355 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
356 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
357 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200358 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200359#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100360#if defined(POLARSSL_GCM_C)
361 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
362 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
363 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
364 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200365 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100366#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200367#endif /* POLARSSL_SHA256_C */
368#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200369#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100370 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
371 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
372 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
373 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200374 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200375#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100376#if defined(POLARSSL_GCM_C)
377 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
378 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
379 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
380 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200381 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100382#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200383#endif /* POLARSSL_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100384#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200385
386#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200387#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200388#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200389 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
390 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100391 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker27714b12013-04-07 23:07:12 +0200392 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200393 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200394#endif /* POLARSSL_SHA256_C */
395#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200396 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
397 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100398 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker27714b12013-04-07 23:07:12 +0200399 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200400 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200401#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200402#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200403
404#if defined(POLARSSL_GCM_C)
405#if defined(POLARSSL_SHA256_C)
406 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
407 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
408 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
409 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
410 0 },
411#endif /* POLARSSL_SHA256_C */
412#if defined(POLARSSL_SHA512_C)
413 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
414 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
415 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
416 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
417 0 },
418#endif /* POLARSSL_SHA512_C */
419#endif /* POLARSSL_GCM_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200420#endif /* POLARSSL_CAMELLIA_C */
421
Paul Bakker41c83d32013-03-20 14:39:14 +0100422#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200423#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200424#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100425 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
426 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
427 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
428 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200429 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200430#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200431#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100432#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200433
Paul Bakker41c83d32013-03-20 14:39:14 +0100434#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200435#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100436 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
437 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
438 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
439 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200440 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200441#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200442#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200443
Paul Bakker41c83d32013-03-20 14:39:14 +0100444#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200445#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100446 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
447 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
448 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
449 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200450 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200451#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200452#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200453#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100454
Paul Bakkere07f41d2013-04-19 09:08:57 +0200455#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100456#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200457#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100458 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
459 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
460 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
461 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
462 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200463#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100464
Paul Bakker9e36f042013-06-30 14:34:05 +0200465#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100466#if defined(POLARSSL_GCM_C)
467 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
468 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
469 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
470 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
471 0 },
472#endif /* POLARSSL_GCM_C */
473
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200474#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100475 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
476 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
477 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
478 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
479 0 },
480
481 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
482 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
483 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
484 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
485 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200486#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200487#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100488
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200489#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200490#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100491 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
492 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
493 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
494 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
495 0 },
496
497 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
498 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
499 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
500 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
501 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200502#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200503#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100504#endif /* POLARSSL_AES_C */
505
506#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200507#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200508#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100509 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
510 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
511 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
512 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
513 0 },
514
515 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
516 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
517 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
518 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
519 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200520#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100521
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200522#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100523 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
524 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
525 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
526 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
527 0 },
528
529 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
530 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
531 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
532 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
533 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200534#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200535#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200536#if defined(POLARSSL_GCM_C)
537#if defined(POLARSSL_SHA256_C)
538 { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
539 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
540 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
541 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
542 0 },
543#endif /* POLARSSL_SHA256_C */
544
545#if defined(POLARSSL_SHA512_C)
546 { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
547 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
548 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
549 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
550 0 },
551#endif /* POLARSSL_SHA512_C */
552#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100553#endif /* POLARSSL_CAMELLIA_C */
554
555#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200556#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200557#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100558 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
559 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
560 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
561 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
562 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200563#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200564#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100565#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200566#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100567
Paul Bakkere07f41d2013-04-19 09:08:57 +0200568#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100569#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200570#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100571 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
572 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
573 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
574 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
575 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200576#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100577
Paul Bakker9e36f042013-06-30 14:34:05 +0200578#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100579#if defined(POLARSSL_GCM_C)
580 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
581 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
582 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
583 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
584 0 },
585#endif /* POLARSSL_GCM_C */
586
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200587#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100588 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
589 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
590 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
591 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
592 0 },
593
594 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
595 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
596 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
597 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
598 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200599#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200600#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100601
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200602#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200603#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100604 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
605 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
606 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
607 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
608 0 },
609
610 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
611 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
612 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
613 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
614 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200615#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200616#endif /* POLARSSL_SHA1_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100617#endif /* POLARSSL_AES_C */
618
619#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200620#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200621#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100622 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
623 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
624 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
625 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
626 0 },
627
628 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
629 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
630 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
631 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
632 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200633#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100634
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200635#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100636 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
637 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
638 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
639 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
640 0 },
641
642 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
643 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
644 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
645 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
646 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200647#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200648#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200649
650#if defined(POLARSSL_GCM_C)
651#if defined(POLARSSL_SHA256_C)
652 { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
653 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
654 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
655 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
656 0 },
657#endif /* POLARSSL_SHA256_C */
658
659#if defined(POLARSSL_SHA1_C)
660 { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
661 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
662 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
663 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
664 0 },
665#endif /* POLARSSL_SHA1_C */
666#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100667#endif /* POLARSSL_CAMELLIA_C */
668
669#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200670#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200671#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100672 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
673 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
674 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
675 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
676 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200677#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200678#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100679#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200680
681#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200682#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200683 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
684 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
685 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
686 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
687 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200688#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200689
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200690#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200691 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
692 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
693 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
694 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
695 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200696#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200697#endif /* POLARSSL_ARC4_C */
698#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100699
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200700#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
701#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200702#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200703#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200704 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
705 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
706 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
707 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
708 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200709#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200710
Paul Bakker9e36f042013-06-30 14:34:05 +0200711#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200712 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
713 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
714 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
715 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
716 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200717#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200718#endif /* POLARSSL_GCM_C */
719
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200720#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200721#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200722 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
723 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100724 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200725 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
726 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200727#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200728
Paul Bakker9e36f042013-06-30 14:34:05 +0200729#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200730 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
731 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100732 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200733 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
734 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200735#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200736
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200737#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200738 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
739 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
740 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
741 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
742 0 },
743
744 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
745 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
746 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
747 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
748 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200749#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200750#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200751#endif /* POLARSSL_AES_C */
752
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200753#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200754#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200755#if defined(POLARSSL_SHA256_C)
756 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
757 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100758 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200759 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
760 0 },
761#endif /* POLARSSL_SHA256_C */
762
763#if defined(POLARSSL_SHA512_C)
764 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
765 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100766 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200767 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
768 0 },
769#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200770#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200771
772#if defined(POLARSSL_GCM_C)
773#if defined(POLARSSL_SHA256_C)
774 { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
775 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
776 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
777 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
778 0 },
779#endif /* POLARSSL_SHA256_C */
780
781#if defined(POLARSSL_SHA512_C)
782 { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
783 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
784 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
785 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
786 0 },
787#endif /* POLARSSL_SHA512_C */
788#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200789#endif /* POLARSSL_CAMELLIA_C */
790
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200791#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200792#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200793#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200794 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
795 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
796 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
797 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
798 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200799#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200800#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200801#endif /* POLARSSL_DES_C */
802
803#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200804#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200805 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
806 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
807 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
808 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
809 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200810#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200811#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200812#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200813
Paul Bakkere07f41d2013-04-19 09:08:57 +0200814#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200815#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200816#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200817#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200818 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
819 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
820 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
821 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
822 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200823#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200824
Paul Bakker9e36f042013-06-30 14:34:05 +0200825#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200826 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
827 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
828 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
829 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
830 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200831#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200832#endif /* POLARSSL_GCM_C */
833
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200834#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200835#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200836 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
837 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100838 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200839 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
840 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200841#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200842
Paul Bakker9e36f042013-06-30 14:34:05 +0200843#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200844 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
845 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100846 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200847 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
848 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200849#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200850
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200851#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200852 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
853 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
854 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
855 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
856 0 },
857
858 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
859 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
860 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
861 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
862 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200863#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200864#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200865#endif /* POLARSSL_AES_C */
866
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200867#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200868#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200869#if defined(POLARSSL_SHA256_C)
870 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
871 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100872 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200873 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
874 0 },
875#endif /* POLARSSL_SHA256_C */
876
877#if defined(POLARSSL_SHA512_C)
878 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
879 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100880 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200881 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
882 0 },
883#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200884#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200885
886#if defined(POLARSSL_GCM_C)
887#if defined(POLARSSL_SHA256_C)
888 { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
889 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
890 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
891 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
892 0 },
893#endif /* POLARSSL_SHA256_C */
894
895#if defined(POLARSSL_SHA512_C)
896 { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
897 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
898 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
899 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
900 0 },
901#endif /* POLARSSL_SHA512_C */
902#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200903#endif /* POLARSSL_CAMELLIA_C */
904
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200905#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200906#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200907#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200908 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
909 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
910 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
911 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
912 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200913#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200914#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200915#endif /* POLARSSL_DES_C */
916
917#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200918#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200919 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
920 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
921 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
922 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
923 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200924#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200925#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200926#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200927
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200928#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
929#if defined(POLARSSL_AES_C)
930
931#if defined(POLARSSL_CIPHER_MODE_CBC)
932#if defined(POLARSSL_SHA256_C)
933 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
934 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100935 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200936 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
937 0 },
938#endif /* POLARSSL_SHA256_C */
939
940#if defined(POLARSSL_SHA512_C)
941 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
942 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100943 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200944 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
945 0 },
946#endif /* POLARSSL_SHA512_C */
947
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200948#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200949 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
950 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
951 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
952 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
953 0 },
954
955 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
956 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
957 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
958 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
959 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200960#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200961#endif /* POLARSSL_CIPHER_MODE_CBC */
962#endif /* POLARSSL_AES_C */
963
964#if defined(POLARSSL_CAMELLIA_C)
965#if defined(POLARSSL_CIPHER_MODE_CBC)
966#if defined(POLARSSL_SHA256_C)
967 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
968 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100969 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200970 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
971 0 },
972#endif /* POLARSSL_SHA256_C */
973
974#if defined(POLARSSL_SHA512_C)
975 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
976 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100977 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200978 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
979 0 },
980#endif /* POLARSSL_SHA512_C */
981#endif /* POLARSSL_CIPHER_MODE_CBC */
982#endif /* POLARSSL_CAMELLIA_C */
983
984#if defined(POLARSSL_DES_C)
985#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200986#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200987 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
988 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
989 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
990 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
991 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200992#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200993#endif /* POLARSSL_CIPHER_MODE_CBC */
994#endif /* POLARSSL_DES_C */
995
996#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200997#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200998 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
999 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1000 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1001 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1002 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001003#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001004#endif /* POLARSSL_ARC4_C */
1005#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1006
Paul Bakkere07f41d2013-04-19 09:08:57 +02001007#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001008#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001009#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001010#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001011 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
1012 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1013 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1014 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1015 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001016#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001017
Paul Bakker9e36f042013-06-30 14:34:05 +02001018#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001019 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
1020 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1021 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1022 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1023 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001024#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001025#endif /* POLARSSL_GCM_C */
1026
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001027#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001028#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001029 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1030 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001031 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001032 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1033 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001034#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001035
Paul Bakker9e36f042013-06-30 14:34:05 +02001036#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001037 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1038 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001039 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001040 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1041 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001042#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001043
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001044#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001045 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
1046 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1047 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1048 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1049 0 },
1050
1051 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
1052 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1053 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1054 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1055 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001056#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001057#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001058#endif /* POLARSSL_AES_C */
1059
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001060#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001061#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001062#if defined(POLARSSL_SHA256_C)
1063 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1064 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001065 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001066 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1067 0 },
1068#endif /* POLARSSL_SHA256_C */
1069
1070#if defined(POLARSSL_SHA512_C)
1071 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1072 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001073 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001074 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1075 0 },
1076#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001077#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001078
1079#if defined(POLARSSL_GCM_C)
1080#if defined(POLARSSL_SHA256_C)
1081 { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1082 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1083 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1084 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1085 0 },
1086#endif /* POLARSSL_SHA256_C */
1087
1088#if defined(POLARSSL_SHA512_C)
1089 { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1090 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1091 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1092 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1093 0 },
1094#endif /* POLARSSL_SHA512_C */
1095#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001096#endif /* POLARSSL_CAMELLIA_C */
1097
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001098#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001099#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001100#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001101 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
1102 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1103 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1104 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1105 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001106#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001107#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001108#endif /* POLARSSL_DES_C */
1109
1110#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001111#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001112 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
1113 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1114 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1115 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1116 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001117#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001118#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001119#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001120
Paul Bakker68884e32013-01-07 18:20:04 +01001121#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
1122#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001123#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001124#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001125 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
1126 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
1127 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1128 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1129 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001130#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001131
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001132#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001133 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
1134 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1135 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1136 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1137 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001138#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001139
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001140#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001141 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
1142 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
1143 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1144 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1145 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001146#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +02001147#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001148
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001149#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001150#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001151 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
1152 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1153 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1154 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1155 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001156#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001157
1158#if defined(POLARSSL_SHA256_C)
1159 { TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
1160 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001161 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001162 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1163 POLARSSL_CIPHERSUITE_WEAK },
1164#endif
1165
1166#if defined(POLARSSL_SHA512_C)
1167 { TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
1168 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001169 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001170 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1171 POLARSSL_CIPHERSUITE_WEAK },
1172#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001173#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1174
1175#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001176#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001177 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1178 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1179 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1180 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1181 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001182#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001183
1184#if defined(POLARSSL_SHA256_C)
1185 { TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
1186 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001187 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001188 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1189 POLARSSL_CIPHERSUITE_WEAK },
1190#endif
1191
1192#if defined(POLARSSL_SHA512_C)
1193 { TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
1194 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001195 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001196 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1197 POLARSSL_CIPHERSUITE_WEAK },
1198#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001199#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1200
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001201#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001202#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001203 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1204 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1205 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1206 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1207 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001208#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001209
1210#if defined(POLARSSL_SHA256_C)
1211 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1212 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001213 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001214 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1215 POLARSSL_CIPHERSUITE_WEAK },
1216#endif
1217
1218#if defined(POLARSSL_SHA512_C)
1219 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1220 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001221 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001222 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1223 POLARSSL_CIPHERSUITE_WEAK },
1224#endif
1225#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1226
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001227#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001228#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001229 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1230 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1231 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1232 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1233 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001234#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001235
1236#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001237 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001238 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001239 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001240 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1241 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001242#endif
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001243
1244#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001245 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001246 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001247 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001248 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1249 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001250#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001251#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1252#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1253
Paul Bakker68884e32013-01-07 18:20:04 +01001254#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001255#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001256#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001257#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001258 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1259 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1261 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1262 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001263#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001264#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001265
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001266#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001267#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001268 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1269 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1270 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1271 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1272 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001273#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001274#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1275#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001276#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001277#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1278
1279 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1280};
1281
1282const int *ssl_list_ciphersuites( void )
1283{
Paul Bakker41c83d32013-03-20 14:39:14 +01001284 /*
1285 * On initial call filter out all ciphersuites not supported by current
1286 * build based on presence in the ciphersuite_definitions.
1287 */
1288 if( supported_init == 0 )
1289 {
1290 const int *p = ciphersuite_preference;
1291 int *q = supported_ciphersuites;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001292 size_t i;
1293 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
Paul Bakker41c83d32013-03-20 14:39:14 +01001294
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001295 for( i = 0; i < max - 1 && p[i] != 0; i++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001296 {
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001297 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1298 *(q++) = p[i];
Paul Bakker41c83d32013-03-20 14:39:14 +01001299 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001300 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001301
Paul Bakker41c83d32013-03-20 14:39:14 +01001302 supported_init = 1;
1303 }
1304
Paul Bakker68884e32013-01-07 18:20:04 +01001305 return supported_ciphersuites;
1306};
1307
1308const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name )
1309{
1310 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1311
1312 if( NULL == ciphersuite_name )
1313 return( NULL );
1314
1315 while( cur->id != 0 )
1316 {
1317 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1318 return( cur );
1319
1320 cur++;
1321 }
1322
1323 return( NULL );
1324}
1325
1326const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1327{
1328 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1329
1330 while( cur->id != 0 )
1331 {
1332 if( cur->id == ciphersuite )
1333 return( cur );
1334
1335 cur++;
1336 }
1337
1338 return( NULL );
1339}
1340
1341const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1342{
1343 const ssl_ciphersuite_t *cur;
1344
1345 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1346
1347 if( cur == NULL )
1348 return( "unknown" );
1349
1350 return( cur->name );
1351}
1352
1353int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1354{
1355 const ssl_ciphersuite_t *cur;
1356
1357 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1358
1359 if( cur == NULL )
1360 return( 0 );
1361
1362 return( cur->id );
1363}
1364
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001365#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001366pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1367{
1368 switch( info->key_exchange )
1369 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001370 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001371 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1372 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001373 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001374 return( POLARSSL_PK_RSA );
1375
1376 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1377 return( POLARSSL_PK_ECDSA );
1378
1379 default:
1380 return( POLARSSL_PK_NONE );
1381 }
1382}
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001383#endif
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001384
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001385int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1386{
1387 switch( info->key_exchange )
1388 {
1389 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1390 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001391 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001392 return( 1 );
1393
1394 default:
1395 return( 0 );
1396 }
1397}
1398
Manuel Pégourié-Gonnard21ef42f2013-10-27 14:47:25 +01001399int ssl_ciphersuite_uses_psk( const ssl_ciphersuite_t *info )
1400{
1401 switch( info->key_exchange )
1402 {
1403 case POLARSSL_KEY_EXCHANGE_PSK:
1404 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
1405 case POLARSSL_KEY_EXCHANGE_DHE_PSK:
1406 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
1407 return( 1 );
1408
1409 default:
1410 return( 0 );
1411 }
1412}
1413
Paul Bakker68884e32013-01-07 18:20:04 +01001414#endif