blob: 11c46a590d2f93105c55070e7e700979f296cf38 [file] [log] [blame]
Paul Bakker68884e32013-01-07 18:20:04 +01001/**
2 * \file ssl_ciphersuites.c
3 *
Manuel Pégourié-Gonnardb4fe3cb2015-01-22 16:11:05 +00004 * \brief SSL ciphersuites for mbed TLS
Paul Bakker68884e32013-01-07 18:20:04 +01005 *
Manuel Pégourié-Gonnarda658a402015-01-23 09:45:19 +00006 * Copyright (C) 2006-2014, ARM Limited, All Rights Reserved
Paul Bakker68884e32013-01-07 18:20:04 +01007 *
Manuel Pégourié-Gonnardfe446432015-03-06 13:17:10 +00008 * This file is part of mbed TLS (https://tls.mbed.org)
Paul Bakker68884e32013-01-07 18:20:04 +01009 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License along
21 * with this program; if not, write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 */
24
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020025#if !defined(POLARSSL_CONFIG_FILE)
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +000026#include "mbedtls/config.h"
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020027#else
28#include POLARSSL_CONFIG_FILE
29#endif
Paul Bakker68884e32013-01-07 18:20:04 +010030
31#if defined(POLARSSL_SSL_TLS_C)
32
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +000033#include "mbedtls/ssl_ciphersuites.h"
34#include "mbedtls/ssl.h"
Paul Bakker68884e32013-01-07 18:20:04 +010035
Rich Evans00ab4702015-02-06 13:43:58 +000036// #include <stdlib.h>
37#include <string.h>
Paul Bakker68884e32013-01-07 18:20:04 +010038
Paul Bakker6edcd412013-10-29 15:22:54 +010039#if defined(_MSC_VER) && !defined strcasecmp && !defined(EFIX64) && \
40 !defined(EFI32)
Manuel Pégourié-Gonnard9654fb12013-10-03 11:53:05 +020041#define strcasecmp _stricmp
42#endif
43
Paul Bakker41c83d32013-03-20 14:39:14 +010044/*
45 * Ordered from most preferred to least preferred in terms of security.
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020046 *
Manuel Pégourié-Gonnardc16f4e12014-04-29 18:23:07 +020047 * Current rule (except rc4, weak and null which come last):
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020048 * 1. By key exchange:
49 * Forward-secure non-PSK > forward-secure PSK > other non-PSK > other PSK
50 * 2. By key length and cipher:
Manuel Pégourié-Gonnardc16f4e12014-04-29 18:23:07 +020051 * AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +020052 * 3. By cipher mode when relevant GCM > CCM > CBC > CCM_8
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020053 * 4. By hash function used when relevant
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020054 * 5. By key exchange/auth again: EC > non-EC
Paul Bakker41c83d32013-03-20 14:39:14 +010055 */
56static const int ciphersuite_preference[] =
Paul Bakker68884e32013-01-07 18:20:04 +010057{
Manuel Pégourié-Gonnarddfc7df02014-06-30 17:59:55 +020058#if defined(SSL_CIPHERSUITES)
59 SSL_CIPHERSUITES,
60#else
Paul Bakker27714b12013-04-07 23:07:12 +020061 /* All AES-256 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020062 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Bakkera54e4932013-03-20 15:31:54 +010063 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010064 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +020065 TLS_ECDHE_ECDSA_WITH_AES_256_CCM,
66 TLS_DHE_RSA_WITH_AES_256_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020067 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
68 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
69 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020070 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010071 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +010072 TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020073 TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8,
74 TLS_DHE_RSA_WITH_AES_256_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +020075
76 /* All CAMELLIA-256 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020077 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
78 TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
79 TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020080 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +020081 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +010082 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +010083 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +020084
85 /* All AES-128 ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020086 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Bakkera54e4932013-03-20 15:31:54 +010087 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Bakker41c83d32013-03-20 14:39:14 +010088 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +020089 TLS_ECDHE_ECDSA_WITH_AES_128_CCM,
90 TLS_DHE_RSA_WITH_AES_128_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +020091 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
92 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
93 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +020094 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +010095 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
96 TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +020097 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,
98 TLS_DHE_RSA_WITH_AES_128_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +020099
100 /* All CAMELLIA-128 ephemeral suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200101 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
102 TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
103 TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200104 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +0200105 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100106 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100107 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200108
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200109 /* All remaining >= 128-bit ephemeral suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200110 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100111 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100112 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200113
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200114 /* The PSK ephemeral suites */
Paul Bakker40afb4b2013-04-19 22:03:30 +0200115 TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +0200116 TLS_DHE_PSK_WITH_AES_256_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200117 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
118 TLS_DHE_PSK_WITH_AES_256_CBC_SHA384,
119 TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA,
120 TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200121 TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200122 TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200123 TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200124 TLS_DHE_PSK_WITH_AES_256_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200125
Paul Bakker40afb4b2013-04-19 22:03:30 +0200126 TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +0200127 TLS_DHE_PSK_WITH_AES_128_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200128 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
129 TLS_DHE_PSK_WITH_AES_128_CBC_SHA256,
130 TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA,
131 TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200132 TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200133 TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200134 TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200135 TLS_DHE_PSK_WITH_AES_128_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200136
137 TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200138 TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200139
Paul Bakker27714b12013-04-07 23:07:12 +0200140 /* All AES-256 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100141 TLS_RSA_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +0200142 TLS_RSA_WITH_AES_256_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200143 TLS_RSA_WITH_AES_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100144 TLS_RSA_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100145 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
146 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
147 TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
148 TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
149 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
150 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200151 TLS_RSA_WITH_AES_256_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +0200152
153 /* All CAMELLIA-256 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200154 TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker68884e32013-01-07 18:20:04 +0100155 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100156 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100157 TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384,
158 TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
159 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384,
160 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Bakker27714b12013-04-07 23:07:12 +0200161
162 /* All AES-128 suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100163 TLS_RSA_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +0200164 TLS_RSA_WITH_AES_128_CCM,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200165 TLS_RSA_WITH_AES_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100166 TLS_RSA_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100167 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
168 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
169 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
170 TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
171 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
172 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200173 TLS_RSA_WITH_AES_128_CCM_8,
Paul Bakker27714b12013-04-07 23:07:12 +0200174
175 /* All CAMELLIA-128 suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200176 TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100177 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker68884e32013-01-07 18:20:04 +0100178 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100179 TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256,
180 TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
181 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256,
182 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Bakker27714b12013-04-07 23:07:12 +0200183
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200184 /* All remaining >= 128-bit suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100185 TLS_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100186 TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100187 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200188
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200189 /* The RSA PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200190 TLS_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200191 TLS_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200192 TLS_RSA_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200193 TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200194 TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200195
196 TLS_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200197 TLS_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200198 TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200199 TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200200 TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200201
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200202 TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200203
204 /* The PSK suites */
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200205 TLS_PSK_WITH_AES_256_GCM_SHA384,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +0200206 TLS_PSK_WITH_AES_256_CCM,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200207 TLS_PSK_WITH_AES_256_CBC_SHA384,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200208 TLS_PSK_WITH_AES_256_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200209 TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200210 TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200211 TLS_PSK_WITH_AES_256_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200212
213 TLS_PSK_WITH_AES_128_GCM_SHA256,
Manuel Pégourié-Gonnard42b53742014-06-19 16:18:26 +0200214 TLS_PSK_WITH_AES_128_CCM,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200215 TLS_PSK_WITH_AES_128_CBC_SHA256,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200216 TLS_PSK_WITH_AES_128_CBC_SHA,
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200217 TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +0200218 TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200219 TLS_PSK_WITH_AES_128_CCM_8,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200220
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200221 TLS_PSK_WITH_3DES_EDE_CBC_SHA,
Manuel Pégourié-Gonnardc16f4e12014-04-29 18:23:07 +0200222
223 /* RC4 suites */
224 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
225 TLS_ECDHE_RSA_WITH_RC4_128_SHA,
226 TLS_ECDHE_PSK_WITH_RC4_128_SHA,
227 TLS_DHE_PSK_WITH_RC4_128_SHA,
228 TLS_RSA_WITH_RC4_128_SHA,
229 TLS_RSA_WITH_RC4_128_MD5,
230 TLS_ECDH_RSA_WITH_RC4_128_SHA,
231 TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
232 TLS_RSA_PSK_WITH_RC4_128_SHA,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +0200233 TLS_PSK_WITH_RC4_128_SHA,
234
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200235 /* Weak suites */
Paul Bakker68884e32013-01-07 18:20:04 +0100236 TLS_DHE_RSA_WITH_DES_CBC_SHA,
Paul Bakker68884e32013-01-07 18:20:04 +0100237 TLS_RSA_WITH_DES_CBC_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200238
239 /* NULL suites */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200240 TLS_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Bakker41c83d32013-03-20 14:39:14 +0100241 TLS_ECDHE_RSA_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200242 TLS_ECDHE_PSK_WITH_NULL_SHA384,
243 TLS_ECDHE_PSK_WITH_NULL_SHA256,
244 TLS_ECDHE_PSK_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200245 TLS_DHE_PSK_WITH_NULL_SHA384,
246 TLS_DHE_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200247 TLS_DHE_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard6fb0f742013-10-25 17:08:15 +0200248
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200249 TLS_RSA_WITH_NULL_SHA256,
250 TLS_RSA_WITH_NULL_SHA,
251 TLS_RSA_WITH_NULL_MD5,
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100252 TLS_ECDH_RSA_WITH_NULL_SHA,
253 TLS_ECDH_ECDSA_WITH_NULL_SHA,
Paul Bakker40afb4b2013-04-19 22:03:30 +0200254 TLS_RSA_PSK_WITH_NULL_SHA384,
255 TLS_RSA_PSK_WITH_NULL_SHA256,
Paul Bakkera1bf92d2013-04-19 19:48:45 +0200256 TLS_RSA_PSK_WITH_NULL_SHA,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +0200257 TLS_PSK_WITH_NULL_SHA384,
258 TLS_PSK_WITH_NULL_SHA256,
259 TLS_PSK_WITH_NULL_SHA,
Paul Bakker27714b12013-04-07 23:07:12 +0200260
Paul Bakker82788fb2014-10-20 13:59:19 +0200261#endif /* SSL_CIPHERSUITES */
Paul Bakker68884e32013-01-07 18:20:04 +0100262 0
263};
264
265static const ssl_ciphersuite_t ciphersuite_definitions[] =
266{
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200267#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
268#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200269#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200270#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200271 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA",
272 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
273 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
274 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200275 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200276 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA",
277 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
278 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
279 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200280 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200281#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200282#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200283#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200284#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200285 { TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256",
286 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
287 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
288 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200289 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200290#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200291#if defined(POLARSSL_GCM_C)
292 { TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256",
293 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
294 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
295 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200296 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200297#endif /* POLARSSL_GCM_C */
298#endif /* POLARSSL_SHA256_C */
299#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200300#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200301 { TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384",
302 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
303 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
304 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200305 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200306#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200307#if defined(POLARSSL_GCM_C)
308 { TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384",
309 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
310 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
311 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200312 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200313#endif /* POLARSSL_GCM_C */
314#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200315#if defined(POLARSSL_CCM_C)
316 { TLS_ECDHE_ECDSA_WITH_AES_256_CCM, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM",
317 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
318 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
319 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
320 0 },
321 { TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8",
322 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
323 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
324 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
325 POLARSSL_CIPHERSUITE_SHORT_TAG },
326 { TLS_ECDHE_ECDSA_WITH_AES_128_CCM, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM",
327 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
328 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
329 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
330 0 },
331 { TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, "TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8",
332 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
333 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
334 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
335 POLARSSL_CIPHERSUITE_SHORT_TAG },
336#endif /* POLARSSL_CCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200337#endif /* POLARSSL_AES_C */
338
339#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200340#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200341#if defined(POLARSSL_SHA256_C)
342 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
343 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100344 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200345 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200346 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200347#endif /* POLARSSL_SHA256_C */
348#if defined(POLARSSL_SHA512_C)
349 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
350 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100351 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200352 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200353 0 },
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200354#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200355#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200356
357#if defined(POLARSSL_GCM_C)
358#if defined(POLARSSL_SHA256_C)
359 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
360 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
361 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
362 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
363 0 },
364#endif /* POLARSSL_SHA256_C */
365#if defined(POLARSSL_SHA512_C)
366 { TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
367 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
368 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
369 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
370 0 },
371#endif /* POLARSSL_SHA512_C */
372#endif /* POLARSSL_GCM_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200373#endif /* POLARSSL_CAMELLIA_C */
374
375#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200376#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200377#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200378 { TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-ECDSA-WITH-3DES-EDE-CBC-SHA",
379 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
380 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
381 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200382 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200383#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200384#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200385#endif /* POLARSSL_DES_C */
386
387#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200388#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200389 { TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS-ECDHE-ECDSA-WITH-RC4-128-SHA",
390 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
391 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
392 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +0100393 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200394#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200395#endif /* POLARSSL_ARC4_C */
396
397#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200398#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200399 { TLS_ECDHE_ECDSA_WITH_NULL_SHA, "TLS-ECDHE-ECDSA-WITH-NULL-SHA",
400 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA,
401 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
402 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200403 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200404#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +0200405#endif /* POLARSSL_CIPHER_NULL_CIPHER */
406#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
407
Paul Bakkere07f41d2013-04-19 09:08:57 +0200408#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
Paul Bakker41c83d32013-03-20 14:39:14 +0100409#if defined(POLARSSL_AES_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200410#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200411#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker41c83d32013-03-20 14:39:14 +0100412 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA",
413 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
414 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
415 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200416 0 },
Paul Bakker41c83d32013-03-20 14:39:14 +0100417 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA",
418 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
419 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
420 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200421 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200422#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200423#endif /* POLARSSL_SHA1_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200424#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200425#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100426 { TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256",
427 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
428 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
429 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200430 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200431#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100432#if defined(POLARSSL_GCM_C)
433 { TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256",
434 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
435 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
436 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200437 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100438#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200439#endif /* POLARSSL_SHA256_C */
440#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200441#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkera54e4932013-03-20 15:31:54 +0100442 { TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384",
443 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
444 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
445 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200446 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200447#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkera54e4932013-03-20 15:31:54 +0100448#if defined(POLARSSL_GCM_C)
449 { TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384",
450 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
451 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
452 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200453 0 },
Paul Bakkera54e4932013-03-20 15:31:54 +0100454#endif /* POLARSSL_GCM_C */
Paul Bakker9e36f042013-06-30 14:34:05 +0200455#endif /* POLARSSL_SHA512_C */
Paul Bakkera54e4932013-03-20 15:31:54 +0100456#endif /* POLARSSL_AES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200457
458#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200459#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200460#if defined(POLARSSL_SHA256_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200461 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
462 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100463 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker27714b12013-04-07 23:07:12 +0200464 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200465 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200466#endif /* POLARSSL_SHA256_C */
467#if defined(POLARSSL_SHA512_C)
Paul Bakker27714b12013-04-07 23:07:12 +0200468 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-CBC-SHA384",
469 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +0100470 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker27714b12013-04-07 23:07:12 +0200471 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200472 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200473#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200474#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200475
476#if defined(POLARSSL_GCM_C)
477#if defined(POLARSSL_SHA256_C)
478 { TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
479 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
480 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
481 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
482 0 },
483#endif /* POLARSSL_SHA256_C */
484#if defined(POLARSSL_SHA512_C)
485 { TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
486 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
487 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
488 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
489 0 },
490#endif /* POLARSSL_SHA512_C */
491#endif /* POLARSSL_GCM_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200492#endif /* POLARSSL_CAMELLIA_C */
493
Paul Bakker41c83d32013-03-20 14:39:14 +0100494#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200495#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200496#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100497 { TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-RSA-WITH-3DES-EDE-CBC-SHA",
498 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
499 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
500 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200501 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200502#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200503#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker41c83d32013-03-20 14:39:14 +0100504#endif /* POLARSSL_DES_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200505
Paul Bakker41c83d32013-03-20 14:39:14 +0100506#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200507#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100508 { TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS-ECDHE-RSA-WITH-RC4-128-SHA",
509 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
510 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
511 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +0100512 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200513#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200514#endif /* POLARSSL_ARC4_C */
Paul Bakker27714b12013-04-07 23:07:12 +0200515
Paul Bakker41c83d32013-03-20 14:39:14 +0100516#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200517#if defined(POLARSSL_SHA1_C)
Paul Bakker41c83d32013-03-20 14:39:14 +0100518 { TLS_ECDHE_RSA_WITH_NULL_SHA, "TLS-ECDHE-RSA-WITH-NULL-SHA",
519 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_RSA,
520 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
521 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +0200522 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200523#endif /* POLARSSL_SHA1_C */
Paul Bakkered27a042013-04-18 22:46:23 +0200524#endif /* POLARSSL_CIPHER_NULL_CIPHER */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200525#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
Paul Bakker41c83d32013-03-20 14:39:14 +0100526
Paul Bakkere07f41d2013-04-19 09:08:57 +0200527#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100528#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200529#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100530 { TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384",
531 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
532 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
533 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
534 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200535#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100536
Paul Bakker9e36f042013-06-30 14:34:05 +0200537#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100538#if defined(POLARSSL_GCM_C)
539 { TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256",
540 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
541 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
542 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
543 0 },
544#endif /* POLARSSL_GCM_C */
545
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200546#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100547 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256",
548 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
549 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
550 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
551 0 },
552
553 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256",
554 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
555 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
556 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
557 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200558#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200559#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100560
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200561#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200562#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100563 { TLS_DHE_RSA_WITH_AES_128_CBC_SHA, "TLS-DHE-RSA-WITH-AES-128-CBC-SHA",
564 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
565 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
566 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
567 0 },
568
569 { TLS_DHE_RSA_WITH_AES_256_CBC_SHA, "TLS-DHE-RSA-WITH-AES-256-CBC-SHA",
570 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
571 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
572 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
573 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200574#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200575#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200576#if defined(POLARSSL_CCM_C)
577 { TLS_DHE_RSA_WITH_AES_256_CCM, "TLS-DHE-RSA-WITH-AES-256-CCM",
578 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
579 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
580 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
581 0 },
582 { TLS_DHE_RSA_WITH_AES_256_CCM_8, "TLS-DHE-RSA-WITH-AES-256-CCM-8",
583 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
584 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
585 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
586 POLARSSL_CIPHERSUITE_SHORT_TAG },
587 { TLS_DHE_RSA_WITH_AES_128_CCM, "TLS-DHE-RSA-WITH-AES-128-CCM",
588 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
589 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
590 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
591 0 },
592 { TLS_DHE_RSA_WITH_AES_128_CCM_8, "TLS-DHE-RSA-WITH-AES-128-CCM-8",
593 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
594 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
595 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
596 POLARSSL_CIPHERSUITE_SHORT_TAG },
597#endif /* POLARSSL_CCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100598#endif /* POLARSSL_AES_C */
599
600#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200601#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200602#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100603 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA256",
604 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
605 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
606 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
607 0 },
608
609 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA256",
610 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
611 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
612 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
613 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200614#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100615
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200616#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100617 { TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA",
618 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
619 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
620 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
621 0 },
622
623 { TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA",
624 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
625 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
626 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
627 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200628#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200629#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200630#if defined(POLARSSL_GCM_C)
631#if defined(POLARSSL_SHA256_C)
632 { TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-RSA-WITH-CAMELLIA-128-GCM-SHA256",
633 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_RSA,
634 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
635 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
636 0 },
637#endif /* POLARSSL_SHA256_C */
638
639#if defined(POLARSSL_SHA512_C)
640 { TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384",
641 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_RSA,
642 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
643 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
644 0 },
645#endif /* POLARSSL_SHA512_C */
646#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100647#endif /* POLARSSL_CAMELLIA_C */
648
649#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200650#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200651#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100652 { TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-RSA-WITH-3DES-EDE-CBC-SHA",
653 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
654 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
655 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
656 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200657#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200658#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100659#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200660#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100661
Paul Bakkere07f41d2013-04-19 09:08:57 +0200662#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Paul Bakker68884e32013-01-07 18:20:04 +0100663#if defined(POLARSSL_AES_C)
Paul Bakker9e36f042013-06-30 14:34:05 +0200664#if defined(POLARSSL_SHA512_C) && defined(POLARSSL_GCM_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100665 { TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS-RSA-WITH-AES-256-GCM-SHA384",
666 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
667 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
668 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
669 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200670#endif /* POLARSSL_SHA512_C && POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100671
Paul Bakker9e36f042013-06-30 14:34:05 +0200672#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100673#if defined(POLARSSL_GCM_C)
674 { TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS-RSA-WITH-AES-128-GCM-SHA256",
675 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
676 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
677 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
678 0 },
679#endif /* POLARSSL_GCM_C */
680
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200681#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100682 { TLS_RSA_WITH_AES_128_CBC_SHA256, "TLS-RSA-WITH-AES-128-CBC-SHA256",
683 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
684 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
685 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
686 0 },
687
688 { TLS_RSA_WITH_AES_256_CBC_SHA256, "TLS-RSA-WITH-AES-256-CBC-SHA256",
689 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
690 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
691 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
692 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200693#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker9e36f042013-06-30 14:34:05 +0200694#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100695
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200696#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200697#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker68884e32013-01-07 18:20:04 +0100698 { TLS_RSA_WITH_AES_128_CBC_SHA, "TLS-RSA-WITH-AES-128-CBC-SHA",
699 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
700 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
701 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
702 0 },
703
704 { TLS_RSA_WITH_AES_256_CBC_SHA, "TLS-RSA-WITH-AES-256-CBC-SHA",
705 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
706 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
707 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
708 0 },
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200709#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200710#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +0200711#if defined(POLARSSL_CCM_C)
712 { TLS_RSA_WITH_AES_256_CCM, "TLS-RSA-WITH-AES-256-CCM",
713 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
714 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
715 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
716 0 },
717 { TLS_RSA_WITH_AES_256_CCM_8, "TLS-RSA-WITH-AES-256-CCM-8",
718 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
719 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
720 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
721 POLARSSL_CIPHERSUITE_SHORT_TAG },
722 { TLS_RSA_WITH_AES_128_CCM, "TLS-RSA-WITH-AES-128-CCM",
723 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
724 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
725 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
726 0 },
727 { TLS_RSA_WITH_AES_128_CCM_8, "TLS-RSA-WITH-AES-128-CCM-8",
728 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
729 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
730 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
731 POLARSSL_CIPHERSUITE_SHORT_TAG },
732#endif /* POLARSSL_CCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100733#endif /* POLARSSL_AES_C */
734
735#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200736#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +0200737#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100738 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA256",
739 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
740 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
741 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
742 0 },
743
744 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA256",
745 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
746 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
747 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
748 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +0200749#endif /* POLARSSL_SHA256_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100750
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200751#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100752 { TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-128-CBC-SHA",
753 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
754 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
755 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
756 0 },
757
758 { TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "TLS-RSA-WITH-CAMELLIA-256-CBC-SHA",
759 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
760 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
761 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
762 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200763#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200764#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +0200765
766#if defined(POLARSSL_GCM_C)
767#if defined(POLARSSL_SHA256_C)
768 { TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256",
769 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
770 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
771 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
772 0 },
773#endif /* POLARSSL_SHA256_C */
774
775#if defined(POLARSSL_SHA1_C)
776 { TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384",
777 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA,
778 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
779 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
780 0 },
781#endif /* POLARSSL_SHA1_C */
782#endif /* POLARSSL_GCM_C */
Paul Bakker68884e32013-01-07 18:20:04 +0100783#endif /* POLARSSL_CAMELLIA_C */
784
785#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200786#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200787#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +0100788 { TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-WITH-3DES-EDE-CBC-SHA",
789 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
790 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
791 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
792 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200793#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +0200794#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +0100795#endif /* POLARSSL_DES_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +0200796
797#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200798#if defined(POLARSSL_MD5_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200799 { TLS_RSA_WITH_RC4_128_MD5, "TLS-RSA-WITH-RC4-128-MD5",
800 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
801 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
802 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +0100803 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200804#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200805
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200806#if defined(POLARSSL_SHA1_C)
Paul Bakkere07f41d2013-04-19 09:08:57 +0200807 { TLS_RSA_WITH_RC4_128_SHA, "TLS-RSA-WITH-RC4-128-SHA",
808 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
809 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
810 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +0100811 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +0200812#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +0200813#endif /* POLARSSL_ARC4_C */
814#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +0100815
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100816#if defined(POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED)
817#if defined(POLARSSL_AES_C)
818#if defined(POLARSSL_SHA1_C)
819#if defined(POLARSSL_CIPHER_MODE_CBC)
820 { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA",
821 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
822 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
823 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
824 0 },
825 { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA",
826 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
827 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
828 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
829 0 },
830#endif /* POLARSSL_CIPHER_MODE_CBC */
831#endif /* POLARSSL_SHA1_C */
832#if defined(POLARSSL_SHA256_C)
833#if defined(POLARSSL_CIPHER_MODE_CBC)
834 { TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-AES-128-CBC-SHA256",
835 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
836 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
837 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
838 0 },
839#endif /* POLARSSL_CIPHER_MODE_CBC */
840#if defined(POLARSSL_GCM_C)
841 { TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-AES-128-GCM-SHA256",
842 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
843 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
844 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
845 0 },
846#endif /* POLARSSL_GCM_C */
847#endif /* POLARSSL_SHA256_C */
848#if defined(POLARSSL_SHA512_C)
849#if defined(POLARSSL_CIPHER_MODE_CBC)
850 { TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-AES-256-CBC-SHA384",
851 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
852 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
853 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
854 0 },
855#endif /* POLARSSL_CIPHER_MODE_CBC */
856#if defined(POLARSSL_GCM_C)
857 { TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-AES-256-GCM-SHA384",
858 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
859 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
860 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
861 0 },
862#endif /* POLARSSL_GCM_C */
863#endif /* POLARSSL_SHA512_C */
864#endif /* POLARSSL_AES_C */
865
866#if defined(POLARSSL_CAMELLIA_C)
867#if defined(POLARSSL_CIPHER_MODE_CBC)
868#if defined(POLARSSL_SHA256_C)
869 { TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-CBC-SHA256",
870 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
871 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
872 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
873 0 },
874#endif /* POLARSSL_SHA256_C */
875#if defined(POLARSSL_SHA512_C)
876 { TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-CBC-SHA384",
877 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
878 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
879 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
880 0 },
881#endif /* POLARSSL_SHA512_C */
882#endif /* POLARSSL_CIPHER_MODE_CBC */
883
884#if defined(POLARSSL_GCM_C)
885#if defined(POLARSSL_SHA256_C)
886 { TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-RSA-WITH-CAMELLIA-128-GCM-SHA256",
887 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
888 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
889 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
890 0 },
891#endif /* POLARSSL_SHA256_C */
892#if defined(POLARSSL_SHA512_C)
893 { TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-RSA-WITH-CAMELLIA-256-GCM-SHA384",
894 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
895 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
896 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
897 0 },
898#endif /* POLARSSL_SHA512_C */
899#endif /* POLARSSL_GCM_C */
900#endif /* POLARSSL_CAMELLIA_C */
901
902#if defined(POLARSSL_DES_C)
903#if defined(POLARSSL_CIPHER_MODE_CBC)
904#if defined(POLARSSL_SHA1_C)
905 { TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-RSA-WITH-3DES-EDE-CBC-SHA",
906 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
907 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
908 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
909 0 },
910#endif /* POLARSSL_SHA1_C */
911#endif /* POLARSSL_CIPHER_MODE_CBC */
912#endif /* POLARSSL_DES_C */
913
914#if defined(POLARSSL_ARC4_C)
915#if defined(POLARSSL_SHA1_C)
916 { TLS_ECDH_RSA_WITH_RC4_128_SHA, "TLS-ECDH-RSA-WITH-RC4-128-SHA",
917 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
918 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
919 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +0100920 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +0100921#endif /* POLARSSL_SHA1_C */
922#endif /* POLARSSL_ARC4_C */
923
924#if defined(POLARSSL_CIPHER_NULL_CIPHER)
925#if defined(POLARSSL_SHA1_C)
926 { TLS_ECDH_RSA_WITH_NULL_SHA, "TLS-ECDH-RSA-WITH-NULL-SHA",
927 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_RSA,
928 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
929 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
930 POLARSSL_CIPHERSUITE_WEAK },
931#endif /* POLARSSL_SHA1_C */
932#endif /* POLARSSL_CIPHER_NULL_CIPHER */
933#endif /* POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED */
934
935#if defined(POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
936#if defined(POLARSSL_AES_C)
937#if defined(POLARSSL_SHA1_C)
938#if defined(POLARSSL_CIPHER_MODE_CBC)
939 { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA",
940 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
941 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
942 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
943 0 },
944 { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA",
945 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
946 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
947 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
948 0 },
949#endif /* POLARSSL_CIPHER_MODE_CBC */
950#endif /* POLARSSL_SHA1_C */
951#if defined(POLARSSL_SHA256_C)
952#if defined(POLARSSL_CIPHER_MODE_CBC)
953 { TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA256",
954 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
955 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
956 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
957 0 },
958#endif /* POLARSSL_CIPHER_MODE_CBC */
959#if defined(POLARSSL_GCM_C)
960 { TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256",
961 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
962 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
963 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
964 0 },
965#endif /* POLARSSL_GCM_C */
966#endif /* POLARSSL_SHA256_C */
967#if defined(POLARSSL_SHA512_C)
968#if defined(POLARSSL_CIPHER_MODE_CBC)
969 { TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384",
970 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
971 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
972 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
973 0 },
974#endif /* POLARSSL_CIPHER_MODE_CBC */
975#if defined(POLARSSL_GCM_C)
976 { TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384",
977 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
978 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
979 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
980 0 },
981#endif /* POLARSSL_GCM_C */
982#endif /* POLARSSL_SHA512_C */
983#endif /* POLARSSL_AES_C */
984
985#if defined(POLARSSL_CAMELLIA_C)
986#if defined(POLARSSL_CIPHER_MODE_CBC)
987#if defined(POLARSSL_SHA256_C)
988 { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-CBC-SHA256",
989 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
990 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
991 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
992 0 },
993#endif /* POLARSSL_SHA256_C */
994#if defined(POLARSSL_SHA512_C)
995 { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-CBC-SHA384",
996 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
997 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
998 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
999 0 },
1000#endif /* POLARSSL_SHA512_C */
1001#endif /* POLARSSL_CIPHER_MODE_CBC */
1002
1003#if defined(POLARSSL_GCM_C)
1004#if defined(POLARSSL_SHA256_C)
1005 { TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, "TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256",
1006 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1007 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1008 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1009 0 },
1010#endif /* POLARSSL_SHA256_C */
1011#if defined(POLARSSL_SHA512_C)
1012 { TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, "TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384",
1013 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1014 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1015 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1016 0 },
1017#endif /* POLARSSL_SHA512_C */
1018#endif /* POLARSSL_GCM_C */
1019#endif /* POLARSSL_CAMELLIA_C */
1020
1021#if defined(POLARSSL_DES_C)
1022#if defined(POLARSSL_CIPHER_MODE_CBC)
1023#if defined(POLARSSL_SHA1_C)
1024 { TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, "TLS-ECDH-ECDSA-WITH-3DES-EDE-CBC-SHA",
1025 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1026 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1027 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1028 0 },
1029#endif /* POLARSSL_SHA1_C */
1030#endif /* POLARSSL_CIPHER_MODE_CBC */
1031#endif /* POLARSSL_DES_C */
1032
1033#if defined(POLARSSL_ARC4_C)
1034#if defined(POLARSSL_SHA1_C)
1035 { TLS_ECDH_ECDSA_WITH_RC4_128_SHA, "TLS-ECDH-ECDSA-WITH-RC4-128-SHA",
1036 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1037 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1038 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +01001039 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001040#endif /* POLARSSL_SHA1_C */
1041#endif /* POLARSSL_ARC4_C */
1042
1043#if defined(POLARSSL_CIPHER_NULL_CIPHER)
1044#if defined(POLARSSL_SHA1_C)
1045 { TLS_ECDH_ECDSA_WITH_NULL_SHA, "TLS-ECDH-ECDSA-WITH-NULL-SHA",
1046 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDH_ECDSA,
1047 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
1048 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1049 POLARSSL_CIPHERSUITE_WEAK },
1050#endif /* POLARSSL_SHA1_C */
1051#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1052#endif /* POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
1053
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001054#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
1055#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001056#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001057#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001058 { TLS_PSK_WITH_AES_128_GCM_SHA256, "TLS-PSK-WITH-AES-128-GCM-SHA256",
1059 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1060 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1061 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1062 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001063#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001064
Paul Bakker9e36f042013-06-30 14:34:05 +02001065#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001066 { TLS_PSK_WITH_AES_256_GCM_SHA384, "TLS-PSK-WITH-AES-256-GCM-SHA384",
1067 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
1068 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1069 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1070 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001071#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001072#endif /* POLARSSL_GCM_C */
1073
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001074#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001075#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001076 { TLS_PSK_WITH_AES_128_CBC_SHA256, "TLS-PSK-WITH-AES-128-CBC-SHA256",
1077 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001078 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001079 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1080 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001081#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001082
Paul Bakker9e36f042013-06-30 14:34:05 +02001083#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001084 { TLS_PSK_WITH_AES_256_CBC_SHA384, "TLS-PSK-WITH-AES-256-CBC-SHA384",
1085 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001086 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001087 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1088 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001089#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001090
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001091#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001092 { TLS_PSK_WITH_AES_128_CBC_SHA, "TLS-PSK-WITH-AES-128-CBC-SHA",
1093 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1094 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1095 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1096 0 },
1097
1098 { TLS_PSK_WITH_AES_256_CBC_SHA, "TLS-PSK-WITH-AES-256-CBC-SHA",
1099 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1100 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1101 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1102 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001103#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001104#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001105#if defined(POLARSSL_CCM_C)
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001106 { TLS_PSK_WITH_AES_256_CCM, "TLS-PSK-WITH-AES-256-CCM",
1107 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001108 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1109 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1110 0 },
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001111 { TLS_PSK_WITH_AES_256_CCM_8, "TLS-PSK-WITH-AES-256-CCM-8",
1112 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001113 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1114 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1115 POLARSSL_CIPHERSUITE_SHORT_TAG },
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001116 { TLS_PSK_WITH_AES_128_CCM, "TLS-PSK-WITH-AES-128-CCM",
1117 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001118 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1119 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1120 0 },
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001121 { TLS_PSK_WITH_AES_128_CCM_8, "TLS-PSK-WITH-AES-128-CCM-8",
1122 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001123 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1124 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1125 POLARSSL_CIPHERSUITE_SHORT_TAG },
1126#endif /* POLARSSL_CCM_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001127#endif /* POLARSSL_AES_C */
1128
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001129#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001130#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001131#if defined(POLARSSL_SHA256_C)
1132 { TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1133 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001134 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001135 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1136 0 },
1137#endif /* POLARSSL_SHA256_C */
1138
1139#if defined(POLARSSL_SHA512_C)
1140 { TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1141 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001142 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001143 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1144 0 },
1145#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001146#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001147
1148#if defined(POLARSSL_GCM_C)
1149#if defined(POLARSSL_SHA256_C)
1150 { TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1151 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
1152 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1153 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1154 0 },
1155#endif /* POLARSSL_SHA256_C */
1156
1157#if defined(POLARSSL_SHA512_C)
1158 { TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1159 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
1160 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1161 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1162 0 },
1163#endif /* POLARSSL_SHA512_C */
1164#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001165#endif /* POLARSSL_CAMELLIA_C */
1166
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001167#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001168#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001169#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001170 { TLS_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-PSK-WITH-3DES-EDE-CBC-SHA",
1171 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1172 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1173 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1174 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001175#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001176#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001177#endif /* POLARSSL_DES_C */
1178
1179#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001180#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001181 { TLS_PSK_WITH_RC4_128_SHA, "TLS-PSK-WITH-RC4-128-SHA",
1182 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1183 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1184 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +01001185 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001186#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001187#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001188#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001189
Paul Bakkere07f41d2013-04-19 09:08:57 +02001190#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001191#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001192#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001193#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001194 { TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, "TLS-DHE-PSK-WITH-AES-128-GCM-SHA256",
1195 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1196 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1197 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1198 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001199#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001200
Paul Bakker9e36f042013-06-30 14:34:05 +02001201#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001202 { TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, "TLS-DHE-PSK-WITH-AES-256-GCM-SHA384",
1203 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1204 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1205 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1206 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001207#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001208#endif /* POLARSSL_GCM_C */
1209
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001210#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001211#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001212 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA256",
1213 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001214 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001215 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1216 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001217#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001218
Paul Bakker9e36f042013-06-30 14:34:05 +02001219#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001220 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA384",
1221 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001222 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001223 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1224 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001225#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001226
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001227#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001228 { TLS_DHE_PSK_WITH_AES_128_CBC_SHA, "TLS-DHE-PSK-WITH-AES-128-CBC-SHA",
1229 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1230 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1231 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1232 0 },
1233
1234 { TLS_DHE_PSK_WITH_AES_256_CBC_SHA, "TLS-DHE-PSK-WITH-AES-256-CBC-SHA",
1235 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1236 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1237 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1238 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001239#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001240#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001241#if defined(POLARSSL_CCM_C)
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001242 { TLS_DHE_PSK_WITH_AES_256_CCM, "TLS-DHE-PSK-WITH-AES-256-CCM",
1243 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001244 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1245 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1246 0 },
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001247 { TLS_DHE_PSK_WITH_AES_256_CCM_8, "TLS-DHE-PSK-WITH-AES-256-CCM-8",
1248 POLARSSL_CIPHER_AES_256_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001249 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1250 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1251 POLARSSL_CIPHERSUITE_SHORT_TAG },
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001252 { TLS_DHE_PSK_WITH_AES_128_CCM, "TLS-DHE-PSK-WITH-AES-128-CCM",
1253 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001254 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1255 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1256 0 },
Manuel Pégourié-Gonnardac2ccf82014-06-24 15:48:01 +02001257 { TLS_DHE_PSK_WITH_AES_128_CCM_8, "TLS-DHE-PSK-WITH-AES-128-CCM-8",
1258 POLARSSL_CIPHER_AES_128_CCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard6768da92014-05-14 12:26:51 +02001259 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1260 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1261 POLARSSL_CIPHERSUITE_SHORT_TAG },
1262#endif /* POLARSSL_CCM_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001263#endif /* POLARSSL_AES_C */
1264
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001265#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001266#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001267#if defined(POLARSSL_SHA256_C)
1268 { TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1269 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001270 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001271 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1272 0 },
1273#endif /* POLARSSL_SHA256_C */
1274
1275#if defined(POLARSSL_SHA512_C)
1276 { TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1277 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001278 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001279 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1280 0 },
1281#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001282#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001283
1284#if defined(POLARSSL_GCM_C)
1285#if defined(POLARSSL_SHA256_C)
1286 { TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-DHE-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1287 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1288 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1289 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1290 0 },
1291#endif /* POLARSSL_SHA256_C */
1292
1293#if defined(POLARSSL_SHA512_C)
1294 { TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-DHE-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1295 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1296 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1297 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1298 0 },
1299#endif /* POLARSSL_SHA512_C */
1300#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001301#endif /* POLARSSL_CAMELLIA_C */
1302
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001303#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001304#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001305#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001306 { TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-DHE-PSK-WITH-3DES-EDE-CBC-SHA",
1307 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1308 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1309 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1310 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001311#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001312#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001313#endif /* POLARSSL_DES_C */
1314
1315#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001316#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001317 { TLS_DHE_PSK_WITH_RC4_128_SHA, "TLS-DHE-PSK-WITH-RC4-128-SHA",
1318 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1319 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1320 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +01001321 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001322#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001323#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001324#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001325
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001326#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
1327#if defined(POLARSSL_AES_C)
1328
1329#if defined(POLARSSL_CIPHER_MODE_CBC)
1330#if defined(POLARSSL_SHA256_C)
1331 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256",
1332 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001333 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001334 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1335 0 },
1336#endif /* POLARSSL_SHA256_C */
1337
1338#if defined(POLARSSL_SHA512_C)
1339 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA384",
1340 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001341 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001342 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1343 0 },
1344#endif /* POLARSSL_SHA512_C */
1345
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001346#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001347 { TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA",
1348 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001349 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001350 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1351 0 },
1352
1353 { TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, "TLS-ECDHE-PSK-WITH-AES-256-CBC-SHA",
1354 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001355 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001356 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1357 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001358#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001359#endif /* POLARSSL_CIPHER_MODE_CBC */
1360#endif /* POLARSSL_AES_C */
1361
1362#if defined(POLARSSL_CAMELLIA_C)
1363#if defined(POLARSSL_CIPHER_MODE_CBC)
1364#if defined(POLARSSL_SHA256_C)
1365 { TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-ECDHE-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1366 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001367 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001368 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1369 0 },
1370#endif /* POLARSSL_SHA256_C */
1371
1372#if defined(POLARSSL_SHA512_C)
1373 { TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-ECDHE-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1374 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001375 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001376 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1377 0 },
1378#endif /* POLARSSL_SHA512_C */
1379#endif /* POLARSSL_CIPHER_MODE_CBC */
1380#endif /* POLARSSL_CAMELLIA_C */
1381
1382#if defined(POLARSSL_DES_C)
1383#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001384#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001385 { TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-ECDHE-PSK-WITH-3DES-EDE-CBC-SHA",
1386 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001387 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001388 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1389 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001390#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001391#endif /* POLARSSL_CIPHER_MODE_CBC */
1392#endif /* POLARSSL_DES_C */
1393
1394#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001395#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001396 { TLS_ECDHE_PSK_WITH_RC4_128_SHA, "TLS-ECDHE-PSK-WITH-RC4-128-SHA",
1397 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001398 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001399 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +01001400 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001401#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001402#endif /* POLARSSL_ARC4_C */
1403#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1404
Paul Bakkere07f41d2013-04-19 09:08:57 +02001405#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001406#if defined(POLARSSL_AES_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001407#if defined(POLARSSL_GCM_C)
Paul Bakker9e36f042013-06-30 14:34:05 +02001408#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001409 { TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, "TLS-RSA-PSK-WITH-AES-128-GCM-SHA256",
1410 POLARSSL_CIPHER_AES_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1411 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1412 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1413 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001414#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001415
Paul Bakker9e36f042013-06-30 14:34:05 +02001416#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001417 { TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, "TLS-RSA-PSK-WITH-AES-256-GCM-SHA384",
1418 POLARSSL_CIPHER_AES_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1419 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1420 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1421 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001422#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001423#endif /* POLARSSL_GCM_C */
1424
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001425#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker9e36f042013-06-30 14:34:05 +02001426#if defined(POLARSSL_SHA256_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001427 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA256",
1428 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001429 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001430 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1431 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001432#endif /* POLARSSL_SHA256_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001433
Paul Bakker9e36f042013-06-30 14:34:05 +02001434#if defined(POLARSSL_SHA512_C)
Paul Bakker40afb4b2013-04-19 22:03:30 +02001435 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA384",
1436 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001437 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker40afb4b2013-04-19 22:03:30 +02001438 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1439 0 },
Paul Bakker9e36f042013-06-30 14:34:05 +02001440#endif /* POLARSSL_SHA512_C */
Paul Bakker40afb4b2013-04-19 22:03:30 +02001441
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001442#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001443 { TLS_RSA_PSK_WITH_AES_128_CBC_SHA, "TLS-RSA-PSK-WITH-AES-128-CBC-SHA",
1444 POLARSSL_CIPHER_AES_128_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda04fa4f2014-07-13 16:16:44 +02001445 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001446 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1447 0 },
1448
1449 { TLS_RSA_PSK_WITH_AES_256_CBC_SHA, "TLS-RSA-PSK-WITH-AES-256-CBC-SHA",
1450 POLARSSL_CIPHER_AES_256_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda04fa4f2014-07-13 16:16:44 +02001451 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001452 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1453 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001454#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001455#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001456#endif /* POLARSSL_AES_C */
1457
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001458#if defined(POLARSSL_CAMELLIA_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001459#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001460#if defined(POLARSSL_SHA256_C)
1461 { TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-CBC-SHA256",
1462 POLARSSL_CIPHER_CAMELLIA_128_CBC, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001463 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001464 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1465 0 },
1466#endif /* POLARSSL_SHA256_C */
1467
1468#if defined(POLARSSL_SHA512_C)
1469 { TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-CBC-SHA384",
1470 POLARSSL_CIPHER_CAMELLIA_256_CBC, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001471 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001472 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1473 0 },
1474#endif /* POLARSSL_SHA512_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001475#endif /* POLARSSL_CIPHER_MODE_CBC */
Manuel Pégourié-Gonnard8d01eea2013-10-24 19:49:07 +02001476
1477#if defined(POLARSSL_GCM_C)
1478#if defined(POLARSSL_SHA256_C)
1479 { TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, "TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256",
1480 POLARSSL_CIPHER_CAMELLIA_128_GCM, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1481 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1482 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1483 0 },
1484#endif /* POLARSSL_SHA256_C */
1485
1486#if defined(POLARSSL_SHA512_C)
1487 { TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, "TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384",
1488 POLARSSL_CIPHER_CAMELLIA_256_GCM, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
1489 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1490 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1491 0 },
1492#endif /* POLARSSL_SHA512_C */
1493#endif /* POLARSSL_GCM_C */
Paul Bakker0f2f0bf2013-07-26 15:03:31 +02001494#endif /* POLARSSL_CAMELLIA_C */
1495
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001496#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001497#if defined(POLARSSL_CIPHER_MODE_CBC)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001498#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001499 { TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, "TLS-RSA-PSK-WITH-3DES-EDE-CBC-SHA",
1500 POLARSSL_CIPHER_DES_EDE3_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda04fa4f2014-07-13 16:16:44 +02001501 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001502 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1503 0 },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001504#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001505#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001506#endif /* POLARSSL_DES_C */
1507
1508#if defined(POLARSSL_ARC4_C)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001509#if defined(POLARSSL_SHA1_C)
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001510 { TLS_RSA_PSK_WITH_RC4_128_SHA, "TLS-RSA-PSK-WITH-RC4-128-SHA",
1511 POLARSSL_CIPHER_ARC4_128, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda04fa4f2014-07-13 16:16:44 +02001512 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001513 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
Manuel Pégourié-Gonnardd6664512014-02-06 13:26:57 +01001514 POLARSSL_CIPHERSUITE_NODTLS },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001515#endif /* POLARSSL_SHA1_C */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001516#endif /* POLARSSL_ARC4_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001517#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
Paul Bakkerd4a56ec2013-04-16 18:05:29 +02001518
Paul Bakker68884e32013-01-07 18:20:04 +01001519#if defined(POLARSSL_ENABLE_WEAK_CIPHERSUITES)
1520#if defined(POLARSSL_CIPHER_NULL_CIPHER)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001521#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001522#if defined(POLARSSL_MD5_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001523 { TLS_RSA_WITH_NULL_MD5, "TLS-RSA-WITH-NULL-MD5",
1524 POLARSSL_CIPHER_NULL, POLARSSL_MD_MD5, POLARSSL_KEY_EXCHANGE_RSA,
1525 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1526 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1527 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001528#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001529
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001530#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001531 { TLS_RSA_WITH_NULL_SHA, "TLS-RSA-WITH-NULL-SHA",
1532 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1533 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1534 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1535 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001536#endif
Paul Bakker68884e32013-01-07 18:20:04 +01001537
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001538#if defined(POLARSSL_SHA256_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001539 { TLS_RSA_WITH_NULL_SHA256, "TLS-RSA-WITH-NULL-SHA256",
1540 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001541 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakker68884e32013-01-07 18:20:04 +01001542 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1543 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001544#endif
Paul Bakkere07f41d2013-04-19 09:08:57 +02001545#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001546
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001547#if defined(POLARSSL_KEY_EXCHANGE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001548#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001549 { TLS_PSK_WITH_NULL_SHA, "TLS-PSK-WITH-NULL-SHA",
1550 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_PSK,
1551 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1552 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1553 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001554#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001555
1556#if defined(POLARSSL_SHA256_C)
1557 { TLS_PSK_WITH_NULL_SHA256, "TLS-PSK-WITH-NULL-SHA256",
1558 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001559 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001560 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1561 POLARSSL_CIPHERSUITE_WEAK },
1562#endif
1563
1564#if defined(POLARSSL_SHA512_C)
1565 { TLS_PSK_WITH_NULL_SHA384, "TLS-PSK-WITH-NULL-SHA384",
1566 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001567 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001568 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1569 POLARSSL_CIPHERSUITE_WEAK },
1570#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001571#endif /* POLARSSL_KEY_EXCHANGE_PSK_ENABLED */
1572
1573#if defined(POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001574#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001575 { TLS_DHE_PSK_WITH_NULL_SHA, "TLS-DHE-PSK-WITH-NULL-SHA",
1576 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_PSK,
1577 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1578 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1579 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001580#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001581
1582#if defined(POLARSSL_SHA256_C)
1583 { TLS_DHE_PSK_WITH_NULL_SHA256, "TLS-DHE-PSK-WITH-NULL-SHA256",
1584 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001585 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001586 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1587 POLARSSL_CIPHERSUITE_WEAK },
1588#endif
1589
1590#if defined(POLARSSL_SHA512_C)
1591 { TLS_DHE_PSK_WITH_NULL_SHA384, "TLS-DHE-PSK-WITH-NULL-SHA384",
1592 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_DHE_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001593 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001594 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1595 POLARSSL_CIPHERSUITE_WEAK },
1596#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001597#endif /* POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED */
1598
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001599#if defined(POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001600#if defined(POLARSSL_SHA1_C)
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001601 { TLS_ECDHE_PSK_WITH_NULL_SHA, "TLS-ECDHE-PSK-WITH-NULL-SHA",
1602 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnard20b9af72013-11-26 14:31:44 +01001603 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001604 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1605 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001606#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001607
1608#if defined(POLARSSL_SHA256_C)
1609 { TLS_ECDHE_PSK_WITH_NULL_SHA256, "TLS-ECDHE-PSK-WITH-NULL-SHA256",
1610 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001611 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001612 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1613 POLARSSL_CIPHERSUITE_WEAK },
1614#endif
1615
1616#if defined(POLARSSL_SHA512_C)
1617 { TLS_ECDHE_PSK_WITH_NULL_SHA384, "TLS-ECDHE-PSK-WITH-NULL-SHA384",
1618 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_ECDHE_PSK,
Manuel Pégourié-Gonnarda5bdfcd2013-11-26 13:27:45 +01001619 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001620 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1621 POLARSSL_CIPHERSUITE_WEAK },
1622#endif
1623#endif /* POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
1624
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001625#if defined(POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001626#if defined(POLARSSL_SHA1_C)
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001627 { TLS_RSA_PSK_WITH_NULL_SHA, "TLS-RSA-PSK-WITH-NULL-SHA",
1628 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnarda04fa4f2014-07-13 16:16:44 +02001629 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001630 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1631 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001632#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001633
1634#if defined(POLARSSL_SHA256_C)
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001635 { TLS_RSA_PSK_WITH_NULL_SHA256, "TLS-RSA-PSK-WITH-NULL-SHA256",
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001636 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA256, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001637 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001638 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1639 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001640#endif
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001641
1642#if defined(POLARSSL_SHA512_C)
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001643 { TLS_RSA_PSK_WITH_NULL_SHA384, "TLS-RSA-PSK-WITH-NULL-SHA384",
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001644 POLARSSL_CIPHER_NULL, POLARSSL_MD_SHA384, POLARSSL_KEY_EXCHANGE_RSA_PSK,
Manuel Pégourié-Gonnard8d4ad072014-07-13 14:43:28 +02001645 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_1,
Manuel Pégourié-Gonnardef0eb1e2013-10-14 19:29:19 +02001646 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1647 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard98d9a2c2013-10-25 18:03:18 +02001648#endif
Paul Bakkera1bf92d2013-04-19 19:48:45 +02001649#endif /* POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED */
1650#endif /* POLARSSL_CIPHER_NULL_CIPHER */
1651
Paul Bakker68884e32013-01-07 18:20:04 +01001652#if defined(POLARSSL_DES_C)
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001653#if defined(POLARSSL_CIPHER_MODE_CBC)
Paul Bakkere07f41d2013-04-19 09:08:57 +02001654#if defined(POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001655#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001656 { TLS_DHE_RSA_WITH_DES_CBC_SHA, "TLS-DHE-RSA-WITH-DES-CBC-SHA",
1657 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_DHE_RSA,
1658 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1659 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1660 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001661#endif /* POLARSSL_SHA1_C */
Paul Bakkere07f41d2013-04-19 09:08:57 +02001662#endif /* POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED */
Paul Bakker68884e32013-01-07 18:20:04 +01001663
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001664#if defined(POLARSSL_KEY_EXCHANGE_RSA_ENABLED)
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001665#if defined(POLARSSL_SHA1_C)
Paul Bakker68884e32013-01-07 18:20:04 +01001666 { TLS_RSA_WITH_DES_CBC_SHA, "TLS-RSA-WITH-DES-CBC-SHA",
1667 POLARSSL_CIPHER_DES_CBC, POLARSSL_MD_SHA1, POLARSSL_KEY_EXCHANGE_RSA,
1668 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_0,
1669 SSL_MAJOR_VERSION_3, SSL_MINOR_VERSION_3,
1670 POLARSSL_CIPHERSUITE_WEAK },
Manuel Pégourié-Gonnard057e0cf2013-10-14 14:19:31 +02001671#endif /* POLARSSL_SHA1_C */
Manuel Pégourié-Gonnardf7dc3782013-09-13 14:10:44 +02001672#endif /* POLARSSL_KEY_EXCHANGE_RSA_ENABLED */
1673#endif /* POLARSSL_CIPHER_MODE_CBC */
Paul Bakker68884e32013-01-07 18:20:04 +01001674#endif /* POLARSSL_DES_C */
Paul Bakker68884e32013-01-07 18:20:04 +01001675#endif /* POLARSSL_ENABLE_WEAK_CIPHERSUITES */
1676
Manuel Pégourié-Gonnarda2733712015-02-10 17:32:14 +01001677 { 0, "",
1678 POLARSSL_CIPHER_NONE, POLARSSL_MD_NONE, POLARSSL_KEY_EXCHANGE_NONE,
1679 0, 0, 0, 0, 0 }
Paul Bakker68884e32013-01-07 18:20:04 +01001680};
1681
Manuel Pégourié-Gonnarddfc7df02014-06-30 17:59:55 +02001682#if defined(SSL_CIPHERSUITES)
1683const int *ssl_list_ciphersuites( void )
1684{
1685 return( ciphersuite_preference );
1686}
1687#else
Manuel Pégourié-Gonnard791684c2014-06-30 17:38:22 +02001688#define MAX_CIPHERSUITES sizeof( ciphersuite_definitions ) / \
1689 sizeof( ciphersuite_definitions[0] )
1690static int supported_ciphersuites[MAX_CIPHERSUITES];
1691static int supported_init = 0;
1692
Paul Bakker68884e32013-01-07 18:20:04 +01001693const int *ssl_list_ciphersuites( void )
1694{
Paul Bakker41c83d32013-03-20 14:39:14 +01001695 /*
1696 * On initial call filter out all ciphersuites not supported by current
1697 * build based on presence in the ciphersuite_definitions.
1698 */
1699 if( supported_init == 0 )
1700 {
Manuel Pégourié-Gonnard791684c2014-06-30 17:38:22 +02001701 const int *p;
1702 int *q;
Paul Bakker41c83d32013-03-20 14:39:14 +01001703
Manuel Pégourié-Gonnard791684c2014-06-30 17:38:22 +02001704 for( p = ciphersuite_preference, q = supported_ciphersuites;
1705 *p != 0 && q < supported_ciphersuites + MAX_CIPHERSUITES - 1;
1706 p++ )
Paul Bakker41c83d32013-03-20 14:39:14 +01001707 {
Manuel Pégourié-Gonnard01edb102014-06-24 22:42:34 +02001708#if defined(POLARSSL_REMOVE_ARC4_CIPHERSUITES)
1709 const ssl_ciphersuite_t *cs_info;
Manuel Pégourié-Gonnard791684c2014-06-30 17:38:22 +02001710 if( ( cs_info = ssl_ciphersuite_from_id( *p ) ) != NULL &&
Manuel Pégourié-Gonnard01edb102014-06-24 22:42:34 +02001711 cs_info->cipher != POLARSSL_CIPHER_ARC4_128 )
1712#else
Manuel Pégourié-Gonnard791684c2014-06-30 17:38:22 +02001713 if( ssl_ciphersuite_from_id( *p ) != NULL )
Manuel Pégourié-Gonnard01edb102014-06-24 22:42:34 +02001714#endif
Manuel Pégourié-Gonnard791684c2014-06-30 17:38:22 +02001715 *(q++) = *p;
Paul Bakker41c83d32013-03-20 14:39:14 +01001716 }
Manuel Pégourié-Gonnardbc4b7f02013-09-07 15:04:26 +02001717 *q = 0;
Manuel Pégourié-Gonnard32ea60a2013-08-17 17:39:04 +02001718
Paul Bakker41c83d32013-03-20 14:39:14 +01001719 supported_init = 1;
1720 }
1721
Paul Bakkerd8bb8262014-06-17 14:06:49 +02001722 return( supported_ciphersuites );
Paul Bakker68884e32013-01-07 18:20:04 +01001723};
Manuel Pégourié-Gonnarddfc7df02014-06-30 17:59:55 +02001724#endif /* SSL_CIPHERSUITES */
Paul Bakker68884e32013-01-07 18:20:04 +01001725
Paul Bakkerb9e4e2c2014-05-01 14:18:25 +02001726const ssl_ciphersuite_t *ssl_ciphersuite_from_string(
1727 const char *ciphersuite_name )
Paul Bakker68884e32013-01-07 18:20:04 +01001728{
1729 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1730
1731 if( NULL == ciphersuite_name )
1732 return( NULL );
1733
1734 while( cur->id != 0 )
1735 {
1736 if( 0 == strcasecmp( cur->name, ciphersuite_name ) )
1737 return( cur );
1738
1739 cur++;
1740 }
1741
1742 return( NULL );
1743}
1744
1745const ssl_ciphersuite_t *ssl_ciphersuite_from_id( int ciphersuite )
1746{
1747 const ssl_ciphersuite_t *cur = ciphersuite_definitions;
1748
1749 while( cur->id != 0 )
1750 {
1751 if( cur->id == ciphersuite )
1752 return( cur );
1753
1754 cur++;
1755 }
1756
1757 return( NULL );
1758}
1759
1760const char *ssl_get_ciphersuite_name( const int ciphersuite_id )
1761{
1762 const ssl_ciphersuite_t *cur;
1763
1764 cur = ssl_ciphersuite_from_id( ciphersuite_id );
1765
1766 if( cur == NULL )
1767 return( "unknown" );
1768
1769 return( cur->name );
1770}
1771
1772int ssl_get_ciphersuite_id( const char *ciphersuite_name )
1773{
1774 const ssl_ciphersuite_t *cur;
1775
1776 cur = ssl_ciphersuite_from_string( ciphersuite_name );
1777
1778 if( cur == NULL )
1779 return( 0 );
1780
1781 return( cur->id );
1782}
1783
Manuel Pégourié-Gonnard1a483832013-09-20 12:29:15 +02001784#if defined(POLARSSL_PK_C)
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001785pk_type_t ssl_get_ciphersuite_sig_pk_alg( const ssl_ciphersuite_t *info )
1786{
1787 switch( info->key_exchange )
1788 {
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001789 case POLARSSL_KEY_EXCHANGE_RSA:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001790 case POLARSSL_KEY_EXCHANGE_DHE_RSA:
1791 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001792 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001793 return( POLARSSL_PK_RSA );
1794
1795 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
1796 return( POLARSSL_PK_ECDSA );
1797
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001798 case POLARSSL_KEY_EXCHANGE_ECDH_RSA:
1799 case POLARSSL_KEY_EXCHANGE_ECDH_ECDSA:
1800 return( POLARSSL_PK_ECKEY );
1801
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001802 default:
1803 return( POLARSSL_PK_NONE );
1804 }
1805}
Paul Bakker9af723c2014-05-01 13:03:14 +02001806#endif /* POLARSSL_PK_C */
Manuel Pégourié-Gonnard09edda82013-08-19 13:50:33 +02001807
Manuel Pégourié-Gonnard280f95b2014-01-18 18:28:58 +01001808#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001809int ssl_ciphersuite_uses_ec( const ssl_ciphersuite_t *info )
1810{
1811 switch( info->key_exchange )
1812 {
1813 case POLARSSL_KEY_EXCHANGE_ECDHE_RSA:
1814 case POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA:
Manuel Pégourié-Gonnard225d6aa2013-10-11 19:07:56 +02001815 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
Manuel Pégourié-Gonnard25781b22013-12-11 16:17:10 +01001816 case POLARSSL_KEY_EXCHANGE_ECDH_RSA:
1817 case POLARSSL_KEY_EXCHANGE_ECDH_ECDSA:
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001818 return( 1 );
1819
1820 default:
1821 return( 0 );
1822 }
1823}
Paul Bakker9af723c2014-05-01 13:03:14 +02001824#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
Manuel Pégourié-Gonnard51451f82013-09-17 12:06:25 +02001825
Manuel Pégourié-Gonnard280f95b2014-01-18 18:28:58 +01001826#if defined(POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED)
Manuel Pégourié-Gonnard21ef42f2013-10-27 14:47:25 +01001827int ssl_ciphersuite_uses_psk( const ssl_ciphersuite_t *info )
1828{
1829 switch( info->key_exchange )
1830 {
1831 case POLARSSL_KEY_EXCHANGE_PSK:
1832 case POLARSSL_KEY_EXCHANGE_RSA_PSK:
1833 case POLARSSL_KEY_EXCHANGE_DHE_PSK:
1834 case POLARSSL_KEY_EXCHANGE_ECDHE_PSK:
1835 return( 1 );
1836
1837 default:
1838 return( 0 );
1839 }
1840}
Paul Bakker9af723c2014-05-01 13:03:14 +02001841#endif /* POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED */
Manuel Pégourié-Gonnard21ef42f2013-10-27 14:47:25 +01001842
Paul Bakker9af723c2014-05-01 13:03:14 +02001843#endif /* POLARSSL_SSL_TLS_C */