blob: 7de532238e70e5ea2b459f459a8712d87bfe0c8c [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 Bakker41c83d32013-03-20 14:39:14 +010037/*
38 * Ordered from most preferred to least preferred in terms of security.
39 */
40static const int ciphersuite_preference[] =
Paul Bakker68884e32013-01-07 18:20:04 +010041{
Paul Bakker27714b12013-04-07 23:07:12 +020042 /* All AES-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020043 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010044 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010045 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020046 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010047 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010048 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020049 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010050 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010051 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020052
53 /* All CAMELLIA-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020054 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020055 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010056 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010057 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020058
59 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020060 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010061 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010062 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020063 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010064 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010065 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020066 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010067 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
68 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020069
70 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020071 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +020072 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010073 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010074 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020075
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020076 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020077 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010078 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010079 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020080 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010081 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020082
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020083 /* The PSK ephemeral suites */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020084 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
85 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
86 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
87 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
88 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
89 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
90 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
91 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +020092 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020093 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +020094 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +020095 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +020096 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020097 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +020098 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +020099 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200100 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
101 TLS_DHE_PSK_WITH_RC4_128_SHA,
102
Paul Bakker27714b12013-04-07 23:07:12 +0200103 /* All AES-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100104 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100105 TLS_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100106 TLS_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200107
108 /* All CAMELLIA-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100109 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100110 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200111
112 /* All AES-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100113 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100114 TLS_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100115 TLS_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200116
117 /* All CAMELLIA-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100118 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100119 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200120
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200121 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100122 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100123 TLS_RSA_WITH_RC4_128_SHA,
124 TLS_RSA_WITH_RC4_128_MD5,
Paul Bakker27714b12013-04-07 23:07:12 +0200125
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200126 /* The RSA PSK suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200127 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200128 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200129 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200130 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200131 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200132 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200133 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200134 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200135 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
136 TLS_RSA_PSK_WITH_RC4_128_SHA,
137
138 /* The PSK suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200139 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200140 TLS_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200141 TLS_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200142 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200143 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200144 TLS_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200145 TLS_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200146 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200147 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
148 TLS_PSK_WITH_RC4_128_SHA,
149
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200150 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100151 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100152 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200153
154 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200155 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100156 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200157 TLS_ECDHE_PSK_WITH_NULL_SHA384,
158 TLS_ECDHE_PSK_WITH_NULL_SHA256,
159 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200160 TLS_DHE_PSK_WITH_NULL_SHA384,
161 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200162 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200163 TLS_RSA_WITH_NULL_SHA256,
164 TLS_RSA_WITH_NULL_SHA,
165 TLS_RSA_WITH_NULL_MD5,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200166 TLS_RSA_PSK_WITH_NULL_SHA384,
167 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200168 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200169 TLS_PSK_WITH_NULL_SHA384,
170 TLS_PSK_WITH_NULL_SHA256,
171 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200172
Paul Bakker68884e32013-01-07 18:20:04 +0100173 0
174};
175
Manuel Pégourié-Gonnard57a87832013-08-27 16:13:54 +0200176#define MAX_CIPHERSUITES 128
Paul Bakker41c83d32013-03-20 14:39:14 +0100177static int supported_ciphersuites[MAX_CIPHERSUITES];
178static int supported_init = 0;
179
Paul Bakker68884e32013-01-07 18:20:04 +0100180static const ssl_ciphersuite_t ciphersuite_definitions[] =
181{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200182#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
183#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200184#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200185#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200186 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
187 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
188 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
189 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200190 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200191 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
192 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
193 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
194 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200195 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200196#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200197#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200198#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200199#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200200 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
201 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
202 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
203 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200204 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200205#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200206#if defined(POLARSSL_GCM_C)
207 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
208 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
209 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
210 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200211 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200212#endif /* POLARSSL_GCM_C */
213#endif /* POLARSSL_SHA256_C */
214#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200215#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200216 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
217 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
218 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
219 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200220 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200221#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200222#if defined(POLARSSL_GCM_C)
223 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
224 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
225 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
226 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200227 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200228#endif /* POLARSSL_GCM_C */
229#endif /* POLARSSL_SHA512_C */
230#endif /* POLARSSL_AES_C */
231
232#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200233#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200234#if defined(POLARSSL_SHA256_C)
235 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
236 POLARSSL_CIPHER_CAMELLIA_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é-Gonnard32ea60a2013-08-17 17:39:04 +0200240#endif /* POLARSSL_SHA256_C */
241#if defined(POLARSSL_SHA512_C)
242 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
243 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, 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_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200248#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200249#endif /* POLARSSL_CAMELLIA_C */
250
251#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200252#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200253#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200254 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
255 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
256 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
257 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200258 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200259#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200260#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200261#endif /* POLARSSL_DES_C */
262
263#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200264#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200265 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
266 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
267 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
268 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200269 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200270#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200271#endif /* POLARSSL_ARC4_C */
272
273#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200274#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200275 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
276 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
277 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
278 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200279 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200280#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200281#endif /* POLARSSL_CIPHER_NULL_CIPHER */
282#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
283
Paul Bakkere07f41d2013-04-19 09:08:57 +0200284#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100285#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200286#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200287#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100288 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
289 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
290 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
291 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200292 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100293 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
294 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
295 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
296 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200297 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200298#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200299#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200300#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200301#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100302 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
303 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
304 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
305 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200306 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200307#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100308#if defined(POLARSSL_GCM_C)
309 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
310 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
311 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
312 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200313 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100314#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200315#endif /* POLARSSL_SHA256_C */
316#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200317#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100318 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
319 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
320 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
321 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200322 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200323#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100324#if defined(POLARSSL_GCM_C)
325 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
326 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
327 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
328 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200329 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100330#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200331#endif /* POLARSSL_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100332#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200333
334#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200335#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200336#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200337 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
338 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
339 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
340 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200341 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200342#endif /* POLARSSL_SHA256_C */
343#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200344 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
345 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
346 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
347 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200348 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200349#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200350#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker27714b12013-04-07 23:07:12 +0200351#endif /* POLARSSL_CAMELLIA_C */
352
Paul Bakker41c83d32013-03-20 14:39:14 +0100353#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200354#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200355#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100356 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
357 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
358 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
359 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200360 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200361#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200362#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100363#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200364
Paul Bakker41c83d32013-03-20 14:39:14 +0100365#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200366#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100367 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
368 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
369 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
370 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200371 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200372#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200373#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200374
Paul Bakker41c83d32013-03-20 14:39:14 +0100375#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200376#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100377 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
378 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
379 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
380 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200381 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200382#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200383#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200384#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100385
Paul Bakkere07f41d2013-04-19 09:08:57 +0200386#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100387#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200388#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100389 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
390 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
391 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
392 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
393 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200394#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100395
Paul Bakker9e36f042013-06-30 14:34:05 +0200396#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100397#if defined(POLARSSL_GCM_C)
398 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
399 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
400 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
401 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
402 0 },
403#endif /* POLARSSL_GCM_C */
404
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200405#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100406 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
407 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
408 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
409 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
410 0 },
411
412 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
413 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
414 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
415 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
416 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200417#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200418#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100419
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200420#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200421#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100422 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
423 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
424 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
425 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
426 0 },
427
428 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
429 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
430 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
431 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
432 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200433#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200434#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100435#endif /* POLARSSL_AES_C */
436
437#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200438#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200439#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100440 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
441 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
442 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
443 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
444 0 },
445
446 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
447 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
448 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
449 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
450 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200451#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100452
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200453#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100454 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
455 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
456 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
457 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
458 0 },
459
460 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
461 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
462 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
463 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
464 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200465#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200466#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100467#endif /* POLARSSL_CAMELLIA_C */
468
469#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200470#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200471#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100472 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
473 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
474 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
475 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
476 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200477#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200478#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100479#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200480#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100481
Paul Bakkere07f41d2013-04-19 09:08:57 +0200482#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100483#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200484#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100485 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
486 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
487 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
488 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
489 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200490#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100491
Paul Bakker9e36f042013-06-30 14:34:05 +0200492#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100493#if defined(POLARSSL_GCM_C)
494 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
495 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
496 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
497 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
498 0 },
499#endif /* POLARSSL_GCM_C */
500
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200501#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100502 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
503 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
504 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
505 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
506 0 },
507
508 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
509 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
510 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
511 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
512 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200513#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200514#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100515
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200516#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200517#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100518 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
519 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
520 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
521 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
522 0 },
523
524 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
525 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
526 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
527 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
528 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200529#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200530#endif /* POLARSSL_SHA1_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100531#endif /* POLARSSL_AES_C */
532
533#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200534#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200535#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100536 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
537 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
538 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
539 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
540 0 },
541
542 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
543 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
544 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
545 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
546 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200547#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100548
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200549#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100550 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
551 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
552 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
553 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
554 0 },
555
556 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
557 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
558 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
559 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
560 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200561#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200562#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100563#endif /* POLARSSL_CAMELLIA_C */
564
565#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200566#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200567#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100568 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
569 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
570 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
571 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
572 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200573#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200574#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100575#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200576
577#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200578#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200579 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
580 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
581 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
582 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
583 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200584#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200585
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200586#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200587 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
588 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
589 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
590 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
591 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200592#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200593#endif /* POLARSSL_ARC4_C */
594#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100595
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200596#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
597#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200598#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200599#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200600 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
601 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
602 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
603 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
604 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200605#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200606
Paul Bakker9e36f042013-06-30 14:34:05 +0200607#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200608 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
609 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
610 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
611 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
612 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200613#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200614#endif /* POLARSSL_GCM_C */
615
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200616#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200617#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200618 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
619 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
620 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
621 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
622 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200623#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200624
Paul Bakker9e36f042013-06-30 14:34:05 +0200625#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200626 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
627 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
628 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
629 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
630 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200631#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200632
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200633#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200634 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
635 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
636 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
637 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
638 0 },
639
640 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
641 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
642 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
643 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
644 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200645#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200646#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200647#endif /* POLARSSL_AES_C */
648
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200649#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200650#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200651#if defined(POLARSSL_SHA256_C)
652 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
653 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
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_SHA512_C)
660 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
661 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
662 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
663 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
664 0 },
665#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200666#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200667#endif /* POLARSSL_CAMELLIA_C */
668
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200669#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 Bakkerd4a56ec2013-04-16 18:05:29 +0200672 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
673 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
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 Bakkerd4a56ec2013-04-16 18:05:29 +0200679#endif /* POLARSSL_DES_C */
680
681#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200682#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200683 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
684 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
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 /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200689#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200690#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200691
Paul Bakkere07f41d2013-04-19 09:08:57 +0200692#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200693#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200694#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200695#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200696 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
697 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
698 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
699 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
700 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200701#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200702
Paul Bakker9e36f042013-06-30 14:34:05 +0200703#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200704 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
705 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_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_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200710#endif /* POLARSSL_GCM_C */
711
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200712#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200713#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200714 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
715 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
716 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
717 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
718 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200719#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200720
Paul Bakker9e36f042013-06-30 14:34:05 +0200721#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200722 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
723 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
724 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
725 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
726 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200727#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200728
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200729#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200730 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
731 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
732 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
733 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
734 0 },
735
736 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
737 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
738 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
739 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
740 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200741#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200742#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200743#endif /* POLARSSL_AES_C */
744
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200745#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200746#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200747#if defined(POLARSSL_SHA256_C)
748 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
749 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
750 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
751 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
752 0 },
753#endif /* POLARSSL_SHA256_C */
754
755#if defined(POLARSSL_SHA512_C)
756 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
757 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
758 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
759 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
760 0 },
761#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200762#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200763#endif /* POLARSSL_CAMELLIA_C */
764
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200765#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200766#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200767#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200768 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
769 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
770 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
771 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
772 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200773#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200774#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200775#endif /* POLARSSL_DES_C */
776
777#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200778#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200779 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
780 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
781 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
782 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
783 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200784#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200785#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200786#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200787
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200788#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
789#if defined(POLARSSL_AES_C)
790
791#if defined(POLARSSL_CIPHER_MODE_CBC)
792#if defined(POLARSSL_SHA256_C)
793 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
794 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
795 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
796 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
797 0 },
798#endif /* POLARSSL_SHA256_C */
799
800#if defined(POLARSSL_SHA512_C)
801 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
802 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
803 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
804 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
805 0 },
806#endif /* POLARSSL_SHA512_C */
807
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200808#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200809 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
810 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
811 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
812 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
813 0 },
814
815 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
816 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
817 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
818 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
819 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200820#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200821#endif /* POLARSSL_CIPHER_MODE_CBC */
822#endif /* POLARSSL_AES_C */
823
824#if defined(POLARSSL_CAMELLIA_C)
825#if defined(POLARSSL_CIPHER_MODE_CBC)
826#if defined(POLARSSL_SHA256_C)
827 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
828 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
829 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
830 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
831 0 },
832#endif /* POLARSSL_SHA256_C */
833
834#if defined(POLARSSL_SHA512_C)
835 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
836 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
837 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
838 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
839 0 },
840#endif /* POLARSSL_SHA512_C */
841#endif /* POLARSSL_CIPHER_MODE_CBC */
842#endif /* POLARSSL_CAMELLIA_C */
843
844#if defined(POLARSSL_DES_C)
845#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200846#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200847 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
848 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
849 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
850 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
851 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200852#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200853#endif /* POLARSSL_CIPHER_MODE_CBC */
854#endif /* POLARSSL_DES_C */
855
856#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200857#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200858 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
859 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_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é-Gonnard225d6aa2013-10-11 19:07:56 +0200864#endif /* POLARSSL_ARC4_C */
865#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
866
Paul Bakkere07f41d2013-04-19 09:08:57 +0200867#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200868#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200869#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200870#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200871 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
872 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
873 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
874 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
875 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200876#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200877
Paul Bakker9e36f042013-06-30 14:34:05 +0200878#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200879 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
880 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
881 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
882 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
883 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200884#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200885#endif /* POLARSSL_GCM_C */
886
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200887#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200888#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200889 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
890 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
891 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
892 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
893 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200894#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200895
Paul Bakker9e36f042013-06-30 14:34:05 +0200896#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200897 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
898 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
899 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
900 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
901 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200902#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200903
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200904#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200905 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
906 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
907 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
908 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
909 0 },
910
911 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
912 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
913 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
914 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
915 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200916#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200917#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200918#endif /* POLARSSL_AES_C */
919
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200920#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200921#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200922#if defined(POLARSSL_SHA256_C)
923 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
924 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
925 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
926 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
927 0 },
928#endif /* POLARSSL_SHA256_C */
929
930#if defined(POLARSSL_SHA512_C)
931 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
932 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
933 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
934 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
935 0 },
936#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200937#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200938#endif /* POLARSSL_CAMELLIA_C */
939
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200940#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200941#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200942#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200943 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
944 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
945 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
946 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
947 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200948#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200949#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200950#endif /* POLARSSL_DES_C */
951
952#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200953#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200954 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
955 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
956 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
957 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
958 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200959#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200960#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200961#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200962
Paul Bakker68884e32013-01-07 18:20:04 +0100963#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
964#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200965#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200966#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100967 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
968 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
969 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
970 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
971 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200972#endif
Paul Bakker68884e32013-01-07 18:20:04 +0100973
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200974#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100975 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
976 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
977 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
978 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
979 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200980#endif
Paul Bakker68884e32013-01-07 18:20:04 +0100981
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200982#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100983 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
984 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
985 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
986 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
987 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200988#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200989#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100990
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200991#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200992#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200993 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
994 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
995 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
996 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
997 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200998#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200999#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1000
1001#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001002#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001003 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1004 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1005 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1006 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1007 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001008#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001009#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1010
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001011#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001012#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001013 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1014 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1015 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1016 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1017 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001018#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001019
1020#if defined(POLARSSL_SHA256_C)
1021 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1022 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1023 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1024 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1025 POLARSSL_CIPHERSUITE_WEAK },
1026#endif
1027
1028#if defined(POLARSSL_SHA512_C)
1029 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1030 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1031 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1032 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1033 POLARSSL_CIPHERSUITE_WEAK },
1034#endif
1035#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1036
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001037#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001038#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001039 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1040 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1041 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1042 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1043 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001044#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001045#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1046#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1047
Paul Bakker68884e32013-01-07 18:20:04 +01001048#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001049#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001050#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001051#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001052 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1053 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1054 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1055 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1056 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001057#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001058#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001059
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001060#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001061#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001062 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1063 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1064 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1065 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1066 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001067#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001068#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1069#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001070#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001071#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1072
1073 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1074};
1075
1076const int *ssl_list_ciphersuites( void )
1077{
Paul Bakker41c83d32013-03-20 14:39:14 +01001078 /*
1079 * On initial call filter out all ciphersuites not supported by current
1080 * build based on presence in the ciphersuite_definitions.
1081 */
1082 if( supported_init == 0 )
1083 {
1084 const int *p = ciphersuite_preference;
1085 int *q = supported_ciphersuites;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001086 size_t i;
1087 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
Paul Bakker41c83d32013-03-20 14:39:14 +01001088
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001089 for( i = 0; i < max - 1 && p[i] != 0; i++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001090 {
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001091 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1092 *(q++) = p[i];
Paul Bakker41c83d32013-03-20 14:39:14 +01001093 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001094 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001095
Paul Bakker41c83d32013-03-20 14:39:14 +01001096 supported_init = 1;
1097 }
1098
Paul Bakker68884e32013-01-07 18:20:04 +01001099 return supported_ciphersuites;
1100};
1101
1102const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name )
1103{
1104 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1105
1106 if( NULL == ciphersuite_name )
1107 return( NULL );
1108
1109 while( cur->id != 0 )
1110 {
1111 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1112 return( cur );
1113
1114 cur++;
1115 }
1116
1117 return( NULL );
1118}
1119
1120const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1121{
1122 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1123
1124 while( cur->id != 0 )
1125 {
1126 if( cur->id == ciphersuite )
1127 return( cur );
1128
1129 cur++;
1130 }
1131
1132 return( NULL );
1133}
1134
1135const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1136{
1137 const ssl_ciphersuite_t *cur;
1138
1139 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1140
1141 if( cur == NULL )
1142 return( "unknown" );
1143
1144 return( cur->name );
1145}
1146
1147int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1148{
1149 const ssl_ciphersuite_t *cur;
1150
1151 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1152
1153 if( cur == NULL )
1154 return( 0 );
1155
1156 return( cur->id );
1157}
1158
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001159#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001160pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1161{
1162 switch( info->key_exchange )
1163 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001164 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001165 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1166 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001167 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001168 return( POLARSSL_PK_RSA );
1169
1170 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1171 return( POLARSSL_PK_ECDSA );
1172
1173 default:
1174 return( POLARSSL_PK_NONE );
1175 }
1176}
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001177#endif
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001178
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001179int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1180{
1181 switch( info->key_exchange )
1182 {
1183 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1184 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001185 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001186 return( 1 );
1187
1188 default:
1189 return( 0 );
1190 }
1191}
1192
Paul Bakker68884e32013-01-07 18:20:04 +01001193#endif