blob: 82f0a38580c59ebcbc7ddca43aba49cf4e59b956 [file] [log] [blame]
Paul Bakker68884e32013-01-07 18:20:04 +01001/**
2 * \file ssl_ciphersuites.c
3 *
4 * \brief SSL ciphersuites for PolarSSL
5 *
Paul Bakker9af723c2014-05-01 13:03:14 +02006 * Copyright (C) 2006-2014, Brainspark B.V.
Paul Bakker68884e32013-01-07 18:20:04 +01007 *
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
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020028#if !defined(POLARSSL_CONFIG_FILE)
Paul Bakker68884e32013-01-07 18:20:04 +010029#include "polarssl/config.h"
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020030#else
31#include POLARSSL_CONFIG_FILE
32#endif
Paul Bakker68884e32013-01-07 18:20:04 +010033
34#if defined(POLARSSL_SSL_TLS_C)
35
36#include "polarssl/ssl_ciphersuites.h"
37#include "polarssl/ssl.h"
38
39#include <stdlib.h>
40
Paul Bakker6edcd412013-10-29 15:22:54 +010041#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
42 !defined(EFI32)
Manuel Pégourié-Gonnard9654fb12013-10-03 11:53:05 +020043#define strcasecmp _stricmp
44#endif
45
Paul Bakker41c83d32013-03-20 14:39:14 +010046/*
47 * Ordered from most preferred to least preferred in terms of security.
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020048 *
Manuel Pégourié-Gonnardc16f4e12014-04-29 18:23:07 +020049 * Current rule (except rc4, weak and null which come last):
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020050 * 1. By key exchange:
51 * Forward-secure non-PSK > forward-secure PSK > other non-PSK > other PSK
52 * 2. By key length and cipher:
Manuel Pégourié-Gonnardc16f4e12014-04-29 18:23:07 +020053 * AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020054 * 3. By cipher mode when relevant CCM > GCM > CBC > CCM_8
55 * 4. By hash function used when relevant
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020056 * 5. By key exchange/auth again: EC > non-EC
Paul Bakker41c83d32013-03-20 14:39:14 +010057 */
58static const int ciphersuite_preference[] =
Paul Bakker68884e32013-01-07 18:20:04 +010059{
Paul Bakker27714b12013-04-07 23:07:12 +020060 /* All AES-256 ephemeral suites */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020061 TLS_ECDHE_ECDSA_WITH_AES_256_CCM,
62 TLS_DHE_RSA_WITH_AES_256_CCM,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020063 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010064 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010065 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020066 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
67 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
68 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020069 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010070 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010071 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020072 TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8,
73 TLS_DHE_RSA_WITH_AES_256_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +020074
75 /* All CAMELLIA-256 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020076 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
77 TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
78 TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020079 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020080 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010081 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010082 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020083
84 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020085 TLS_ECDHE_ECDSA_WITH_AES_128_CCM,
86 TLS_DHE_RSA_WITH_AES_128_CCM,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020087 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010088 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010089 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020090 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
91 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
92 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020093 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010094 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
95 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020096 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,
97 TLS_DHE_RSA_WITH_AES_128_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +020098
99 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200100 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
101 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
102 TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200103 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +0200104 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100105 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100106 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200107
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200108 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200109 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100110 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100111 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200112
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200113 /* The PSK ephemeral suites */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200114 TLS_DHE_PSK_WITH_AES_256_CCM,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200115 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200116 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
117 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
118 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
119 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200120 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200121 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200122 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200123 TLS_DHE_PSK_WITH_AES_256_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200124
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200125 TLS_DHE_PSK_WITH_AES_128_CCM,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200126 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200127 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
128 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
129 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
130 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200131 TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200132 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200133 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200134 TLS_DHE_PSK_WITH_AES_128_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200135
136 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200137 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200138
Paul Bakker27714b12013-04-07 23:07:12 +0200139 /* All AES-256 suites */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200140 TLS_RSA_WITH_AES_256_CCM,
Paul Bakker68884e32013-01-07 18:20:04 +0100141 TLS_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200142 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100143 TLS_RSA_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100144 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
145 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
146 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
147 TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
148 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
149 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200150 TLS_RSA_WITH_AES_256_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +0200151
152 /* All CAMELLIA-256 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200153 TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100154 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100155 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100156 TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,
157 TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
158 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
159 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +0200160
161 /* All AES-128 suites */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200162 TLS_RSA_WITH_AES_128_CCM,
Paul Bakker68884e32013-01-07 18:20:04 +0100163 TLS_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200164 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100165 TLS_RSA_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100166 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
167 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
168 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
169 TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
170 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
171 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200172 TLS_RSA_WITH_AES_128_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +0200173
174 /* All CAMELLIA-128 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200175 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100176 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100177 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100178 TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,
179 TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
180 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
181 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +0200182
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200183 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100184 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100185 TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100186 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200187
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200188 /* The RSA PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200189 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200190 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200191 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200192 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200193 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200194
195 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200196 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200197 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200198 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200199 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200200
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200201 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200202
203 /* The PSK suites */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200204 TLS_PSK_WITH_AES_256_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200205 TLS_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200206 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200207 TLS_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200208 TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200209 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200210 TLS_PSK_WITH_AES_256_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200211
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200212 TLS_PSK_WITH_AES_128_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200213 TLS_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200214 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200215 TLS_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200216 TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200217 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200218 TLS_PSK_WITH_AES_128_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200219
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200220 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnardc16f4e12014-04-29 18:23:07 +0200221
222 /* RC4 suites */
223 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
224 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
225 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
226 TLS_DHE_PSK_WITH_RC4_128_SHA,
227 TLS_RSA_WITH_RC4_128_SHA,
228 TLS_RSA_WITH_RC4_128_MD5,
229 TLS_ECDH_RSA_WITH_RC4_128_SHA,
230 TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
231 TLS_RSA_PSK_WITH_RC4_128_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200232 TLS_PSK_WITH_RC4_128_SHA,
233
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200234 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100235 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100236 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200237
238 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200239 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100240 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200241 TLS_ECDHE_PSK_WITH_NULL_SHA384,
242 TLS_ECDHE_PSK_WITH_NULL_SHA256,
243 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200244 TLS_DHE_PSK_WITH_NULL_SHA384,
245 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200246 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200247
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200248 TLS_RSA_WITH_NULL_SHA256,
249 TLS_RSA_WITH_NULL_SHA,
250 TLS_RSA_WITH_NULL_MD5,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100251 TLS_ECDH_RSA_WITH_NULL_SHA,
252 TLS_ECDH_ECDSA_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200253 TLS_RSA_PSK_WITH_NULL_SHA384,
254 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200255 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200256 TLS_PSK_WITH_NULL_SHA384,
257 TLS_PSK_WITH_NULL_SHA256,
258 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200259
Paul Bakker68884e32013-01-07 18:20:04 +0100260 0
261};
262
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200263#define MAX_CIPHERSUITES 176
Paul Bakker41c83d32013-03-20 14:39:14 +0100264static int supported_ciphersuites[MAX_CIPHERSUITES];
265static int supported_init = 0;
266
Paul Bakker68884e32013-01-07 18:20:04 +0100267static const ssl_ciphersuite_t ciphersuite_definitions[] =
268{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200269#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
270#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200271#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200272#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200273 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
274 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
275 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
276 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200277 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200278 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
279 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
280 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
281 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200282 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200283#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200284#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200285#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200286#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200287 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
288 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
289 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
290 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200291 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200292#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200293#if defined(POLARSSL_GCM_C)
294 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
295 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
296 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
297 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200298 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200299#endif /* POLARSSL_GCM_C */
300#endif /* POLARSSL_SHA256_C */
301#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200302#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200303 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
304 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
305 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
306 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200307 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200308#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200309#if defined(POLARSSL_GCM_C)
310 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
311 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
312 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
313 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200314 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200315#endif /* POLARSSL_GCM_C */
316#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200317#if defined(POLARSSL_CCM_C)
318 { TLS_ECDHE_ECDSA_WITH_AES_256_CCM, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM",
319 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
320 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
321 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
322 0 },
323 { TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8",
324 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
325 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
326 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
327 POLARSSL_CIPHERSUITE_SHORT_TAG },
328 { TLS_ECDHE_ECDSA_WITH_AES_128_CCM, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM",
329 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
330 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
331 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
332 0 },
333 { TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8",
334 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
335 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
336 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
337 POLARSSL_CIPHERSUITE_SHORT_TAG },
338#endif /* POLARSSL_CCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200339#endif /* POLARSSL_AES_C */
340
341#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200342#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200343#if defined(POLARSSL_SHA256_C)
344 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
345 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100346 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200347 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200348 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200349#endif /* POLARSSL_SHA256_C */
350#if defined(POLARSSL_SHA512_C)
351 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
352 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100353 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200354 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200355 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200356#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200357#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200358
359#if defined(POLARSSL_GCM_C)
360#if defined(POLARSSL_SHA256_C)
361 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
362 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
363 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
364 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
365 0 },
366#endif /* POLARSSL_SHA256_C */
367#if defined(POLARSSL_SHA512_C)
368 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
369 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
370 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
371 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
372 0 },
373#endif /* POLARSSL_SHA512_C */
374#endif /* POLARSSL_GCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200375#endif /* POLARSSL_CAMELLIA_C */
376
377#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200378#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200379#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200380 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
381 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
382 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
383 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200384 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200385#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200386#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200387#endif /* POLARSSL_DES_C */
388
389#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200390#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200391 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
392 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
393 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
394 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200395 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200396#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200397#endif /* POLARSSL_ARC4_C */
398
399#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200400#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200401 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
402 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
403 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
404 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200405 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200406#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200407#endif /* POLARSSL_CIPHER_NULL_CIPHER */
408#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
409
Paul Bakkere07f41d2013-04-19 09:08:57 +0200410#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100411#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200412#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200413#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100414 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
415 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
416 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
417 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200418 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100419 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
420 POLARSSL_CIPHER_AES_256_CBC, 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é-Gonnardf7dc3782013-09-13 14:10:44 +0200424#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200425#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200426#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200427#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100428 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
429 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
430 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
431 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200432 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200433#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100434#if defined(POLARSSL_GCM_C)
435 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
436 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
437 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
438 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200439 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100440#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200441#endif /* POLARSSL_SHA256_C */
442#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200443#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100444 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
445 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
446 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
447 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200448 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200449#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100450#if defined(POLARSSL_GCM_C)
451 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
452 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
453 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
454 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200455 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100456#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200457#endif /* POLARSSL_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100458#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200459
460#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200461#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200462#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200463 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
464 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100465 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker27714b12013-04-07 23:07:12 +0200466 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200467 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200468#endif /* POLARSSL_SHA256_C */
469#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200470 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
471 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100472 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker27714b12013-04-07 23:07:12 +0200473 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200474 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200475#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200476#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200477
478#if defined(POLARSSL_GCM_C)
479#if defined(POLARSSL_SHA256_C)
480 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
481 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
482 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
483 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
484 0 },
485#endif /* POLARSSL_SHA256_C */
486#if defined(POLARSSL_SHA512_C)
487 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
488 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
489 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
490 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
491 0 },
492#endif /* POLARSSL_SHA512_C */
493#endif /* POLARSSL_GCM_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200494#endif /* POLARSSL_CAMELLIA_C */
495
Paul Bakker41c83d32013-03-20 14:39:14 +0100496#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200497#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200498#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100499 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
500 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
501 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
502 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200503 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200504#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200505#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100506#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200507
Paul Bakker41c83d32013-03-20 14:39:14 +0100508#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200509#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100510 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
511 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
512 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
513 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200514 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200515#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200516#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200517
Paul Bakker41c83d32013-03-20 14:39:14 +0100518#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200519#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100520 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
521 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
522 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
523 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200524 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200525#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200526#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200527#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100528
Paul Bakkere07f41d2013-04-19 09:08:57 +0200529#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100530#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200531#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100532 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
533 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
534 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
535 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
536 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200537#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100538
Paul Bakker9e36f042013-06-30 14:34:05 +0200539#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100540#if defined(POLARSSL_GCM_C)
541 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
542 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
543 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
544 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
545 0 },
546#endif /* POLARSSL_GCM_C */
547
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200548#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100549 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
550 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
551 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
552 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
553 0 },
554
555 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
556 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
557 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
558 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
559 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200560#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200561#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100562
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200563#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200564#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100565 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
566 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
567 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
568 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
569 0 },
570
571 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
572 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
573 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
574 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
575 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200576#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200577#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200578#if defined(POLARSSL_CCM_C)
579 { TLS_DHE_RSA_WITH_AES_256_CCM, "TLS-DHE-RSA-WITH-AES-256-CCM",
580 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
581 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
582 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
583 0 },
584 { TLS_DHE_RSA_WITH_AES_256_CCM_8, "TLS-DHE-RSA-WITH-AES-256-CCM-8",
585 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
586 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
587 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
588 POLARSSL_CIPHERSUITE_SHORT_TAG },
589 { TLS_DHE_RSA_WITH_AES_128_CCM, "TLS-DHE-RSA-WITH-AES-128-CCM",
590 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
591 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
592 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
593 0 },
594 { TLS_DHE_RSA_WITH_AES_128_CCM_8, "TLS-DHE-RSA-WITH-AES-128-CCM-8",
595 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
596 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
597 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
598 POLARSSL_CIPHERSUITE_SHORT_TAG },
599#endif /* POLARSSL_CCM_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_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
606 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
607 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
608 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
609 0 },
610
611 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
612 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_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_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
620 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
621 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
622 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
623 0 },
624
625 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
626 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_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#if defined(POLARSSL_GCM_C)
633#if defined(POLARSSL_SHA256_C)
634 { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
635 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
636 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
637 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
638 0 },
639#endif /* POLARSSL_SHA256_C */
640
641#if defined(POLARSSL_SHA512_C)
642 { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
643 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
644 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
645 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
646 0 },
647#endif /* POLARSSL_SHA512_C */
648#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100649#endif /* POLARSSL_CAMELLIA_C */
650
651#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200652#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200653#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100654 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
655 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
656 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
657 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
658 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200659#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200660#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100661#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200662#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100663
Paul Bakkere07f41d2013-04-19 09:08:57 +0200664#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100665#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200666#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100667 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
668 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
669 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
670 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
671 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200672#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100673
Paul Bakker9e36f042013-06-30 14:34:05 +0200674#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100675#if defined(POLARSSL_GCM_C)
676 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
677 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
678 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
679 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
680 0 },
681#endif /* POLARSSL_GCM_C */
682
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200683#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100684 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
685 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
686 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
687 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
688 0 },
689
690 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
691 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
692 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
693 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
694 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200695#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200696#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100697
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200698#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200699#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100700 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
701 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
702 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
703 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
704 0 },
705
706 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
707 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
708 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
709 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
710 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200711#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200712#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200713#if defined(POLARSSL_CCM_C)
714 { TLS_RSA_WITH_AES_256_CCM, "TLS-RSA-WITH-AES-256-CCM",
715 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
716 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
717 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
718 0 },
719 { TLS_RSA_WITH_AES_256_CCM_8, "TLS-RSA-WITH-AES-256-CCM-8",
720 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
721 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
722 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
723 POLARSSL_CIPHERSUITE_SHORT_TAG },
724 { TLS_RSA_WITH_AES_128_CCM, "TLS-RSA-WITH-AES-128-CCM",
725 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
726 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
727 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
728 0 },
729 { TLS_RSA_WITH_AES_128_CCM_8, "TLS-RSA-WITH-AES-128-CCM-8",
730 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
731 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
732 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
733 POLARSSL_CIPHERSUITE_SHORT_TAG },
734#endif /* POLARSSL_CCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100735#endif /* POLARSSL_AES_C */
736
737#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200738#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200739#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100740 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
741 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
742 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
743 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
744 0 },
745
746 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
747 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
748 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
749 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
750 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200751#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100752
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200753#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100754 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
755 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
756 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
757 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
758 0 },
759
760 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
761 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
762 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
763 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
764 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200765#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200766#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200767
768#if defined(POLARSSL_GCM_C)
769#if defined(POLARSSL_SHA256_C)
770 { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
771 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
772 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
773 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
774 0 },
775#endif /* POLARSSL_SHA256_C */
776
777#if defined(POLARSSL_SHA1_C)
778 { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
779 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
780 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
781 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
782 0 },
783#endif /* POLARSSL_SHA1_C */
784#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100785#endif /* POLARSSL_CAMELLIA_C */
786
787#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200788#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200789#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100790 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
791 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
792 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
793 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
794 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200795#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200796#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100797#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200798
799#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200800#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200801 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
802 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
803 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
804 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
805 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200806#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200807
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200808#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200809 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
810 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
811 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
812 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
813 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200814#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200815#endif /* POLARSSL_ARC4_C */
816#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100817
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100818#if defined(POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED)
819#if defined(POLARSSL_AES_C)
820#if defined(POLARSSL_SHA1_C)
821#if defined(POLARSSL_CIPHER_MODE_CBC)
822 { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA",
823 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
824 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
825 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
826 0 },
827 { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA",
828 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
829 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
830 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
831 0 },
832#endif /* POLARSSL_CIPHER_MODE_CBC */
833#endif /* POLARSSL_SHA1_C */
834#if defined(POLARSSL_SHA256_C)
835#if defined(POLARSSL_CIPHER_MODE_CBC)
836 { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA256",
837 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
838 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
839 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
840 0 },
841#endif /* POLARSSL_CIPHER_MODE_CBC */
842#if defined(POLARSSL_GCM_C)
843 { TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256",
844 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
845 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
846 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
847 0 },
848#endif /* POLARSSL_GCM_C */
849#endif /* POLARSSL_SHA256_C */
850#if defined(POLARSSL_SHA512_C)
851#if defined(POLARSSL_CIPHER_MODE_CBC)
852 { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384",
853 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
854 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
855 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
856 0 },
857#endif /* POLARSSL_CIPHER_MODE_CBC */
858#if defined(POLARSSL_GCM_C)
859 { TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-AES-256-GCM-SHA384",
860 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
861 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
862 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
863 0 },
864#endif /* POLARSSL_GCM_C */
865#endif /* POLARSSL_SHA512_C */
866#endif /* POLARSSL_AES_C */
867
868#if defined(POLARSSL_CAMELLIA_C)
869#if defined(POLARSSL_CIPHER_MODE_CBC)
870#if defined(POLARSSL_SHA256_C)
871 { TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-CBC-SHA256",
872 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
873 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
874 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
875 0 },
876#endif /* POLARSSL_SHA256_C */
877#if defined(POLARSSL_SHA512_C)
878 { TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384",
879 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
880 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
881 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
882 0 },
883#endif /* POLARSSL_SHA512_C */
884#endif /* POLARSSL_CIPHER_MODE_CBC */
885
886#if defined(POLARSSL_GCM_C)
887#if defined(POLARSSL_SHA256_C)
888 { TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-GCM-SHA256",
889 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
890 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
891 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
892 0 },
893#endif /* POLARSSL_SHA256_C */
894#if defined(POLARSSL_SHA512_C)
895 { TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384",
896 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
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 */
902#endif /* POLARSSL_CAMELLIA_C */
903
904#if defined(POLARSSL_DES_C)
905#if defined(POLARSSL_CIPHER_MODE_CBC)
906#if defined(POLARSSL_SHA1_C)
907 { TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-RSA-WITH-3DES-EDE-CBC-SHA",
908 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
909 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
910 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
911 0 },
912#endif /* POLARSSL_SHA1_C */
913#endif /* POLARSSL_CIPHER_MODE_CBC */
914#endif /* POLARSSL_DES_C */
915
916#if defined(POLARSSL_ARC4_C)
917#if defined(POLARSSL_SHA1_C)
918 { TLS_ECDH_RSA_WITH_RC4_128_SHA, "TLS-ECDH-RSA-WITH-RC4-128-SHA",
919 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
920 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
921 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
922 0 },
923#endif /* POLARSSL_SHA1_C */
924#endif /* POLARSSL_ARC4_C */
925
926#if defined(POLARSSL_CIPHER_NULL_CIPHER)
927#if defined(POLARSSL_SHA1_C)
928 { TLS_ECDH_RSA_WITH_NULL_SHA, "TLS-ECDH-RSA-WITH-NULL-SHA",
929 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
930 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
931 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
932 POLARSSL_CIPHERSUITE_WEAK },
933#endif /* POLARSSL_SHA1_C */
934#endif /* POLARSSL_CIPHER_NULL_CIPHER */
935#endif /* POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED */
936
937#if defined(POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
938#if defined(POLARSSL_AES_C)
939#if defined(POLARSSL_SHA1_C)
940#if defined(POLARSSL_CIPHER_MODE_CBC)
941 { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA",
942 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
943 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
944 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
945 0 },
946 { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA",
947 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
948 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
949 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
950 0 },
951#endif /* POLARSSL_CIPHER_MODE_CBC */
952#endif /* POLARSSL_SHA1_C */
953#if defined(POLARSSL_SHA256_C)
954#if defined(POLARSSL_CIPHER_MODE_CBC)
955 { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA256",
956 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
957 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
958 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
959 0 },
960#endif /* POLARSSL_CIPHER_MODE_CBC */
961#if defined(POLARSSL_GCM_C)
962 { TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256",
963 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
964 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
965 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
966 0 },
967#endif /* POLARSSL_GCM_C */
968#endif /* POLARSSL_SHA256_C */
969#if defined(POLARSSL_SHA512_C)
970#if defined(POLARSSL_CIPHER_MODE_CBC)
971 { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384",
972 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
973 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
974 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
975 0 },
976#endif /* POLARSSL_CIPHER_MODE_CBC */
977#if defined(POLARSSL_GCM_C)
978 { TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384",
979 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
980 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
981 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
982 0 },
983#endif /* POLARSSL_GCM_C */
984#endif /* POLARSSL_SHA512_C */
985#endif /* POLARSSL_AES_C */
986
987#if defined(POLARSSL_CAMELLIA_C)
988#if defined(POLARSSL_CIPHER_MODE_CBC)
989#if defined(POLARSSL_SHA256_C)
990 { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
991 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
992 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
993 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
994 0 },
995#endif /* POLARSSL_SHA256_C */
996#if defined(POLARSSL_SHA512_C)
997 { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
998 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
999 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1000 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1001 0 },
1002#endif /* POLARSSL_SHA512_C */
1003#endif /* POLARSSL_CIPHER_MODE_CBC */
1004
1005#if defined(POLARSSL_GCM_C)
1006#if defined(POLARSSL_SHA256_C)
1007 { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
1008 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1009 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1010 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1011 0 },
1012#endif /* POLARSSL_SHA256_C */
1013#if defined(POLARSSL_SHA512_C)
1014 { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
1015 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1016 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1017 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1018 0 },
1019#endif /* POLARSSL_SHA512_C */
1020#endif /* POLARSSL_GCM_C */
1021#endif /* POLARSSL_CAMELLIA_C */
1022
1023#if defined(POLARSSL_DES_C)
1024#if defined(POLARSSL_CIPHER_MODE_CBC)
1025#if defined(POLARSSL_SHA1_C)
1026 { TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-ECDSA-WITH-3DES-EDE-CBC-SHA",
1027 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1028 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1029 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1030 0 },
1031#endif /* POLARSSL_SHA1_C */
1032#endif /* POLARSSL_CIPHER_MODE_CBC */
1033#endif /* POLARSSL_DES_C */
1034
1035#if defined(POLARSSL_ARC4_C)
1036#if defined(POLARSSL_SHA1_C)
1037 { TLS_ECDH_ECDSA_WITH_RC4_128_SHA, "TLS-ECDH-ECDSA-WITH-RC4-128-SHA",
1038 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1039 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1040 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1041 0 },
1042#endif /* POLARSSL_SHA1_C */
1043#endif /* POLARSSL_ARC4_C */
1044
1045#if defined(POLARSSL_CIPHER_NULL_CIPHER)
1046#if defined(POLARSSL_SHA1_C)
1047 { TLS_ECDH_ECDSA_WITH_NULL_SHA, "TLS-ECDH-ECDSA-WITH-NULL-SHA",
1048 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1049 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1050 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1051 POLARSSL_CIPHERSUITE_WEAK },
1052#endif /* POLARSSL_SHA1_C */
1053#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1054#endif /* POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
1055
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001056#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
1057#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001058#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001059#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001060 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
1061 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1062 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1063 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1064 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001065#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001066
Paul Bakker9e36f042013-06-30 14:34:05 +02001067#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001068 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
1069 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
1070 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1071 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1072 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001073#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001074#endif /* POLARSSL_GCM_C */
1075
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001076#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001077#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001078 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
1079 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001080 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001081 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1082 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001083#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001084
Paul Bakker9e36f042013-06-30 14:34:05 +02001085#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001086 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
1087 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001088 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001089 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1090 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001091#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001092
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001093#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001094 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
1095 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1096 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1097 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1098 0 },
1099
1100 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
1101 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_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 */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001107#if defined(POLARSSL_CCM_C)
1108 { TLS_DHE_PSK_WITH_AES_256_CCM, "TLS-DHE-PSK-WITH-AES-256-CCM",
1109 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1110 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1111 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1112 0 },
1113 { TLS_DHE_PSK_WITH_AES_256_CCM_8, "TLS-DHE-PSK-WITH-AES-256-CCM-8",
1114 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1115 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1116 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1117 POLARSSL_CIPHERSUITE_SHORT_TAG },
1118 { TLS_DHE_PSK_WITH_AES_128_CCM, "TLS-DHE-PSK-WITH-AES-128-CCM",
1119 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1120 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1121 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1122 0 },
1123 { TLS_DHE_PSK_WITH_AES_128_CCM_8, "TLS-DHE-PSK-WITH-AES-128-CCM-8",
1124 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1125 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1126 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1127 POLARSSL_CIPHERSUITE_SHORT_TAG },
1128#endif /* POLARSSL_CCM_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001129#endif /* POLARSSL_AES_C */
1130
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001131#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001132#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001133#if defined(POLARSSL_SHA256_C)
1134 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1135 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001136 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001137 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1138 0 },
1139#endif /* POLARSSL_SHA256_C */
1140
1141#if defined(POLARSSL_SHA512_C)
1142 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1143 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001144 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001145 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1146 0 },
1147#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001148#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001149
1150#if defined(POLARSSL_GCM_C)
1151#if defined(POLARSSL_SHA256_C)
1152 { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1153 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1154 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1155 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1156 0 },
1157#endif /* POLARSSL_SHA256_C */
1158
1159#if defined(POLARSSL_SHA512_C)
1160 { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1161 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
1162 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1163 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1164 0 },
1165#endif /* POLARSSL_SHA512_C */
1166#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001167#endif /* POLARSSL_CAMELLIA_C */
1168
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001169#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001170#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001171#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001172 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
1173 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1174 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1175 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1176 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001177#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001178#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001179#endif /* POLARSSL_DES_C */
1180
1181#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001182#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001183 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
1184 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1185 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1186 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1187 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001188#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001189#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001190#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001191
Paul Bakkere07f41d2013-04-19 09:08:57 +02001192#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001193#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001194#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001195#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001196 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
1197 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1198 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1199 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1200 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001201#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001202
Paul Bakker9e36f042013-06-30 14:34:05 +02001203#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001204 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
1205 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1206 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1207 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1208 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001209#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001210#endif /* POLARSSL_GCM_C */
1211
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001212#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001213#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001214 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
1215 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001216 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001217 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1218 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001219#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001220
Paul Bakker9e36f042013-06-30 14:34:05 +02001221#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001222 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
1223 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001224 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001225 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1226 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001227#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001228
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001229#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001230 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
1231 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1232 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1233 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1234 0 },
1235
1236 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
1237 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1238 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1239 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1240 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001241#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001242#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001243#if defined(POLARSSL_CCM_C)
1244 { TLS_PSK_WITH_AES_256_CCM, "TLS-PSK-WITH-AES-256-CCM",
1245 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1246 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1247 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1248 0 },
1249 { TLS_PSK_WITH_AES_256_CCM_8, "TLS-PSK-WITH-AES-256-CCM-8",
1250 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1251 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1252 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1253 POLARSSL_CIPHERSUITE_SHORT_TAG },
1254 { TLS_PSK_WITH_AES_128_CCM, "TLS-PSK-WITH-AES-128-CCM",
1255 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1256 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1257 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1258 0 },
1259 { TLS_PSK_WITH_AES_128_CCM_8, "TLS-PSK-WITH-AES-128-CCM-8",
1260 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1261 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1262 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1263 POLARSSL_CIPHERSUITE_SHORT_TAG },
1264#endif /* POLARSSL_CCM_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001265#endif /* POLARSSL_AES_C */
1266
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001267#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001268#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001269#if defined(POLARSSL_SHA256_C)
1270 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1271 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001272 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001273 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1274 0 },
1275#endif /* POLARSSL_SHA256_C */
1276
1277#if defined(POLARSSL_SHA512_C)
1278 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1279 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001280 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001281 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1282 0 },
1283#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001284#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001285
1286#if defined(POLARSSL_GCM_C)
1287#if defined(POLARSSL_SHA256_C)
1288 { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1289 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1290 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1291 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1292 0 },
1293#endif /* POLARSSL_SHA256_C */
1294
1295#if defined(POLARSSL_SHA512_C)
1296 { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1297 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1298 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1299 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1300 0 },
1301#endif /* POLARSSL_SHA512_C */
1302#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001303#endif /* POLARSSL_CAMELLIA_C */
1304
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001305#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001306#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001307#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001308 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
1309 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1310 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1311 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1312 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001313#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001314#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001315#endif /* POLARSSL_DES_C */
1316
1317#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001318#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001319 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
1320 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1321 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1322 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1323 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001324#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001325#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001326#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001327
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001328#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
1329#if defined(POLARSSL_AES_C)
1330
1331#if defined(POLARSSL_CIPHER_MODE_CBC)
1332#if defined(POLARSSL_SHA256_C)
1333 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
1334 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001335 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001336 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1337 0 },
1338#endif /* POLARSSL_SHA256_C */
1339
1340#if defined(POLARSSL_SHA512_C)
1341 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
1342 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001343 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001344 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1345 0 },
1346#endif /* POLARSSL_SHA512_C */
1347
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001348#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001349 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
1350 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001351 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001352 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1353 0 },
1354
1355 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
1356 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001357 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001358 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1359 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001360#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001361#endif /* POLARSSL_CIPHER_MODE_CBC */
1362#endif /* POLARSSL_AES_C */
1363
1364#if defined(POLARSSL_CAMELLIA_C)
1365#if defined(POLARSSL_CIPHER_MODE_CBC)
1366#if defined(POLARSSL_SHA256_C)
1367 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1368 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001369 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001370 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1371 0 },
1372#endif /* POLARSSL_SHA256_C */
1373
1374#if defined(POLARSSL_SHA512_C)
1375 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1376 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001377 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001378 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1379 0 },
1380#endif /* POLARSSL_SHA512_C */
1381#endif /* POLARSSL_CIPHER_MODE_CBC */
1382#endif /* POLARSSL_CAMELLIA_C */
1383
1384#if defined(POLARSSL_DES_C)
1385#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001386#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001387 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
1388 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001389 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001390 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1391 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001392#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001393#endif /* POLARSSL_CIPHER_MODE_CBC */
1394#endif /* POLARSSL_DES_C */
1395
1396#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001397#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001398 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
1399 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001400 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001401 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1402 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001403#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001404#endif /* POLARSSL_ARC4_C */
1405#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1406
Paul Bakkere07f41d2013-04-19 09:08:57 +02001407#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001408#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001409#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001410#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001411 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
1412 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1413 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1414 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1415 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001416#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001417
Paul Bakker9e36f042013-06-30 14:34:05 +02001418#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001419 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
1420 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1421 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1422 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1423 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001424#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001425#endif /* POLARSSL_GCM_C */
1426
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001427#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001428#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001429 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1430 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001431 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001432 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1433 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001434#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001435
Paul Bakker9e36f042013-06-30 14:34:05 +02001436#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001437 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1438 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001439 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001440 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1441 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001442#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001443
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001444#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001445 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
1446 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1447 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1448 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1449 0 },
1450
1451 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
1452 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1453 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1454 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1455 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001456#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001457#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001458#endif /* POLARSSL_AES_C */
1459
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001460#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001461#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001462#if defined(POLARSSL_SHA256_C)
1463 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1464 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001465 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001466 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1467 0 },
1468#endif /* POLARSSL_SHA256_C */
1469
1470#if defined(POLARSSL_SHA512_C)
1471 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1472 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001473 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001474 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1475 0 },
1476#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001477#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001478
1479#if defined(POLARSSL_GCM_C)
1480#if defined(POLARSSL_SHA256_C)
1481 { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1482 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1483 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1484 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1485 0 },
1486#endif /* POLARSSL_SHA256_C */
1487
1488#if defined(POLARSSL_SHA512_C)
1489 { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1490 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1491 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1492 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1493 0 },
1494#endif /* POLARSSL_SHA512_C */
1495#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001496#endif /* POLARSSL_CAMELLIA_C */
1497
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001498#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001499#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001500#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001501 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
1502 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1503 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1504 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1505 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001506#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001507#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001508#endif /* POLARSSL_DES_C */
1509
1510#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001511#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001512 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
1513 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1514 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1515 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1516 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001517#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001518#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001519#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001520
Paul Bakker68884e32013-01-07 18:20:04 +01001521#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
1522#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001523#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001524#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001525 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
1526 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
1527 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1528 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1529 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001530#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001531
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001532#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001533 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
1534 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1535 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1536 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1537 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001538#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001539
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001540#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001541 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
1542 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
1543 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1544 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1545 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001546#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +02001547#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001548
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001549#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001550#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001551 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
1552 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1553 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1554 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1555 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001556#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001557
1558#if defined(POLARSSL_SHA256_C)
1559 { TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
1560 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001561 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001562 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1563 POLARSSL_CIPHERSUITE_WEAK },
1564#endif
1565
1566#if defined(POLARSSL_SHA512_C)
1567 { TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
1568 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001569 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001570 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1571 POLARSSL_CIPHERSUITE_WEAK },
1572#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001573#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1574
1575#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001576#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001577 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1578 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1579 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1580 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1581 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001582#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001583
1584#if defined(POLARSSL_SHA256_C)
1585 { TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
1586 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001587 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001588 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1589 POLARSSL_CIPHERSUITE_WEAK },
1590#endif
1591
1592#if defined(POLARSSL_SHA512_C)
1593 { TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
1594 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001595 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001596 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1597 POLARSSL_CIPHERSUITE_WEAK },
1598#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001599#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1600
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001601#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001602#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001603 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1604 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001605 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001606 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1607 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001608#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001609
1610#if defined(POLARSSL_SHA256_C)
1611 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1612 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001613 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001614 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1615 POLARSSL_CIPHERSUITE_WEAK },
1616#endif
1617
1618#if defined(POLARSSL_SHA512_C)
1619 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1620 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001621 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001622 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1623 POLARSSL_CIPHERSUITE_WEAK },
1624#endif
1625#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1626
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001627#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001628#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001629 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1630 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1631 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1632 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1633 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001634#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001635
1636#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001637 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001638 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001639 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001640 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1641 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001642#endif
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001643
1644#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001645 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001646 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001647 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001648 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1649 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001650#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001651#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1652#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1653
Paul Bakker68884e32013-01-07 18:20:04 +01001654#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001655#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001656#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001657#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001658 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1659 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1660 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1661 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1662 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001663#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001664#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001665
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001666#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001667#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001668 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1669 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1670 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1671 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1672 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001673#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001674#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1675#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001676#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001677#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1678
1679 { 0, "", 0, 0, 0, 0, 0, 0, 0, 0 }
1680};
1681
1682const int *ssl_list_ciphersuites( void )
1683{
Paul Bakker41c83d32013-03-20 14:39:14 +01001684 /*
1685 * On initial call filter out all ciphersuites not supported by current
1686 * build based on presence in the ciphersuite_definitions.
1687 */
1688 if( supported_init == 0 )
1689 {
1690 const int *p = ciphersuite_preference;
1691 int *q = supported_ciphersuites;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001692 size_t i;
1693 size_t max = sizeof(supported_ciphersuites) / sizeof(int);
Paul Bakker41c83d32013-03-20 14:39:14 +01001694
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001695 for( i = 0; i < max - 1 && p[i] != 0; i++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001696 {
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001697 if( ssl_ciphersuite_from_id( p[i] ) != NULL )
1698 *(q++) = p[i];
Paul Bakker41c83d32013-03-20 14:39:14 +01001699 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001700 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001701
Paul Bakker41c83d32013-03-20 14:39:14 +01001702 supported_init = 1;
1703 }
1704
Paul Bakkerd8bb8262014-06-17 14:06:49 +02001705 return( supported_ciphersuites );
Paul Bakker68884e32013-01-07 18:20:04 +01001706};
1707
Paul Bakkerb9e4e2c2014-05-01 14:18:25 +02001708const ssl_ciphersuite_t *ssl_ciphersuite_from_string(
1709 const char *ciphersuite_name )
Paul Bakker68884e32013-01-07 18:20:04 +01001710{
1711 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1712
1713 if( NULL == ciphersuite_name )
1714 return( NULL );
1715
1716 while( cur->id != 0 )
1717 {
1718 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1719 return( cur );
1720
1721 cur++;
1722 }
1723
1724 return( NULL );
1725}
1726
1727const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1728{
1729 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1730
1731 while( cur->id != 0 )
1732 {
1733 if( cur->id == ciphersuite )
1734 return( cur );
1735
1736 cur++;
1737 }
1738
1739 return( NULL );
1740}
1741
1742const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1743{
1744 const ssl_ciphersuite_t *cur;
1745
1746 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1747
1748 if( cur == NULL )
1749 return( "unknown" );
1750
1751 return( cur->name );
1752}
1753
1754int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1755{
1756 const ssl_ciphersuite_t *cur;
1757
1758 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1759
1760 if( cur == NULL )
1761 return( 0 );
1762
1763 return( cur->id );
1764}
1765
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001766#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001767pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1768{
1769 switch( info->key_exchange )
1770 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001771 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001772 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1773 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001774 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001775 return( POLARSSL_PK_RSA );
1776
1777 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1778 return( POLARSSL_PK_ECDSA );
1779
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001780 case POLARSSL_KEY_EXCHANGE_ECDH_RSA:
1781 case POLARSSL_KEY_EXCHANGE_ECDH_ECDSA:
1782 return( POLARSSL_PK_ECKEY );
1783
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001784 default:
1785 return( POLARSSL_PK_NONE );
1786 }
1787}
Paul Bakker9af723c2014-05-01 13:03:14 +02001788#endif /* POLARSSL_PK_C */
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001789
Manuel Pégourié-Gonnard280f95b2014-01-18 18:28:58 +01001790#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001791int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1792{
1793 switch( info->key_exchange )
1794 {
1795 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1796 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001797 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001798 case POLARSSL_KEY_EXCHANGE_ECDH_RSA:
1799 case POLARSSL_KEY_EXCHANGE_ECDH_ECDSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001800 return( 1 );
1801
1802 default:
1803 return( 0 );
1804 }
1805}
Paul Bakker9af723c2014-05-01 13:03:14 +02001806#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001807
Manuel Pégourié-Gonnard280f95b2014-01-18 18:28:58 +01001808#if defined(POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED)
Manuel Pégourié-Gonnard21ef42f2013-10-27 14:47:25 +01001809int ssl_ciphersuite_uses_psk( const ssl_ciphersuite_t *info )
1810{
1811 switch( info->key_exchange )
1812 {
1813 case POLARSSL_KEY_EXCHANGE_PSK:
1814 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
1815 case POLARSSL_KEY_EXCHANGE_DHE_PSK:
1816 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
1817 return( 1 );
1818
1819 default:
1820 return( 0 );
1821 }
1822}
Paul Bakker9af723c2014-05-01 13:03:14 +02001823#endif /* POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED */
Manuel Pégourié-Gonnard21ef42f2013-10-27 14:47:25 +01001824
Paul Bakker9af723c2014-05-01 13:03:14 +02001825#endif /* POLARSSL_SSL_TLS_C */