blob: 9186cc45e6baf2ca5116a7f0cee6a0392973aae9 [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
Manuel Pégourié-Gonnard9654fb12013-10-03 11:53:05 +020037#if defined _MSC_VER && !defined strcasecmp
38#define strcasecmp _stricmp
39#endif
40
Paul Bakker41c83d32013-03-20 14:39:14 +010041/*
42 * Ordered from most preferred to least preferred in terms of security.
43 */
44static const int ciphersuite_preference[] =
Paul Bakker68884e32013-01-07 18:20:04 +010045{
Paul Bakker27714b12013-04-07 23:07:12 +020046 /* All AES-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020047 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010048 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010049 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020050 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010051 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010052 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020053 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010054 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010055 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020056
57 /* All CAMELLIA-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020058 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020059 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010060 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010061 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020062
63 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020064 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010065 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010066 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020067 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010068 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010069 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020070 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010071 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
72 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020073
74 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020075 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +020076 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010077 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010078 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020079
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020080 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020081 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010082 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010083 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020084 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010085 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020086
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020087 /* The PSK ephemeral suites */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020088 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
89 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
90 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
91 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
92 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
93 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
94 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
95 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +020096 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020097 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +020098 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +020099 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200100 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200101 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200102 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200103 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200104 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
105 TLS_DHE_PSK_WITH_RC4_128_SHA,
106
Paul Bakker27714b12013-04-07 23:07:12 +0200107 /* All AES-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100108 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100109 TLS_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100110 TLS_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200111
112 /* All CAMELLIA-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100113 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100114 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200115
116 /* All AES-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100117 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100118 TLS_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100119 TLS_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200120
121 /* All CAMELLIA-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100122 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100123 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200124
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200125 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100126 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100127 TLS_RSA_WITH_RC4_128_SHA,
128 TLS_RSA_WITH_RC4_128_MD5,
Paul Bakker27714b12013-04-07 23:07:12 +0200129
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200130 /* The RSA PSK suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200131 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200132 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200133 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200134 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200135 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200136 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200137 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200138 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200139 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
140 TLS_RSA_PSK_WITH_RC4_128_SHA,
141
142 /* The PSK suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200143 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200144 TLS_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200145 TLS_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200146 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200147 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200148 TLS_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200149 TLS_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200150 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200151 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
152 TLS_PSK_WITH_RC4_128_SHA,
153
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200154 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100155 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100156 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200157
158 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200159 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100160 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200161 TLS_ECDHE_PSK_WITH_NULL_SHA384,
162 TLS_ECDHE_PSK_WITH_NULL_SHA256,
163 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200164 TLS_DHE_PSK_WITH_NULL_SHA384,
165 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200166 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200167 TLS_RSA_WITH_NULL_SHA256,
168 TLS_RSA_WITH_NULL_SHA,
169 TLS_RSA_WITH_NULL_MD5,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200170 TLS_RSA_PSK_WITH_NULL_SHA384,
171 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200172 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200173 TLS_PSK_WITH_NULL_SHA384,
174 TLS_PSK_WITH_NULL_SHA256,
175 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200176
Paul Bakker68884e32013-01-07 18:20:04 +0100177 0
178};
179
Manuel Pégourié-Gonnard57a87832013-08-27 16:13:54 +0200180#define MAX_CIPHERSUITES 128
Paul Bakker41c83d32013-03-20 14:39:14 +0100181static int supported_ciphersuites[MAX_CIPHERSUITES];
182static int supported_init = 0;
183
Paul Bakker68884e32013-01-07 18:20:04 +0100184static const ssl_ciphersuite_t ciphersuite_definitions[] =
185{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200186#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
187#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200188#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200189#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200190 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
191 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
192 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
193 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200194 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200195 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
196 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
197 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
198 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200199 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200200#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200201#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200202#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200203#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200204 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
205 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
206 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
207 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200208 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200209#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200210#if defined(POLARSSL_GCM_C)
211 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
212 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
213 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
214 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200215 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200216#endif /* POLARSSL_GCM_C */
217#endif /* POLARSSL_SHA256_C */
218#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200219#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200220 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
221 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
222 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
223 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200224 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200225#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200226#if defined(POLARSSL_GCM_C)
227 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
228 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
229 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
230 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200231 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200232#endif /* POLARSSL_GCM_C */
233#endif /* POLARSSL_SHA512_C */
234#endif /* POLARSSL_AES_C */
235
236#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200237#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200238#if defined(POLARSSL_SHA256_C)
239 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
240 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
241 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
242 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200243 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200244#endif /* POLARSSL_SHA256_C */
245#if defined(POLARSSL_SHA512_C)
246 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
247 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
248 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
249 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200250 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200251#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200252#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200253#endif /* POLARSSL_CAMELLIA_C */
254
255#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200256#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200257#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200258 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
259 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
261 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200262 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200263#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200264#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200265#endif /* POLARSSL_DES_C */
266
267#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200268#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200269 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
270 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
271 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
272 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200273 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200274#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200275#endif /* POLARSSL_ARC4_C */
276
277#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200278#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200279 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
280 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
281 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
282 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200283 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200284#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200285#endif /* POLARSSL_CIPHER_NULL_CIPHER */
286#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
287
Paul Bakkere07f41d2013-04-19 09:08:57 +0200288#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100289#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200290#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200291#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100292 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
293 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
294 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
295 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200296 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100297 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
298 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
299 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
300 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200301 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200302#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200303#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200304#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200305#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100306 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
307 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
308 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
309 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200310 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200311#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100312#if defined(POLARSSL_GCM_C)
313 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
314 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
315 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
316 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200317 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100318#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200319#endif /* POLARSSL_SHA256_C */
320#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200321#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100322 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
323 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
324 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
325 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200326 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200327#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100328#if defined(POLARSSL_GCM_C)
329 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
330 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
331 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
332 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200333 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100334#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200335#endif /* POLARSSL_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100336#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200337
338#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200339#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200340#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200341 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
342 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
343 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
344 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200345 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200346#endif /* POLARSSL_SHA256_C */
347#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200348 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
349 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
350 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
351 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200352 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200353#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200354#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker27714b12013-04-07 23:07:12 +0200355#endif /* POLARSSL_CAMELLIA_C */
356
Paul Bakker41c83d32013-03-20 14:39:14 +0100357#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200358#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200359#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100360 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
361 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
362 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
363 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200364 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200365#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200366#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100367#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200368
Paul Bakker41c83d32013-03-20 14:39:14 +0100369#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200370#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100371 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
372 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
373 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
374 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200375 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200376#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200377#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200378
Paul Bakker41c83d32013-03-20 14:39:14 +0100379#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200380#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100381 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
382 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
383 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
384 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200385 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200386#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200387#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200388#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100389
Paul Bakkere07f41d2013-04-19 09:08:57 +0200390#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100391#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200392#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100393 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
394 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
395 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
396 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
397 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200398#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100399
Paul Bakker9e36f042013-06-30 14:34:05 +0200400#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100401#if defined(POLARSSL_GCM_C)
402 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
403 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
404 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
405 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
406 0 },
407#endif /* POLARSSL_GCM_C */
408
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200409#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100410 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
411 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
412 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
413 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
414 0 },
415
416 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
417 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
418 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
419 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
420 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200421#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200422#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100423
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200424#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200425#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100426 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
427 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
428 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
429 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
430 0 },
431
432 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
433 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
434 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
435 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
436 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200437#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200438#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100439#endif /* POLARSSL_AES_C */
440
441#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200442#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200443#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100444 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
445 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
446 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
447 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
448 0 },
449
450 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
451 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
452 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
453 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
454 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200455#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100456
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200457#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100458 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
459 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
460 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
461 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
462 0 },
463
464 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
465 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
466 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
467 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
468 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200469#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200470#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100471#endif /* POLARSSL_CAMELLIA_C */
472
473#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200474#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200475#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100476 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
477 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
478 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
479 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
480 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200481#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200482#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100483#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200484#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100485
Paul Bakkere07f41d2013-04-19 09:08:57 +0200486#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100487#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200488#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100489 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
490 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
491 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
492 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
493 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200494#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100495
Paul Bakker9e36f042013-06-30 14:34:05 +0200496#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100497#if defined(POLARSSL_GCM_C)
498 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
499 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
500 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
501 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
502 0 },
503#endif /* POLARSSL_GCM_C */
504
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200505#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100506 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
507 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
508 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
509 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
510 0 },
511
512 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
513 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
514 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
515 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
516 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200517#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200518#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100519
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200520#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200521#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100522 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
523 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
524 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
525 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
526 0 },
527
528 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
529 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
530 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
531 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
532 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200533#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200534#endif /* POLARSSL_SHA1_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100535#endif /* POLARSSL_AES_C */
536
537#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200538#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200539#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100540 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
541 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
542 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
543 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
544 0 },
545
546 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
547 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
548 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
549 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
550 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200551#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100552
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200553#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100554 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
555 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
556 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
557 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
558 0 },
559
560 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
561 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
562 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
563 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
564 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200565#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200566#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100567#endif /* POLARSSL_CAMELLIA_C */
568
569#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200570#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200571#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100572 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
573 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
574 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
575 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
576 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200577#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200578#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100579#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200580
581#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200582#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200583 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
584 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
585 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
586 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
587 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200588#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200589
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200590#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200591 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
592 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
593 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
594 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
595 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200596#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200597#endif /* POLARSSL_ARC4_C */
598#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100599
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200600#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
601#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200602#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200603#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200604 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
605 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
606 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
607 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
608 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200609#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200610
Paul Bakker9e36f042013-06-30 14:34:05 +0200611#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200612 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
613 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
614 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
615 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
616 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200617#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200618#endif /* POLARSSL_GCM_C */
619
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 Bakker40afb4b2013-04-19 22:03:30 +0200622 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
623 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
624 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
625 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
626 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200627#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200628
Paul Bakker9e36f042013-06-30 14:34:05 +0200629#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200630 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
631 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
632 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
633 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
634 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200635#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200636
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200637#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200638 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
639 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
640 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
641 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
642 0 },
643
644 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
645 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
646 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
647 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
648 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200649#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200650#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200651#endif /* POLARSSL_AES_C */
652
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200653#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200654#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200655#if defined(POLARSSL_SHA256_C)
656 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
657 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
658 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
659 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
660 0 },
661#endif /* POLARSSL_SHA256_C */
662
663#if defined(POLARSSL_SHA512_C)
664 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
665 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
666 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
667 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
668 0 },
669#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200670#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200671#endif /* POLARSSL_CAMELLIA_C */
672
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200673#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200674#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200675#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200676 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
677 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
678 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
679 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
680 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200681#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200682#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200683#endif /* POLARSSL_DES_C */
684
685#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200686#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200687 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
688 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
689 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
690 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
691 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200692#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200693#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200694#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200695
Paul Bakkere07f41d2013-04-19 09:08:57 +0200696#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200697#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200698#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200699#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200700 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
701 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
702 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
703 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
704 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200705#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200706
Paul Bakker9e36f042013-06-30 14:34:05 +0200707#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200708 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
709 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
710 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
711 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
712 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200713#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200714#endif /* POLARSSL_GCM_C */
715
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200716#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200717#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200718 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
719 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
720 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
721 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
722 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200723#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200724
Paul Bakker9e36f042013-06-30 14:34:05 +0200725#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200726 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
727 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
728 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
729 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
730 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200731#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200732
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200733#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200734 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
735 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
736 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
737 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
738 0 },
739
740 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
741 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
742 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
743 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
744 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200745#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200746#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200747#endif /* POLARSSL_AES_C */
748
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200749#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200750#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200751#if defined(POLARSSL_SHA256_C)
752 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
753 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
754 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
755 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
756 0 },
757#endif /* POLARSSL_SHA256_C */
758
759#if defined(POLARSSL_SHA512_C)
760 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
761 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
762 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
763 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
764 0 },
765#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200766#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200767#endif /* POLARSSL_CAMELLIA_C */
768
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200769#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200770#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200771#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200772 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
773 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
774 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
775 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
776 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200777#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200778#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200779#endif /* POLARSSL_DES_C */
780
781#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200782#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200783 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
784 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
785 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
786 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
787 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200788#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200789#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200790#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200791
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200792#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
793#if defined(POLARSSL_AES_C)
794
795#if defined(POLARSSL_CIPHER_MODE_CBC)
796#if defined(POLARSSL_SHA256_C)
797 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
798 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
799 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
800 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
801 0 },
802#endif /* POLARSSL_SHA256_C */
803
804#if defined(POLARSSL_SHA512_C)
805 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
806 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
807 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
808 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
809 0 },
810#endif /* POLARSSL_SHA512_C */
811
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200812#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200813 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
814 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
815 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
816 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
817 0 },
818
819 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
820 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
821 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
822 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
823 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200824#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200825#endif /* POLARSSL_CIPHER_MODE_CBC */
826#endif /* POLARSSL_AES_C */
827
828#if defined(POLARSSL_CAMELLIA_C)
829#if defined(POLARSSL_CIPHER_MODE_CBC)
830#if defined(POLARSSL_SHA256_C)
831 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
832 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
833 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
834 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
835 0 },
836#endif /* POLARSSL_SHA256_C */
837
838#if defined(POLARSSL_SHA512_C)
839 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
840 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
841 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
842 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
843 0 },
844#endif /* POLARSSL_SHA512_C */
845#endif /* POLARSSL_CIPHER_MODE_CBC */
846#endif /* POLARSSL_CAMELLIA_C */
847
848#if defined(POLARSSL_DES_C)
849#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200850#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200851 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
852 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
853 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
854 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
855 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200856#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200857#endif /* POLARSSL_CIPHER_MODE_CBC */
858#endif /* POLARSSL_DES_C */
859
860#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200861#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200862 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
863 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
864 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
865 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
866 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200867#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200868#endif /* POLARSSL_ARC4_C */
869#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
870
Paul Bakkere07f41d2013-04-19 09:08:57 +0200871#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200872#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200873#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200874#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200875 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
876 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
877 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
878 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
879 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200880#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200881
Paul Bakker9e36f042013-06-30 14:34:05 +0200882#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200883 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
884 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
885 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
886 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
887 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200888#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200889#endif /* POLARSSL_GCM_C */
890
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200891#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200892#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200893 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
894 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
895 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
896 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
897 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200898#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200899
Paul Bakker9e36f042013-06-30 14:34:05 +0200900#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200901 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
902 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
903 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
904 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
905 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200906#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200907
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200908#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200909 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
910 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
911 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
912 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
913 0 },
914
915 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
916 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
917 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
918 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
919 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200920#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200921#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200922#endif /* POLARSSL_AES_C */
923
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200924#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200925#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200926#if defined(POLARSSL_SHA256_C)
927 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
928 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
929 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
930 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
931 0 },
932#endif /* POLARSSL_SHA256_C */
933
934#if defined(POLARSSL_SHA512_C)
935 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
936 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
937 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
938 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
939 0 },
940#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200941#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200942#endif /* POLARSSL_CAMELLIA_C */
943
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200944#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200945#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200946#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200947 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
948 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
949 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
950 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
951 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200952#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200953#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200954#endif /* POLARSSL_DES_C */
955
956#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200957#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200958 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
959 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
960 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
961 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
962 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200963#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200964#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200965#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200966
Paul Bakker68884e32013-01-07 18:20:04 +0100967#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
968#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200969#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200970#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100971 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
972 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
973 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
974 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
975 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200976#endif
Paul Bakker68884e32013-01-07 18:20:04 +0100977
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200978#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100979 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
980 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
981 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
982 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
983 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200984#endif
Paul Bakker68884e32013-01-07 18:20:04 +0100985
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200986#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100987 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
988 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
989 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
990 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
991 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200992#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200993#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100994
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200995#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200996#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200997 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
998 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
999 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1000 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1001 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001002#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001003#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1004
1005#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001006#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001007 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1008 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1009 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1010 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1011 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001012#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001013#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1014
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001015#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001016#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001017 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1018 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1019 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1020 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1021 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001022#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001023
1024#if defined(POLARSSL_SHA256_C)
1025 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1026 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1027 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1028 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1029 POLARSSL_CIPHERSUITE_WEAK },
1030#endif
1031
1032#if defined(POLARSSL_SHA512_C)
1033 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1034 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1035 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1036 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1037 POLARSSL_CIPHERSUITE_WEAK },
1038#endif
1039#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1040
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001041#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001042#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001043 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1044 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1045 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1046 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1047 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001048#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001049
1050#if defined(POLARSSL_SHA256_C)
1051 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1052 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1053 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1054 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1055 POLARSSL_CIPHERSUITE_WEAK },
1056#endif /* POLARSSL_SHA256_C */
1057
1058#if defined(POLARSSL_SHA512_C)
1059 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1060 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1061 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1062 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1063 POLARSSL_CIPHERSUITE_WEAK },
1064#endif /* POLARSSL_SHA512_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001065#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1066#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1067
Paul Bakker68884e32013-01-07 18:20:04 +01001068#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001069#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001070#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001071#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001072 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1073 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1074 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1075 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1076 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001077#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001078#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001079
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001080#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001081#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001082 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1083 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1084 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1085 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1086 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001087#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001088#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1089#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001090#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001091#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1092
1093 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1094};
1095
1096const int *ssl_list_ciphersuites( void )
1097{
Paul Bakker41c83d32013-03-20 14:39:14 +01001098 /*
1099 * On initial call filter out all ciphersuites not supported by current
1100 * build based on presence in the ciphersuite_definitions.
1101 */
1102 if( supported_init == 0 )
1103 {
1104 const int *p = ciphersuite_preference;
1105 int *q = supported_ciphersuites;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001106 size_t i;
1107 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
Paul Bakker41c83d32013-03-20 14:39:14 +01001108
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001109 for( i = 0; i < max - 1 && p[i] != 0; i++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001110 {
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001111 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1112 *(q++) = p[i];
Paul Bakker41c83d32013-03-20 14:39:14 +01001113 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001114 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001115
Paul Bakker41c83d32013-03-20 14:39:14 +01001116 supported_init = 1;
1117 }
1118
Paul Bakker68884e32013-01-07 18:20:04 +01001119 return supported_ciphersuites;
1120};
1121
1122const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name )
1123{
1124 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1125
1126 if( NULL == ciphersuite_name )
1127 return( NULL );
1128
1129 while( cur->id != 0 )
1130 {
1131 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1132 return( cur );
1133
1134 cur++;
1135 }
1136
1137 return( NULL );
1138}
1139
1140const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1141{
1142 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1143
1144 while( cur->id != 0 )
1145 {
1146 if( cur->id == ciphersuite )
1147 return( cur );
1148
1149 cur++;
1150 }
1151
1152 return( NULL );
1153}
1154
1155const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1156{
1157 const ssl_ciphersuite_t *cur;
1158
1159 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1160
1161 if( cur == NULL )
1162 return( "unknown" );
1163
1164 return( cur->name );
1165}
1166
1167int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1168{
1169 const ssl_ciphersuite_t *cur;
1170
1171 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1172
1173 if( cur == NULL )
1174 return( 0 );
1175
1176 return( cur->id );
1177}
1178
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001179#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001180pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1181{
1182 switch( info->key_exchange )
1183 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001184 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001185 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1186 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001187 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001188 return( POLARSSL_PK_RSA );
1189
1190 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1191 return( POLARSSL_PK_ECDSA );
1192
1193 default:
1194 return( POLARSSL_PK_NONE );
1195 }
1196}
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001197#endif
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001198
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001199int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1200{
1201 switch( info->key_exchange )
1202 {
1203 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1204 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001205 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001206 return( 1 );
1207
1208 default:
1209 return( 0 );
1210 }
1211}
1212
Manuel Pégourié-Gonnard21ef42f2013-10-27 14:47:25 +01001213int ssl_ciphersuite_uses_psk( const ssl_ciphersuite_t *info )
1214{
1215 switch( info->key_exchange )
1216 {
1217 case POLARSSL_KEY_EXCHANGE_PSK:
1218 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
1219 case POLARSSL_KEY_EXCHANGE_DHE_PSK:
1220 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
1221 return( 1 );
1222
1223 default:
1224 return( 0 );
1225 }
1226}
1227
Paul Bakker68884e32013-01-07 18:20:04 +01001228#endif