blob: a58244412600d8a58424f48d839f95cb8a10266a [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.
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020043 *
44 * Current rule (except weak and null which come last):
45 * 1. By key exchange:
46 * Forward-secure non-PSK > forward-secure PSK > other non-PSK > other PSK
47 * 2. By key length and cipher:
48 * AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES > RC4
49 * 3. By cipher mode when relevant GCM > CBC
50 * 4. By hash function used
51 * 5. By key exchange/auth again: EC > non-EC
Paul Bakker41c83d32013-03-20 14:39:14 +010052 */
53static const int ciphersuite_preference[] =
Paul Bakker68884e32013-01-07 18:20:04 +010054{
Paul Bakker27714b12013-04-07 23:07:12 +020055 /* All AES-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020056 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010057 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010058 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020059 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
60 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
61 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020062 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010063 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010064 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020065
66 /* All CAMELLIA-256 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020067 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
68 TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
69 TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020070 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020071 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010072 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010073 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020074
75 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020076 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010077 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010078 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020079 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
80 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
81 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020082 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010083 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
84 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020085
86 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020087 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
88 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
89 TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020090 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +020091 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010092 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010093 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020094
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020095 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020096 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010097 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010098 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020099 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100100 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200101
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200102 /* The PSK ephemeral suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200103 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200104 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
105 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
106 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
107 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200108 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200109 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
110 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
111
Paul Bakker40afb4b2013-04-19 22:03:30 +0200112 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200113 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
114 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
115 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
116 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200117 TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200118 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
119 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
120
121 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200122 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200123 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200124 TLS_DHE_PSK_WITH_RC4_128_SHA,
125
Paul Bakker27714b12013-04-07 23:07:12 +0200126 /* All AES-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100127 TLS_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200128 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100129 TLS_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200130
131 /* All CAMELLIA-256 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200132 TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100133 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100134 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200135
136 /* All AES-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100137 TLS_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200138 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100139 TLS_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200140
141 /* All CAMELLIA-128 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200142 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100143 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100144 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200145
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200146 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100147 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100148 TLS_RSA_WITH_RC4_128_SHA,
149 TLS_RSA_WITH_RC4_128_MD5,
Paul Bakker27714b12013-04-07 23:07:12 +0200150
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200151 /* The RSA PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200152 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200153 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200154 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200155 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200156 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
157
158 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200159 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200160 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200161 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200162 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
163
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200164 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
165 TLS_RSA_PSK_WITH_RC4_128_SHA,
166
167 /* The PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200168 TLS_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200169 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200170 TLS_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200171 TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200172 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
173
174 TLS_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200175 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200176 TLS_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200177 TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200178 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
179
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200180 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
181 TLS_PSK_WITH_RC4_128_SHA,
182
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200183 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100184 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100185 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200186
187 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200188 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100189 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200190 TLS_ECDHE_PSK_WITH_NULL_SHA384,
191 TLS_ECDHE_PSK_WITH_NULL_SHA256,
192 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200193 TLS_DHE_PSK_WITH_NULL_SHA384,
194 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200195 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200196
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200197 TLS_RSA_WITH_NULL_SHA256,
198 TLS_RSA_WITH_NULL_SHA,
199 TLS_RSA_WITH_NULL_MD5,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200200 TLS_RSA_PSK_WITH_NULL_SHA384,
201 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200202 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200203 TLS_PSK_WITH_NULL_SHA384,
204 TLS_PSK_WITH_NULL_SHA256,
205 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200206
Paul Bakker68884e32013-01-07 18:20:04 +0100207 0
208};
209
Manuel Pégourié-Gonnard57a87832013-08-27 16:13:54 +0200210#define MAX_CIPHERSUITES 128
Paul Bakker41c83d32013-03-20 14:39:14 +0100211static int supported_ciphersuites[MAX_CIPHERSUITES];
212static int supported_init = 0;
213
Paul Bakker68884e32013-01-07 18:20:04 +0100214static const ssl_ciphersuite_t ciphersuite_definitions[] =
215{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200216#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
217#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200218#if defined(POLARSSL_SHA1_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_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
221 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
222 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
223 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200224 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200225 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
226 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
227 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
228 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200229 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200230#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200231#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200232#if defined(POLARSSL_SHA256_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 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
235 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
236 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
237 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200238 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200239#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200240#if defined(POLARSSL_GCM_C)
241 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
242 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
243 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
244 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200245 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200246#endif /* POLARSSL_GCM_C */
247#endif /* POLARSSL_SHA256_C */
248#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200249#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200250 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
251 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
252 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
253 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200254 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200255#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200256#if defined(POLARSSL_GCM_C)
257 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
258 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
259 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200261 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200262#endif /* POLARSSL_GCM_C */
263#endif /* POLARSSL_SHA512_C */
264#endif /* POLARSSL_AES_C */
265
266#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200267#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200268#if defined(POLARSSL_SHA256_C)
269 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
270 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
271 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
272 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200273 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200274#endif /* POLARSSL_SHA256_C */
275#if defined(POLARSSL_SHA512_C)
276 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
277 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
278 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
279 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200280 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200281#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200282#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200283
284#if defined(POLARSSL_GCM_C)
285#if defined(POLARSSL_SHA256_C)
286 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
287 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
288 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
289 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
290 0 },
291#endif /* POLARSSL_SHA256_C */
292#if defined(POLARSSL_SHA512_C)
293 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
294 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
295 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
296 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
297 0 },
298#endif /* POLARSSL_SHA512_C */
299#endif /* POLARSSL_GCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200300#endif /* POLARSSL_CAMELLIA_C */
301
302#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200303#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200304#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200305 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
306 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
307 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
308 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200309 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200310#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200311#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200312#endif /* POLARSSL_DES_C */
313
314#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200315#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200316 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
317 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
318 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
319 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200320 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200321#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200322#endif /* POLARSSL_ARC4_C */
323
324#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200325#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200326 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
327 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
328 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
329 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200330 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200331#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200332#endif /* POLARSSL_CIPHER_NULL_CIPHER */
333#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
334
Paul Bakkere07f41d2013-04-19 09:08:57 +0200335#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100336#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200337#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200338#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100339 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
340 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
341 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
342 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200343 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100344 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
345 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
346 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
347 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200348 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200349#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200350#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200351#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200352#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100353 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
354 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
355 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
356 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200357 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200358#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100359#if defined(POLARSSL_GCM_C)
360 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
361 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
362 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
363 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200364 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100365#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200366#endif /* POLARSSL_SHA256_C */
367#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200368#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100369 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
370 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
371 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
372 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200373 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200374#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100375#if defined(POLARSSL_GCM_C)
376 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
377 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
378 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
379 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200380 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100381#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200382#endif /* POLARSSL_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100383#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200384
385#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200386#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200387#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200388 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
389 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
390 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
391 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200392 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200393#endif /* POLARSSL_SHA256_C */
394#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200395 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
396 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
397 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
398 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200399 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200400#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200401#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200402
403#if defined(POLARSSL_GCM_C)
404#if defined(POLARSSL_SHA256_C)
405 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
406 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
407 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
408 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
409 0 },
410#endif /* POLARSSL_SHA256_C */
411#if defined(POLARSSL_SHA512_C)
412 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
413 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
414 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
415 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
416 0 },
417#endif /* POLARSSL_SHA512_C */
418#endif /* POLARSSL_GCM_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200419#endif /* POLARSSL_CAMELLIA_C */
420
Paul Bakker41c83d32013-03-20 14:39:14 +0100421#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200422#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200423#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100424 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
425 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
426 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
427 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200428 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200429#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200430#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100431#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200432
Paul Bakker41c83d32013-03-20 14:39:14 +0100433#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200434#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100435 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
436 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
437 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
438 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200439 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200440#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200441#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200442
Paul Bakker41c83d32013-03-20 14:39:14 +0100443#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200444#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100445 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
446 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
447 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
448 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200449 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200450#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200451#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200452#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100453
Paul Bakkere07f41d2013-04-19 09:08:57 +0200454#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100455#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200456#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100457 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
458 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
459 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
460 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
461 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200462#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100463
Paul Bakker9e36f042013-06-30 14:34:05 +0200464#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100465#if defined(POLARSSL_GCM_C)
466 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
467 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
468 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
469 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
470 0 },
471#endif /* POLARSSL_GCM_C */
472
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200473#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100474 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
475 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
476 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
477 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
478 0 },
479
480 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
481 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
482 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
483 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
484 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200485#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200486#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100487
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200488#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200489#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100490 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
491 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
492 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
493 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
494 0 },
495
496 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
497 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
498 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
499 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
500 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200501#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200502#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100503#endif /* POLARSSL_AES_C */
504
505#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200506#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200507#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100508 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
509 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
510 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
511 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
512 0 },
513
514 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
515 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
516 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
517 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
518 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200519#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100520
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200521#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100522 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
523 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
524 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
525 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
526 0 },
527
528 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
529 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
530 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
531 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
532 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200533#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200534#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200535#if defined(POLARSSL_GCM_C)
536#if defined(POLARSSL_SHA256_C)
537 { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
538 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
539 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
540 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
541 0 },
542#endif /* POLARSSL_SHA256_C */
543
544#if defined(POLARSSL_SHA512_C)
545 { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
546 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
547 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
548 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
549 0 },
550#endif /* POLARSSL_SHA512_C */
551#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100552#endif /* POLARSSL_CAMELLIA_C */
553
554#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200555#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200556#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100557 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
558 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
559 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
560 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
561 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200562#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200563#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100564#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200565#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100566
Paul Bakkere07f41d2013-04-19 09:08:57 +0200567#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100568#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200569#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100570 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
571 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
572 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
573 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
574 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200575#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100576
Paul Bakker9e36f042013-06-30 14:34:05 +0200577#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100578#if defined(POLARSSL_GCM_C)
579 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
580 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
581 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
582 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
583 0 },
584#endif /* POLARSSL_GCM_C */
585
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200586#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100587 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
588 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
589 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
590 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
591 0 },
592
593 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
594 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
595 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
596 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
597 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200598#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200599#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100600
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200601#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200602#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100603 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
604 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
605 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
606 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
607 0 },
608
609 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
610 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
611 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
612 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
613 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200614#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200615#endif /* POLARSSL_SHA1_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100616#endif /* POLARSSL_AES_C */
617
618#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200619#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200620#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100621 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
622 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
623 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
624 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
625 0 },
626
627 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
628 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
629 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
630 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
631 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200632#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100633
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200634#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100635 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
636 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
637 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
638 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
639 0 },
640
641 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
642 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
643 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
644 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
645 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200646#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200647#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200648
649#if defined(POLARSSL_GCM_C)
650#if defined(POLARSSL_SHA256_C)
651 { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
652 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
653 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
654 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
655 0 },
656#endif /* POLARSSL_SHA256_C */
657
658#if defined(POLARSSL_SHA1_C)
659 { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
660 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
661 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
662 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
663 0 },
664#endif /* POLARSSL_SHA1_C */
665#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100666#endif /* POLARSSL_CAMELLIA_C */
667
668#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200669#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200670#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100671 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
672 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
673 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
674 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
675 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200676#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200677#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100678#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200679
680#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200681#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200682 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
683 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
684 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
685 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
686 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200687#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200688
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200689#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200690 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
691 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
692 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
693 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
694 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200695#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200696#endif /* POLARSSL_ARC4_C */
697#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100698
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200699#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
700#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200701#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200702#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200703 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
704 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
705 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
706 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
707 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200708#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200709
Paul Bakker9e36f042013-06-30 14:34:05 +0200710#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200711 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
712 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
713 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
714 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
715 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200716#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200717#endif /* POLARSSL_GCM_C */
718
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200719#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200720#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200721 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
722 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
723 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
724 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
725 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200726#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200727
Paul Bakker9e36f042013-06-30 14:34:05 +0200728#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200729 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
730 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
731 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
732 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
733 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200734#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200735
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200736#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200737 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
738 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
739 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
740 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
741 0 },
742
743 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
744 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
745 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
746 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
747 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200748#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200749#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200750#endif /* POLARSSL_AES_C */
751
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200752#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200753#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200754#if defined(POLARSSL_SHA256_C)
755 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
756 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
757 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
758 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
759 0 },
760#endif /* POLARSSL_SHA256_C */
761
762#if defined(POLARSSL_SHA512_C)
763 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
764 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
765 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
766 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
767 0 },
768#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200769#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200770
771#if defined(POLARSSL_GCM_C)
772#if defined(POLARSSL_SHA256_C)
773 { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
774 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
775 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
776 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
777 0 },
778#endif /* POLARSSL_SHA256_C */
779
780#if defined(POLARSSL_SHA512_C)
781 { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
782 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
783 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
784 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
785 0 },
786#endif /* POLARSSL_SHA512_C */
787#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200788#endif /* POLARSSL_CAMELLIA_C */
789
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200790#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200791#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200792#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200793 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
794 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
795 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
796 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
797 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200798#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200799#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200800#endif /* POLARSSL_DES_C */
801
802#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200803#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200804 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
805 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
806 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
807 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
808 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200809#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200810#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200811#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200812
Paul Bakkere07f41d2013-04-19 09:08:57 +0200813#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200814#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200815#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200816#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200817 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
818 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
819 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
820 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
821 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200822#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200823
Paul Bakker9e36f042013-06-30 14:34:05 +0200824#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200825 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
826 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
827 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
828 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
829 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200830#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200831#endif /* POLARSSL_GCM_C */
832
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200833#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200834#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200835 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
836 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
837 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
838 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
839 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200840#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200841
Paul Bakker9e36f042013-06-30 14:34:05 +0200842#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200843 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
844 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
845 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
846 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
847 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200848#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200849
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200850#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200851 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
852 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
853 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
854 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
855 0 },
856
857 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
858 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
859 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
860 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
861 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200862#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200863#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200864#endif /* POLARSSL_AES_C */
865
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200866#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200867#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200868#if defined(POLARSSL_SHA256_C)
869 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
870 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
871 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
872 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
873 0 },
874#endif /* POLARSSL_SHA256_C */
875
876#if defined(POLARSSL_SHA512_C)
877 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
878 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
879 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
880 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
881 0 },
882#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200883#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200884
885#if defined(POLARSSL_GCM_C)
886#if defined(POLARSSL_SHA256_C)
887 { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
888 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
889 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
890 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
891 0 },
892#endif /* POLARSSL_SHA256_C */
893
894#if defined(POLARSSL_SHA512_C)
895 { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
896 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
897 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
898 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
899 0 },
900#endif /* POLARSSL_SHA512_C */
901#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200902#endif /* POLARSSL_CAMELLIA_C */
903
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200904#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200905#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200906#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200907 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
908 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
909 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
910 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
911 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200912#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200913#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200914#endif /* POLARSSL_DES_C */
915
916#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200917#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200918 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
919 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
920 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
921 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
922 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200923#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200924#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200925#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200926
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200927#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
928#if defined(POLARSSL_AES_C)
929
930#if defined(POLARSSL_CIPHER_MODE_CBC)
931#if defined(POLARSSL_SHA256_C)
932 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
933 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
934 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
935 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
936 0 },
937#endif /* POLARSSL_SHA256_C */
938
939#if defined(POLARSSL_SHA512_C)
940 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
941 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
942 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
943 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
944 0 },
945#endif /* POLARSSL_SHA512_C */
946
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200947#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200948 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
949 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
950 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
951 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
952 0 },
953
954 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
955 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_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 */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200960#endif /* POLARSSL_CIPHER_MODE_CBC */
961#endif /* POLARSSL_AES_C */
962
963#if defined(POLARSSL_CAMELLIA_C)
964#if defined(POLARSSL_CIPHER_MODE_CBC)
965#if defined(POLARSSL_SHA256_C)
966 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
967 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
968 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
969 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
970 0 },
971#endif /* POLARSSL_SHA256_C */
972
973#if defined(POLARSSL_SHA512_C)
974 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
975 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
976 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
977 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
978 0 },
979#endif /* POLARSSL_SHA512_C */
980#endif /* POLARSSL_CIPHER_MODE_CBC */
981#endif /* POLARSSL_CAMELLIA_C */
982
983#if defined(POLARSSL_DES_C)
984#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200985#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200986 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
987 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
988 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
989 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
990 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200991#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200992#endif /* POLARSSL_CIPHER_MODE_CBC */
993#endif /* POLARSSL_DES_C */
994
995#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200996#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200997 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
998 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
999 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1000 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1001 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001002#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001003#endif /* POLARSSL_ARC4_C */
1004#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1005
Paul Bakkere07f41d2013-04-19 09:08:57 +02001006#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001007#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001008#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001009#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001010 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
1011 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1012 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1013 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1014 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001015#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001016
Paul Bakker9e36f042013-06-30 14:34:05 +02001017#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001018 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
1019 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1020 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1021 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1022 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001023#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001024#endif /* POLARSSL_GCM_C */
1025
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001026#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001027#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001028 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1029 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1030 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1031 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1032 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001033#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001034
Paul Bakker9e36f042013-06-30 14:34:05 +02001035#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001036 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1037 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1038 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1039 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1040 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001041#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001042
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001043#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001044 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
1045 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1046 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1047 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1048 0 },
1049
1050 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
1051 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1052 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1053 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1054 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001055#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001056#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001057#endif /* POLARSSL_AES_C */
1058
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001059#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001060#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001061#if defined(POLARSSL_SHA256_C)
1062 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1063 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1064 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1065 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1066 0 },
1067#endif /* POLARSSL_SHA256_C */
1068
1069#if defined(POLARSSL_SHA512_C)
1070 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1071 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1072 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1073 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1074 0 },
1075#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001076#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001077
1078#if defined(POLARSSL_GCM_C)
1079#if defined(POLARSSL_SHA256_C)
1080 { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1081 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1082 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1083 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1084 0 },
1085#endif /* POLARSSL_SHA256_C */
1086
1087#if defined(POLARSSL_SHA512_C)
1088 { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1089 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1090 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1091 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1092 0 },
1093#endif /* POLARSSL_SHA512_C */
1094#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001095#endif /* POLARSSL_CAMELLIA_C */
1096
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001097#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001098#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001099#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001100 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
1101 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1102 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1103 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1104 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001105#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001106#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001107#endif /* POLARSSL_DES_C */
1108
1109#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001110#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001111 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
1112 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1113 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1114 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1115 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001116#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001117#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001118#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001119
Paul Bakker68884e32013-01-07 18:20:04 +01001120#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
1121#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001122#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001123#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001124 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
1125 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
1126 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1127 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1128 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001129#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001130
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001131#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001132 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
1133 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1134 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1135 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1136 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001137#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001138
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001139#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001140 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
1141 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
1142 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1143 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1144 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001145#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +02001146#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001147
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001148#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001149#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001150 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
1151 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1152 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1153 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1154 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001155#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001156#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1157
1158#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001159#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001160 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1161 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1162 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1163 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1164 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001165#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001166#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1167
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001168#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001169#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001170 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1171 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1172 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1173 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1174 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001175#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001176
1177#if defined(POLARSSL_SHA256_C)
1178 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1179 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1180 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1181 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1182 POLARSSL_CIPHERSUITE_WEAK },
1183#endif
1184
1185#if defined(POLARSSL_SHA512_C)
1186 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1187 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1188 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1189 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1190 POLARSSL_CIPHERSUITE_WEAK },
1191#endif
1192#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1193
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001194#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001195#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001196 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1197 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1198 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1199 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1200 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001201#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001202
1203#if defined(POLARSSL_SHA256_C)
1204 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1205 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1206 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1207 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1208 POLARSSL_CIPHERSUITE_WEAK },
1209#endif /* POLARSSL_SHA256_C */
1210
1211#if defined(POLARSSL_SHA512_C)
1212 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1213 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1214 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1215 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1216 POLARSSL_CIPHERSUITE_WEAK },
1217#endif /* POLARSSL_SHA512_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001218#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1219#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1220
Paul Bakker68884e32013-01-07 18:20:04 +01001221#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001222#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001223#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001224#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001225 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1226 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1227 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1228 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1229 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001230#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001231#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001232
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001233#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001234#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001235 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1236 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1237 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1238 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1239 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001240#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001241#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1242#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001243#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001244#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1245
1246 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1247};
1248
1249const int *ssl_list_ciphersuites( void )
1250{
Paul Bakker41c83d32013-03-20 14:39:14 +01001251 /*
1252 * On initial call filter out all ciphersuites not supported by current
1253 * build based on presence in the ciphersuite_definitions.
1254 */
1255 if( supported_init == 0 )
1256 {
1257 const int *p = ciphersuite_preference;
1258 int *q = supported_ciphersuites;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001259 size_t i;
1260 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
Paul Bakker41c83d32013-03-20 14:39:14 +01001261
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001262 for( i = 0; i < max - 1 && p[i] != 0; i++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001263 {
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001264 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1265 *(q++) = p[i];
Paul Bakker41c83d32013-03-20 14:39:14 +01001266 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001267 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001268
Paul Bakker41c83d32013-03-20 14:39:14 +01001269 supported_init = 1;
1270 }
1271
Paul Bakker68884e32013-01-07 18:20:04 +01001272 return supported_ciphersuites;
1273};
1274
1275const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name )
1276{
1277 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1278
1279 if( NULL == ciphersuite_name )
1280 return( NULL );
1281
1282 while( cur->id != 0 )
1283 {
1284 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1285 return( cur );
1286
1287 cur++;
1288 }
1289
1290 return( NULL );
1291}
1292
1293const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1294{
1295 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1296
1297 while( cur->id != 0 )
1298 {
1299 if( cur->id == ciphersuite )
1300 return( cur );
1301
1302 cur++;
1303 }
1304
1305 return( NULL );
1306}
1307
1308const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1309{
1310 const ssl_ciphersuite_t *cur;
1311
1312 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1313
1314 if( cur == NULL )
1315 return( "unknown" );
1316
1317 return( cur->name );
1318}
1319
1320int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1321{
1322 const ssl_ciphersuite_t *cur;
1323
1324 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1325
1326 if( cur == NULL )
1327 return( 0 );
1328
1329 return( cur->id );
1330}
1331
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001332#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001333pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1334{
1335 switch( info->key_exchange )
1336 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001337 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001338 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1339 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001340 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001341 return( POLARSSL_PK_RSA );
1342
1343 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1344 return( POLARSSL_PK_ECDSA );
1345
1346 default:
1347 return( POLARSSL_PK_NONE );
1348 }
1349}
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001350#endif
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001351
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001352int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1353{
1354 switch( info->key_exchange )
1355 {
1356 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1357 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001358 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001359 return( 1 );
1360
1361 default:
1362 return( 0 );
1363 }
1364}
1365
Paul Bakker68884e32013-01-07 18:20:04 +01001366#endif