blob: 040900118fafc405f476662e1db867a7aab9f8f9 [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,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +020062 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
63 TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
64 TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020065
66 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020067 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010068 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010069 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020070 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010071 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010072 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020073 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010074 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
75 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020076
77 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020078 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +020079 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010080 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010081 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +020082 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
83 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
84 TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +020085
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020086 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020087 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010088 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010089 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020090 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010091 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020092
Paul Bakkerd4a56ec2013-04-16 18:05:29 +020093 /* The PSK ephemeral suites */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +020094 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
95 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
96 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
97 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
98 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
99 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
100 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
101 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200102 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200103 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200104 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200105 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200106 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200107 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200108 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200109 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200110 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200111 TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200112 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
113 TLS_DHE_PSK_WITH_RC4_128_SHA,
114
Paul Bakker27714b12013-04-07 23:07:12 +0200115 /* All AES-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100116 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100117 TLS_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100118 TLS_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200119
120 /* All CAMELLIA-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100121 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100122 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200123 TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +0200124
125 /* All AES-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100126 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100127 TLS_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100128 TLS_RSA_WITH_AES_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200129
130 /* All CAMELLIA-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100131 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100132 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200133 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +0200134
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200135 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100136 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100137 TLS_RSA_WITH_RC4_128_SHA,
138 TLS_RSA_WITH_RC4_128_MD5,
Paul Bakker27714b12013-04-07 23:07:12 +0200139
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200140 /* The RSA PSK suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200141 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200142 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200143 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200144 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200145 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200146 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200147 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200148 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200149 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200150 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200151 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
152 TLS_RSA_PSK_WITH_RC4_128_SHA,
153
154 /* The PSK suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200155 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200156 TLS_PSK_WITH_AES_256_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200157 TLS_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200158 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200159 TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200160 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200161 TLS_PSK_WITH_AES_128_CBC_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200162 TLS_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200163 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200164 TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200165 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
166 TLS_PSK_WITH_RC4_128_SHA,
167
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200168 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100169 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100170 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200171
172 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200173 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100174 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200175 TLS_ECDHE_PSK_WITH_NULL_SHA384,
176 TLS_ECDHE_PSK_WITH_NULL_SHA256,
177 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200178 TLS_DHE_PSK_WITH_NULL_SHA384,
179 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200180 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200181 TLS_RSA_WITH_NULL_SHA256,
182 TLS_RSA_WITH_NULL_SHA,
183 TLS_RSA_WITH_NULL_MD5,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200184 TLS_RSA_PSK_WITH_NULL_SHA384,
185 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200186 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200187 TLS_PSK_WITH_NULL_SHA384,
188 TLS_PSK_WITH_NULL_SHA256,
189 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200190
Paul Bakker68884e32013-01-07 18:20:04 +0100191 0
192};
193
Manuel Pégourié-Gonnard57a87832013-08-27 16:13:54 +0200194#define MAX_CIPHERSUITES 128
Paul Bakker41c83d32013-03-20 14:39:14 +0100195static int supported_ciphersuites[MAX_CIPHERSUITES];
196static int supported_init = 0;
197
Paul Bakker68884e32013-01-07 18:20:04 +0100198static const ssl_ciphersuite_t ciphersuite_definitions[] =
199{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200200#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
201#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200202#if defined(POLARSSL_SHA1_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_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
205 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
206 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
207 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200208 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200209 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
210 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
211 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
212 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200213 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200214#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200215#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200216#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200217#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200218 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
219 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
220 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
221 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200222 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200223#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200224#if defined(POLARSSL_GCM_C)
225 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
226 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
227 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
228 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200229 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200230#endif /* POLARSSL_GCM_C */
231#endif /* POLARSSL_SHA256_C */
232#if defined(POLARSSL_SHA512_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_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
235 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, 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_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
242 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, 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_SHA512_C */
248#endif /* POLARSSL_AES_C */
249
250#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200251#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200252#if defined(POLARSSL_SHA256_C)
253 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
254 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
255 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
256 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200257 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200258#endif /* POLARSSL_SHA256_C */
259#if defined(POLARSSL_SHA512_C)
260 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
261 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
262 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
263 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200264 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200265#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200266#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200267
268#if defined(POLARSSL_GCM_C)
269#if defined(POLARSSL_SHA256_C)
270 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
271 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
272 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
273 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
274 0 },
275#endif /* POLARSSL_SHA256_C */
276#if defined(POLARSSL_SHA512_C)
277 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
278 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
279 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
280 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
281 0 },
282#endif /* POLARSSL_SHA512_C */
283#endif /* POLARSSL_GCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200284#endif /* POLARSSL_CAMELLIA_C */
285
286#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200287#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200288#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200289 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
290 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
291 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
292 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200293 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200294#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200295#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200296#endif /* POLARSSL_DES_C */
297
298#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200299#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200300 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
301 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
302 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
303 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200304 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200305#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200306#endif /* POLARSSL_ARC4_C */
307
308#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200309#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200310 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
311 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
312 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
313 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200314 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200315#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200316#endif /* POLARSSL_CIPHER_NULL_CIPHER */
317#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
318
Paul Bakkere07f41d2013-04-19 09:08:57 +0200319#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100320#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200321#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200322#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100323 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
324 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
325 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
326 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200327 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100328 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
329 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
330 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
331 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200332 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200333#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200334#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200335#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200336#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100337 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
338 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
339 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
340 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200341 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200342#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100343#if defined(POLARSSL_GCM_C)
344 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
345 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
346 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
347 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200348 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100349#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200350#endif /* POLARSSL_SHA256_C */
351#if defined(POLARSSL_SHA512_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_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
354 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, 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_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
361 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, 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_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100367#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200368
369#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200370#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200371#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200372 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
373 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
374 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
375 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200376 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200377#endif /* POLARSSL_SHA256_C */
378#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200379 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
380 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
381 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
382 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200383 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200384#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200385#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200386
387#if defined(POLARSSL_GCM_C)
388#if defined(POLARSSL_SHA256_C)
389 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
390 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
391 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
392 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
393 0 },
394#endif /* POLARSSL_SHA256_C */
395#if defined(POLARSSL_SHA512_C)
396 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
397 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
398 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
399 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
400 0 },
401#endif /* POLARSSL_SHA512_C */
402#endif /* POLARSSL_GCM_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200403#endif /* POLARSSL_CAMELLIA_C */
404
Paul Bakker41c83d32013-03-20 14:39:14 +0100405#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200406#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200407#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100408 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
409 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
410 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
411 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200412 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200413#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200414#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100415#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200416
Paul Bakker41c83d32013-03-20 14:39:14 +0100417#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200418#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100419 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
420 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
421 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
422 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200423 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200424#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200425#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200426
Paul Bakker41c83d32013-03-20 14:39:14 +0100427#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200428#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100429 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
430 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
431 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
432 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200433 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200434#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200435#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200436#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100437
Paul Bakkere07f41d2013-04-19 09:08:57 +0200438#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100439#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200440#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100441 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
442 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
443 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
444 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
445 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200446#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100447
Paul Bakker9e36f042013-06-30 14:34:05 +0200448#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100449#if defined(POLARSSL_GCM_C)
450 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
451 POLARSSL_CIPHER_AES_128_GCM, 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 },
455#endif /* POLARSSL_GCM_C */
456
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200457#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100458 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
459 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
460 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
461 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
462 0 },
463
464 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
465 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
466 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
467 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
468 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200469#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200470#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100471
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200472#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200473#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100474 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
475 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
476 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
477 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
478 0 },
479
480 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
481 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
482 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
483 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
484 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200485#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200486#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100487#endif /* POLARSSL_AES_C */
488
489#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200490#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200491#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100492 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
493 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
494 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
495 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
496 0 },
497
498 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
499 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
500 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
501 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
502 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200503#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100504
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200505#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100506 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
507 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
508 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
509 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
510 0 },
511
512 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
513 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
514 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
515 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
516 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200517#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200518#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200519#if defined(POLARSSL_GCM_C)
520#if defined(POLARSSL_SHA256_C)
521 { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
522 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
523 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
524 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
525 0 },
526#endif /* POLARSSL_SHA256_C */
527
528#if defined(POLARSSL_SHA512_C)
529 { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
530 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
531 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
532 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
533 0 },
534#endif /* POLARSSL_SHA512_C */
535#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100536#endif /* POLARSSL_CAMELLIA_C */
537
538#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200539#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200540#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100541 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
542 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
543 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
544 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
545 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200546#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200547#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100548#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200549#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100550
Paul Bakkere07f41d2013-04-19 09:08:57 +0200551#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100552#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200553#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100554 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
555 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
556 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
557 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
558 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200559#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100560
Paul Bakker9e36f042013-06-30 14:34:05 +0200561#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100562#if defined(POLARSSL_GCM_C)
563 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
564 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
565 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
566 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
567 0 },
568#endif /* POLARSSL_GCM_C */
569
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200570#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100571 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
572 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
573 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
574 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
575 0 },
576
577 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
578 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
579 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
580 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
581 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200582#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200583#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100584
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200585#if defined(POLARSSL_SHA1_C)
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_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
588 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
589 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
590 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
591 0 },
592
593 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
594 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
595 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
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 */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200599#endif /* POLARSSL_SHA1_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100600#endif /* POLARSSL_AES_C */
601
602#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200603#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200604#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100605 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
606 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
607 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
608 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
609 0 },
610
611 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
612 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
613 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
614 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
615 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200616#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100617
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200618#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100619 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
620 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
621 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
622 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
623 0 },
624
625 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
626 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
627 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
628 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
629 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200630#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200631#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200632
633#if defined(POLARSSL_GCM_C)
634#if defined(POLARSSL_SHA256_C)
635 { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
636 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
637 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
638 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
639 0 },
640#endif /* POLARSSL_SHA256_C */
641
642#if defined(POLARSSL_SHA1_C)
643 { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
644 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
645 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
646 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
647 0 },
648#endif /* POLARSSL_SHA1_C */
649#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100650#endif /* POLARSSL_CAMELLIA_C */
651
652#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200653#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200654#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100655 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
656 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
657 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
658 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
659 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200660#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200661#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100662#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200663
664#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200665#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200666 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
667 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
668 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
669 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
670 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200671#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200672
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200673#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200674 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
675 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
676 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
677 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
678 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200679#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200680#endif /* POLARSSL_ARC4_C */
681#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100682
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200683#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
684#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200685#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200686#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200687 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
688 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
689 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
690 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
691 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200692#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200693
Paul Bakker9e36f042013-06-30 14:34:05 +0200694#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200695 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
696 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
697 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
698 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
699 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200700#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200701#endif /* POLARSSL_GCM_C */
702
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200703#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200704#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200705 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
706 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
707 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
708 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
709 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200710#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200711
Paul Bakker9e36f042013-06-30 14:34:05 +0200712#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200713 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
714 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
715 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
716 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
717 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200718#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200719
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200720#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200721 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
722 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
723 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
724 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
725 0 },
726
727 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
728 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
729 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
730 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
731 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200732#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200733#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200734#endif /* POLARSSL_AES_C */
735
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200736#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200737#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200738#if defined(POLARSSL_SHA256_C)
739 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
740 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
741 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
742 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
743 0 },
744#endif /* POLARSSL_SHA256_C */
745
746#if defined(POLARSSL_SHA512_C)
747 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
748 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
749 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
750 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
751 0 },
752#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200753#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200754
755#if defined(POLARSSL_GCM_C)
756#if defined(POLARSSL_SHA256_C)
757 { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
758 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
759 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
760 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
761 0 },
762#endif /* POLARSSL_SHA256_C */
763
764#if defined(POLARSSL_SHA512_C)
765 { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
766 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
767 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
768 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
769 0 },
770#endif /* POLARSSL_SHA512_C */
771#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200772#endif /* POLARSSL_CAMELLIA_C */
773
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200774#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200775#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200776#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200777 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
778 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
779 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
780 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
781 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200782#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200783#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200784#endif /* POLARSSL_DES_C */
785
786#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200787#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200788 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
789 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
790 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
791 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
792 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200793#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200794#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200795#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200796
Paul Bakkere07f41d2013-04-19 09:08:57 +0200797#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200798#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200799#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200800#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200801 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
802 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
803 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
804 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
805 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200806#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200807
Paul Bakker9e36f042013-06-30 14:34:05 +0200808#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200809 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
810 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
811 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
812 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
813 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200814#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200815#endif /* POLARSSL_GCM_C */
816
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200817#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200818#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200819 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
820 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
821 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
822 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
823 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200824#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200825
Paul Bakker9e36f042013-06-30 14:34:05 +0200826#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200827 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
828 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
829 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
830 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
831 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200832#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200833
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200834#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200835 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
836 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
837 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
838 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
839 0 },
840
841 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
842 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
843 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
844 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
845 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200846#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200847#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200848#endif /* POLARSSL_AES_C */
849
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200850#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200851#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200852#if defined(POLARSSL_SHA256_C)
853 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
854 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
855 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
856 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
857 0 },
858#endif /* POLARSSL_SHA256_C */
859
860#if defined(POLARSSL_SHA512_C)
861 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
862 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
863 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
864 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
865 0 },
866#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200867#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200868
869#if defined(POLARSSL_GCM_C)
870#if defined(POLARSSL_SHA256_C)
871 { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
872 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
873 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
874 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
875 0 },
876#endif /* POLARSSL_SHA256_C */
877
878#if defined(POLARSSL_SHA512_C)
879 { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
880 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
881 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
882 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
883 0 },
884#endif /* POLARSSL_SHA512_C */
885#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200886#endif /* POLARSSL_CAMELLIA_C */
887
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200888#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200889#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200890#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200891 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
892 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
893 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
894 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
895 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200896#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200897#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200898#endif /* POLARSSL_DES_C */
899
900#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200901#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200902 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
903 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
904 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
905 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
906 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200907#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200908#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200909#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200910
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200911#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
912#if defined(POLARSSL_AES_C)
913
914#if defined(POLARSSL_CIPHER_MODE_CBC)
915#if defined(POLARSSL_SHA256_C)
916 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
917 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
918 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
919 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
920 0 },
921#endif /* POLARSSL_SHA256_C */
922
923#if defined(POLARSSL_SHA512_C)
924 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
925 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
926 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
927 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
928 0 },
929#endif /* POLARSSL_SHA512_C */
930
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200931#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200932 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
933 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
934 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
935 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
936 0 },
937
938 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
939 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
940 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
941 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
942 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200943#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200944#endif /* POLARSSL_CIPHER_MODE_CBC */
945#endif /* POLARSSL_AES_C */
946
947#if defined(POLARSSL_CAMELLIA_C)
948#if defined(POLARSSL_CIPHER_MODE_CBC)
949#if defined(POLARSSL_SHA256_C)
950 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
951 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
952 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
953 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
954 0 },
955#endif /* POLARSSL_SHA256_C */
956
957#if defined(POLARSSL_SHA512_C)
958 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
959 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
960 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
961 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
962 0 },
963#endif /* POLARSSL_SHA512_C */
964#endif /* POLARSSL_CIPHER_MODE_CBC */
965#endif /* POLARSSL_CAMELLIA_C */
966
967#if defined(POLARSSL_DES_C)
968#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200969#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200970 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
971 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
972 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
973 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
974 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200975#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200976#endif /* POLARSSL_CIPHER_MODE_CBC */
977#endif /* POLARSSL_DES_C */
978
979#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200980#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200981 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
982 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
983 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
984 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
985 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200986#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200987#endif /* POLARSSL_ARC4_C */
988#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
989
Paul Bakkere07f41d2013-04-19 09:08:57 +0200990#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200991#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200992#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200993#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +0200994 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
995 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
996 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
997 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
998 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200999#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001000
Paul Bakker9e36f042013-06-30 14:34:05 +02001001#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001002 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
1003 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1004 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1005 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1006 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001007#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001008#endif /* POLARSSL_GCM_C */
1009
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001010#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001011#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001012 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1013 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1014 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1015 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1016 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001017#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001018
Paul Bakker9e36f042013-06-30 14:34:05 +02001019#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001020 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1021 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1022 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1023 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1024 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001025#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001026
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001027#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001028 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
1029 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1030 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1031 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1032 0 },
1033
1034 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
1035 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1036 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1037 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1038 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001039#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001040#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001041#endif /* POLARSSL_AES_C */
1042
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001043#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001044#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001045#if defined(POLARSSL_SHA256_C)
1046 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1047 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1048 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1049 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1050 0 },
1051#endif /* POLARSSL_SHA256_C */
1052
1053#if defined(POLARSSL_SHA512_C)
1054 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1055 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1056 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1057 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1058 0 },
1059#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001060#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001061
1062#if defined(POLARSSL_GCM_C)
1063#if defined(POLARSSL_SHA256_C)
1064 { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1065 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1066 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1067 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1068 0 },
1069#endif /* POLARSSL_SHA256_C */
1070
1071#if defined(POLARSSL_SHA512_C)
1072 { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1073 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1074 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1075 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1076 0 },
1077#endif /* POLARSSL_SHA512_C */
1078#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001079#endif /* POLARSSL_CAMELLIA_C */
1080
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001081#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001082#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001083#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001084 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
1085 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1086 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1087 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1088 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001089#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001090#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001091#endif /* POLARSSL_DES_C */
1092
1093#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001094#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001095 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
1096 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1097 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1098 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1099 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001100#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001101#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001102#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001103
Paul Bakker68884e32013-01-07 18:20:04 +01001104#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
1105#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001106#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001107#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001108 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
1109 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
1110 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1111 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1112 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001113#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001114
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001115#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001116 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
1117 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1118 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1119 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1120 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001121#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001122
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001123#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001124 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
1125 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, 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 Bakkere07f41d2013-04-19 09:08:57 +02001130#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001131
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001132#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001133#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001134 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
1135 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1136 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1137 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1138 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001139#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001140#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1141
1142#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001143#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001144 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1145 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1146 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1147 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1148 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001149#endif /* POLARSSL_SHA1_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001150#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1151
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001152#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001153#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001154 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1155 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1156 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1157 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1158 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001159#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001160
1161#if defined(POLARSSL_SHA256_C)
1162 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1163 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1164 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1165 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1166 POLARSSL_CIPHERSUITE_WEAK },
1167#endif
1168
1169#if defined(POLARSSL_SHA512_C)
1170 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1171 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
1172 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1173 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1174 POLARSSL_CIPHERSUITE_WEAK },
1175#endif
1176#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1177
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001178#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001179#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001180 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1181 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1182 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1183 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1184 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001185#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001186
1187#if defined(POLARSSL_SHA256_C)
1188 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1189 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1190 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1191 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1192 POLARSSL_CIPHERSUITE_WEAK },
1193#endif /* POLARSSL_SHA256_C */
1194
1195#if defined(POLARSSL_SHA512_C)
1196 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1197 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1198 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1199 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1200 POLARSSL_CIPHERSUITE_WEAK },
1201#endif /* POLARSSL_SHA512_C */
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001202#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1203#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1204
Paul Bakker68884e32013-01-07 18:20:04 +01001205#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001206#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001207#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001208#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001209 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1210 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1211 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1212 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1213 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001214#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001215#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001216
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001217#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001218#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001219 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1220 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1221 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1222 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1223 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001224#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001225#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1226#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001227#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001228#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1229
1230 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1231};
1232
1233const int *ssl_list_ciphersuites( void )
1234{
Paul Bakker41c83d32013-03-20 14:39:14 +01001235 /*
1236 * On initial call filter out all ciphersuites not supported by current
1237 * build based on presence in the ciphersuite_definitions.
1238 */
1239 if( supported_init == 0 )
1240 {
1241 const int *p = ciphersuite_preference;
1242 int *q = supported_ciphersuites;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001243 size_t i;
1244 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
Paul Bakker41c83d32013-03-20 14:39:14 +01001245
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001246 for( i = 0; i < max - 1 && p[i] != 0; i++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001247 {
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001248 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1249 *(q++) = p[i];
Paul Bakker41c83d32013-03-20 14:39:14 +01001250 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001251 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001252
Paul Bakker41c83d32013-03-20 14:39:14 +01001253 supported_init = 1;
1254 }
1255
Paul Bakker68884e32013-01-07 18:20:04 +01001256 return supported_ciphersuites;
1257};
1258
1259const ssl_ciphersuite_t *ssl_ciphersuite_from_string( const char *ciphersuite_name )
1260{
1261 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1262
1263 if( NULL == ciphersuite_name )
1264 return( NULL );
1265
1266 while( cur->id != 0 )
1267 {
1268 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1269 return( cur );
1270
1271 cur++;
1272 }
1273
1274 return( NULL );
1275}
1276
1277const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1278{
1279 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1280
1281 while( cur->id != 0 )
1282 {
1283 if( cur->id == ciphersuite )
1284 return( cur );
1285
1286 cur++;
1287 }
1288
1289 return( NULL );
1290}
1291
1292const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1293{
1294 const ssl_ciphersuite_t *cur;
1295
1296 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1297
1298 if( cur == NULL )
1299 return( "unknown" );
1300
1301 return( cur->name );
1302}
1303
1304int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1305{
1306 const ssl_ciphersuite_t *cur;
1307
1308 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1309
1310 if( cur == NULL )
1311 return( 0 );
1312
1313 return( cur->id );
1314}
1315
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001316#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001317pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1318{
1319 switch( info->key_exchange )
1320 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001321 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001322 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1323 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001324 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001325 return( POLARSSL_PK_RSA );
1326
1327 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1328 return( POLARSSL_PK_ECDSA );
1329
1330 default:
1331 return( POLARSSL_PK_NONE );
1332 }
1333}
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001334#endif
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001335
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001336int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1337{
1338 switch( info->key_exchange )
1339 {
1340 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1341 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001342 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001343 return( 1 );
1344
1345 default:
1346 return( 0 );
1347 }
1348}
1349
Paul Bakker68884e32013-01-07 18:20:04 +01001350#endif