blob: c5f22359d52680de62c2eb74e63b11afb3291025 [file] [log] [blame]
Rich Salz846e33c2016-05-17 14:18:30 -04001/*
Matt Caswell6738bf12018-02-13 12:51:29 +00002 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
Rich Salzaa8f3d72017-06-15 10:16:46 -04003 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
Rich Salzc80149d2017-06-20 10:14:36 -04004 * Copyright 2005 Nokia. All rights reserved.
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00005 *
Rich Salz846e33c2016-05-17 14:18:30 -04006 * Licensed under the OpenSSL license (the "License"). You may not use
7 * this file except in compliance with the License. You can obtain a copy
8 * in the file LICENSE in the source distribution or at
9 * https://www.openssl.org/source/license.html
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000010 */
Rich Salz846e33c2016-05-17 14:18:30 -040011
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000012#include <stdio.h>
Bodo Möllerec577821999-04-23 22:13:45 +000013#include <openssl/objects.h>
Pauli677963e2017-08-18 13:52:46 +100014#include "internal/nelem.h"
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000015#include "ssl_locl.h"
Ben Lauriedbad1692001-07-30 23:57:25 +000016#include <openssl/md5.h>
Rich Salz3c272082016-03-18 14:30:20 -040017#include <openssl/dh.h>
Matt Caswella3680c82015-03-31 13:57:46 +010018#include <openssl/rand.h>
Rich Salz5f8dd0f2017-08-03 16:21:01 -040019#include "internal/cryptlib.h"
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000020
Matt Caswellf865b082018-02-16 11:26:02 +000021#define TLS13_NUM_CIPHERS OSSL_NELEM(tls13_ciphers)
Dr. Stephen Hensonb6eb9822015-05-02 18:30:00 +010022#define SSL3_NUM_CIPHERS OSSL_NELEM(ssl3_ciphers)
Benjamin Kaduk650c6e42017-02-03 17:17:21 -060023#define SSL3_NUM_SCSVS OSSL_NELEM(ssl3_scsvs)
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000024
Matt Caswell643a3582017-03-24 09:57:21 +000025/* TLSv1.3 downgrade protection sentinel values */
26const unsigned char tls11downgrade[] = {
27 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x00
28};
29const unsigned char tls12downgrade[] = {
30 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x01
31};
32
Matt Caswellf865b082018-02-16 11:26:02 +000033/* The list of available TLSv1.3 ciphers */
34static SSL_CIPHER tls13_ciphers[] = {
35 {
36 1,
37 TLS1_3_RFC_AES_128_GCM_SHA256,
38 TLS1_3_RFC_AES_128_GCM_SHA256,
39 TLS1_3_CK_AES_128_GCM_SHA256,
Matt Caswellf80c8642018-04-26 14:20:59 +010040 SSL_kANY,
41 SSL_aANY,
Matt Caswellf865b082018-02-16 11:26:02 +000042 SSL_AES128GCM,
43 SSL_AEAD,
44 TLS1_3_VERSION, TLS1_3_VERSION,
Matt Caswellf80c8642018-04-26 14:20:59 +010045 0, 0,
Matt Caswellf865b082018-02-16 11:26:02 +000046 SSL_HIGH,
47 SSL_HANDSHAKE_MAC_SHA256,
48 128,
49 128,
50 }, {
51 1,
52 TLS1_3_RFC_AES_256_GCM_SHA384,
53 TLS1_3_RFC_AES_256_GCM_SHA384,
54 TLS1_3_CK_AES_256_GCM_SHA384,
55 SSL_kANY,
56 SSL_aANY,
57 SSL_AES256GCM,
58 SSL_AEAD,
59 TLS1_3_VERSION, TLS1_3_VERSION,
60 0, 0,
61 SSL_HIGH,
62 SSL_HANDSHAKE_MAC_SHA384,
63 256,
64 256,
65 },
66#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
67 {
68 1,
69 TLS1_3_RFC_CHACHA20_POLY1305_SHA256,
70 TLS1_3_RFC_CHACHA20_POLY1305_SHA256,
71 TLS1_3_CK_CHACHA20_POLY1305_SHA256,
72 SSL_kANY,
73 SSL_aANY,
74 SSL_CHACHA20POLY1305,
75 SSL_AEAD,
76 TLS1_3_VERSION, TLS1_3_VERSION,
77 0, 0,
78 SSL_HIGH,
79 SSL_HANDSHAKE_MAC_SHA256,
80 256,
81 256,
82 },
83#endif
84 {
85 1,
86 TLS1_3_RFC_AES_128_CCM_SHA256,
87 TLS1_3_RFC_AES_128_CCM_SHA256,
88 TLS1_3_CK_AES_128_CCM_SHA256,
89 SSL_kANY,
90 SSL_aANY,
91 SSL_AES128CCM,
92 SSL_AEAD,
93 TLS1_3_VERSION, TLS1_3_VERSION,
94 0, 0,
95 SSL_NOT_DEFAULT | SSL_HIGH,
96 SSL_HANDSHAKE_MAC_SHA256,
97 128,
98 128,
99 }, {
100 1,
101 TLS1_3_RFC_AES_128_CCM_8_SHA256,
102 TLS1_3_RFC_AES_128_CCM_8_SHA256,
103 TLS1_3_CK_AES_128_CCM_8_SHA256,
104 SSL_kANY,
105 SSL_aANY,
106 SSL_AES128CCM8,
107 SSL_AEAD,
108 TLS1_3_VERSION, TLS1_3_VERSION,
109 0, 0,
110 SSL_NOT_DEFAULT | SSL_HIGH,
111 SSL_HANDSHAKE_MAC_SHA256,
112 128,
113 128,
114 }
115};
116
Rich Salz748f2542016-03-16 12:33:00 -0400117/*
Rich Salzef288912016-08-18 08:56:42 -0400118 * The list of available ciphers, mostly organized into the following
Rich Salz748f2542016-03-16 12:33:00 -0400119 * groups:
120 * Always there
121 * EC
122 * PSK
123 * SRP (within that: RSA EC PSK)
Pauli9bb6f822017-02-02 09:56:47 +1000124 * Cipher families: Chacha/poly, Camellia, Gost, IDEA, SEED
Rich Salz748f2542016-03-16 12:33:00 -0400125 * Weak ciphers
126 */
Emilia Kaspera230b262016-08-05 19:03:17 +0200127static SSL_CIPHER ssl3_ciphers[] = {
Matt Caswell0f113f32015-01-22 03:40:55 +0000128 {
129 1,
130 SSL3_TXT_RSA_NULL_MD5,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800131 SSL3_RFC_RSA_NULL_MD5,
Matt Caswell0f113f32015-01-22 03:40:55 +0000132 SSL3_CK_RSA_NULL_MD5,
133 SSL_kRSA,
134 SSL_aRSA,
135 SSL_eNULL,
136 SSL_MD5,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100137 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100138 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx1510b5f2016-03-03 22:02:58 +0100139 SSL_STRONG_NONE,
Matt Caswell0f113f32015-01-22 03:40:55 +0000140 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
141 0,
142 0,
143 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000144 {
145 1,
146 SSL3_TXT_RSA_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800147 SSL3_RFC_RSA_NULL_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000148 SSL3_CK_RSA_NULL_SHA,
149 SSL_kRSA,
150 SSL_aRSA,
151 SSL_eNULL,
152 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100153 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100154 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx1510b5f2016-03-03 22:02:58 +0100155 SSL_STRONG_NONE | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000156 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
157 0,
158 0,
159 },
Rich Salzd33726b2016-07-30 12:21:32 -0400160#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Matt Caswell0f113f32015-01-22 03:40:55 +0000161 {
162 1,
163 SSL3_TXT_RSA_DES_192_CBC3_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800164 SSL3_RFC_RSA_DES_192_CBC3_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000165 SSL3_CK_RSA_DES_192_CBC3_SHA,
166 SSL_kRSA,
167 SSL_aRSA,
168 SSL_3DES,
169 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100170 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100171 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -0400172 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000173 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
174 112,
175 168,
176 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000177 {
178 1,
179 SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800180 SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000181 SSL3_CK_DHE_DSS_DES_192_CBC3_SHA,
182 SSL_kDHE,
183 SSL_aDSS,
184 SSL_3DES,
185 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100186 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100187 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz4a8e9c22016-05-05 17:08:41 -0400188 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000189 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
190 112,
191 168,
192 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000193 {
194 1,
195 SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800196 SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000197 SSL3_CK_DHE_RSA_DES_192_CBC3_SHA,
198 SSL_kDHE,
199 SSL_aRSA,
200 SSL_3DES,
201 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100202 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100203 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -0400204 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000205 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
206 112,
207 168,
208 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000209 {
210 1,
211 SSL3_TXT_ADH_DES_192_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800212 SSL3_RFC_ADH_DES_192_CBC_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000213 SSL3_CK_ADH_DES_192_CBC_SHA,
214 SSL_kDHE,
215 SSL_aNULL,
216 SSL_3DES,
217 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100218 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100219 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz4a8e9c22016-05-05 17:08:41 -0400220 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000221 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
222 112,
223 168,
224 },
Rich Salzd33726b2016-07-30 12:21:32 -0400225#endif
Matt Caswell0f113f32015-01-22 03:40:55 +0000226 {
227 1,
228 TLS1_TXT_RSA_WITH_AES_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800229 TLS1_RFC_RSA_WITH_AES_128_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000230 TLS1_CK_RSA_WITH_AES_128_SHA,
231 SSL_kRSA,
232 SSL_aRSA,
233 SSL_AES128,
234 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100235 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100236 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100237 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000238 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
239 128,
240 128,
241 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000242 {
243 1,
244 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800245 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000246 TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
247 SSL_kDHE,
248 SSL_aDSS,
249 SSL_AES128,
250 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100251 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100252 DTLS1_BAD_VER, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +0100253 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000254 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
255 128,
256 128,
257 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000258 {
259 1,
260 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800261 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000262 TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
263 SSL_kDHE,
264 SSL_aRSA,
265 SSL_AES128,
266 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100267 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100268 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100269 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000270 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
271 128,
272 128,
273 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000274 {
275 1,
276 TLS1_TXT_ADH_WITH_AES_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800277 TLS1_RFC_ADH_WITH_AES_128_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000278 TLS1_CK_ADH_WITH_AES_128_SHA,
279 SSL_kDHE,
280 SSL_aNULL,
281 SSL_AES128,
282 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100283 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100284 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100285 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000286 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
287 128,
288 128,
289 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000290 {
291 1,
292 TLS1_TXT_RSA_WITH_AES_256_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800293 TLS1_RFC_RSA_WITH_AES_256_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000294 TLS1_CK_RSA_WITH_AES_256_SHA,
295 SSL_kRSA,
296 SSL_aRSA,
297 SSL_AES256,
298 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100299 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100300 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100301 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000302 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
303 256,
304 256,
305 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000306 {
307 1,
308 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800309 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000310 TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
311 SSL_kDHE,
312 SSL_aDSS,
313 SSL_AES256,
314 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100315 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100316 DTLS1_BAD_VER, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +0100317 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000318 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
319 256,
320 256,
321 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000322 {
323 1,
324 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800325 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000326 TLS1_CK_DHE_RSA_WITH_AES_256_SHA,
327 SSL_kDHE,
328 SSL_aRSA,
329 SSL_AES256,
330 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100331 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100332 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100333 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000334 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
335 256,
336 256,
337 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000338 {
339 1,
340 TLS1_TXT_ADH_WITH_AES_256_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800341 TLS1_RFC_ADH_WITH_AES_256_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +0000342 TLS1_CK_ADH_WITH_AES_256_SHA,
343 SSL_kDHE,
344 SSL_aNULL,
345 SSL_AES256,
346 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100347 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100348 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100349 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000350 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
351 256,
352 256,
353 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000354 {
355 1,
356 TLS1_TXT_RSA_WITH_NULL_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800357 TLS1_RFC_RSA_WITH_NULL_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000358 TLS1_CK_RSA_WITH_NULL_SHA256,
359 SSL_kRSA,
360 SSL_aRSA,
361 SSL_eNULL,
362 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100363 TLS1_2_VERSION, TLS1_2_VERSION,
364 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx1510b5f2016-03-03 22:02:58 +0100365 SSL_STRONG_NONE | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000366 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
367 0,
368 0,
369 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000370 {
371 1,
372 TLS1_TXT_RSA_WITH_AES_128_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800373 TLS1_RFC_RSA_WITH_AES_128_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000374 TLS1_CK_RSA_WITH_AES_128_SHA256,
375 SSL_kRSA,
376 SSL_aRSA,
377 SSL_AES128,
378 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100379 TLS1_2_VERSION, TLS1_2_VERSION,
380 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100381 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000382 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
383 128,
384 128,
385 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000386 {
387 1,
388 TLS1_TXT_RSA_WITH_AES_256_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800389 TLS1_RFC_RSA_WITH_AES_256_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000390 TLS1_CK_RSA_WITH_AES_256_SHA256,
391 SSL_kRSA,
392 SSL_aRSA,
393 SSL_AES256,
394 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100395 TLS1_2_VERSION, TLS1_2_VERSION,
396 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100397 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000398 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
399 256,
400 256,
401 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000402 {
403 1,
404 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800405 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000406 TLS1_CK_DHE_DSS_WITH_AES_128_SHA256,
407 SSL_kDHE,
408 SSL_aDSS,
409 SSL_AES128,
410 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100411 TLS1_2_VERSION, TLS1_2_VERSION,
412 DTLS1_2_VERSION, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +0100413 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000414 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
415 128,
416 128,
417 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000418 {
419 1,
420 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800421 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000422 TLS1_CK_DHE_RSA_WITH_AES_128_SHA256,
423 SSL_kDHE,
424 SSL_aRSA,
425 SSL_AES128,
426 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100427 TLS1_2_VERSION, TLS1_2_VERSION,
428 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100429 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000430 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
431 128,
432 128,
433 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000434 {
435 1,
436 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800437 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000438 TLS1_CK_DHE_DSS_WITH_AES_256_SHA256,
439 SSL_kDHE,
440 SSL_aDSS,
441 SSL_AES256,
442 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100443 TLS1_2_VERSION, TLS1_2_VERSION,
444 DTLS1_2_VERSION, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +0100445 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000446 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
447 256,
448 256,
449 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000450 {
451 1,
452 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800453 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000454 TLS1_CK_DHE_RSA_WITH_AES_256_SHA256,
455 SSL_kDHE,
456 SSL_aRSA,
457 SSL_AES256,
458 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100459 TLS1_2_VERSION, TLS1_2_VERSION,
460 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100461 SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000462 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
463 256,
464 256,
465 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000466 {
467 1,
468 TLS1_TXT_ADH_WITH_AES_128_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800469 TLS1_RFC_ADH_WITH_AES_128_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000470 TLS1_CK_ADH_WITH_AES_128_SHA256,
471 SSL_kDHE,
472 SSL_aNULL,
473 SSL_AES128,
474 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100475 TLS1_2_VERSION, TLS1_2_VERSION,
476 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100477 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000478 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
479 128,
480 128,
481 },
Matt Caswell0f113f32015-01-22 03:40:55 +0000482 {
483 1,
484 TLS1_TXT_ADH_WITH_AES_256_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800485 TLS1_RFC_ADH_WITH_AES_256_SHA256,
Matt Caswell0f113f32015-01-22 03:40:55 +0000486 TLS1_CK_ADH_WITH_AES_256_SHA256,
487 SSL_kDHE,
488 SSL_aNULL,
489 SSL_AES256,
490 SSL_SHA256,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +0100491 TLS1_2_VERSION, TLS1_2_VERSION,
492 DTLS1_2_VERSION, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +0100493 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
Matt Caswell0f113f32015-01-22 03:40:55 +0000494 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
495 256,
496 256,
497 },
Rich Salz748f2542016-03-16 12:33:00 -0400498 {
499 1,
500 TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800501 TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -0400502 TLS1_CK_RSA_WITH_AES_128_GCM_SHA256,
503 SSL_kRSA,
504 SSL_aRSA,
505 SSL_AES128GCM,
506 SSL_AEAD,
507 TLS1_2_VERSION, TLS1_2_VERSION,
508 DTLS1_2_VERSION, DTLS1_2_VERSION,
509 SSL_HIGH | SSL_FIPS,
510 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
511 128,
512 128,
513 },
514 {
515 1,
516 TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800517 TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -0400518 TLS1_CK_RSA_WITH_AES_256_GCM_SHA384,
519 SSL_kRSA,
520 SSL_aRSA,
521 SSL_AES256GCM,
522 SSL_AEAD,
523 TLS1_2_VERSION, TLS1_2_VERSION,
524 DTLS1_2_VERSION, DTLS1_2_VERSION,
525 SSL_HIGH | SSL_FIPS,
526 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
527 256,
528 256,
529 },
530 {
531 1,
532 TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800533 TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -0400534 TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256,
535 SSL_kDHE,
536 SSL_aRSA,
537 SSL_AES128GCM,
538 SSL_AEAD,
539 TLS1_2_VERSION, TLS1_2_VERSION,
540 DTLS1_2_VERSION, DTLS1_2_VERSION,
541 SSL_HIGH | SSL_FIPS,
542 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
543 128,
544 128,
545 },
546 {
547 1,
548 TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800549 TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -0400550 TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384,
551 SSL_kDHE,
552 SSL_aRSA,
553 SSL_AES256GCM,
554 SSL_AEAD,
555 TLS1_2_VERSION, TLS1_2_VERSION,
556 DTLS1_2_VERSION, DTLS1_2_VERSION,
557 SSL_HIGH | SSL_FIPS,
558 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
559 256,
560 256,
561 },
562 {
563 1,
564 TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800565 TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -0400566 TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256,
567 SSL_kDHE,
568 SSL_aDSS,
569 SSL_AES128GCM,
570 SSL_AEAD,
571 TLS1_2_VERSION, TLS1_2_VERSION,
572 DTLS1_2_VERSION, DTLS1_2_VERSION,
573 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
574 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
575 128,
576 128,
577 },
578 {
579 1,
580 TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800581 TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -0400582 TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384,
583 SSL_kDHE,
584 SSL_aDSS,
585 SSL_AES256GCM,
586 SSL_AEAD,
587 TLS1_2_VERSION, TLS1_2_VERSION,
588 DTLS1_2_VERSION, DTLS1_2_VERSION,
589 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
590 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
591 256,
592 256,
593 },
594 {
595 1,
596 TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800597 TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -0400598 TLS1_CK_ADH_WITH_AES_128_GCM_SHA256,
599 SSL_kDHE,
600 SSL_aNULL,
601 SSL_AES128GCM,
602 SSL_AEAD,
603 TLS1_2_VERSION, TLS1_2_VERSION,
604 DTLS1_2_VERSION, DTLS1_2_VERSION,
605 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
606 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
607 128,
608 128,
609 },
610 {
611 1,
612 TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800613 TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -0400614 TLS1_CK_ADH_WITH_AES_256_GCM_SHA384,
615 SSL_kDHE,
616 SSL_aNULL,
617 SSL_AES256GCM,
618 SSL_AEAD,
619 TLS1_2_VERSION, TLS1_2_VERSION,
620 DTLS1_2_VERSION, DTLS1_2_VERSION,
621 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
622 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
623 256,
624 256,
625 },
626 {
627 1,
628 TLS1_TXT_RSA_WITH_AES_128_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800629 TLS1_RFC_RSA_WITH_AES_128_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400630 TLS1_CK_RSA_WITH_AES_128_CCM,
631 SSL_kRSA,
632 SSL_aRSA,
633 SSL_AES128CCM,
634 SSL_AEAD,
635 TLS1_2_VERSION, TLS1_2_VERSION,
636 DTLS1_2_VERSION, DTLS1_2_VERSION,
637 SSL_NOT_DEFAULT | SSL_HIGH,
638 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
639 128,
640 128,
641 },
642 {
643 1,
644 TLS1_TXT_RSA_WITH_AES_256_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800645 TLS1_RFC_RSA_WITH_AES_256_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400646 TLS1_CK_RSA_WITH_AES_256_CCM,
647 SSL_kRSA,
648 SSL_aRSA,
649 SSL_AES256CCM,
650 SSL_AEAD,
651 TLS1_2_VERSION, TLS1_2_VERSION,
652 DTLS1_2_VERSION, DTLS1_2_VERSION,
653 SSL_NOT_DEFAULT | SSL_HIGH,
654 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
655 256,
656 256,
657 },
658 {
659 1,
660 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800661 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400662 TLS1_CK_DHE_RSA_WITH_AES_128_CCM,
663 SSL_kDHE,
664 SSL_aRSA,
665 SSL_AES128CCM,
666 SSL_AEAD,
667 TLS1_2_VERSION, TLS1_2_VERSION,
668 DTLS1_2_VERSION, DTLS1_2_VERSION,
669 SSL_NOT_DEFAULT | SSL_HIGH,
670 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
671 128,
672 128,
673 },
674 {
675 1,
676 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800677 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400678 TLS1_CK_DHE_RSA_WITH_AES_256_CCM,
679 SSL_kDHE,
680 SSL_aRSA,
681 SSL_AES256CCM,
682 SSL_AEAD,
683 TLS1_2_VERSION, TLS1_2_VERSION,
684 DTLS1_2_VERSION, DTLS1_2_VERSION,
685 SSL_NOT_DEFAULT | SSL_HIGH,
686 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
687 256,
688 256,
689 },
690 {
691 1,
692 TLS1_TXT_RSA_WITH_AES_128_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800693 TLS1_RFC_RSA_WITH_AES_128_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400694 TLS1_CK_RSA_WITH_AES_128_CCM_8,
695 SSL_kRSA,
696 SSL_aRSA,
697 SSL_AES128CCM8,
698 SSL_AEAD,
699 TLS1_2_VERSION, TLS1_2_VERSION,
700 DTLS1_2_VERSION, DTLS1_2_VERSION,
701 SSL_NOT_DEFAULT | SSL_HIGH,
702 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
703 128,
704 128,
705 },
706 {
707 1,
708 TLS1_TXT_RSA_WITH_AES_256_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800709 TLS1_RFC_RSA_WITH_AES_256_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400710 TLS1_CK_RSA_WITH_AES_256_CCM_8,
711 SSL_kRSA,
712 SSL_aRSA,
713 SSL_AES256CCM8,
714 SSL_AEAD,
715 TLS1_2_VERSION, TLS1_2_VERSION,
716 DTLS1_2_VERSION, DTLS1_2_VERSION,
717 SSL_NOT_DEFAULT | SSL_HIGH,
718 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
719 256,
720 256,
721 },
722 {
723 1,
724 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800725 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400726 TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8,
727 SSL_kDHE,
728 SSL_aRSA,
729 SSL_AES128CCM8,
730 SSL_AEAD,
731 TLS1_2_VERSION, TLS1_2_VERSION,
732 DTLS1_2_VERSION, DTLS1_2_VERSION,
733 SSL_NOT_DEFAULT | SSL_HIGH,
734 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
735 128,
736 128,
737 },
738 {
739 1,
740 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800741 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400742 TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8,
743 SSL_kDHE,
744 SSL_aRSA,
745 SSL_AES256CCM8,
746 SSL_AEAD,
747 TLS1_2_VERSION, TLS1_2_VERSION,
748 DTLS1_2_VERSION, DTLS1_2_VERSION,
749 SSL_NOT_DEFAULT | SSL_HIGH,
750 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
751 256,
752 256,
753 },
754 {
755 1,
756 TLS1_TXT_PSK_WITH_AES_128_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800757 TLS1_RFC_PSK_WITH_AES_128_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400758 TLS1_CK_PSK_WITH_AES_128_CCM,
759 SSL_kPSK,
760 SSL_aPSK,
761 SSL_AES128CCM,
762 SSL_AEAD,
763 TLS1_2_VERSION, TLS1_2_VERSION,
764 DTLS1_2_VERSION, DTLS1_2_VERSION,
765 SSL_NOT_DEFAULT | SSL_HIGH,
766 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
767 128,
768 128,
769 },
770 {
771 1,
772 TLS1_TXT_PSK_WITH_AES_256_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800773 TLS1_RFC_PSK_WITH_AES_256_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400774 TLS1_CK_PSK_WITH_AES_256_CCM,
775 SSL_kPSK,
776 SSL_aPSK,
777 SSL_AES256CCM,
778 SSL_AEAD,
779 TLS1_2_VERSION, TLS1_2_VERSION,
780 DTLS1_2_VERSION, DTLS1_2_VERSION,
781 SSL_NOT_DEFAULT | SSL_HIGH,
782 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
783 256,
784 256,
785 },
786 {
787 1,
788 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800789 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400790 TLS1_CK_DHE_PSK_WITH_AES_128_CCM,
791 SSL_kDHEPSK,
792 SSL_aPSK,
793 SSL_AES128CCM,
794 SSL_AEAD,
795 TLS1_2_VERSION, TLS1_2_VERSION,
796 DTLS1_2_VERSION, DTLS1_2_VERSION,
797 SSL_NOT_DEFAULT | SSL_HIGH,
798 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
799 128,
800 128,
801 },
802 {
803 1,
804 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800805 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400806 TLS1_CK_DHE_PSK_WITH_AES_256_CCM,
807 SSL_kDHEPSK,
808 SSL_aPSK,
809 SSL_AES256CCM,
810 SSL_AEAD,
811 TLS1_2_VERSION, TLS1_2_VERSION,
812 DTLS1_2_VERSION, DTLS1_2_VERSION,
813 SSL_NOT_DEFAULT | SSL_HIGH,
814 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
815 256,
816 256,
817 },
818 {
819 1,
820 TLS1_TXT_PSK_WITH_AES_128_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800821 TLS1_RFC_PSK_WITH_AES_128_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400822 TLS1_CK_PSK_WITH_AES_128_CCM_8,
823 SSL_kPSK,
824 SSL_aPSK,
825 SSL_AES128CCM8,
826 SSL_AEAD,
827 TLS1_2_VERSION, TLS1_2_VERSION,
828 DTLS1_2_VERSION, DTLS1_2_VERSION,
829 SSL_NOT_DEFAULT | SSL_HIGH,
830 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
831 128,
832 128,
833 },
834 {
835 1,
836 TLS1_TXT_PSK_WITH_AES_256_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800837 TLS1_RFC_PSK_WITH_AES_256_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400838 TLS1_CK_PSK_WITH_AES_256_CCM_8,
839 SSL_kPSK,
840 SSL_aPSK,
841 SSL_AES256CCM8,
842 SSL_AEAD,
843 TLS1_2_VERSION, TLS1_2_VERSION,
844 DTLS1_2_VERSION, DTLS1_2_VERSION,
845 SSL_NOT_DEFAULT | SSL_HIGH,
846 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
847 256,
848 256,
849 },
850 {
851 1,
852 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800853 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400854 TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8,
855 SSL_kDHEPSK,
856 SSL_aPSK,
857 SSL_AES128CCM8,
858 SSL_AEAD,
859 TLS1_2_VERSION, TLS1_2_VERSION,
860 DTLS1_2_VERSION, DTLS1_2_VERSION,
861 SSL_NOT_DEFAULT | SSL_HIGH,
862 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
863 128,
864 128,
865 },
866 {
867 1,
868 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800869 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400870 TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8,
871 SSL_kDHEPSK,
872 SSL_aPSK,
873 SSL_AES256CCM8,
874 SSL_AEAD,
875 TLS1_2_VERSION, TLS1_2_VERSION,
876 DTLS1_2_VERSION, DTLS1_2_VERSION,
877 SSL_NOT_DEFAULT | SSL_HIGH,
878 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
879 256,
880 256,
881 },
882 {
883 1,
884 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800885 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400886 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM,
887 SSL_kECDHE,
888 SSL_aECDSA,
889 SSL_AES128CCM,
890 SSL_AEAD,
891 TLS1_2_VERSION, TLS1_2_VERSION,
892 DTLS1_2_VERSION, DTLS1_2_VERSION,
893 SSL_NOT_DEFAULT | SSL_HIGH,
894 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
895 128,
896 128,
897 },
898 {
899 1,
900 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800901 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM,
Rich Salz748f2542016-03-16 12:33:00 -0400902 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM,
903 SSL_kECDHE,
904 SSL_aECDSA,
905 SSL_AES256CCM,
906 SSL_AEAD,
907 TLS1_2_VERSION, TLS1_2_VERSION,
908 DTLS1_2_VERSION, DTLS1_2_VERSION,
909 SSL_NOT_DEFAULT | SSL_HIGH,
910 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
911 256,
912 256,
913 },
914 {
915 1,
916 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800917 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400918 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8,
919 SSL_kECDHE,
920 SSL_aECDSA,
921 SSL_AES128CCM8,
922 SSL_AEAD,
923 TLS1_2_VERSION, TLS1_2_VERSION,
924 DTLS1_2_VERSION, DTLS1_2_VERSION,
925 SSL_NOT_DEFAULT | SSL_HIGH,
926 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
927 128,
928 128,
929 },
930 {
931 1,
932 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800933 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8,
Rich Salz748f2542016-03-16 12:33:00 -0400934 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8,
935 SSL_kECDHE,
936 SSL_aECDSA,
937 SSL_AES256CCM8,
938 SSL_AEAD,
939 TLS1_2_VERSION, TLS1_2_VERSION,
940 DTLS1_2_VERSION, DTLS1_2_VERSION,
941 SSL_NOT_DEFAULT | SSL_HIGH,
942 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
943 256,
944 256,
945 },
Matt Caswell582a17d2016-10-21 17:39:33 +0100946 {
947 1,
Rich Salz748f2542016-03-16 12:33:00 -0400948 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800949 TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -0400950 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA,
951 SSL_kECDHE,
952 SSL_aECDSA,
953 SSL_eNULL,
954 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -0400955 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100956 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -0400957 SSL_STRONG_NONE | SSL_FIPS,
958 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
959 0,
960 0,
961 },
Rich Salzd33726b2016-07-30 12:21:32 -0400962# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -0400963 {
964 1,
965 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800966 TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
Rich Salz748f2542016-03-16 12:33:00 -0400967 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
968 SSL_kECDHE,
969 SSL_aECDSA,
970 SSL_3DES,
971 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -0400972 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100973 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -0400974 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -0400975 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
976 112,
977 168,
978 },
Rich Salzd33726b2016-07-30 12:21:32 -0400979# endif
Rich Salz748f2542016-03-16 12:33:00 -0400980 {
981 1,
982 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800983 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -0400984 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
985 SSL_kECDHE,
986 SSL_aECDSA,
987 SSL_AES128,
988 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -0400989 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +0100990 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -0400991 SSL_HIGH | SSL_FIPS,
992 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
993 128,
994 128,
995 },
996 {
997 1,
998 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +0800999 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001000 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
1001 SSL_kECDHE,
1002 SSL_aECDSA,
1003 SSL_AES256,
1004 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001005 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001006 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001007 SSL_HIGH | SSL_FIPS,
1008 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1009 256,
1010 256,
1011 },
1012 {
1013 1,
1014 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001015 TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001016 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA,
1017 SSL_kECDHE,
1018 SSL_aRSA,
1019 SSL_eNULL,
1020 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001021 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001022 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001023 SSL_STRONG_NONE | SSL_FIPS,
1024 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1025 0,
1026 0,
1027 },
Rich Salzd33726b2016-07-30 12:21:32 -04001028# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001029 {
1030 1,
1031 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001032 TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001033 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
1034 SSL_kECDHE,
1035 SSL_aRSA,
1036 SSL_3DES,
1037 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001038 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001039 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001040 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -04001041 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1042 112,
1043 168,
1044 },
Rich Salzd33726b2016-07-30 12:21:32 -04001045# endif
Rich Salz748f2542016-03-16 12:33:00 -04001046 {
1047 1,
1048 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001049 TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001050 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA,
1051 SSL_kECDHE,
1052 SSL_aRSA,
1053 SSL_AES128,
1054 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001055 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001056 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001057 SSL_HIGH | SSL_FIPS,
1058 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1059 128,
1060 128,
1061 },
1062 {
1063 1,
1064 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001065 TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001066 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA,
1067 SSL_kECDHE,
1068 SSL_aRSA,
1069 SSL_AES256,
1070 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001071 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001072 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001073 SSL_HIGH | SSL_FIPS,
1074 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1075 256,
1076 256,
1077 },
1078 {
1079 1,
1080 TLS1_TXT_ECDH_anon_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001081 TLS1_RFC_ECDH_anon_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001082 TLS1_CK_ECDH_anon_WITH_NULL_SHA,
1083 SSL_kECDHE,
1084 SSL_aNULL,
1085 SSL_eNULL,
1086 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001087 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001088 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001089 SSL_STRONG_NONE | SSL_FIPS,
1090 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1091 0,
1092 0,
1093 },
Rich Salzd33726b2016-07-30 12:21:32 -04001094# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001095 {
1096 1,
1097 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001098 TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001099 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA,
1100 SSL_kECDHE,
1101 SSL_aNULL,
1102 SSL_3DES,
1103 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001104 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001105 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz4a8e9c22016-05-05 17:08:41 -04001106 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -04001107 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1108 112,
1109 168,
1110 },
Rich Salzd33726b2016-07-30 12:21:32 -04001111# endif
Rich Salz748f2542016-03-16 12:33:00 -04001112 {
1113 1,
1114 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001115 TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001116 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA,
1117 SSL_kECDHE,
1118 SSL_aNULL,
1119 SSL_AES128,
1120 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001121 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001122 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001123 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
1124 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1125 128,
1126 128,
1127 },
1128 {
1129 1,
1130 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001131 TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001132 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA,
1133 SSL_kECDHE,
1134 SSL_aNULL,
1135 SSL_AES256,
1136 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001137 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001138 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001139 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
1140 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1141 256,
1142 256,
1143 },
1144 {
1145 1,
1146 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001147 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001148 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256,
1149 SSL_kECDHE,
1150 SSL_aECDSA,
1151 SSL_AES128,
1152 SSL_SHA256,
1153 TLS1_2_VERSION, TLS1_2_VERSION,
1154 DTLS1_2_VERSION, DTLS1_2_VERSION,
1155 SSL_HIGH | SSL_FIPS,
1156 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1157 128,
1158 128,
1159 },
1160 {
1161 1,
1162 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001163 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001164 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384,
1165 SSL_kECDHE,
1166 SSL_aECDSA,
1167 SSL_AES256,
1168 SSL_SHA384,
1169 TLS1_2_VERSION, TLS1_2_VERSION,
1170 DTLS1_2_VERSION, DTLS1_2_VERSION,
1171 SSL_HIGH | SSL_FIPS,
1172 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1173 256,
1174 256,
1175 },
1176 {
1177 1,
1178 TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001179 TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001180 TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256,
1181 SSL_kECDHE,
1182 SSL_aRSA,
1183 SSL_AES128,
1184 SSL_SHA256,
1185 TLS1_2_VERSION, TLS1_2_VERSION,
1186 DTLS1_2_VERSION, DTLS1_2_VERSION,
1187 SSL_HIGH | SSL_FIPS,
1188 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1189 128,
1190 128,
1191 },
1192 {
1193 1,
1194 TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001195 TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001196 TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384,
1197 SSL_kECDHE,
1198 SSL_aRSA,
1199 SSL_AES256,
1200 SSL_SHA384,
1201 TLS1_2_VERSION, TLS1_2_VERSION,
1202 DTLS1_2_VERSION, DTLS1_2_VERSION,
1203 SSL_HIGH | SSL_FIPS,
1204 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1205 256,
1206 256,
1207 },
1208 {
1209 1,
1210 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001211 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001212 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
1213 SSL_kECDHE,
1214 SSL_aECDSA,
1215 SSL_AES128GCM,
1216 SSL_AEAD,
1217 TLS1_2_VERSION, TLS1_2_VERSION,
1218 DTLS1_2_VERSION, DTLS1_2_VERSION,
1219 SSL_HIGH | SSL_FIPS,
1220 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1221 128,
1222 128,
1223 },
1224 {
1225 1,
1226 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001227 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001228 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
1229 SSL_kECDHE,
1230 SSL_aECDSA,
1231 SSL_AES256GCM,
1232 SSL_AEAD,
1233 TLS1_2_VERSION, TLS1_2_VERSION,
1234 DTLS1_2_VERSION, DTLS1_2_VERSION,
1235 SSL_HIGH | SSL_FIPS,
1236 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1237 256,
1238 256,
1239 },
1240 {
1241 1,
1242 TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001243 TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001244 TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
1245 SSL_kECDHE,
1246 SSL_aRSA,
1247 SSL_AES128GCM,
1248 SSL_AEAD,
1249 TLS1_2_VERSION, TLS1_2_VERSION,
1250 DTLS1_2_VERSION, DTLS1_2_VERSION,
1251 SSL_HIGH | SSL_FIPS,
1252 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1253 128,
1254 128,
1255 },
1256 {
1257 1,
1258 TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001259 TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001260 TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
1261 SSL_kECDHE,
1262 SSL_aRSA,
1263 SSL_AES256GCM,
1264 SSL_AEAD,
1265 TLS1_2_VERSION, TLS1_2_VERSION,
1266 DTLS1_2_VERSION, DTLS1_2_VERSION,
1267 SSL_HIGH | SSL_FIPS,
1268 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1269 256,
1270 256,
1271 },
Rich Salz748f2542016-03-16 12:33:00 -04001272 {
1273 1,
1274 TLS1_TXT_PSK_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001275 TLS1_RFC_PSK_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001276 TLS1_CK_PSK_WITH_NULL_SHA,
1277 SSL_kPSK,
1278 SSL_aPSK,
1279 SSL_eNULL,
1280 SSL_SHA1,
1281 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001282 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001283 SSL_STRONG_NONE | SSL_FIPS,
1284 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1285 0,
1286 0,
1287 },
1288 {
1289 1,
1290 TLS1_TXT_DHE_PSK_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001291 TLS1_RFC_DHE_PSK_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001292 TLS1_CK_DHE_PSK_WITH_NULL_SHA,
1293 SSL_kDHEPSK,
1294 SSL_aPSK,
1295 SSL_eNULL,
1296 SSL_SHA1,
1297 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001298 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001299 SSL_STRONG_NONE | SSL_FIPS,
1300 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1301 0,
1302 0,
1303 },
1304 {
1305 1,
1306 TLS1_TXT_RSA_PSK_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001307 TLS1_RFC_RSA_PSK_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001308 TLS1_CK_RSA_PSK_WITH_NULL_SHA,
1309 SSL_kRSAPSK,
1310 SSL_aRSA,
1311 SSL_eNULL,
1312 SSL_SHA1,
1313 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001314 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001315 SSL_STRONG_NONE | SSL_FIPS,
1316 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1317 0,
1318 0,
1319 },
Rich Salzd33726b2016-07-30 12:21:32 -04001320# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001321 {
1322 1,
1323 TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001324 TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001325 TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA,
1326 SSL_kPSK,
1327 SSL_aPSK,
1328 SSL_3DES,
1329 SSL_SHA1,
1330 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001331 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001332 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -04001333 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1334 112,
1335 168,
1336 },
Rich Salzd33726b2016-07-30 12:21:32 -04001337# endif
Rich Salz748f2542016-03-16 12:33:00 -04001338 {
1339 1,
1340 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001341 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001342 TLS1_CK_PSK_WITH_AES_128_CBC_SHA,
1343 SSL_kPSK,
1344 SSL_aPSK,
1345 SSL_AES128,
1346 SSL_SHA1,
1347 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001348 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001349 SSL_HIGH | SSL_FIPS,
1350 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1351 128,
1352 128,
1353 },
1354 {
1355 1,
1356 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001357 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001358 TLS1_CK_PSK_WITH_AES_256_CBC_SHA,
1359 SSL_kPSK,
1360 SSL_aPSK,
1361 SSL_AES256,
1362 SSL_SHA1,
1363 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001364 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001365 SSL_HIGH | SSL_FIPS,
1366 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1367 256,
1368 256,
1369 },
Rich Salzd33726b2016-07-30 12:21:32 -04001370# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001371 {
1372 1,
1373 TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001374 TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001375 TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
1376 SSL_kDHEPSK,
1377 SSL_aPSK,
1378 SSL_3DES,
1379 SSL_SHA1,
1380 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001381 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001382 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -04001383 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1384 112,
1385 168,
1386 },
Rich Salzd33726b2016-07-30 12:21:32 -04001387# endif
Rich Salz748f2542016-03-16 12:33:00 -04001388 {
1389 1,
1390 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001391 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001392 TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA,
1393 SSL_kDHEPSK,
1394 SSL_aPSK,
1395 SSL_AES128,
1396 SSL_SHA1,
1397 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001398 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001399 SSL_HIGH | SSL_FIPS,
1400 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1401 128,
1402 128,
1403 },
1404 {
1405 1,
1406 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001407 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001408 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA,
1409 SSL_kDHEPSK,
1410 SSL_aPSK,
1411 SSL_AES256,
1412 SSL_SHA1,
1413 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001414 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001415 SSL_HIGH | SSL_FIPS,
1416 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1417 256,
1418 256,
1419 },
Rich Salzd33726b2016-07-30 12:21:32 -04001420# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001421 {
1422 1,
1423 TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001424 TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001425 TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
1426 SSL_kRSAPSK,
1427 SSL_aRSA,
1428 SSL_3DES,
1429 SSL_SHA1,
1430 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001431 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001432 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -04001433 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1434 112,
1435 168,
1436 },
Rich Salzd33726b2016-07-30 12:21:32 -04001437# endif
Rich Salz748f2542016-03-16 12:33:00 -04001438 {
1439 1,
1440 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001441 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001442 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA,
1443 SSL_kRSAPSK,
1444 SSL_aRSA,
1445 SSL_AES128,
1446 SSL_SHA1,
1447 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001448 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001449 SSL_HIGH | SSL_FIPS,
1450 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1451 128,
1452 128,
1453 },
1454 {
1455 1,
1456 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001457 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001458 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA,
1459 SSL_kRSAPSK,
1460 SSL_aRSA,
1461 SSL_AES256,
1462 SSL_SHA1,
1463 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001464 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001465 SSL_HIGH | SSL_FIPS,
1466 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1467 256,
1468 256,
1469 },
1470 {
1471 1,
1472 TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001473 TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001474 TLS1_CK_PSK_WITH_AES_128_GCM_SHA256,
1475 SSL_kPSK,
1476 SSL_aPSK,
1477 SSL_AES128GCM,
1478 SSL_AEAD,
1479 TLS1_2_VERSION, TLS1_2_VERSION,
1480 DTLS1_2_VERSION, DTLS1_2_VERSION,
1481 SSL_HIGH | SSL_FIPS,
1482 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1483 128,
1484 128,
1485 },
1486 {
1487 1,
1488 TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001489 TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001490 TLS1_CK_PSK_WITH_AES_256_GCM_SHA384,
1491 SSL_kPSK,
1492 SSL_aPSK,
1493 SSL_AES256GCM,
1494 SSL_AEAD,
1495 TLS1_2_VERSION, TLS1_2_VERSION,
1496 DTLS1_2_VERSION, DTLS1_2_VERSION,
1497 SSL_HIGH | SSL_FIPS,
1498 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1499 256,
1500 256,
1501 },
1502 {
1503 1,
1504 TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001505 TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001506 TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256,
1507 SSL_kDHEPSK,
1508 SSL_aPSK,
1509 SSL_AES128GCM,
1510 SSL_AEAD,
1511 TLS1_2_VERSION, TLS1_2_VERSION,
1512 DTLS1_2_VERSION, DTLS1_2_VERSION,
1513 SSL_HIGH | SSL_FIPS,
1514 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1515 128,
1516 128,
1517 },
1518 {
1519 1,
1520 TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001521 TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001522 TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384,
1523 SSL_kDHEPSK,
1524 SSL_aPSK,
1525 SSL_AES256GCM,
1526 SSL_AEAD,
1527 TLS1_2_VERSION, TLS1_2_VERSION,
1528 DTLS1_2_VERSION, DTLS1_2_VERSION,
1529 SSL_HIGH | SSL_FIPS,
1530 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1531 256,
1532 256,
1533 },
1534 {
1535 1,
1536 TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001537 TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001538 TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256,
1539 SSL_kRSAPSK,
1540 SSL_aRSA,
1541 SSL_AES128GCM,
1542 SSL_AEAD,
1543 TLS1_2_VERSION, TLS1_2_VERSION,
1544 DTLS1_2_VERSION, DTLS1_2_VERSION,
1545 SSL_HIGH | SSL_FIPS,
1546 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1547 128,
1548 128,
1549 },
1550 {
1551 1,
1552 TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001553 TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001554 TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384,
1555 SSL_kRSAPSK,
1556 SSL_aRSA,
1557 SSL_AES256GCM,
1558 SSL_AEAD,
1559 TLS1_2_VERSION, TLS1_2_VERSION,
1560 DTLS1_2_VERSION, DTLS1_2_VERSION,
1561 SSL_HIGH | SSL_FIPS,
1562 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1563 256,
1564 256,
1565 },
1566 {
1567 1,
1568 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001569 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001570 TLS1_CK_PSK_WITH_AES_128_CBC_SHA256,
1571 SSL_kPSK,
1572 SSL_aPSK,
1573 SSL_AES128,
1574 SSL_SHA256,
1575 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001576 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001577 SSL_HIGH | SSL_FIPS,
1578 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1579 128,
1580 128,
1581 },
1582 {
1583 1,
1584 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001585 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001586 TLS1_CK_PSK_WITH_AES_256_CBC_SHA384,
1587 SSL_kPSK,
1588 SSL_aPSK,
1589 SSL_AES256,
1590 SSL_SHA384,
1591 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001592 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001593 SSL_HIGH | SSL_FIPS,
1594 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1595 256,
1596 256,
1597 },
1598 {
1599 1,
1600 TLS1_TXT_PSK_WITH_NULL_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001601 TLS1_RFC_PSK_WITH_NULL_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001602 TLS1_CK_PSK_WITH_NULL_SHA256,
1603 SSL_kPSK,
1604 SSL_aPSK,
1605 SSL_eNULL,
1606 SSL_SHA256,
1607 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001608 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001609 SSL_STRONG_NONE | SSL_FIPS,
1610 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1611 0,
1612 0,
1613 },
1614 {
1615 1,
1616 TLS1_TXT_PSK_WITH_NULL_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001617 TLS1_RFC_PSK_WITH_NULL_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001618 TLS1_CK_PSK_WITH_NULL_SHA384,
1619 SSL_kPSK,
1620 SSL_aPSK,
1621 SSL_eNULL,
1622 SSL_SHA384,
1623 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001624 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001625 SSL_STRONG_NONE | SSL_FIPS,
1626 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1627 0,
1628 0,
1629 },
1630 {
1631 1,
1632 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001633 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001634 TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256,
1635 SSL_kDHEPSK,
1636 SSL_aPSK,
1637 SSL_AES128,
1638 SSL_SHA256,
1639 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001640 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001641 SSL_HIGH | SSL_FIPS,
1642 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1643 128,
1644 128,
1645 },
1646 {
1647 1,
1648 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001649 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001650 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384,
1651 SSL_kDHEPSK,
1652 SSL_aPSK,
1653 SSL_AES256,
1654 SSL_SHA384,
1655 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001656 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001657 SSL_HIGH | SSL_FIPS,
1658 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1659 256,
1660 256,
1661 },
1662 {
1663 1,
1664 TLS1_TXT_DHE_PSK_WITH_NULL_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001665 TLS1_RFC_DHE_PSK_WITH_NULL_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001666 TLS1_CK_DHE_PSK_WITH_NULL_SHA256,
1667 SSL_kDHEPSK,
1668 SSL_aPSK,
1669 SSL_eNULL,
1670 SSL_SHA256,
1671 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001672 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001673 SSL_STRONG_NONE | SSL_FIPS,
1674 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1675 0,
1676 0,
1677 },
1678 {
1679 1,
1680 TLS1_TXT_DHE_PSK_WITH_NULL_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001681 TLS1_RFC_DHE_PSK_WITH_NULL_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001682 TLS1_CK_DHE_PSK_WITH_NULL_SHA384,
1683 SSL_kDHEPSK,
1684 SSL_aPSK,
1685 SSL_eNULL,
1686 SSL_SHA384,
1687 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001688 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001689 SSL_STRONG_NONE | SSL_FIPS,
1690 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1691 0,
1692 0,
1693 },
1694 {
1695 1,
1696 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001697 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001698 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256,
1699 SSL_kRSAPSK,
1700 SSL_aRSA,
1701 SSL_AES128,
1702 SSL_SHA256,
1703 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001704 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001705 SSL_HIGH | SSL_FIPS,
1706 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1707 128,
1708 128,
1709 },
1710 {
1711 1,
1712 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001713 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001714 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384,
1715 SSL_kRSAPSK,
1716 SSL_aRSA,
1717 SSL_AES256,
1718 SSL_SHA384,
1719 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001720 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001721 SSL_HIGH | SSL_FIPS,
1722 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1723 256,
1724 256,
1725 },
1726 {
1727 1,
1728 TLS1_TXT_RSA_PSK_WITH_NULL_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001729 TLS1_RFC_RSA_PSK_WITH_NULL_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001730 TLS1_CK_RSA_PSK_WITH_NULL_SHA256,
1731 SSL_kRSAPSK,
1732 SSL_aRSA,
1733 SSL_eNULL,
1734 SSL_SHA256,
1735 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001736 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001737 SSL_STRONG_NONE | SSL_FIPS,
1738 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1739 0,
1740 0,
1741 },
1742 {
1743 1,
1744 TLS1_TXT_RSA_PSK_WITH_NULL_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001745 TLS1_RFC_RSA_PSK_WITH_NULL_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001746 TLS1_CK_RSA_PSK_WITH_NULL_SHA384,
1747 SSL_kRSAPSK,
1748 SSL_aRSA,
1749 SSL_eNULL,
1750 SSL_SHA384,
1751 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001752 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001753 SSL_STRONG_NONE | SSL_FIPS,
1754 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1755 0,
1756 0,
1757 },
Rich Salzd33726b2016-07-30 12:21:32 -04001758# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001759 {
1760 1,
1761 TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001762 TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001763 TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
1764 SSL_kECDHEPSK,
1765 SSL_aPSK,
1766 SSL_3DES,
1767 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001768 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001769 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001770 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
Rich Salz748f2542016-03-16 12:33:00 -04001771 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1772 112,
1773 168,
1774 },
Rich Salzd33726b2016-07-30 12:21:32 -04001775# endif
Rich Salz748f2542016-03-16 12:33:00 -04001776 {
1777 1,
1778 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001779 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001780 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA,
1781 SSL_kECDHEPSK,
1782 SSL_aPSK,
1783 SSL_AES128,
1784 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001785 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001786 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001787 SSL_HIGH | SSL_FIPS,
1788 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1789 128,
1790 128,
1791 },
1792 {
1793 1,
1794 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001795 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001796 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA,
1797 SSL_kECDHEPSK,
1798 SSL_aPSK,
1799 SSL_AES256,
1800 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001801 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001802 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001803 SSL_HIGH | SSL_FIPS,
1804 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1805 256,
1806 256,
1807 },
1808 {
1809 1,
1810 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001811 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001812 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
1813 SSL_kECDHEPSK,
1814 SSL_aPSK,
1815 SSL_AES128,
1816 SSL_SHA256,
1817 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001818 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001819 SSL_HIGH | SSL_FIPS,
1820 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1821 128,
1822 128,
1823 },
1824 {
1825 1,
1826 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001827 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001828 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
1829 SSL_kECDHEPSK,
1830 SSL_aPSK,
1831 SSL_AES256,
1832 SSL_SHA384,
1833 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001834 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001835 SSL_HIGH | SSL_FIPS,
1836 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1837 256,
1838 256,
1839 },
1840 {
1841 1,
1842 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001843 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001844 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA,
1845 SSL_kECDHEPSK,
1846 SSL_aPSK,
1847 SSL_eNULL,
1848 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04001849 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001850 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001851 SSL_STRONG_NONE | SSL_FIPS,
1852 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1853 0,
1854 0,
1855 },
1856 {
1857 1,
1858 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001859 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04001860 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256,
1861 SSL_kECDHEPSK,
1862 SSL_aPSK,
1863 SSL_eNULL,
1864 SSL_SHA256,
1865 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001866 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001867 SSL_STRONG_NONE | SSL_FIPS,
1868 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1869 0,
1870 0,
1871 },
1872 {
1873 1,
1874 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001875 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04001876 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384,
1877 SSL_kECDHEPSK,
1878 SSL_aPSK,
1879 SSL_eNULL,
1880 SSL_SHA384,
1881 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001882 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001883 SSL_STRONG_NONE | SSL_FIPS,
1884 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1885 0,
1886 0,
1887 },
Rich Salz748f2542016-03-16 12:33:00 -04001888
Rich Salzd33726b2016-07-30 12:21:32 -04001889# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Rich Salz748f2542016-03-16 12:33:00 -04001890 {
1891 1,
1892 TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001893 TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001894 TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
1895 SSL_kSRP,
1896 SSL_aSRP,
1897 SSL_3DES,
1898 SSL_SHA1,
1899 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001900 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001901 SSL_NOT_DEFAULT | SSL_MEDIUM,
Rich Salz748f2542016-03-16 12:33:00 -04001902 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1903 112,
1904 168,
1905 },
1906 {
1907 1,
1908 TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001909 TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001910 TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
1911 SSL_kSRP,
1912 SSL_aRSA,
1913 SSL_3DES,
1914 SSL_SHA1,
1915 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001916 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salzef288912016-08-18 08:56:42 -04001917 SSL_NOT_DEFAULT | SSL_MEDIUM,
Rich Salz748f2542016-03-16 12:33:00 -04001918 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1919 112,
1920 168,
1921 },
1922 {
1923 1,
1924 TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001925 TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001926 TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
1927 SSL_kSRP,
1928 SSL_aDSS,
1929 SSL_3DES,
1930 SSL_SHA1,
1931 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001932 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz4a8e9c22016-05-05 17:08:41 -04001933 SSL_NOT_DEFAULT | SSL_MEDIUM,
Rich Salz748f2542016-03-16 12:33:00 -04001934 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1935 112,
1936 168,
1937 },
Rich Salzd33726b2016-07-30 12:21:32 -04001938# endif
Rich Salz748f2542016-03-16 12:33:00 -04001939 {
1940 1,
1941 TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001942 TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001943 TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA,
1944 SSL_kSRP,
1945 SSL_aSRP,
1946 SSL_AES128,
1947 SSL_SHA1,
1948 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001949 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001950 SSL_HIGH,
1951 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1952 128,
1953 128,
1954 },
1955 {
1956 1,
1957 TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001958 TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001959 TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
1960 SSL_kSRP,
1961 SSL_aRSA,
1962 SSL_AES128,
1963 SSL_SHA1,
1964 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001965 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001966 SSL_HIGH,
1967 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1968 128,
1969 128,
1970 },
1971 {
1972 1,
1973 TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001974 TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001975 TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
1976 SSL_kSRP,
1977 SSL_aDSS,
1978 SSL_AES128,
1979 SSL_SHA1,
1980 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001981 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001982 SSL_NOT_DEFAULT | SSL_HIGH,
1983 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1984 128,
1985 128,
1986 },
1987 {
1988 1,
1989 TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08001990 TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04001991 TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA,
1992 SSL_kSRP,
1993 SSL_aSRP,
1994 SSL_AES256,
1995 SSL_SHA1,
1996 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01001997 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04001998 SSL_HIGH,
1999 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2000 256,
2001 256,
2002 },
2003 {
2004 1,
2005 TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002006 TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002007 TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
2008 SSL_kSRP,
2009 SSL_aRSA,
2010 SSL_AES256,
2011 SSL_SHA1,
2012 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002013 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002014 SSL_HIGH,
2015 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2016 256,
2017 256,
2018 },
2019 {
2020 1,
2021 TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002022 TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002023 TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
2024 SSL_kSRP,
2025 SSL_aDSS,
2026 SSL_AES256,
2027 SSL_SHA1,
2028 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002029 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002030 SSL_NOT_DEFAULT | SSL_HIGH,
2031 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2032 256,
2033 256,
2034 },
Rich Salz748f2542016-03-16 12:33:00 -04002035
2036#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
Rich Salz748f2542016-03-16 12:33:00 -04002037 {
2038 1,
2039 TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002040 TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002041 TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305,
2042 SSL_kDHE,
2043 SSL_aRSA,
2044 SSL_CHACHA20POLY1305,
2045 SSL_AEAD,
2046 TLS1_2_VERSION, TLS1_2_VERSION,
2047 DTLS1_2_VERSION, DTLS1_2_VERSION,
2048 SSL_HIGH,
2049 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2050 256,
2051 256,
2052 },
Rich Salz748f2542016-03-16 12:33:00 -04002053 {
2054 1,
2055 TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002056 TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002057 TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305,
2058 SSL_kECDHE,
2059 SSL_aRSA,
2060 SSL_CHACHA20POLY1305,
2061 SSL_AEAD,
2062 TLS1_2_VERSION, TLS1_2_VERSION,
2063 DTLS1_2_VERSION, DTLS1_2_VERSION,
2064 SSL_HIGH,
2065 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2066 256,
2067 256,
2068 },
2069 {
2070 1,
2071 TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002072 TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002073 TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
2074 SSL_kECDHE,
2075 SSL_aECDSA,
2076 SSL_CHACHA20POLY1305,
2077 SSL_AEAD,
2078 TLS1_2_VERSION, TLS1_2_VERSION,
2079 DTLS1_2_VERSION, DTLS1_2_VERSION,
2080 SSL_HIGH,
2081 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2082 256,
2083 256,
2084 },
Rich Salz748f2542016-03-16 12:33:00 -04002085 {
2086 1,
2087 TLS1_TXT_PSK_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002088 TLS1_RFC_PSK_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002089 TLS1_CK_PSK_WITH_CHACHA20_POLY1305,
2090 SSL_kPSK,
2091 SSL_aPSK,
2092 SSL_CHACHA20POLY1305,
2093 SSL_AEAD,
2094 TLS1_2_VERSION, TLS1_2_VERSION,
2095 DTLS1_2_VERSION, DTLS1_2_VERSION,
2096 SSL_HIGH,
2097 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2098 256,
2099 256,
2100 },
2101 {
2102 1,
2103 TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002104 TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002105 TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305,
2106 SSL_kECDHEPSK,
2107 SSL_aPSK,
2108 SSL_CHACHA20POLY1305,
2109 SSL_AEAD,
2110 TLS1_2_VERSION, TLS1_2_VERSION,
2111 DTLS1_2_VERSION, DTLS1_2_VERSION,
2112 SSL_HIGH,
2113 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2114 256,
2115 256,
2116 },
2117 {
2118 1,
2119 TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002120 TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002121 TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305,
2122 SSL_kDHEPSK,
2123 SSL_aPSK,
2124 SSL_CHACHA20POLY1305,
2125 SSL_AEAD,
2126 TLS1_2_VERSION, TLS1_2_VERSION,
2127 DTLS1_2_VERSION, DTLS1_2_VERSION,
2128 SSL_HIGH,
2129 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2130 256,
2131 256,
2132 },
2133 {
2134 1,
2135 TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002136 TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305,
Rich Salz748f2542016-03-16 12:33:00 -04002137 TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305,
2138 SSL_kRSAPSK,
2139 SSL_aRSA,
2140 SSL_CHACHA20POLY1305,
2141 SSL_AEAD,
2142 TLS1_2_VERSION, TLS1_2_VERSION,
2143 DTLS1_2_VERSION, DTLS1_2_VERSION,
2144 SSL_HIGH,
2145 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2146 256,
2147 256,
2148 },
Emilia Kaspera230b262016-08-05 19:03:17 +02002149#endif /* !defined(OPENSSL_NO_CHACHA) &&
2150 * !defined(OPENSSL_NO_POLY1305) */
Rich Salz748f2542016-03-16 12:33:00 -04002151
2152#ifndef OPENSSL_NO_CAMELLIA
2153 {
2154 1,
2155 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002156 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002157 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2158 SSL_kRSA,
2159 SSL_aRSA,
2160 SSL_CAMELLIA128,
2161 SSL_SHA256,
2162 TLS1_2_VERSION, TLS1_2_VERSION,
2163 DTLS1_2_VERSION, DTLS1_2_VERSION,
2164 SSL_NOT_DEFAULT | SSL_HIGH,
2165 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2166 128,
2167 128,
2168 },
2169 {
2170 1,
2171 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002172 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002173 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
2174 SSL_kEDH,
2175 SSL_aDSS,
2176 SSL_CAMELLIA128,
2177 SSL_SHA256,
2178 TLS1_2_VERSION, TLS1_2_VERSION,
2179 DTLS1_2_VERSION, DTLS1_2_VERSION,
2180 SSL_NOT_DEFAULT | SSL_HIGH,
2181 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2182 128,
2183 128,
2184 },
2185 {
2186 1,
2187 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002188 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002189 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2190 SSL_kEDH,
2191 SSL_aRSA,
2192 SSL_CAMELLIA128,
2193 SSL_SHA256,
2194 TLS1_2_VERSION, TLS1_2_VERSION,
2195 DTLS1_2_VERSION, DTLS1_2_VERSION,
2196 SSL_NOT_DEFAULT | SSL_HIGH,
2197 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2198 128,
2199 128,
2200 },
2201 {
2202 1,
2203 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002204 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002205 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256,
2206 SSL_kEDH,
2207 SSL_aNULL,
2208 SSL_CAMELLIA128,
2209 SSL_SHA256,
2210 TLS1_2_VERSION, TLS1_2_VERSION,
2211 DTLS1_2_VERSION, DTLS1_2_VERSION,
2212 SSL_NOT_DEFAULT | SSL_HIGH,
2213 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2214 128,
2215 128,
2216 },
2217 {
2218 1,
2219 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002220 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002221 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256,
2222 SSL_kRSA,
2223 SSL_aRSA,
2224 SSL_CAMELLIA256,
2225 SSL_SHA256,
2226 TLS1_2_VERSION, TLS1_2_VERSION,
2227 DTLS1_2_VERSION, DTLS1_2_VERSION,
2228 SSL_NOT_DEFAULT | SSL_HIGH,
2229 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2230 256,
2231 256,
2232 },
2233 {
2234 1,
2235 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002236 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002237 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
2238 SSL_kEDH,
2239 SSL_aDSS,
2240 SSL_CAMELLIA256,
2241 SSL_SHA256,
2242 TLS1_2_VERSION, TLS1_2_VERSION,
2243 DTLS1_2_VERSION, DTLS1_2_VERSION,
2244 SSL_NOT_DEFAULT | SSL_HIGH,
2245 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2246 256,
2247 256,
2248 },
2249 {
2250 1,
2251 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002252 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002253 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
2254 SSL_kEDH,
2255 SSL_aRSA,
2256 SSL_CAMELLIA256,
2257 SSL_SHA256,
2258 TLS1_2_VERSION, TLS1_2_VERSION,
2259 DTLS1_2_VERSION, DTLS1_2_VERSION,
2260 SSL_NOT_DEFAULT | SSL_HIGH,
2261 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2262 256,
2263 256,
2264 },
2265 {
2266 1,
2267 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002268 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002269 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256,
2270 SSL_kEDH,
2271 SSL_aNULL,
2272 SSL_CAMELLIA256,
2273 SSL_SHA256,
2274 TLS1_2_VERSION, TLS1_2_VERSION,
2275 DTLS1_2_VERSION, DTLS1_2_VERSION,
2276 SSL_NOT_DEFAULT | SSL_HIGH,
2277 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2278 256,
2279 256,
2280 },
2281 {
2282 1,
2283 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002284 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002285 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA,
2286 SSL_kRSA,
2287 SSL_aRSA,
2288 SSL_CAMELLIA256,
2289 SSL_SHA1,
2290 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002291 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002292 SSL_NOT_DEFAULT | SSL_HIGH,
2293 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2294 256,
2295 256,
2296 },
2297 {
2298 1,
2299 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002300 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002301 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
2302 SSL_kDHE,
2303 SSL_aDSS,
2304 SSL_CAMELLIA256,
2305 SSL_SHA1,
2306 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002307 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002308 SSL_NOT_DEFAULT | SSL_HIGH,
2309 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2310 256,
2311 256,
2312 },
2313 {
2314 1,
2315 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002316 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002317 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
2318 SSL_kDHE,
2319 SSL_aRSA,
2320 SSL_CAMELLIA256,
2321 SSL_SHA1,
2322 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002323 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002324 SSL_NOT_DEFAULT | SSL_HIGH,
2325 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2326 256,
2327 256,
2328 },
2329 {
2330 1,
2331 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002332 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002333 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA,
2334 SSL_kDHE,
2335 SSL_aNULL,
2336 SSL_CAMELLIA256,
2337 SSL_SHA1,
2338 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002339 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002340 SSL_NOT_DEFAULT | SSL_HIGH,
2341 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2342 256,
2343 256,
2344 },
2345 {
2346 1,
2347 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002348 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002349 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA,
2350 SSL_kRSA,
2351 SSL_aRSA,
2352 SSL_CAMELLIA128,
2353 SSL_SHA1,
2354 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002355 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002356 SSL_NOT_DEFAULT | SSL_HIGH,
2357 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2358 128,
2359 128,
2360 },
2361 {
2362 1,
2363 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002364 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002365 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
2366 SSL_kDHE,
2367 SSL_aDSS,
2368 SSL_CAMELLIA128,
2369 SSL_SHA1,
2370 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002371 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002372 SSL_NOT_DEFAULT | SSL_HIGH,
2373 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2374 128,
2375 128,
2376 },
2377 {
2378 1,
2379 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002380 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002381 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
2382 SSL_kDHE,
2383 SSL_aRSA,
2384 SSL_CAMELLIA128,
2385 SSL_SHA1,
2386 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002387 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002388 SSL_NOT_DEFAULT | SSL_HIGH,
2389 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2390 128,
2391 128,
2392 },
2393 {
2394 1,
2395 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002396 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002397 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA,
2398 SSL_kDHE,
2399 SSL_aNULL,
2400 SSL_CAMELLIA128,
2401 SSL_SHA1,
2402 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002403 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002404 SSL_NOT_DEFAULT | SSL_HIGH,
2405 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2406 128,
2407 128,
2408 },
Rich Salz748f2542016-03-16 12:33:00 -04002409 {
2410 1,
2411 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002412 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002413 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
2414 SSL_kECDHE,
2415 SSL_aECDSA,
2416 SSL_CAMELLIA128,
2417 SSL_SHA256,
2418 TLS1_2_VERSION, TLS1_2_VERSION,
2419 DTLS1_2_VERSION, DTLS1_2_VERSION,
2420 SSL_NOT_DEFAULT | SSL_HIGH,
2421 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2422 128,
Emilia Kaspera230b262016-08-05 19:03:17 +02002423 128,
2424 },
Rich Salz748f2542016-03-16 12:33:00 -04002425 {
2426 1,
2427 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002428 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04002429 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
2430 SSL_kECDHE,
2431 SSL_aECDSA,
2432 SSL_CAMELLIA256,
2433 SSL_SHA384,
2434 TLS1_2_VERSION, TLS1_2_VERSION,
2435 DTLS1_2_VERSION, DTLS1_2_VERSION,
2436 SSL_NOT_DEFAULT | SSL_HIGH,
2437 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2438 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002439 256,
2440 },
Rich Salz748f2542016-03-16 12:33:00 -04002441 {
2442 1,
2443 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002444 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002445 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2446 SSL_kECDHE,
2447 SSL_aRSA,
2448 SSL_CAMELLIA128,
2449 SSL_SHA256,
2450 TLS1_2_VERSION, TLS1_2_VERSION,
2451 DTLS1_2_VERSION, DTLS1_2_VERSION,
2452 SSL_NOT_DEFAULT | SSL_HIGH,
2453 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2454 128,
Emilia Kaspera230b262016-08-05 19:03:17 +02002455 128,
2456 },
Rich Salz748f2542016-03-16 12:33:00 -04002457 {
2458 1,
2459 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002460 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04002461 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
2462 SSL_kECDHE,
2463 SSL_aRSA,
2464 SSL_CAMELLIA256,
2465 SSL_SHA384,
2466 TLS1_2_VERSION, TLS1_2_VERSION,
2467 DTLS1_2_VERSION, DTLS1_2_VERSION,
2468 SSL_NOT_DEFAULT | SSL_HIGH,
2469 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2470 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002471 256,
2472 },
Rich Salz748f2542016-03-16 12:33:00 -04002473 {
2474 1,
2475 TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002476 TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002477 TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2478 SSL_kPSK,
2479 SSL_aPSK,
2480 SSL_CAMELLIA128,
2481 SSL_SHA256,
2482 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002483 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002484 SSL_NOT_DEFAULT | SSL_HIGH,
2485 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2486 128,
Emilia Kaspera230b262016-08-05 19:03:17 +02002487 128,
2488 },
Rich Salz748f2542016-03-16 12:33:00 -04002489 {
2490 1,
2491 TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002492 TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04002493 TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2494 SSL_kPSK,
2495 SSL_aPSK,
2496 SSL_CAMELLIA256,
2497 SSL_SHA384,
2498 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002499 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002500 SSL_NOT_DEFAULT | SSL_HIGH,
2501 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2502 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002503 256,
2504 },
Rich Salz748f2542016-03-16 12:33:00 -04002505 {
2506 1,
2507 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002508 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002509 TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2510 SSL_kDHEPSK,
2511 SSL_aPSK,
2512 SSL_CAMELLIA128,
2513 SSL_SHA256,
2514 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002515 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002516 SSL_NOT_DEFAULT | SSL_HIGH,
2517 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2518 128,
Emilia Kaspera230b262016-08-05 19:03:17 +02002519 128,
2520 },
Rich Salz748f2542016-03-16 12:33:00 -04002521 {
2522 1,
2523 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002524 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04002525 TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2526 SSL_kDHEPSK,
2527 SSL_aPSK,
2528 SSL_CAMELLIA256,
2529 SSL_SHA384,
2530 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002531 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002532 SSL_NOT_DEFAULT | SSL_HIGH,
2533 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2534 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002535 256,
2536 },
Rich Salz748f2542016-03-16 12:33:00 -04002537 {
2538 1,
2539 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002540 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002541 TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2542 SSL_kRSAPSK,
2543 SSL_aRSA,
2544 SSL_CAMELLIA128,
2545 SSL_SHA256,
2546 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002547 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002548 SSL_NOT_DEFAULT | SSL_HIGH,
2549 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2550 128,
Emilia Kaspera230b262016-08-05 19:03:17 +02002551 128,
2552 },
Rich Salz748f2542016-03-16 12:33:00 -04002553 {
2554 1,
2555 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002556 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04002557 TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2558 SSL_kRSAPSK,
2559 SSL_aRSA,
2560 SSL_CAMELLIA256,
2561 SSL_SHA384,
2562 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002563 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002564 SSL_NOT_DEFAULT | SSL_HIGH,
2565 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2566 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002567 256,
2568 },
Rich Salz748f2542016-03-16 12:33:00 -04002569 {
2570 1,
2571 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002572 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
Rich Salz748f2542016-03-16 12:33:00 -04002573 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2574 SSL_kECDHEPSK,
2575 SSL_aPSK,
2576 SSL_CAMELLIA128,
2577 SSL_SHA256,
2578 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002579 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002580 SSL_NOT_DEFAULT | SSL_HIGH,
2581 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2582 128,
Emilia Kaspera230b262016-08-05 19:03:17 +02002583 128,
2584 },
Rich Salz748f2542016-03-16 12:33:00 -04002585 {
2586 1,
2587 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002588 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
Rich Salz748f2542016-03-16 12:33:00 -04002589 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2590 SSL_kECDHEPSK,
2591 SSL_aPSK,
2592 SSL_CAMELLIA256,
2593 SSL_SHA384,
2594 TLS1_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002595 DTLS1_BAD_VER, DTLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002596 SSL_NOT_DEFAULT | SSL_HIGH,
2597 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2598 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002599 256,
2600 },
Emilia Kaspera230b262016-08-05 19:03:17 +02002601#endif /* OPENSSL_NO_CAMELLIA */
Rich Salz748f2542016-03-16 12:33:00 -04002602
Pauli580731a2016-03-22 09:16:36 +10002603#ifndef OPENSSL_NO_GOST
Matt Caswell0f113f32015-01-22 03:40:55 +00002604 {
2605 1,
Matt Caswell0f113f32015-01-22 03:40:55 +00002606 "GOST2001-GOST89-GOST89",
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002607 "TLS_GOSTR341001_WITH_28147_CNT_IMIT",
Matt Caswell0f113f32015-01-22 03:40:55 +00002608 0x3000081,
2609 SSL_kGOST,
2610 SSL_aGOST01,
2611 SSL_eGOST2814789CNT,
2612 SSL_GOST89MAC,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002613 TLS1_VERSION, TLS1_2_VERSION,
Dmitry Belyavsky48c16012016-05-11 21:00:12 +01002614 0, 0,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002615 SSL_HIGH,
Matt Caswell0f113f32015-01-22 03:40:55 +00002616 SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94 | TLS1_STREAM_MAC,
2617 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002618 256,
2619 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002620 {
2621 1,
2622 "GOST2001-NULL-GOST94",
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002623 "TLS_GOSTR341001_WITH_NULL_GOSTR3411",
Matt Caswell0f113f32015-01-22 03:40:55 +00002624 0x3000083,
2625 SSL_kGOST,
2626 SSL_aGOST01,
2627 SSL_eNULL,
2628 SSL_GOST94,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002629 TLS1_VERSION, TLS1_2_VERSION,
Dmitry Belyavsky48c16012016-05-11 21:00:12 +01002630 0, 0,
Kurt Roeckx1510b5f2016-03-03 22:02:58 +01002631 SSL_STRONG_NONE,
Matt Caswell0f113f32015-01-22 03:40:55 +00002632 SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94,
2633 0,
Emilia Kaspera230b262016-08-05 19:03:17 +02002634 0,
2635 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002636 {
2637 1,
Rich Salz748f2542016-03-16 12:33:00 -04002638 "GOST2012-GOST8912-GOST8912",
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002639 NULL,
Rich Salz748f2542016-03-16 12:33:00 -04002640 0x0300ff85,
2641 SSL_kGOST,
2642 SSL_aGOST12 | SSL_aGOST01,
2643 SSL_eGOST2814789CNT12,
2644 SSL_GOST89MAC12,
2645 TLS1_VERSION, TLS1_2_VERSION,
Dmitry Belyavsky48c16012016-05-11 21:00:12 +01002646 0, 0,
Rich Salz748f2542016-03-16 12:33:00 -04002647 SSL_HIGH,
2648 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
2649 256,
Emilia Kaspera230b262016-08-05 19:03:17 +02002650 256,
2651 },
Rich Salz748f2542016-03-16 12:33:00 -04002652 {
2653 1,
2654 "GOST2012-NULL-GOST12",
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002655 NULL,
Rich Salz748f2542016-03-16 12:33:00 -04002656 0x0300ff87,
2657 SSL_kGOST,
2658 SSL_aGOST12 | SSL_aGOST01,
2659 SSL_eNULL,
2660 SSL_GOST12_256,
2661 TLS1_VERSION, TLS1_2_VERSION,
Dmitry Belyavsky48c16012016-05-11 21:00:12 +01002662 0, 0,
Rich Salz748f2542016-03-16 12:33:00 -04002663 SSL_STRONG_NONE,
2664 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
2665 0,
Emilia Kaspera230b262016-08-05 19:03:17 +02002666 0,
2667 },
2668#endif /* OPENSSL_NO_GOST */
Rich Salz748f2542016-03-16 12:33:00 -04002669
2670#ifndef OPENSSL_NO_IDEA
2671 {
2672 1,
2673 SSL3_TXT_RSA_IDEA_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002674 SSL3_RFC_RSA_IDEA_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002675 SSL3_CK_RSA_IDEA_128_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002676 SSL_kRSA,
2677 SSL_aRSA,
Rich Salz748f2542016-03-16 12:33:00 -04002678 SSL_IDEA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002679 SSL_SHA1,
Rich Salz748f2542016-03-16 12:33:00 -04002680 SSL3_VERSION, TLS1_1_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002681 DTLS1_BAD_VER, DTLS1_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002682 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002683 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2684 128,
2685 128,
2686 },
Matt Caswell8b1a5af2016-03-03 15:40:51 +00002687#endif
Nils Larschddac1972006-03-10 23:06:27 +00002688
Bodo Möller96afc1c2007-04-23 23:48:59 +00002689#ifndef OPENSSL_NO_SEED
Matt Caswell0f113f32015-01-22 03:40:55 +00002690 {
2691 1,
2692 TLS1_TXT_RSA_WITH_SEED_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002693 TLS1_RFC_RSA_WITH_SEED_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002694 TLS1_CK_RSA_WITH_SEED_SHA,
2695 SSL_kRSA,
2696 SSL_aRSA,
2697 SSL_SEED,
2698 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002699 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002700 DTLS1_BAD_VER, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +01002701 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002702 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2703 128,
2704 128,
2705 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002706 {
2707 1,
2708 TLS1_TXT_DHE_DSS_WITH_SEED_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002709 TLS1_RFC_DHE_DSS_WITH_SEED_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002710 TLS1_CK_DHE_DSS_WITH_SEED_SHA,
2711 SSL_kDHE,
2712 SSL_aDSS,
2713 SSL_SEED,
2714 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002715 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002716 DTLS1_BAD_VER, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +01002717 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002718 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2719 128,
2720 128,
2721 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002722 {
2723 1,
2724 TLS1_TXT_DHE_RSA_WITH_SEED_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002725 TLS1_RFC_DHE_RSA_WITH_SEED_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002726 TLS1_CK_DHE_RSA_WITH_SEED_SHA,
2727 SSL_kDHE,
2728 SSL_aRSA,
2729 SSL_SEED,
2730 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002731 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002732 DTLS1_BAD_VER, DTLS1_2_VERSION,
Emilia Kaspera556f342016-03-03 19:50:03 +01002733 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002734 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2735 128,
2736 128,
2737 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002738 {
2739 1,
2740 TLS1_TXT_ADH_WITH_SEED_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002741 TLS1_RFC_ADH_WITH_SEED_SHA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002742 TLS1_CK_ADH_WITH_SEED_SHA,
2743 SSL_kDHE,
2744 SSL_aNULL,
2745 SSL_SEED,
2746 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002747 SSL3_VERSION, TLS1_2_VERSION,
David Woodhouse387cf212016-07-08 20:59:50 +01002748 DTLS1_BAD_VER, DTLS1_2_VERSION,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002749 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002750 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2751 128,
2752 128,
2753 },
Emilia Kaspera230b262016-08-05 19:03:17 +02002754#endif /* OPENSSL_NO_SEED */
Bodo Möller96afc1c2007-04-23 23:48:59 +00002755
Matt Caswell8b1a5af2016-03-03 15:40:51 +00002756#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
Matt Caswell0f113f32015-01-22 03:40:55 +00002757 {
2758 1,
Rich Salz748f2542016-03-16 12:33:00 -04002759 SSL3_TXT_RSA_RC4_128_MD5,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002760 SSL3_RFC_RSA_RC4_128_MD5,
Rich Salz748f2542016-03-16 12:33:00 -04002761 SSL3_CK_RSA_RC4_128_MD5,
2762 SSL_kRSA,
2763 SSL_aRSA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002764 SSL_RC4,
Rich Salz748f2542016-03-16 12:33:00 -04002765 SSL_MD5,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002766 SSL3_VERSION, TLS1_2_VERSION,
Kurt Roeckxca3895f2016-03-08 20:26:38 +01002767 0, 0,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002768 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002769 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2770 128,
2771 128,
2772 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002773 {
2774 1,
Rich Salz748f2542016-03-16 12:33:00 -04002775 SSL3_TXT_RSA_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002776 SSL3_RFC_RSA_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002777 SSL3_CK_RSA_RC4_128_SHA,
2778 SSL_kRSA,
Matt Caswell0f113f32015-01-22 03:40:55 +00002779 SSL_aRSA,
2780 SSL_RC4,
2781 SSL_SHA1,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002782 SSL3_VERSION, TLS1_2_VERSION,
Kurt Roeckxca3895f2016-03-08 20:26:38 +01002783 0, 0,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002784 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002785 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2786 128,
2787 128,
2788 },
Matt Caswell0f113f32015-01-22 03:40:55 +00002789 {
2790 1,
Rich Salz748f2542016-03-16 12:33:00 -04002791 SSL3_TXT_ADH_RC4_128_MD5,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002792 SSL3_RFC_ADH_RC4_128_MD5,
Rich Salz748f2542016-03-16 12:33:00 -04002793 SSL3_CK_ADH_RC4_128_MD5,
2794 SSL_kDHE,
Matt Caswell0f113f32015-01-22 03:40:55 +00002795 SSL_aNULL,
2796 SSL_RC4,
Rich Salz748f2542016-03-16 12:33:00 -04002797 SSL_MD5,
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01002798 SSL3_VERSION, TLS1_2_VERSION,
Kurt Roeckxca3895f2016-03-08 20:26:38 +01002799 0, 0,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002800 SSL_NOT_DEFAULT | SSL_MEDIUM,
Matt Caswell0f113f32015-01-22 03:40:55 +00002801 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2802 128,
2803 128,
2804 },
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002805 {
2806 1,
2807 TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002808 TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002809 TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA,
2810 SSL_kECDHEPSK,
2811 SSL_aPSK,
2812 SSL_RC4,
2813 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04002814 TLS1_VERSION, TLS1_2_VERSION,
Kurt Roeckxca3895f2016-03-08 20:26:38 +01002815 0, 0,
Kurt Roeckx361a1192015-12-05 02:04:41 +01002816 SSL_NOT_DEFAULT | SSL_MEDIUM,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002817 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2818 128,
2819 128,
2820 },
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002821 {
2822 1,
Rich Salz748f2542016-03-16 12:33:00 -04002823 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002824 TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002825 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA,
2826 SSL_kECDHE,
2827 SSL_aNULL,
2828 SSL_RC4,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002829 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04002830 TLS1_VERSION, TLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002831 0, 0,
2832 SSL_NOT_DEFAULT | SSL_MEDIUM,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002833 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
Rich Salz748f2542016-03-16 12:33:00 -04002834 128,
2835 128,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002836 },
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002837 {
2838 1,
Rich Salz748f2542016-03-16 12:33:00 -04002839 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002840 TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002841 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA,
2842 SSL_kECDHE,
2843 SSL_aECDSA,
2844 SSL_RC4,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002845 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04002846 TLS1_VERSION, TLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002847 0, 0,
2848 SSL_NOT_DEFAULT | SSL_MEDIUM,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002849 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2850 128,
2851 128,
2852 },
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002853 {
2854 1,
Rich Salz748f2542016-03-16 12:33:00 -04002855 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002856 TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002857 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA,
2858 SSL_kECDHE,
2859 SSL_aRSA,
2860 SSL_RC4,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002861 SSL_SHA1,
Todd Shortfe55c4a2017-04-11 09:02:05 -04002862 TLS1_VERSION, TLS1_2_VERSION,
Rich Salz748f2542016-03-16 12:33:00 -04002863 0, 0,
2864 SSL_NOT_DEFAULT | SSL_MEDIUM,
Dr. Stephen Hensonea6114c2015-06-28 17:05:47 +01002865 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2866 128,
2867 128,
2868 },
Andy Polyakova76ba822015-12-09 21:47:00 +01002869 {
2870 1,
Rich Salz748f2542016-03-16 12:33:00 -04002871 TLS1_TXT_PSK_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002872 TLS1_RFC_PSK_WITH_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002873 TLS1_CK_PSK_WITH_RC4_128_SHA,
Andy Polyakova76ba822015-12-09 21:47:00 +01002874 SSL_kPSK,
2875 SSL_aPSK,
Rich Salz748f2542016-03-16 12:33:00 -04002876 SSL_RC4,
2877 SSL_SHA1,
2878 SSL3_VERSION, TLS1_2_VERSION,
2879 0, 0,
2880 SSL_NOT_DEFAULT | SSL_MEDIUM,
2881 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2882 128,
2883 128,
Andy Polyakova76ba822015-12-09 21:47:00 +01002884 },
Andy Polyakova76ba822015-12-09 21:47:00 +01002885 {
2886 1,
Rich Salz748f2542016-03-16 12:33:00 -04002887 TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002888 TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002889 TLS1_CK_RSA_PSK_WITH_RC4_128_SHA,
Andy Polyakova76ba822015-12-09 21:47:00 +01002890 SSL_kRSAPSK,
2891 SSL_aRSA,
Rich Salz748f2542016-03-16 12:33:00 -04002892 SSL_RC4,
2893 SSL_SHA1,
2894 SSL3_VERSION, TLS1_2_VERSION,
2895 0, 0,
2896 SSL_NOT_DEFAULT | SSL_MEDIUM,
2897 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2898 128,
2899 128,
Andy Polyakova76ba822015-12-09 21:47:00 +01002900 },
Dmitry Belyavskye44380a2015-11-17 15:32:30 +00002901 {
2902 1,
Rich Salz748f2542016-03-16 12:33:00 -04002903 TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA,
Paul Yangbbb4ceb2017-06-30 03:06:19 +08002904 TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA,
Rich Salz748f2542016-03-16 12:33:00 -04002905 TLS1_CK_DHE_PSK_WITH_RC4_128_SHA,
2906 SSL_kDHEPSK,
2907 SSL_aPSK,
2908 SSL_RC4,
2909 SSL_SHA1,
2910 SSL3_VERSION, TLS1_2_VERSION,
2911 0, 0,
2912 SSL_NOT_DEFAULT | SSL_MEDIUM,
2913 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2914 128,
2915 128,
2916 },
Emilia Kaspera230b262016-08-05 19:03:17 +02002917#endif /* OPENSSL_NO_WEAK_SSL_CIPHERS */
Rich Salz748f2542016-03-16 12:33:00 -04002918
Jon Spillettbc326732017-08-22 09:56:13 +10002919#ifndef OPENSSL_NO_ARIA
2920 {
2921 1,
2922 TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256,
2923 TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256,
2924 TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256,
2925 SSL_kRSA,
2926 SSL_aRSA,
2927 SSL_ARIA128GCM,
2928 SSL_AEAD,
2929 TLS1_2_VERSION, TLS1_2_VERSION,
2930 DTLS1_2_VERSION, DTLS1_2_VERSION,
2931 SSL_NOT_DEFAULT | SSL_HIGH,
2932 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2933 128,
2934 128,
2935 },
2936 {
2937 1,
2938 TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384,
2939 TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384,
2940 TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384,
2941 SSL_kRSA,
2942 SSL_aRSA,
2943 SSL_ARIA256GCM,
2944 SSL_AEAD,
2945 TLS1_2_VERSION, TLS1_2_VERSION,
2946 DTLS1_2_VERSION, DTLS1_2_VERSION,
2947 SSL_NOT_DEFAULT | SSL_HIGH,
2948 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2949 256,
2950 256,
2951 },
2952 {
2953 1,
2954 TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256,
2955 TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256,
2956 TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256,
2957 SSL_kDHE,
2958 SSL_aRSA,
2959 SSL_ARIA128GCM,
2960 SSL_AEAD,
2961 TLS1_2_VERSION, TLS1_2_VERSION,
2962 DTLS1_2_VERSION, DTLS1_2_VERSION,
2963 SSL_NOT_DEFAULT | SSL_HIGH,
2964 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2965 128,
2966 128,
2967 },
2968 {
2969 1,
2970 TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384,
2971 TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384,
2972 TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384,
2973 SSL_kDHE,
2974 SSL_aRSA,
2975 SSL_ARIA256GCM,
2976 SSL_AEAD,
2977 TLS1_2_VERSION, TLS1_2_VERSION,
2978 DTLS1_2_VERSION, DTLS1_2_VERSION,
2979 SSL_NOT_DEFAULT | SSL_HIGH,
2980 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2981 256,
2982 256,
2983 },
2984 {
2985 1,
2986 TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256,
2987 TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256,
2988 TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256,
2989 SSL_kDHE,
2990 SSL_aDSS,
2991 SSL_ARIA128GCM,
2992 SSL_AEAD,
2993 TLS1_2_VERSION, TLS1_2_VERSION,
2994 DTLS1_2_VERSION, DTLS1_2_VERSION,
2995 SSL_NOT_DEFAULT | SSL_HIGH,
2996 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2997 128,
2998 128,
2999 },
3000 {
3001 1,
3002 TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384,
3003 TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384,
3004 TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384,
3005 SSL_kDHE,
3006 SSL_aDSS,
3007 SSL_ARIA256GCM,
3008 SSL_AEAD,
3009 TLS1_2_VERSION, TLS1_2_VERSION,
3010 DTLS1_2_VERSION, DTLS1_2_VERSION,
3011 SSL_NOT_DEFAULT | SSL_HIGH,
3012 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3013 256,
3014 256,
3015 },
3016 {
3017 1,
3018 TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,
3019 TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,
3020 TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,
3021 SSL_kECDHE,
3022 SSL_aECDSA,
3023 SSL_ARIA128GCM,
3024 SSL_AEAD,
3025 TLS1_2_VERSION, TLS1_2_VERSION,
3026 DTLS1_2_VERSION, DTLS1_2_VERSION,
3027 SSL_NOT_DEFAULT | SSL_HIGH,
3028 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3029 128,
3030 128,
3031 },
3032 {
3033 1,
3034 TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,
3035 TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,
3036 TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,
3037 SSL_kECDHE,
3038 SSL_aECDSA,
3039 SSL_ARIA256GCM,
3040 SSL_AEAD,
3041 TLS1_2_VERSION, TLS1_2_VERSION,
3042 DTLS1_2_VERSION, DTLS1_2_VERSION,
3043 SSL_NOT_DEFAULT | SSL_HIGH,
3044 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3045 256,
3046 256,
3047 },
Jon Spillettbc326732017-08-22 09:56:13 +10003048 {
3049 1,
3050 TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,
3051 TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,
3052 TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,
3053 SSL_kECDHE,
3054 SSL_aRSA,
3055 SSL_ARIA128GCM,
3056 SSL_AEAD,
3057 TLS1_2_VERSION, TLS1_2_VERSION,
3058 DTLS1_2_VERSION, DTLS1_2_VERSION,
3059 SSL_NOT_DEFAULT | SSL_HIGH,
3060 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3061 128,
3062 128,
3063 },
3064 {
3065 1,
3066 TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,
3067 TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,
3068 TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,
3069 SSL_kECDHE,
3070 SSL_aRSA,
3071 SSL_ARIA256GCM,
3072 SSL_AEAD,
3073 TLS1_2_VERSION, TLS1_2_VERSION,
3074 DTLS1_2_VERSION, DTLS1_2_VERSION,
3075 SSL_NOT_DEFAULT | SSL_HIGH,
3076 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3077 256,
3078 256,
3079 },
3080 {
3081 1,
3082 TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256,
3083 TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256,
3084 TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256,
3085 SSL_kPSK,
3086 SSL_aPSK,
3087 SSL_ARIA128GCM,
3088 SSL_AEAD,
3089 TLS1_2_VERSION, TLS1_2_VERSION,
3090 DTLS1_2_VERSION, DTLS1_2_VERSION,
3091 SSL_NOT_DEFAULT | SSL_HIGH,
3092 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3093 128,
3094 128,
3095 },
3096 {
3097 1,
3098 TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384,
3099 TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384,
3100 TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384,
3101 SSL_kPSK,
3102 SSL_aPSK,
3103 SSL_ARIA256GCM,
3104 SSL_AEAD,
3105 TLS1_2_VERSION, TLS1_2_VERSION,
3106 DTLS1_2_VERSION, DTLS1_2_VERSION,
3107 SSL_NOT_DEFAULT | SSL_HIGH,
3108 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3109 256,
3110 256,
3111 },
3112 {
3113 1,
3114 TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256,
3115 TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256,
3116 TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256,
3117 SSL_kDHEPSK,
3118 SSL_aPSK,
3119 SSL_ARIA128GCM,
3120 SSL_AEAD,
3121 TLS1_2_VERSION, TLS1_2_VERSION,
3122 DTLS1_2_VERSION, DTLS1_2_VERSION,
3123 SSL_NOT_DEFAULT | SSL_HIGH,
3124 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3125 128,
3126 128,
3127 },
3128 {
3129 1,
3130 TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384,
3131 TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384,
3132 TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384,
3133 SSL_kDHEPSK,
3134 SSL_aPSK,
3135 SSL_ARIA256GCM,
3136 SSL_AEAD,
3137 TLS1_2_VERSION, TLS1_2_VERSION,
3138 DTLS1_2_VERSION, DTLS1_2_VERSION,
3139 SSL_NOT_DEFAULT | SSL_HIGH,
3140 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3141 256,
3142 256,
3143 },
Jon Spillettbc326732017-08-22 09:56:13 +10003144 {
3145 1,
3146 TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256,
3147 TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256,
3148 TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256,
3149 SSL_kRSAPSK,
3150 SSL_aRSA,
3151 SSL_ARIA128GCM,
3152 SSL_AEAD,
3153 TLS1_2_VERSION, TLS1_2_VERSION,
3154 DTLS1_2_VERSION, DTLS1_2_VERSION,
3155 SSL_NOT_DEFAULT | SSL_HIGH,
3156 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3157 128,
3158 128,
3159 },
3160 {
3161 1,
3162 TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384,
3163 TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384,
3164 TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384,
3165 SSL_kRSAPSK,
3166 SSL_aRSA,
3167 SSL_ARIA256GCM,
3168 SSL_AEAD,
3169 TLS1_2_VERSION, TLS1_2_VERSION,
3170 DTLS1_2_VERSION, DTLS1_2_VERSION,
3171 SSL_NOT_DEFAULT | SSL_HIGH,
3172 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3173 256,
3174 256,
3175 },
3176#endif /* OPENSSL_NO_ARIA */
Matt Caswell0f113f32015-01-22 03:40:55 +00003177};
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003178
Benjamin Kaduk650c6e42017-02-03 17:17:21 -06003179/*
3180 * The list of known Signalling Cipher-Suite Value "ciphers", non-valid
3181 * values stuffed into the ciphers field of the wire protocol for signalling
3182 * purposes.
3183 */
3184static SSL_CIPHER ssl3_scsvs[] = {
3185 {
3186 0,
3187 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
Paul Yangbbb4ceb2017-06-30 03:06:19 +08003188 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
Benjamin Kaduk650c6e42017-02-03 17:17:21 -06003189 SSL3_CK_SCSV,
3190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3191 },
3192 {
3193 0,
3194 "TLS_FALLBACK_SCSV",
Paul Yangbbb4ceb2017-06-30 03:06:19 +08003195 "TLS_FALLBACK_SCSV",
Benjamin Kaduk650c6e42017-02-03 17:17:21 -06003196 SSL3_CK_FALLBACK_SCSV,
3197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3198 },
3199};
3200
Rich Salz748f2542016-03-16 12:33:00 -04003201static int cipher_compare(const void *a, const void *b)
3202{
3203 const SSL_CIPHER *ap = (const SSL_CIPHER *)a;
3204 const SSL_CIPHER *bp = (const SSL_CIPHER *)b;
3205
Richard Levittea7ff5792017-07-08 22:13:24 +02003206 if (ap->id == bp->id)
3207 return 0;
3208 return ap->id < bp->id ? -1 : 1;
Rich Salz748f2542016-03-16 12:33:00 -04003209}
3210
3211void ssl_sort_cipher_list(void)
3212{
Matt Caswellf865b082018-02-16 11:26:02 +00003213 qsort(tls13_ciphers, TLS13_NUM_CIPHERS, sizeof(tls13_ciphers[0]),
3214 cipher_compare);
Rich Salzcbe29642017-12-07 13:39:34 -05003215 qsort(ssl3_ciphers, SSL3_NUM_CIPHERS, sizeof(ssl3_ciphers[0]),
Rich Salz748f2542016-03-16 12:33:00 -04003216 cipher_compare);
Rich Salzcbe29642017-12-07 13:39:34 -05003217 qsort(ssl3_scsvs, SSL3_NUM_SCSVS, sizeof(ssl3_scsvs[0]), cipher_compare);
Rich Salz748f2542016-03-16 12:33:00 -04003218}
3219
Bernd Edlingerfce78bd2017-12-15 19:33:48 +01003220static int ssl_undefined_function_1(SSL *ssl, unsigned char *r, size_t s,
3221 const char * t, size_t u,
3222 const unsigned char * v, size_t w, int x)
3223{
3224 (void)r;
3225 (void)s;
3226 (void)t;
3227 (void)u;
3228 (void)v;
3229 (void)w;
3230 (void)x;
3231 return ssl_undefined_function(ssl);
3232}
3233
Matt Caswell0f113f32015-01-22 03:40:55 +00003234const SSL3_ENC_METHOD SSLv3_enc_data = {
3235 ssl3_enc,
3236 n_ssl3_mac,
3237 ssl3_setup_key_block,
3238 ssl3_generate_master_secret,
3239 ssl3_change_cipher_state,
3240 ssl3_final_finish_mac,
Matt Caswell0f113f32015-01-22 03:40:55 +00003241 SSL3_MD_CLIENT_FINISHED_CONST, 4,
3242 SSL3_MD_SERVER_FINISHED_CONST, 4,
3243 ssl3_alert_code,
Bernd Edlingerfce78bd2017-12-15 19:33:48 +01003244 ssl_undefined_function_1,
Matt Caswell0f113f32015-01-22 03:40:55 +00003245 0,
Matt Caswella29fa982016-09-29 22:40:15 +01003246 ssl3_set_handshake_header,
Matt Caswell2c7b4db2016-08-03 20:57:52 +01003247 tls_close_construct_packet,
Matt Caswell0f113f32015-01-22 03:40:55 +00003248 ssl3_handshake_write
3249};
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00003250
Dr. Stephen Hensonf3b656b2005-08-05 23:56:11 +00003251long ssl3_default_timeout(void)
Matt Caswell0f113f32015-01-22 03:40:55 +00003252{
3253 /*
3254 * 2 hours, the 24 hours mentioned in the SSLv3 spec is way too long for
3255 * http, the cache would over fill
3256 */
3257 return (60 * 60 * 2);
3258}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003259
Ulf Möller6b691a51999-04-19 21:31:43 +00003260int ssl3_num_ciphers(void)
Matt Caswell0f113f32015-01-22 03:40:55 +00003261{
KaoruToda26a7d932017-10-17 23:04:09 +09003262 return SSL3_NUM_CIPHERS;
Matt Caswell0f113f32015-01-22 03:40:55 +00003263}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003264
Ben Lauriebabb3792008-10-12 14:32:47 +00003265const SSL_CIPHER *ssl3_get_cipher(unsigned int u)
Matt Caswell0f113f32015-01-22 03:40:55 +00003266{
3267 if (u < SSL3_NUM_CIPHERS)
KaoruToda26a7d932017-10-17 23:04:09 +09003268 return &(ssl3_ciphers[SSL3_NUM_CIPHERS - 1 - u]);
Matt Caswell0f113f32015-01-22 03:40:55 +00003269 else
KaoruToda26a7d932017-10-17 23:04:09 +09003270 return NULL;
Matt Caswell0f113f32015-01-22 03:40:55 +00003271}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003272
Matt Caswella29fa982016-09-29 22:40:15 +01003273int ssl3_set_handshake_header(SSL *s, WPACKET *pkt, int htype)
Matt Caswell2c7b4db2016-08-03 20:57:52 +01003274{
Matt Caswell4a01c592016-09-30 10:38:32 +01003275 /* No header in the event of a CCS */
3276 if (htype == SSL3_MT_CHANGE_CIPHER_SPEC)
3277 return 1;
3278
Matt Caswell2c7b4db2016-08-03 20:57:52 +01003279 /* Set the content type and 3 bytes for the message len */
Matt Caswell08029df2016-09-20 14:47:44 +01003280 if (!WPACKET_put_bytes_u8(pkt, htype)
Matt Caswellde451852016-09-09 00:13:41 +01003281 || !WPACKET_start_sub_packet_u24(pkt))
Matt Caswell2c7b4db2016-08-03 20:57:52 +01003282 return 0;
3283
3284 return 1;
3285}
3286
Dr. Stephen Henson173e72e2013-03-11 15:34:28 +00003287int ssl3_handshake_write(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00003288{
3289 return ssl3_do_write(s, SSL3_RT_HANDSHAKE);
3290}
Dr. Stephen Henson173e72e2013-03-11 15:34:28 +00003291
Ulf Möller6b691a51999-04-19 21:31:43 +00003292int ssl3_new(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00003293{
3294 SSL3_STATE *s3;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003295
Rich Salzb51bce92015-08-25 13:25:58 -04003296 if ((s3 = OPENSSL_zalloc(sizeof(*s3))) == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00003297 goto err;
Matt Caswell0f113f32015-01-22 03:40:55 +00003298 s->s3 = s3;
Ben Laurie1e0784f2016-01-01 15:39:31 +00003299
Ben Laurieedc032b2011-03-12 17:01:19 +00003300#ifndef OPENSSL_NO_SRP
Viktor Dukhovni61986d32015-04-16 01:50:03 -04003301 if (!SSL_SRP_CTX_init(s))
Emilia Kaspera230b262016-08-05 19:03:17 +02003302 goto err;
Ben Laurieedc032b2011-03-12 17:01:19 +00003303#endif
Matt Caswellb77f3ed2017-05-22 12:33:42 +01003304
3305 if (!s->method->ssl_clear(s))
3306 return 0;
3307
Matt Caswella89325e2017-05-22 12:33:29 +01003308 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00003309 err:
Matt Caswella89325e2017-05-22 12:33:29 +01003310 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00003311}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003312
Ulf Möller6b691a51999-04-19 21:31:43 +00003313void ssl3_free(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00003314{
Rich Salze6e91702018-03-27 16:25:08 -04003315 if (s == NULL || s->s3 == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00003316 return;
Ben Lauriee03ddfa1999-01-07 19:15:59 +00003317
Matt Caswell0f113f32015-01-22 03:40:55 +00003318 ssl3_cleanup_key_block(s);
Dr. Stephen Henson8d92c1f2015-06-21 16:26:08 +01003319
Dr. Stephen Hensonfb79abe2015-12-17 01:07:46 +00003320#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
Dr. Stephen Henson61dd9f72015-12-14 00:33:33 +00003321 EVP_PKEY_free(s->s3->peer_tmp);
3322 s->s3->peer_tmp = NULL;
Dr. Stephen Hensonb22d7112015-12-24 00:23:29 +00003323 EVP_PKEY_free(s->s3->tmp.pkey);
3324 s->s3->tmp.pkey = NULL;
Bodo Möllerea262262002-08-09 08:56:08 +00003325#endif
3326
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00003327 OPENSSL_free(s->s3->tmp.ctype);
Dr. Stephen Hensonfa7c2632017-03-13 15:00:36 +00003328 sk_X509_NAME_pop_free(s->s3->tmp.peer_ca_names, X509_NAME_free);
Dr. Stephen Henson76106e62015-05-12 17:17:37 +01003329 OPENSSL_free(s->s3->tmp.ciphers_raw);
3330 OPENSSL_clear_free(s->s3->tmp.pms, s->s3->tmp.pmslen);
3331 OPENSSL_free(s->s3->tmp.peer_sigalgs);
Benjamin Kadukc589c342018-01-11 11:47:12 -06003332 OPENSSL_free(s->s3->tmp.peer_cert_sigalgs);
Dr. Stephen Henson85fb6fd2015-06-20 15:37:22 +01003333 ssl3_free_digest_list(s);
Rich Salz25aaa982015-05-01 14:37:16 -04003334 OPENSSL_free(s->s3->alpn_selected);
Todd Short817cd0d2016-03-05 08:47:55 -05003335 OPENSSL_free(s->s3->alpn_proposed);
Adam Langley6f017a82013-04-15 18:07:47 -04003336
Ben Laurieedc032b2011-03-12 17:01:19 +00003337#ifndef OPENSSL_NO_SRP
Matt Caswell0f113f32015-01-22 03:40:55 +00003338 SSL_SRP_CTX_free(s);
Ben Laurieedc032b2011-03-12 17:01:19 +00003339#endif
Rich Salzb4faea52015-05-01 23:10:31 -04003340 OPENSSL_clear_free(s->s3, sizeof(*s->s3));
Matt Caswell0f113f32015-01-22 03:40:55 +00003341 s->s3 = NULL;
3342}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003343
Matt Caswellb77f3ed2017-05-22 12:33:42 +01003344int ssl3_clear(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00003345{
Matt Caswell0f113f32015-01-22 03:40:55 +00003346 ssl3_cleanup_key_block(s);
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00003347 OPENSSL_free(s->s3->tmp.ctype);
Dr. Stephen Hensonfa7c2632017-03-13 15:00:36 +00003348 sk_X509_NAME_pop_free(s->s3->tmp.peer_ca_names, X509_NAME_free);
Dr. Stephen Henson76106e62015-05-12 17:17:37 +01003349 OPENSSL_free(s->s3->tmp.ciphers_raw);
Dr. Stephen Henson76106e62015-05-12 17:17:37 +01003350 OPENSSL_clear_free(s->s3->tmp.pms, s->s3->tmp.pmslen);
Dr. Stephen Henson76106e62015-05-12 17:17:37 +01003351 OPENSSL_free(s->s3->tmp.peer_sigalgs);
Benjamin Kadukc589c342018-01-11 11:47:12 -06003352 OPENSSL_free(s->s3->tmp.peer_cert_sigalgs);
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003353
Dr. Stephen Hensonfb79abe2015-12-17 01:07:46 +00003354#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
Dr. Stephen Hensonb22d7112015-12-24 00:23:29 +00003355 EVP_PKEY_free(s->s3->tmp.pkey);
Dr. Stephen Henson61dd9f72015-12-14 00:33:33 +00003356 EVP_PKEY_free(s->s3->peer_tmp);
Emilia Kaspera230b262016-08-05 19:03:17 +02003357#endif /* !OPENSSL_NO_EC */
Mark J. Cox413c4f41999-02-16 09:22:21 +00003358
Dr. Stephen Henson85fb6fd2015-06-20 15:37:22 +01003359 ssl3_free_digest_list(s);
Matt Caswelle481f9b2015-05-15 10:49:56 +01003360
Todd Short817cd0d2016-03-05 08:47:55 -05003361 OPENSSL_free(s->s3->alpn_selected);
3362 OPENSSL_free(s->s3->alpn_proposed);
Matt Caswelle481f9b2015-05-15 10:49:56 +01003363
Todd Short817cd0d2016-03-05 08:47:55 -05003364 /* NULL/zero-out everything in the s3 struct */
Rich Salzb4faea52015-05-01 23:10:31 -04003365 memset(s->s3, 0, sizeof(*s->s3));
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00003366
Matt Caswellb77f3ed2017-05-22 12:33:42 +01003367 if (!ssl_free_wbio_buffer(s))
3368 return 0;
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00003369
Matt Caswell0f113f32015-01-22 03:40:55 +00003370 s->version = SSL3_VERSION;
Ben Laurieee2ffc22010-07-28 10:06:55 +00003371
Matt Caswelle481f9b2015-05-15 10:49:56 +01003372#if !defined(OPENSSL_NO_NEXTPROTONEG)
Rich Salzaff8c122016-12-08 14:18:40 -05003373 OPENSSL_free(s->ext.npn);
3374 s->ext.npn = NULL;
3375 s->ext.npn_len = 0;
Ben Laurieee2ffc22010-07-28 10:06:55 +00003376#endif
Matt Caswellb77f3ed2017-05-22 12:33:42 +01003377
3378 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00003379}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003380
Ben Laurieedc032b2011-03-12 17:01:19 +00003381#ifndef OPENSSL_NO_SRP
Matt Caswell0f113f32015-01-22 03:40:55 +00003382static char *srp_password_from_info_cb(SSL *s, void *arg)
3383{
Rich Salz7644a9a2015-12-16 16:12:24 -05003384 return OPENSSL_strdup(s->srp_ctx.info);
Matt Caswell0f113f32015-01-22 03:40:55 +00003385}
Ben Laurieedc032b2011-03-12 17:01:19 +00003386#endif
3387
Emilia Kaspera230b262016-08-05 19:03:17 +02003388static int ssl3_set_req_cert_type(CERT *c, const unsigned char *p, size_t len);
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00003389
Bodo Möllera661b652001-10-20 17:56:36 +00003390long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
Matt Caswell0f113f32015-01-22 03:40:55 +00003391{
3392 int ret = 0;
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00003393
Matt Caswell0f113f32015-01-22 03:40:55 +00003394 switch (cmd) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003395 case SSL_CTRL_GET_CLIENT_CERT_REQUEST:
3396 break;
3397 case SSL_CTRL_GET_NUM_RENEGOTIATIONS:
3398 ret = s->s3->num_renegotiations;
3399 break;
3400 case SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS:
3401 ret = s->s3->num_renegotiations;
3402 s->s3->num_renegotiations = 0;
3403 break;
3404 case SSL_CTRL_GET_TOTAL_RENEGOTIATIONS:
3405 ret = s->s3->total_renegotiations;
3406 break;
3407 case SSL_CTRL_GET_FLAGS:
3408 ret = (int)(s->s3->flags);
3409 break;
Richard Levittebc36ee62001-02-20 08:13:47 +00003410#ifndef OPENSSL_NO_DH
Matt Caswell0f113f32015-01-22 03:40:55 +00003411 case SSL_CTRL_SET_TMP_DH:
3412 {
3413 DH *dh = (DH *)parg;
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003414 EVP_PKEY *pkdh = NULL;
Matt Caswell0f113f32015-01-22 03:40:55 +00003415 if (dh == NULL) {
3416 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
KaoruToda26a7d932017-10-17 23:04:09 +09003417 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00003418 }
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003419 pkdh = ssl_dh_to_pkey(dh);
3420 if (pkdh == NULL) {
3421 SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE);
3422 return 0;
3423 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003424 if (!ssl_security(s, SSL_SECOP_TMP_DH,
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003425 EVP_PKEY_security_bits(pkdh), 0, pkdh)) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003426 SSLerr(SSL_F_SSL3_CTRL, SSL_R_DH_KEY_TOO_SMALL);
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003427 EVP_PKEY_free(pkdh);
3428 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00003429 }
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003430 EVP_PKEY_free(s->cert->dh_tmp);
3431 s->cert->dh_tmp = pkdh;
Matt Caswell0f113f32015-01-22 03:40:55 +00003432 ret = 1;
3433 }
3434 break;
3435 case SSL_CTRL_SET_TMP_DH_CB:
3436 {
3437 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
KaoruToda26a7d932017-10-17 23:04:09 +09003438 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00003439 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003440 case SSL_CTRL_SET_DH_AUTO:
3441 s->cert->dh_tmp_auto = larg;
3442 return 1;
Richard Levitted3442bc2000-02-20 23:43:02 +00003443#endif
Rich Salz10bf4fc2015-03-10 19:09:27 -04003444#ifndef OPENSSL_NO_EC
Matt Caswell0f113f32015-01-22 03:40:55 +00003445 case SSL_CTRL_SET_TMP_ECDH:
3446 {
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003447 const EC_GROUP *group = NULL;
3448 int nid;
Matt Caswell0f113f32015-01-22 03:40:55 +00003449
3450 if (parg == NULL) {
3451 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003452 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00003453 }
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003454 group = EC_KEY_get0_group((const EC_KEY *)parg);
3455 if (group == NULL) {
3456 SSLerr(SSL_F_SSL3_CTRL, EC_R_MISSING_PARAMETERS);
3457 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00003458 }
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003459 nid = EC_GROUP_get_curve_name(group);
3460 if (nid == NID_undef)
3461 return 0;
Rich Salzaff8c122016-12-08 14:18:40 -05003462 return tls1_set_groups(&s->ext.supportedgroups,
3463 &s->ext.supportedgroups_len,
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003464 &nid, 1);
Matt Caswell0f113f32015-01-22 03:40:55 +00003465 }
3466 break;
Rich Salz10bf4fc2015-03-10 19:09:27 -04003467#endif /* !OPENSSL_NO_EC */
Matt Caswell0f113f32015-01-22 03:40:55 +00003468 case SSL_CTRL_SET_TLSEXT_HOSTNAME:
3469 if (larg == TLSEXT_NAMETYPE_host_name) {
Viktor Dukhovni0982eca2016-01-16 12:57:24 -05003470 size_t len;
3471
Rich Salzaff8c122016-12-08 14:18:40 -05003472 OPENSSL_free(s->ext.hostname);
3473 s->ext.hostname = NULL;
Bodo Möllered3883d2006-01-02 23:14:37 +00003474
Matt Caswell0f113f32015-01-22 03:40:55 +00003475 ret = 1;
3476 if (parg == NULL)
3477 break;
Viktor Dukhovni0982eca2016-01-16 12:57:24 -05003478 len = strlen((char *)parg);
3479 if (len == 0 || len > TLSEXT_MAXLEN_host_name) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003480 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
3481 return 0;
3482 }
Rich Salzaff8c122016-12-08 14:18:40 -05003483 if ((s->ext.hostname = OPENSSL_strdup((char *)parg)) == NULL) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003484 SSLerr(SSL_F_SSL3_CTRL, ERR_R_INTERNAL_ERROR);
3485 return 0;
3486 }
3487 } else {
3488 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE);
3489 return 0;
3490 }
3491 break;
3492 case SSL_CTRL_SET_TLSEXT_DEBUG_ARG:
Rich Salzaff8c122016-12-08 14:18:40 -05003493 s->ext.debug_arg = parg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003494 ret = 1;
3495 break;
Bodo Möller761772d2007-09-21 06:54:24 +00003496
Alessandro Ghedini4300aaf2016-05-11 00:48:49 +01003497 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE:
Rich Salzaff8c122016-12-08 14:18:40 -05003498 ret = s->ext.status_type;
Alessandro Ghedini4300aaf2016-05-11 00:48:49 +01003499 break;
3500
Matt Caswell0f113f32015-01-22 03:40:55 +00003501 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
Rich Salzaff8c122016-12-08 14:18:40 -05003502 s->ext.status_type = larg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003503 ret = 1;
3504 break;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003505
Matt Caswell0f113f32015-01-22 03:40:55 +00003506 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS:
Rich Salzaff8c122016-12-08 14:18:40 -05003507 *(STACK_OF(X509_EXTENSION) **)parg = s->ext.ocsp.exts;
Matt Caswell0f113f32015-01-22 03:40:55 +00003508 ret = 1;
3509 break;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003510
Matt Caswell0f113f32015-01-22 03:40:55 +00003511 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS:
Rich Salzaff8c122016-12-08 14:18:40 -05003512 s->ext.ocsp.exts = parg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003513 ret = 1;
3514 break;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003515
Matt Caswell0f113f32015-01-22 03:40:55 +00003516 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS:
Rich Salzaff8c122016-12-08 14:18:40 -05003517 *(STACK_OF(OCSP_RESPID) **)parg = s->ext.ocsp.ids;
Matt Caswell0f113f32015-01-22 03:40:55 +00003518 ret = 1;
3519 break;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003520
Matt Caswell0f113f32015-01-22 03:40:55 +00003521 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS:
Rich Salzaff8c122016-12-08 14:18:40 -05003522 s->ext.ocsp.ids = parg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003523 ret = 1;
3524 break;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003525
Matt Caswell0f113f32015-01-22 03:40:55 +00003526 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP:
Rich Salzaff8c122016-12-08 14:18:40 -05003527 *(unsigned char **)parg = s->ext.ocsp.resp;
3528 if (s->ext.ocsp.resp_len == 0
3529 || s->ext.ocsp.resp_len > LONG_MAX)
Matt Caswell8b0e9342016-10-06 19:17:54 +01003530 return -1;
Rich Salzaff8c122016-12-08 14:18:40 -05003531 return (long)s->ext.ocsp.resp_len;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003532
Matt Caswell0f113f32015-01-22 03:40:55 +00003533 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP:
Rich Salzaff8c122016-12-08 14:18:40 -05003534 OPENSSL_free(s->ext.ocsp.resp);
3535 s->ext.ocsp.resp = parg;
3536 s->ext.ocsp.resp_len = larg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003537 ret = 1;
3538 break;
Dr. Stephen Henson48175042011-12-31 22:59:57 +00003539
Richard Levitteb6127992016-11-15 14:53:33 +01003540#ifndef OPENSSL_NO_HEARTBEATS
3541 case SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT:
3542 case SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING:
3543 case SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS:
3544 break;
3545#endif
3546
Matt Caswell0f113f32015-01-22 03:40:55 +00003547 case SSL_CTRL_CHAIN:
3548 if (larg)
3549 return ssl_cert_set1_chain(s, NULL, (STACK_OF(X509) *)parg);
3550 else
3551 return ssl_cert_set0_chain(s, NULL, (STACK_OF(X509) *)parg);
Dr. Stephen Hensonf71c6e52012-01-31 14:00:10 +00003552
Matt Caswell0f113f32015-01-22 03:40:55 +00003553 case SSL_CTRL_CHAIN_CERT:
3554 if (larg)
3555 return ssl_cert_add1_chain_cert(s, NULL, (X509 *)parg);
3556 else
3557 return ssl_cert_add0_chain_cert(s, NULL, (X509 *)parg);
Rob Stradling7b6b2462013-11-11 18:04:24 +01003558
Matt Caswell0f113f32015-01-22 03:40:55 +00003559 case SSL_CTRL_GET_CHAIN_CERTS:
3560 *(STACK_OF(X509) **)parg = s->cert->key->chain;
3561 break;
Rob Stradling7b6b2462013-11-11 18:04:24 +01003562
Matt Caswell0f113f32015-01-22 03:40:55 +00003563 case SSL_CTRL_SELECT_CURRENT_CERT:
3564 return ssl_cert_select_current(s->cert, (X509 *)parg);
3565
3566 case SSL_CTRL_SET_CURRENT_CERT:
3567 if (larg == SSL_CERT_SET_SERVER) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003568 const SSL_CIPHER *cipher;
3569 if (!s->server)
3570 return 0;
3571 cipher = s->s3->tmp.new_cipher;
Dr. Stephen Hensonf365a3e2017-02-13 16:32:06 +00003572 if (cipher == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00003573 return 0;
3574 /*
3575 * No certificate for unauthenticated ciphersuites or using SRP
3576 * authentication
3577 */
3578 if (cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP))
3579 return 2;
Dr. Stephen Hensona497cf22017-02-14 00:35:26 +00003580 if (s->s3->tmp.cert == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00003581 return 0;
Dr. Stephen Hensona497cf22017-02-14 00:35:26 +00003582 s->cert->key = s->s3->tmp.cert;
Matt Caswell0f113f32015-01-22 03:40:55 +00003583 return 1;
3584 }
3585 return ssl_cert_set_current(s->cert, larg);
Dr. Stephen Henson0f788192014-02-02 02:51:30 +00003586
Dr. Stephen Henson14536c82013-08-17 17:40:08 +01003587#ifndef OPENSSL_NO_EC
Matt Caswellde4d7642016-11-09 14:51:06 +00003588 case SSL_CTRL_GET_GROUPS:
Matt Caswell0f113f32015-01-22 03:40:55 +00003589 {
Dr. Stephen Henson9e84a422017-09-22 16:06:52 +01003590 uint16_t *clist;
Matt Caswell0f113f32015-01-22 03:40:55 +00003591 size_t clistlen;
Rich Salzaff8c122016-12-08 14:18:40 -05003592
Matt Caswell0f113f32015-01-22 03:40:55 +00003593 if (!s->session)
3594 return 0;
Rich Salzaff8c122016-12-08 14:18:40 -05003595 clist = s->session->ext.supportedgroups;
Dr. Stephen Henson9e84a422017-09-22 16:06:52 +01003596 clistlen = s->session->ext.supportedgroups_len;
Matt Caswell0f113f32015-01-22 03:40:55 +00003597 if (parg) {
3598 size_t i;
3599 int *cptr = parg;
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01003600
Matt Caswell0f113f32015-01-22 03:40:55 +00003601 for (i = 0; i < clistlen; i++) {
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01003602 const TLS_GROUP_INFO *cinf = tls1_group_id_lookup(clist[i]);
3603
3604 if (cinf != NULL)
3605 cptr[i] = cinf->nid;
Matt Caswell0f113f32015-01-22 03:40:55 +00003606 else
Dr. Stephen Henson9e84a422017-09-22 16:06:52 +01003607 cptr[i] = TLSEXT_nid_unknown | clist[i];
Matt Caswell0f113f32015-01-22 03:40:55 +00003608 }
3609 }
3610 return (int)clistlen;
3611 }
Dr. Stephen Hensone7f8ff42012-03-06 14:28:21 +00003612
Matt Caswellde4d7642016-11-09 14:51:06 +00003613 case SSL_CTRL_SET_GROUPS:
Rich Salzaff8c122016-12-08 14:18:40 -05003614 return tls1_set_groups(&s->ext.supportedgroups,
3615 &s->ext.supportedgroups_len, parg, larg);
Dr. Stephen Hensond0595f12012-03-28 15:05:04 +00003616
Matt Caswellde4d7642016-11-09 14:51:06 +00003617 case SSL_CTRL_SET_GROUPS_LIST:
Rich Salzaff8c122016-12-08 14:18:40 -05003618 return tls1_set_groups_list(&s->ext.supportedgroups,
3619 &s->ext.supportedgroups_len, parg);
Dr. Stephen Hensond0595f12012-03-28 15:05:04 +00003620
Matt Caswellde4d7642016-11-09 14:51:06 +00003621 case SSL_CTRL_GET_SHARED_GROUP:
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01003622 {
3623 uint16_t id = tls1_shared_group(s, larg);
Dr. Stephen Hensona4352632012-04-05 13:38:27 +00003624
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01003625 if (larg != -1) {
3626 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
3627
3628 return ginf == NULL ? 0 : ginf->nid;
3629 }
3630 return id;
3631 }
Dr. Stephen Henson14536c82013-08-17 17:40:08 +01003632#endif
Matt Caswell0f113f32015-01-22 03:40:55 +00003633 case SSL_CTRL_SET_SIGALGS:
3634 return tls1_set_sigalgs(s->cert, parg, larg, 0);
Dr. Stephen Henson0f229cc2012-06-22 14:03:31 +00003635
Matt Caswell0f113f32015-01-22 03:40:55 +00003636 case SSL_CTRL_SET_SIGALGS_LIST:
3637 return tls1_set_sigalgs_list(s->cert, parg, 0);
Dr. Stephen Henson3dbc46d2012-07-03 12:51:14 +00003638
Matt Caswell0f113f32015-01-22 03:40:55 +00003639 case SSL_CTRL_SET_CLIENT_SIGALGS:
3640 return tls1_set_sigalgs(s->cert, parg, larg, 1);
Dr. Stephen Henson3dbc46d2012-07-03 12:51:14 +00003641
Matt Caswell0f113f32015-01-22 03:40:55 +00003642 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST:
3643 return tls1_set_sigalgs_list(s->cert, parg, 1);
Dr. Stephen Henson0f229cc2012-06-22 14:03:31 +00003644
Matt Caswell0f113f32015-01-22 03:40:55 +00003645 case SSL_CTRL_GET_CLIENT_CERT_TYPES:
3646 {
3647 const unsigned char **pctype = parg;
3648 if (s->server || !s->s3->tmp.cert_req)
3649 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00003650 if (pctype)
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00003651 *pctype = s->s3->tmp.ctype;
3652 return s->s3->tmp.ctype_len;
Matt Caswell0f113f32015-01-22 03:40:55 +00003653 }
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00003654
Matt Caswell0f113f32015-01-22 03:40:55 +00003655 case SSL_CTRL_SET_CLIENT_CERT_TYPES:
3656 if (!s->server)
3657 return 0;
3658 return ssl3_set_req_cert_type(s->cert, parg, larg);
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00003659
Matt Caswell0f113f32015-01-22 03:40:55 +00003660 case SSL_CTRL_BUILD_CERT_CHAIN:
3661 return ssl_build_cert_chain(s, NULL, larg);
Dr. Stephen Henson74ecfab2012-07-23 23:34:28 +00003662
Matt Caswell0f113f32015-01-22 03:40:55 +00003663 case SSL_CTRL_SET_VERIFY_CERT_STORE:
3664 return ssl_cert_set_cert_store(s->cert, parg, 0, larg);
Dr. Stephen Henson74ecfab2012-07-23 23:34:28 +00003665
Matt Caswell0f113f32015-01-22 03:40:55 +00003666 case SSL_CTRL_SET_CHAIN_CERT_STORE:
3667 return ssl_cert_set_cert_store(s->cert, parg, 1, larg);
Dr. Stephen Henson74ecfab2012-07-23 23:34:28 +00003668
Matt Caswell0f113f32015-01-22 03:40:55 +00003669 case SSL_CTRL_GET_PEER_SIGNATURE_NID:
Dr. Stephen Hensonf742cda2017-01-30 13:48:39 +00003670 if (s->s3->tmp.peer_sigalg == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00003671 return 0;
Dr. Stephen Hensonf742cda2017-01-30 13:48:39 +00003672 *(int *)parg = s->s3->tmp.peer_sigalg->hash;
3673 return 1;
Dr. Stephen Henson319354e2012-09-07 12:53:42 +00003674
Matt Caswell0f113f32015-01-22 03:40:55 +00003675 case SSL_CTRL_GET_SERVER_TMP_KEY:
Dr. Stephen Hensonfb79abe2015-12-17 01:07:46 +00003676#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC)
3677 if (s->server || s->session == NULL || s->s3->peer_tmp == NULL) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003678 return 0;
Dr. Stephen Hensonfb79abe2015-12-17 01:07:46 +00003679 } else {
3680 EVP_PKEY_up_ref(s->s3->peer_tmp);
3681 *(EVP_PKEY **)parg = s->s3->peer_tmp;
3682 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00003683 }
Dr. Stephen Hensonfb79abe2015-12-17 01:07:46 +00003684#else
3685 return 0;
3686#endif
Dr. Stephen Henson14536c82013-08-17 17:40:08 +01003687#ifndef OPENSSL_NO_EC
Matt Caswell0f113f32015-01-22 03:40:55 +00003688 case SSL_CTRL_GET_EC_POINT_FORMATS:
3689 {
3690 SSL_SESSION *sess = s->session;
3691 const unsigned char **pformat = parg;
Rich Salzaff8c122016-12-08 14:18:40 -05003692
3693 if (sess == NULL || sess->ext.ecpointformats == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00003694 return 0;
Rich Salzaff8c122016-12-08 14:18:40 -05003695 *pformat = sess->ext.ecpointformats;
3696 return (int)sess->ext.ecpointformats_len;
Matt Caswell0f113f32015-01-22 03:40:55 +00003697 }
Dr. Stephen Henson14536c82013-08-17 17:40:08 +01003698#endif
Bodo Moellercf6da052014-10-15 04:03:28 +02003699
Matt Caswell0f113f32015-01-22 03:40:55 +00003700 default:
3701 break;
3702 }
KaoruToda26a7d932017-10-17 23:04:09 +09003703 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00003704}
Richard Levittea9188d42000-01-18 09:30:51 +00003705
Matt Caswell0f113f32015-01-22 03:40:55 +00003706long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp) (void))
3707{
3708 int ret = 0;
Richard Levitted3442bc2000-02-20 23:43:02 +00003709
Matt Caswell0f113f32015-01-22 03:40:55 +00003710 switch (cmd) {
Richard Levittebc36ee62001-02-20 08:13:47 +00003711#ifndef OPENSSL_NO_DH
Matt Caswell0f113f32015-01-22 03:40:55 +00003712 case SSL_CTRL_SET_TMP_DH_CB:
3713 {
3714 s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
3715 }
3716 break;
Ralf S. Engelschall15d21c21999-02-25 14:40:29 +00003717#endif
Matt Caswell0f113f32015-01-22 03:40:55 +00003718 case SSL_CTRL_SET_TLSEXT_DEBUG_CB:
Rich Salzaff8c122016-12-08 14:18:40 -05003719 s->ext.debug_cb = (void (*)(SSL *, int, int,
Rich Salz1ed327f2017-01-09 12:42:15 -05003720 const unsigned char *, int, void *))fp;
Matt Caswell0f113f32015-01-22 03:40:55 +00003721 break;
Matt Caswelle481f9b2015-05-15 10:49:56 +01003722
Matt Caswell0f113f32015-01-22 03:40:55 +00003723 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB:
3724 {
3725 s->not_resumable_session_cb = (int (*)(SSL *, int))fp;
3726 }
3727 break;
3728 default:
3729 break;
3730 }
KaoruToda26a7d932017-10-17 23:04:09 +09003731 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00003732}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003733
Bodo Möllera661b652001-10-20 17:56:36 +00003734long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
Matt Caswell0f113f32015-01-22 03:40:55 +00003735{
Matt Caswell0f113f32015-01-22 03:40:55 +00003736 switch (cmd) {
Richard Levittebc36ee62001-02-20 08:13:47 +00003737#ifndef OPENSSL_NO_DH
Matt Caswell0f113f32015-01-22 03:40:55 +00003738 case SSL_CTRL_SET_TMP_DH:
3739 {
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003740 DH *dh = (DH *)parg;
3741 EVP_PKEY *pkdh = NULL;
3742 if (dh == NULL) {
3743 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_PASSED_NULL_PARAMETER);
3744 return 0;
3745 }
3746 pkdh = ssl_dh_to_pkey(dh);
3747 if (pkdh == NULL) {
3748 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3749 return 0;
3750 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003751 if (!ssl_ctx_security(ctx, SSL_SECOP_TMP_DH,
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003752 EVP_PKEY_security_bits(pkdh), 0, pkdh)) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003753 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_DH_KEY_TOO_SMALL);
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003754 EVP_PKEY_free(pkdh);
3755 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00003756 }
Dr. Stephen Hensone2b420f2015-12-17 00:05:26 +00003757 EVP_PKEY_free(ctx->cert->dh_tmp);
3758 ctx->cert->dh_tmp = pkdh;
Matt Caswell0f113f32015-01-22 03:40:55 +00003759 return 1;
3760 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003761 case SSL_CTRL_SET_TMP_DH_CB:
3762 {
3763 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
KaoruToda26a7d932017-10-17 23:04:09 +09003764 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00003765 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003766 case SSL_CTRL_SET_DH_AUTO:
3767 ctx->cert->dh_tmp_auto = larg;
3768 return 1;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003769#endif
Rich Salz10bf4fc2015-03-10 19:09:27 -04003770#ifndef OPENSSL_NO_EC
Matt Caswell0f113f32015-01-22 03:40:55 +00003771 case SSL_CTRL_SET_TMP_ECDH:
3772 {
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003773 const EC_GROUP *group = NULL;
3774 int nid;
Bodo Möllerea262262002-08-09 08:56:08 +00003775
Matt Caswell0f113f32015-01-22 03:40:55 +00003776 if (parg == NULL) {
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003777 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_PASSED_NULL_PARAMETER);
Matt Caswell0f113f32015-01-22 03:40:55 +00003778 return 0;
3779 }
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003780 group = EC_KEY_get0_group((const EC_KEY *)parg);
3781 if (group == NULL) {
3782 SSLerr(SSL_F_SSL3_CTX_CTRL, EC_R_MISSING_PARAMETERS);
Matt Caswell0f113f32015-01-22 03:40:55 +00003783 return 0;
3784 }
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003785 nid = EC_GROUP_get_curve_name(group);
3786 if (nid == NID_undef)
3787 return 0;
Rich Salzaff8c122016-12-08 14:18:40 -05003788 return tls1_set_groups(&ctx->ext.supportedgroups,
3789 &ctx->ext.supportedgroups_len,
Kurt Roeckx6977e8e2015-12-04 22:25:11 +01003790 &nid, 1);
Matt Caswell0f113f32015-01-22 03:40:55 +00003791 }
Rich Salz10bf4fc2015-03-10 19:09:27 -04003792#endif /* !OPENSSL_NO_EC */
Matt Caswell0f113f32015-01-22 03:40:55 +00003793 case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG:
Rich Salzaff8c122016-12-08 14:18:40 -05003794 ctx->ext.servername_arg = parg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003795 break;
3796 case SSL_CTRL_SET_TLSEXT_TICKET_KEYS:
3797 case SSL_CTRL_GET_TLSEXT_TICKET_KEYS:
3798 {
3799 unsigned char *keys = parg;
Rich Salzaff8c122016-12-08 14:18:40 -05003800 long tick_keylen = (sizeof(ctx->ext.tick_key_name) +
Todd Short4bfb96f2018-03-19 10:50:51 -04003801 sizeof(ctx->ext.secure->tick_hmac_key) +
3802 sizeof(ctx->ext.secure->tick_aes_key));
Kurt Roeckxd1397232016-03-02 14:39:14 +01003803 if (keys == NULL)
Rich Salzaff8c122016-12-08 14:18:40 -05003804 return tick_keylen;
3805 if (larg != tick_keylen) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003806 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_TICKET_KEYS_LENGTH);
3807 return 0;
3808 }
3809 if (cmd == SSL_CTRL_SET_TLSEXT_TICKET_KEYS) {
Rich Salzaff8c122016-12-08 14:18:40 -05003810 memcpy(ctx->ext.tick_key_name, keys,
3811 sizeof(ctx->ext.tick_key_name));
Todd Short4bfb96f2018-03-19 10:50:51 -04003812 memcpy(ctx->ext.secure->tick_hmac_key,
Rich Salzaff8c122016-12-08 14:18:40 -05003813 keys + sizeof(ctx->ext.tick_key_name),
Todd Short4bfb96f2018-03-19 10:50:51 -04003814 sizeof(ctx->ext.secure->tick_hmac_key));
3815 memcpy(ctx->ext.secure->tick_aes_key,
Rich Salzaff8c122016-12-08 14:18:40 -05003816 keys + sizeof(ctx->ext.tick_key_name) +
Todd Short4bfb96f2018-03-19 10:50:51 -04003817 sizeof(ctx->ext.secure->tick_hmac_key),
3818 sizeof(ctx->ext.secure->tick_aes_key));
Matt Caswell0f113f32015-01-22 03:40:55 +00003819 } else {
Rich Salzaff8c122016-12-08 14:18:40 -05003820 memcpy(keys, ctx->ext.tick_key_name,
3821 sizeof(ctx->ext.tick_key_name));
3822 memcpy(keys + sizeof(ctx->ext.tick_key_name),
Todd Short4bfb96f2018-03-19 10:50:51 -04003823 ctx->ext.secure->tick_hmac_key,
3824 sizeof(ctx->ext.secure->tick_hmac_key));
Rich Salzaff8c122016-12-08 14:18:40 -05003825 memcpy(keys + sizeof(ctx->ext.tick_key_name) +
Todd Short4bfb96f2018-03-19 10:50:51 -04003826 sizeof(ctx->ext.secure->tick_hmac_key),
3827 ctx->ext.secure->tick_aes_key,
3828 sizeof(ctx->ext.secure->tick_aes_key));
Matt Caswell0f113f32015-01-22 03:40:55 +00003829 }
3830 return 1;
3831 }
Bodo Möller761772d2007-09-21 06:54:24 +00003832
Matt Caswell30b96762016-06-07 15:14:14 +01003833 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE:
Rich Salzaff8c122016-12-08 14:18:40 -05003834 return ctx->ext.status_type;
Matt Caswell30b96762016-06-07 15:14:14 +01003835
jfigusba261f72014-12-02 15:44:49 -05003836 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
Rich Salzaff8c122016-12-08 14:18:40 -05003837 ctx->ext.status_type = larg;
jfigusba261f72014-12-02 15:44:49 -05003838 break;
3839
Matt Caswell0f113f32015-01-22 03:40:55 +00003840 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
Rich Salzaff8c122016-12-08 14:18:40 -05003841 ctx->ext.status_arg = parg;
Matt Caswell0f113f32015-01-22 03:40:55 +00003842 return 1;
Dr. Stephen Henson67c8e7f2007-09-26 21:56:59 +00003843
Remi Gacognefddfc0a2016-08-06 12:54:29 +02003844 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG:
Rich Salzaff8c122016-12-08 14:18:40 -05003845 *(void**)parg = ctx->ext.status_arg;
Remi Gacognefddfc0a2016-08-06 12:54:29 +02003846 break;
3847
3848 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB:
Rich Salzaff8c122016-12-08 14:18:40 -05003849 *(int (**)(SSL*, void*))parg = ctx->ext.status_cb;
Remi Gacognefddfc0a2016-08-06 12:54:29 +02003850 break;
3851
Matt Caswelle481f9b2015-05-15 10:49:56 +01003852#ifndef OPENSSL_NO_SRP
Matt Caswell0f113f32015-01-22 03:40:55 +00003853 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME:
3854 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
Rich Salzb548a1f2015-05-01 10:02:07 -04003855 OPENSSL_free(ctx->srp_ctx.login);
Matt Caswell0f113f32015-01-22 03:40:55 +00003856 ctx->srp_ctx.login = NULL;
3857 if (parg == NULL)
3858 break;
Emilia Kaspera230b262016-08-05 19:03:17 +02003859 if (strlen((const char *)parg) > 255 || strlen((const char *)parg) < 1) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003860 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_SRP_USERNAME);
3861 return 0;
3862 }
Rich Salz7644a9a2015-12-16 16:12:24 -05003863 if ((ctx->srp_ctx.login = OPENSSL_strdup((char *)parg)) == NULL) {
Matt Caswell0f113f32015-01-22 03:40:55 +00003864 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_INTERNAL_ERROR);
3865 return 0;
3866 }
3867 break;
3868 case SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD:
3869 ctx->srp_ctx.SRP_give_srp_client_pwd_callback =
3870 srp_password_from_info_cb;
Diego Santa Cruze655f542017-05-15 10:35:45 +02003871 if (ctx->srp_ctx.info != NULL)
3872 OPENSSL_free(ctx->srp_ctx.info);
3873 if ((ctx->srp_ctx.info = BUF_strdup((char *)parg)) == NULL) {
3874 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_INTERNAL_ERROR);
3875 return 0;
3876 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003877 break;
3878 case SSL_CTRL_SET_SRP_ARG:
3879 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
3880 ctx->srp_ctx.SRP_cb_arg = parg;
3881 break;
Ben Laurieedc032b2011-03-12 17:01:19 +00003882
Matt Caswell0f113f32015-01-22 03:40:55 +00003883 case SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH:
3884 ctx->srp_ctx.strength = larg;
3885 break;
Matt Caswelle481f9b2015-05-15 10:49:56 +01003886#endif
Dr. Stephen Hensond0595f12012-03-28 15:05:04 +00003887
Matt Caswelle481f9b2015-05-15 10:49:56 +01003888#ifndef OPENSSL_NO_EC
Matt Caswellde4d7642016-11-09 14:51:06 +00003889 case SSL_CTRL_SET_GROUPS:
Rich Salzaff8c122016-12-08 14:18:40 -05003890 return tls1_set_groups(&ctx->ext.supportedgroups,
3891 &ctx->ext.supportedgroups_len,
Matt Caswell0f113f32015-01-22 03:40:55 +00003892 parg, larg);
Dr. Stephen Hensond0595f12012-03-28 15:05:04 +00003893
Matt Caswellde4d7642016-11-09 14:51:06 +00003894 case SSL_CTRL_SET_GROUPS_LIST:
Rich Salzaff8c122016-12-08 14:18:40 -05003895 return tls1_set_groups_list(&ctx->ext.supportedgroups,
3896 &ctx->ext.supportedgroups_len,
Matt Caswell0f113f32015-01-22 03:40:55 +00003897 parg);
Matt Caswelle481f9b2015-05-15 10:49:56 +01003898#endif
Matt Caswell0f113f32015-01-22 03:40:55 +00003899 case SSL_CTRL_SET_SIGALGS:
3900 return tls1_set_sigalgs(ctx->cert, parg, larg, 0);
Dr. Stephen Henson0f229cc2012-06-22 14:03:31 +00003901
Matt Caswell0f113f32015-01-22 03:40:55 +00003902 case SSL_CTRL_SET_SIGALGS_LIST:
3903 return tls1_set_sigalgs_list(ctx->cert, parg, 0);
Dr. Stephen Henson3dbc46d2012-07-03 12:51:14 +00003904
Matt Caswell0f113f32015-01-22 03:40:55 +00003905 case SSL_CTRL_SET_CLIENT_SIGALGS:
3906 return tls1_set_sigalgs(ctx->cert, parg, larg, 1);
Dr. Stephen Henson3dbc46d2012-07-03 12:51:14 +00003907
Matt Caswell0f113f32015-01-22 03:40:55 +00003908 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST:
3909 return tls1_set_sigalgs_list(ctx->cert, parg, 1);
Dr. Stephen Henson0f229cc2012-06-22 14:03:31 +00003910
Matt Caswell0f113f32015-01-22 03:40:55 +00003911 case SSL_CTRL_SET_CLIENT_CERT_TYPES:
3912 return ssl3_set_req_cert_type(ctx->cert, parg, larg);
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00003913
Matt Caswell0f113f32015-01-22 03:40:55 +00003914 case SSL_CTRL_BUILD_CERT_CHAIN:
3915 return ssl_build_cert_chain(NULL, ctx, larg);
Dr. Stephen Henson74ecfab2012-07-23 23:34:28 +00003916
Matt Caswell0f113f32015-01-22 03:40:55 +00003917 case SSL_CTRL_SET_VERIFY_CERT_STORE:
3918 return ssl_cert_set_cert_store(ctx->cert, parg, 0, larg);
Dr. Stephen Henson74ecfab2012-07-23 23:34:28 +00003919
Matt Caswell0f113f32015-01-22 03:40:55 +00003920 case SSL_CTRL_SET_CHAIN_CERT_STORE:
3921 return ssl_cert_set_cert_store(ctx->cert, parg, 1, larg);
Dr. Stephen Henson74ecfab2012-07-23 23:34:28 +00003922
Matt Caswell0f113f32015-01-22 03:40:55 +00003923 /* A Thawte special :-) */
3924 case SSL_CTRL_EXTRA_CHAIN_CERT:
3925 if (ctx->extra_certs == NULL) {
FdaSilvaYY3c82e432016-06-04 00:15:19 +02003926 if ((ctx->extra_certs = sk_X509_new_null()) == NULL) {
3927 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3928 return 0;
3929 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003930 }
FdaSilvaYY3c82e432016-06-04 00:15:19 +02003931 if (!sk_X509_push(ctx->extra_certs, (X509 *)parg)) {
3932 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3933 return 0;
3934 }
Matt Caswell0f113f32015-01-22 03:40:55 +00003935 break;
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00003936
Matt Caswell0f113f32015-01-22 03:40:55 +00003937 case SSL_CTRL_GET_EXTRA_CHAIN_CERTS:
3938 if (ctx->extra_certs == NULL && larg == 0)
3939 *(STACK_OF(X509) **)parg = ctx->cert->key->chain;
3940 else
3941 *(STACK_OF(X509) **)parg = ctx->extra_certs;
3942 break;
Dr. Stephen Hensonf9b0b452011-12-22 15:14:32 +00003943
Matt Caswell0f113f32015-01-22 03:40:55 +00003944 case SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS:
Rich Salz222561f2015-04-30 17:33:59 -04003945 sk_X509_pop_free(ctx->extra_certs, X509_free);
3946 ctx->extra_certs = NULL;
Matt Caswell0f113f32015-01-22 03:40:55 +00003947 break;
Dr. Stephen Hensonf9b0b452011-12-22 15:14:32 +00003948
Matt Caswell0f113f32015-01-22 03:40:55 +00003949 case SSL_CTRL_CHAIN:
3950 if (larg)
3951 return ssl_cert_set1_chain(NULL, ctx, (STACK_OF(X509) *)parg);
3952 else
3953 return ssl_cert_set0_chain(NULL, ctx, (STACK_OF(X509) *)parg);
Dr. Stephen Hensonf71c6e52012-01-31 14:00:10 +00003954
Matt Caswell0f113f32015-01-22 03:40:55 +00003955 case SSL_CTRL_CHAIN_CERT:
3956 if (larg)
3957 return ssl_cert_add1_chain_cert(NULL, ctx, (X509 *)parg);
3958 else
3959 return ssl_cert_add0_chain_cert(NULL, ctx, (X509 *)parg);
Dr. Stephen Hensonf71c6e52012-01-31 14:00:10 +00003960
Matt Caswell0f113f32015-01-22 03:40:55 +00003961 case SSL_CTRL_GET_CHAIN_CERTS:
3962 *(STACK_OF(X509) **)parg = ctx->cert->key->chain;
3963 break;
Rob Stradling7b6b2462013-11-11 18:04:24 +01003964
Matt Caswell0f113f32015-01-22 03:40:55 +00003965 case SSL_CTRL_SELECT_CURRENT_CERT:
3966 return ssl_cert_select_current(ctx->cert, (X509 *)parg);
Rob Stradling7b6b2462013-11-11 18:04:24 +01003967
Matt Caswell0f113f32015-01-22 03:40:55 +00003968 case SSL_CTRL_SET_CURRENT_CERT:
3969 return ssl_cert_set_current(ctx->cert, larg);
Dr. Stephen Henson0f788192014-02-02 02:51:30 +00003970
Matt Caswell0f113f32015-01-22 03:40:55 +00003971 default:
KaoruToda26a7d932017-10-17 23:04:09 +09003972 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00003973 }
KaoruToda208fb892017-10-09 20:05:58 +09003974 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00003975}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00003976
Matt Caswell0f113f32015-01-22 03:40:55 +00003977long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void))
3978{
Matt Caswell0f113f32015-01-22 03:40:55 +00003979 switch (cmd) {
Richard Levittebc36ee62001-02-20 08:13:47 +00003980#ifndef OPENSSL_NO_DH
Matt Caswell0f113f32015-01-22 03:40:55 +00003981 case SSL_CTRL_SET_TMP_DH_CB:
3982 {
Matt Caswell8ca8fc42015-12-11 22:18:00 +00003983 ctx->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
Matt Caswell0f113f32015-01-22 03:40:55 +00003984 }
3985 break;
Richard Levitted3442bc2000-02-20 23:43:02 +00003986#endif
Matt Caswell0f113f32015-01-22 03:40:55 +00003987 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB:
Rich Salzaff8c122016-12-08 14:18:40 -05003988 ctx->ext.servername_cb = (int (*)(SSL *, int *, void *))fp;
Matt Caswell0f113f32015-01-22 03:40:55 +00003989 break;
Bodo Möller761772d2007-09-21 06:54:24 +00003990
Matt Caswell0f113f32015-01-22 03:40:55 +00003991 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB:
Rich Salzaff8c122016-12-08 14:18:40 -05003992 ctx->ext.status_cb = (int (*)(SSL *, void *))fp;
Matt Caswell0f113f32015-01-22 03:40:55 +00003993 break;
3994
3995 case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB:
Rich Salzaff8c122016-12-08 14:18:40 -05003996 ctx->ext.ticket_key_cb = (int (*)(SSL *, unsigned char *,
Matt Caswell0f113f32015-01-22 03:40:55 +00003997 unsigned char *,
3998 EVP_CIPHER_CTX *,
3999 HMAC_CTX *, int))fp;
4000 break;
4001
Matt Caswelle481f9b2015-05-15 10:49:56 +01004002#ifndef OPENSSL_NO_SRP
Matt Caswell0f113f32015-01-22 03:40:55 +00004003 case SSL_CTRL_SET_SRP_VERIFY_PARAM_CB:
4004 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
4005 ctx->srp_ctx.SRP_verify_param_callback = (int (*)(SSL *, void *))fp;
4006 break;
4007 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB:
4008 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
4009 ctx->srp_ctx.TLS_ext_srp_username_callback =
4010 (int (*)(SSL *, int *, void *))fp;
4011 break;
4012 case SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB:
4013 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
4014 ctx->srp_ctx.SRP_give_srp_client_pwd_callback =
4015 (char *(*)(SSL *, void *))fp;
4016 break;
Bodo Möller761772d2007-09-21 06:54:24 +00004017#endif
Matt Caswell0f113f32015-01-22 03:40:55 +00004018 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB:
4019 {
4020 ctx->not_resumable_session_cb = (int (*)(SSL *, int))fp;
4021 }
4022 break;
4023 default:
KaoruToda26a7d932017-10-17 23:04:09 +09004024 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00004025 }
KaoruToda208fb892017-10-09 20:05:58 +09004026 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00004027}
Bodo Möller761772d2007-09-21 06:54:24 +00004028
Matt Caswellec15acb2017-01-13 17:00:49 +00004029const SSL_CIPHER *ssl3_get_cipher_by_id(uint32_t id)
4030{
4031 SSL_CIPHER c;
Benjamin Kaduk650c6e42017-02-03 17:17:21 -06004032 const SSL_CIPHER *cp;
Matt Caswellec15acb2017-01-13 17:00:49 +00004033
4034 c.id = id;
Matt Caswellf865b082018-02-16 11:26:02 +00004035 cp = OBJ_bsearch_ssl_cipher_id(&c, tls13_ciphers, TLS13_NUM_CIPHERS);
4036 if (cp != NULL)
4037 return cp;
Benjamin Kaduk650c6e42017-02-03 17:17:21 -06004038 cp = OBJ_bsearch_ssl_cipher_id(&c, ssl3_ciphers, SSL3_NUM_CIPHERS);
4039 if (cp != NULL)
4040 return cp;
4041 return OBJ_bsearch_ssl_cipher_id(&c, ssl3_scsvs, SSL3_NUM_SCSVS);
Matt Caswellec15acb2017-01-13 17:00:49 +00004042}
4043
Paul Yangbbb4ceb2017-06-30 03:06:19 +08004044const SSL_CIPHER *ssl3_get_cipher_by_std_name(const char *stdname)
4045{
Matt Caswellf865b082018-02-16 11:26:02 +00004046 SSL_CIPHER *c = NULL, *tbl;
4047 SSL_CIPHER *alltabs[] = {tls13_ciphers, ssl3_ciphers};
4048 size_t i, j, tblsize[] = {TLS13_NUM_CIPHERS, SSL3_NUM_CIPHERS};
Paul Yangbbb4ceb2017-06-30 03:06:19 +08004049
Xiaoyin Liu3519bae2017-07-30 18:43:19 -04004050 /* this is not efficient, necessary to optimize this? */
Matt Caswellf865b082018-02-16 11:26:02 +00004051 for (j = 0; j < OSSL_NELEM(alltabs); j++) {
4052 for (i = 0, tbl = alltabs[j]; i < tblsize[j]; i++, tbl++) {
4053 if (tbl->stdname == NULL)
4054 continue;
4055 if (strcmp(stdname, tbl->stdname) == 0) {
4056 c = tbl;
4057 break;
4058 }
Paul Yangbbb4ceb2017-06-30 03:06:19 +08004059 }
4060 }
4061 if (c == NULL) {
4062 tbl = ssl3_scsvs;
4063 for (i = 0; i < SSL3_NUM_SCSVS; i++, tbl++) {
4064 if (strcmp(stdname, tbl->stdname) == 0) {
4065 c = tbl;
4066 break;
4067 }
4068 }
4069 }
4070 return c;
4071}
4072
Matt Caswell0f113f32015-01-22 03:40:55 +00004073/*
4074 * This function needs to check if the ciphers required are actually
4075 * available
4076 */
Ben Lauriebabb3792008-10-12 14:32:47 +00004077const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p)
Matt Caswell0f113f32015-01-22 03:40:55 +00004078{
Matt Caswell1f5b44e2017-01-20 16:02:07 +00004079 return ssl3_get_cipher_by_id(SSL3_CK_CIPHERSUITE_FLAG
Matt Caswellec15acb2017-01-13 17:00:49 +00004080 | ((uint32_t)p[0] << 8L)
4081 | (uint32_t)p[1]);
Matt Caswell0f113f32015-01-22 03:40:55 +00004082}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004083
Matt Caswellae2f7b32016-09-05 17:34:04 +01004084int ssl3_put_cipher_by_char(const SSL_CIPHER *c, WPACKET *pkt, size_t *len)
Matt Caswell2c7b4db2016-08-03 20:57:52 +01004085{
Matt Caswell34f72452017-01-27 11:58:04 +00004086 if ((c->id & 0xff000000) != SSL3_CK_CIPHERSUITE_FLAG) {
Matt Caswell2c7b4db2016-08-03 20:57:52 +01004087 *len = 0;
4088 return 1;
4089 }
4090
Matt Caswell08029df2016-09-20 14:47:44 +01004091 if (!WPACKET_put_bytes_u16(pkt, c->id & 0xffff))
Matt Caswell2c7b4db2016-08-03 20:57:52 +01004092 return 0;
4093
4094 *len = 2;
4095 return 1;
4096}
4097
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01004098/*
4099 * ssl3_choose_cipher - choose a cipher from those offered by the client
4100 * @s: SSL connection
4101 * @clnt: ciphers offered by the client
4102 * @srvr: ciphers enabled on the server?
4103 *
4104 * Returns the selected cipher or NULL when no common ciphers.
4105 */
Dr. Stephen Henson4a640fb2015-12-23 00:47:28 +00004106const SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
Emilia Kaspera230b262016-08-05 19:03:17 +02004107 STACK_OF(SSL_CIPHER) *srvr)
Matt Caswell0f113f32015-01-22 03:40:55 +00004108{
Dr. Stephen Henson4a640fb2015-12-23 00:47:28 +00004109 const SSL_CIPHER *c, *ret = NULL;
Matt Caswell0f113f32015-01-22 03:40:55 +00004110 STACK_OF(SSL_CIPHER) *prio, *allow;
Matt Caswell48a03162018-05-10 11:51:45 +01004111 int i, ii, ok, prefer_sha256 = 0;
Matt Caswell0de6d662017-06-06 17:19:32 +01004112 unsigned long alg_k = 0, alg_a = 0, mask_k = 0, mask_a = 0;
Matt Caswell48a03162018-05-10 11:51:45 +01004113 const EVP_MD *mdsha256 = EVP_sha256();
Todd Shorte1c78712015-12-21 15:19:29 -05004114#ifndef OPENSSL_NO_CHACHA
4115 STACK_OF(SSL_CIPHER) *prio_chacha = NULL;
4116#endif
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004117
Matt Caswell0f113f32015-01-22 03:40:55 +00004118 /* Let's see which ciphers we can support */
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004119
Matt Caswell0f113f32015-01-22 03:40:55 +00004120 /*
4121 * Do not set the compare functions, because this may lead to a
4122 * reordering by "id". We want to keep the original ordering. We may pay
4123 * a price in performance during sk_SSL_CIPHER_find(), but would have to
4124 * pay with the price of sk_SSL_CIPHER_dup().
4125 */
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004126
Ben Laurief415fa31999-03-06 14:09:36 +00004127#ifdef CIPHER_DEBUG
Matt Caswell0f113f32015-01-22 03:40:55 +00004128 fprintf(stderr, "Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr),
4129 (void *)srvr);
4130 for (i = 0; i < sk_SSL_CIPHER_num(srvr); ++i) {
4131 c = sk_SSL_CIPHER_value(srvr, i);
4132 fprintf(stderr, "%p:%s\n", (void *)c, c->name);
4133 }
4134 fprintf(stderr, "Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt),
4135 (void *)clnt);
4136 for (i = 0; i < sk_SSL_CIPHER_num(clnt); ++i) {
4137 c = sk_SSL_CIPHER_value(clnt, i);
4138 fprintf(stderr, "%p:%s\n", (void *)c, c->name);
4139 }
Ben Laurief415fa31999-03-06 14:09:36 +00004140#endif
4141
Todd Shorte1c78712015-12-21 15:19:29 -05004142 /* SUITE-B takes precedence over server preference and ChaCha priortiy */
4143 if (tls1_suiteb(s)) {
Matt Caswell0f113f32015-01-22 03:40:55 +00004144 prio = srvr;
4145 allow = clnt;
Todd Shorte1c78712015-12-21 15:19:29 -05004146 } else if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) {
4147 prio = srvr;
4148 allow = clnt;
4149#ifndef OPENSSL_NO_CHACHA
4150 /* If ChaCha20 is at the top of the client preference list,
4151 and there are ChaCha20 ciphers in the server list, then
4152 temporarily prioritize all ChaCha20 ciphers in the servers list. */
4153 if (s->options & SSL_OP_PRIORITIZE_CHACHA && sk_SSL_CIPHER_num(clnt) > 0) {
4154 c = sk_SSL_CIPHER_value(clnt, 0);
4155 if (c->algorithm_enc == SSL_CHACHA20POLY1305) {
4156 /* ChaCha20 is client preferred, check server... */
4157 int num = sk_SSL_CIPHER_num(srvr);
4158 int found = 0;
4159 for (i = 0; i < num; i++) {
4160 c = sk_SSL_CIPHER_value(srvr, i);
4161 if (c->algorithm_enc == SSL_CHACHA20POLY1305) {
4162 found = 1;
4163 break;
4164 }
4165 }
4166 if (found) {
Todd Shorte670e902017-10-04 09:15:19 -04004167 prio_chacha = sk_SSL_CIPHER_new_reserve(NULL, num);
Todd Shorte1c78712015-12-21 15:19:29 -05004168 /* if reserve fails, then there's likely a memory issue */
4169 if (prio_chacha != NULL) {
4170 /* Put all ChaCha20 at the top, starting with the one we just found */
4171 sk_SSL_CIPHER_push(prio_chacha, c);
4172 for (i++; i < num; i++) {
4173 c = sk_SSL_CIPHER_value(srvr, i);
4174 if (c->algorithm_enc == SSL_CHACHA20POLY1305)
4175 sk_SSL_CIPHER_push(prio_chacha, c);
4176 }
4177 /* Pull in the rest */
4178 for (i = 0; i < num; i++) {
4179 c = sk_SSL_CIPHER_value(srvr, i);
4180 if (c->algorithm_enc != SSL_CHACHA20POLY1305)
4181 sk_SSL_CIPHER_push(prio_chacha, c);
4182 }
4183 prio = prio_chacha;
4184 }
4185 }
4186 }
4187 }
4188# endif
Matt Caswell0f113f32015-01-22 03:40:55 +00004189 } else {
4190 prio = clnt;
4191 allow = srvr;
4192 }
Lutz Jänicke836f9962001-02-09 19:56:31 +00004193
Matt Caswell48a03162018-05-10 11:51:45 +01004194 if (SSL_IS_TLS13(s)) {
4195 int j;
4196
4197 /*
4198 * If we allow "old" style PSK callbacks, and we have no certificate (so
4199 * we're not going to succeed without a PSK anyway), and we're in
4200 * TLSv1.3 then the default hash for a PSK is SHA-256 (as per the
4201 * TLSv1.3 spec). Therefore we should prioritise ciphersuites using
4202 * that.
4203 */
4204 if (s->psk_server_callback != NULL) {
4205 for (j = 0; j < SSL_PKEY_NUM && !ssl_has_cert(s, j); j++);
4206 if (j == SSL_PKEY_NUM) {
4207 /* There are no certificates */
4208 prefer_sha256 = 1;
4209 }
4210 }
4211 } else {
Matt Caswell0de6d662017-06-06 17:19:32 +01004212 tls1_set_cert_validity(s);
4213 ssl_set_masks(s);
4214 }
Dr. Stephen Hensond61ff832012-06-28 12:45:49 +00004215
Matt Caswell0f113f32015-01-22 03:40:55 +00004216 for (i = 0; i < sk_SSL_CIPHER_num(prio); i++) {
4217 c = sk_SSL_CIPHER_value(prio, i);
Ben Laurie60e31c31999-02-21 21:58:59 +00004218
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01004219 /* Skip ciphers not supported by the protocol version */
4220 if (!SSL_IS_DTLS(s) &&
Emilia Kaspera230b262016-08-05 19:03:17 +02004221 ((s->version < c->min_tls) || (s->version > c->max_tls)))
Matt Caswell0f113f32015-01-22 03:40:55 +00004222 continue;
Kurt Roeckx3eb2aff2016-02-07 20:17:07 +01004223 if (SSL_IS_DTLS(s) &&
Emilia Kaspera230b262016-08-05 19:03:17 +02004224 (DTLS_VERSION_LT(s->version, c->min_dtls) ||
4225 DTLS_VERSION_GT(s->version, c->max_dtls)))
Dr. Stephen Henson2b573382015-11-13 14:37:24 +00004226 continue;
Matt Caswella055a882017-05-26 17:59:34 +01004227
Matt Caswell0de6d662017-06-06 17:19:32 +01004228 /*
4229 * Since TLS 1.3 ciphersuites can be used with any auth or
4230 * key exchange scheme skip tests.
4231 */
4232 if (!SSL_IS_TLS13(s)) {
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004233 mask_k = s->s3->tmp.mask_k;
4234 mask_a = s->s3->tmp.mask_a;
Ben Laurieedc032b2011-03-12 17:01:19 +00004235#ifndef OPENSSL_NO_SRP
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004236 if (s->srp_ctx.srp_Mask & SSL_kSRP) {
4237 mask_k |= SSL_kSRP;
4238 mask_a |= SSL_aSRP;
4239 }
Ben Laurieedc032b2011-03-12 17:01:19 +00004240#endif
Richard Levittef9b3bff2000-11-30 22:53:34 +00004241
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004242 alg_k = c->algorithm_mkey;
4243 alg_a = c->algorithm_auth;
Bodo Möller52b8dad2007-02-17 06:45:38 +00004244
Nils Larschddac1972006-03-10 23:06:27 +00004245#ifndef OPENSSL_NO_PSK
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004246 /* with PSK there must be server callback set */
4247 if ((alg_k & SSL_PSK) && s->psk_server_callback == NULL)
4248 continue;
Matt Caswell0f113f32015-01-22 03:40:55 +00004249#endif /* OPENSSL_NO_PSK */
Nils Larschddac1972006-03-10 23:06:27 +00004250
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004251 ok = (alg_k & mask_k) && (alg_a & mask_a);
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004252#ifdef CIPHER_DEBUG
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004253 fprintf(stderr, "%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n", ok, alg_k,
4254 alg_a, mask_k, mask_a, (void *)c, c->name);
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004255#endif
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004256
Emilia Kaspera230b262016-08-05 19:03:17 +02004257#ifndef OPENSSL_NO_EC
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004258 /*
4259 * if we are considering an ECC cipher suite that uses an ephemeral
4260 * EC key check it
4261 */
4262 if (alg_k & SSL_kECDHE)
4263 ok = ok && tls1_check_ec_tmp_key(s, c->id);
Emilia Kaspera230b262016-08-05 19:03:17 +02004264#endif /* OPENSSL_NO_EC */
Bodo Möllerf393b742006-03-30 02:35:09 +00004265
Dr. Stephen Henson612ca802017-01-31 18:59:31 +00004266 if (!ok)
4267 continue;
4268 }
Matt Caswell0f113f32015-01-22 03:40:55 +00004269 ii = sk_SSL_CIPHER_find(allow, c);
4270 if (ii >= 0) {
4271 /* Check security callback permits this cipher */
4272 if (!ssl_security(s, SSL_SECOP_CIPHER_SHARED,
Dr. Stephen Henson4a640fb2015-12-23 00:47:28 +00004273 c->strength_bits, 0, (void *)c))
Matt Caswell0f113f32015-01-22 03:40:55 +00004274 continue;
Matt Caswelle481f9b2015-05-15 10:49:56 +01004275#if !defined(OPENSSL_NO_EC)
Matt Caswell0f113f32015-01-22 03:40:55 +00004276 if ((alg_k & SSL_kECDHE) && (alg_a & SSL_aECDSA)
4277 && s->s3->is_probably_safari) {
4278 if (!ret)
4279 ret = sk_SSL_CIPHER_value(allow, ii);
4280 continue;
4281 }
Rob Stradlingd89cd382013-09-10 12:20:29 +01004282#endif
Matt Caswell48a03162018-05-10 11:51:45 +01004283 if (prefer_sha256) {
4284 const SSL_CIPHER *tmp = sk_SSL_CIPHER_value(allow, ii);
4285
4286 if (ssl_md(tmp->algorithm2) == mdsha256) {
4287 ret = tmp;
4288 break;
4289 }
4290 if (ret == NULL)
4291 ret = tmp;
4292 continue;
4293 }
Matt Caswell0f113f32015-01-22 03:40:55 +00004294 ret = sk_SSL_CIPHER_value(allow, ii);
4295 break;
4296 }
4297 }
Todd Shorte1c78712015-12-21 15:19:29 -05004298#ifndef OPENSSL_NO_CHACHA
4299 sk_SSL_CIPHER_free(prio_chacha);
4300#endif
KaoruToda26a7d932017-10-17 23:04:09 +09004301 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00004302}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004303
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004304int ssl3_get_req_cert_type(SSL *s, WPACKET *pkt)
Matt Caswell0f113f32015-01-22 03:40:55 +00004305{
Dr. Stephen Henson90d9e492015-11-05 16:14:17 +00004306 uint32_t alg_k, alg_a = 0;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004307
Matt Caswell0f113f32015-01-22 03:40:55 +00004308 /* If we have custom certificate types set, use them */
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00004309 if (s->cert->ctype)
4310 return WPACKET_memcpy(pkt, s->cert->ctype, s->cert->ctype_len);
Matt Caswell0f113f32015-01-22 03:40:55 +00004311 /* Get mask of algorithms disabled by signature list */
4312 ssl_set_sig_mask(&alg_a, s, SSL_SECOP_SIGALG_MASK);
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00004313
Matt Caswell0f113f32015-01-22 03:40:55 +00004314 alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004315
Dr. Stephen Hensoncaa97ef2009-05-28 18:11:29 +00004316#ifndef OPENSSL_NO_GOST
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004317 if (s->version >= TLS1_VERSION && (alg_k & SSL_kGOST))
4318 return WPACKET_put_bytes_u8(pkt, TLS_CT_GOST01_SIGN)
4319 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_SIGN)
4320 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_512_SIGN);
Dr. Stephen Hensoncaa97ef2009-05-28 18:11:29 +00004321#endif
4322
Dr. Stephen Hensonbc71f912015-12-15 23:57:18 +00004323 if ((s->version == SSL3_VERSION) && (alg_k & SSL_kDHE)) {
Richard Levittebc36ee62001-02-20 08:13:47 +00004324#ifndef OPENSSL_NO_DH
Matt Caswell0f113f32015-01-22 03:40:55 +00004325# ifndef OPENSSL_NO_RSA
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004326 if (!WPACKET_put_bytes_u8(pkt, SSL3_CT_RSA_EPHEMERAL_DH))
4327 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00004328# endif
4329# ifndef OPENSSL_NO_DSA
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004330 if (!WPACKET_put_bytes_u8(pkt, SSL3_CT_DSS_EPHEMERAL_DH))
4331 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00004332# endif
Matt Caswell0f113f32015-01-22 03:40:55 +00004333#endif /* !OPENSSL_NO_DH */
Ben Laurie1e0784f2016-01-01 15:39:31 +00004334 }
Richard Levittebc36ee62001-02-20 08:13:47 +00004335#ifndef OPENSSL_NO_RSA
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004336 if (!(alg_a & SSL_aRSA) && !WPACKET_put_bytes_u8(pkt, SSL3_CT_RSA_SIGN))
4337 return 0;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004338#endif
Richard Levittebc36ee62001-02-20 08:13:47 +00004339#ifndef OPENSSL_NO_DSA
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004340 if (!(alg_a & SSL_aDSS) && !WPACKET_put_bytes_u8(pkt, SSL3_CT_DSS_SIGN))
4341 return 0;
Ralf S. Engelschalldfeab061998-12-21 11:00:56 +00004342#endif
Rich Salz10bf4fc2015-03-10 19:09:27 -04004343#ifndef OPENSSL_NO_EC
Matt Caswell0f113f32015-01-22 03:40:55 +00004344 /*
Dr. Stephen Hensonc66ce5e2015-12-12 17:41:18 +00004345 * ECDSA certs can be used with RSA cipher suites too so we don't
Matt Caswell0f113f32015-01-22 03:40:55 +00004346 * need to check for SSL_kECDH or SSL_kECDHE
4347 */
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004348 if (s->version >= TLS1_VERSION
4349 && !(alg_a & SSL_aECDSA)
4350 && !WPACKET_put_bytes_u8(pkt, TLS_CT_ECDSA_SIGN))
4351 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00004352#endif
Matt Caswell28ff8ef2016-09-29 14:25:52 +01004353 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00004354}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004355
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00004356static int ssl3_set_req_cert_type(CERT *c, const unsigned char *p, size_t len)
Matt Caswell0f113f32015-01-22 03:40:55 +00004357{
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00004358 OPENSSL_free(c->ctype);
4359 c->ctype = NULL;
4360 c->ctype_len = 0;
4361 if (p == NULL || len == 0)
Matt Caswell0f113f32015-01-22 03:40:55 +00004362 return 1;
4363 if (len > 0xff)
4364 return 0;
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00004365 c->ctype = OPENSSL_memdup(p, len);
4366 if (c->ctype == NULL)
Matt Caswell0f113f32015-01-22 03:40:55 +00004367 return 0;
Dr. Stephen Henson75c13e72017-02-23 22:12:28 +00004368 c->ctype_len = len;
Matt Caswell0f113f32015-01-22 03:40:55 +00004369 return 1;
4370}
Dr. Stephen Henson9f27b1e2012-07-08 14:22:45 +00004371
Ulf Möller6b691a51999-04-19 21:31:43 +00004372int ssl3_shutdown(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00004373{
4374 int ret;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004375
Matt Caswell0f113f32015-01-22 03:40:55 +00004376 /*
4377 * Don't do anything much if we have not done the handshake or we don't
4378 * want to send messages :-)
4379 */
Matt Caswellc874def2015-10-05 10:41:13 +01004380 if (s->quiet_shutdown || SSL_in_before(s)) {
Matt Caswell0f113f32015-01-22 03:40:55 +00004381 s->shutdown = (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN);
KaoruToda208fb892017-10-09 20:05:58 +09004382 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00004383 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004384
Matt Caswell0f113f32015-01-22 03:40:55 +00004385 if (!(s->shutdown & SSL_SENT_SHUTDOWN)) {
4386 s->shutdown |= SSL_SENT_SHUTDOWN;
Matt Caswell0f113f32015-01-22 03:40:55 +00004387 ssl3_send_alert(s, SSL3_AL_WARNING, SSL_AD_CLOSE_NOTIFY);
Matt Caswell0f113f32015-01-22 03:40:55 +00004388 /*
4389 * our shutdown alert has been sent now, and if it still needs to be
4390 * written, s->s3->alert_dispatch will be true
4391 */
4392 if (s->s3->alert_dispatch)
KaoruToda26a7d932017-10-17 23:04:09 +09004393 return -1; /* return WANT_WRITE */
Matt Caswell0f113f32015-01-22 03:40:55 +00004394 } else if (s->s3->alert_dispatch) {
4395 /* resend it if not sent */
Matt Caswell0f113f32015-01-22 03:40:55 +00004396 ret = s->method->ssl_dispatch_alert(s);
4397 if (ret == -1) {
4398 /*
4399 * we only get to return -1 here the 2nd/Nth invocation, we must
FdaSilvaYY8483a002016-03-10 21:34:48 +01004400 * have already signalled return 0 upon a previous invocation,
Matt Caswell0f113f32015-01-22 03:40:55 +00004401 * return WANT_WRITE
4402 */
KaoruToda26a7d932017-10-17 23:04:09 +09004403 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00004404 }
Matt Caswell0f113f32015-01-22 03:40:55 +00004405 } else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) {
Matt Caswell54105dd2016-10-26 10:43:34 +01004406 size_t readbytes;
Matt Caswell0f113f32015-01-22 03:40:55 +00004407 /*
4408 * If we are waiting for a close from our peer, we are closed
4409 */
Matt Caswell54105dd2016-10-26 10:43:34 +01004410 s->method->ssl_read_bytes(s, 0, NULL, NULL, 0, 0, &readbytes);
Matt Caswell0f113f32015-01-22 03:40:55 +00004411 if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) {
Matt Caswelleda75752016-09-06 12:05:25 +01004412 return -1; /* return WANT_READ */
Matt Caswell0f113f32015-01-22 03:40:55 +00004413 }
4414 }
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004415
Matt Caswell0f113f32015-01-22 03:40:55 +00004416 if ((s->shutdown == (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN)) &&
4417 !s->s3->alert_dispatch)
KaoruToda208fb892017-10-09 20:05:58 +09004418 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00004419 else
KaoruToda26a7d932017-10-17 23:04:09 +09004420 return 0;
Matt Caswell0f113f32015-01-22 03:40:55 +00004421}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004422
Matt Caswell7ee86272016-09-07 11:34:39 +01004423int ssl3_write(SSL *s, const void *buf, size_t len, size_t *written)
Matt Caswell0f113f32015-01-22 03:40:55 +00004424{
Matt Caswell0f113f32015-01-22 03:40:55 +00004425 clear_sys_error();
4426 if (s->s3->renegotiate)
Matt Caswellc7f47782017-01-10 23:02:28 +00004427 ssl3_renegotiate_check(s, 0);
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004428
Matt Caswell7ee86272016-09-07 11:34:39 +01004429 return s->method->ssl_write_bytes(s, SSL3_RT_APPLICATION_DATA, buf, len,
4430 written);
Matt Caswell0f113f32015-01-22 03:40:55 +00004431}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004432
Matt Caswelleda75752016-09-06 12:05:25 +01004433static int ssl3_read_internal(SSL *s, void *buf, size_t len, int peek,
Matt Caswell54105dd2016-10-26 10:43:34 +01004434 size_t *readbytes)
Matt Caswell0f113f32015-01-22 03:40:55 +00004435{
4436 int ret;
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00004437
Matt Caswell0f113f32015-01-22 03:40:55 +00004438 clear_sys_error();
4439 if (s->s3->renegotiate)
Matt Caswellc7f47782017-01-10 23:02:28 +00004440 ssl3_renegotiate_check(s, 0);
Matt Caswell0f113f32015-01-22 03:40:55 +00004441 s->s3->in_read_app_data = 1;
4442 ret =
Matt Caswell657da852015-05-11 09:35:41 +01004443 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf, len,
Matt Caswell54105dd2016-10-26 10:43:34 +01004444 peek, readbytes);
Matt Caswell0f113f32015-01-22 03:40:55 +00004445 if ((ret == -1) && (s->s3->in_read_app_data == 2)) {
4446 /*
4447 * ssl3_read_bytes decided to call s->handshake_func, which called
4448 * ssl3_read_bytes to read handshake data. However, ssl3_read_bytes
4449 * actually found application data and thinks that application data
4450 * makes sense here; so disable handshake processing and try to read
4451 * application data again.
4452 */
Matt Caswell024f5432015-10-22 13:57:18 +01004453 ossl_statem_set_in_handshake(s, 1);
Matt Caswell0f113f32015-01-22 03:40:55 +00004454 ret =
Matt Caswell657da852015-05-11 09:35:41 +01004455 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf,
Matt Caswell54105dd2016-10-26 10:43:34 +01004456 len, peek, readbytes);
Matt Caswell024f5432015-10-22 13:57:18 +01004457 ossl_statem_set_in_handshake(s, 0);
Matt Caswell0f113f32015-01-22 03:40:55 +00004458 } else
4459 s->s3->in_read_app_data = 0;
4460
Matt Caswelleda75752016-09-06 12:05:25 +01004461 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00004462}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004463
Matt Caswell54105dd2016-10-26 10:43:34 +01004464int ssl3_read(SSL *s, void *buf, size_t len, size_t *readbytes)
Matt Caswell0f113f32015-01-22 03:40:55 +00004465{
Matt Caswell54105dd2016-10-26 10:43:34 +01004466 return ssl3_read_internal(s, buf, len, 0, readbytes);
Matt Caswell0f113f32015-01-22 03:40:55 +00004467}
Bodo Möller5a4fbc62000-12-14 17:36:59 +00004468
Matt Caswell54105dd2016-10-26 10:43:34 +01004469int ssl3_peek(SSL *s, void *buf, size_t len, size_t *readbytes)
Matt Caswell0f113f32015-01-22 03:40:55 +00004470{
Matt Caswell54105dd2016-10-26 10:43:34 +01004471 return ssl3_read_internal(s, buf, len, 1, readbytes);
Matt Caswell0f113f32015-01-22 03:40:55 +00004472}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004473
Ulf Möller6b691a51999-04-19 21:31:43 +00004474int ssl3_renegotiate(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00004475{
4476 if (s->handshake_func == NULL)
KaoruToda208fb892017-10-09 20:05:58 +09004477 return 1;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004478
Matt Caswell0f113f32015-01-22 03:40:55 +00004479 s->s3->renegotiate = 1;
KaoruToda208fb892017-10-09 20:05:58 +09004480 return 1;
Matt Caswell0f113f32015-01-22 03:40:55 +00004481}
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00004482
Matt Caswellc7f47782017-01-10 23:02:28 +00004483/*
4484 * Check if we are waiting to do a renegotiation and if so whether now is a
4485 * good time to do it. If |initok| is true then we are being called from inside
4486 * the state machine so ignore the result of SSL_in_init(s). Otherwise we
4487 * should not do a renegotiation if SSL_in_init(s) is true. Returns 1 if we
4488 * should do a renegotiation now and sets up the state machine for it. Otherwise
4489 * returns 0.
4490 */
4491int ssl3_renegotiate_check(SSL *s, int initok)
Matt Caswell0f113f32015-01-22 03:40:55 +00004492{
4493 int ret = 0;
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00004494
Matt Caswell0f113f32015-01-22 03:40:55 +00004495 if (s->s3->renegotiate) {
Matt Caswellf1619952015-02-02 12:18:03 +00004496 if (!RECORD_LAYER_read_pending(&s->rlayer)
4497 && !RECORD_LAYER_write_pending(&s->rlayer)
Matt Caswellc7f47782017-01-10 23:02:28 +00004498 && (initok || !SSL_in_init(s))) {
Matt Caswell0f113f32015-01-22 03:40:55 +00004499 /*
4500 * if we are the server, and we have sent a 'RENEGOTIATE'
Matt Caswell49ae7422015-09-08 09:13:50 +01004501 * message, we need to set the state machine into the renegotiate
4502 * state.
Matt Caswell0f113f32015-01-22 03:40:55 +00004503 */
Matt Caswellfe3a3292015-10-05 10:39:54 +01004504 ossl_statem_set_renegotiate(s);
Matt Caswell0f113f32015-01-22 03:40:55 +00004505 s->s3->renegotiate = 0;
4506 s->s3->num_renegotiations++;
4507 s->s3->total_renegotiations++;
4508 ret = 1;
4509 }
4510 }
Matt Caswellc7f47782017-01-10 23:02:28 +00004511 return ret;
Matt Caswell0f113f32015-01-22 03:40:55 +00004512}
4513
Ralf S. Engelschall58964a41998-12-21 10:56:39 +00004514/*
Matt Caswell0f113f32015-01-22 03:40:55 +00004515 * If we are using default SHA1+MD5 algorithms switch to new SHA256 PRF and
4516 * handshake macs if required.
Dr. Stephen Henson12053a82015-06-28 23:18:59 +01004517 *
4518 * If PSK and using SHA384 for TLS < 1.2 switch to default.
Dr. Stephen Henson7409d7a2011-04-29 22:56:51 +00004519 */
4520long ssl_get_algorithm2(SSL *s)
Matt Caswell0f113f32015-01-22 03:40:55 +00004521{
Dr. Stephen Henson52eede52016-07-19 16:03:10 +01004522 long alg2;
4523 if (s->s3 == NULL || s->s3->tmp.new_cipher == NULL)
4524 return -1;
4525 alg2 = s->s3->tmp.new_cipher->algorithm2;
Dr. Stephen Henson12053a82015-06-28 23:18:59 +01004526 if (s->method->ssl3_enc->enc_flags & SSL_ENC_FLAG_SHA256_PRF) {
4527 if (alg2 == (SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF))
4528 return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256;
4529 } else if (s->s3->tmp.new_cipher->algorithm_mkey & SSL_PSK) {
4530 if (alg2 == (SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384))
4531 return SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF;
4532 }
Matt Caswell0f113f32015-01-22 03:40:55 +00004533 return alg2;
4534}
Matt Caswella3680c82015-03-31 13:57:46 +01004535
4536/*
4537 * Fill a ClientRandom or ServerRandom field of length len. Returns <= 0 on
4538 * failure, 1 on success.
4539 */
Matt Caswellf7f2a012017-03-22 08:52:54 +00004540int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, size_t len,
4541 DOWNGRADE dgrd)
Matt Caswella3680c82015-03-31 13:57:46 +01004542{
Matt Caswellf7f2a012017-03-22 08:52:54 +00004543 int send_time = 0, ret;
Matt Caswella3680c82015-03-31 13:57:46 +01004544
4545 if (len < 4)
4546 return 0;
4547 if (server)
4548 send_time = (s->mode & SSL_MODE_SEND_SERVERHELLO_TIME) != 0;
4549 else
4550 send_time = (s->mode & SSL_MODE_SEND_CLIENTHELLO_TIME) != 0;
4551 if (send_time) {
4552 unsigned long Time = (unsigned long)time(NULL);
4553 unsigned char *p = result;
Rich Salzae3947d2017-08-03 10:24:03 -04004554
Matt Caswella3680c82015-03-31 13:57:46 +01004555 l2n(Time, p);
Kurt Roeckx16cfc2c2018-03-08 22:30:28 +01004556 ret = RAND_bytes(p, len - 4);
Matt Caswellf7f2a012017-03-22 08:52:54 +00004557 } else {
Kurt Roeckx16cfc2c2018-03-08 22:30:28 +01004558 ret = RAND_bytes(result, len);
Matt Caswellf7f2a012017-03-22 08:52:54 +00004559 }
4560#ifndef OPENSSL_NO_TLS13DOWNGRADE
Kurt Roeckx16cfc2c2018-03-08 22:30:28 +01004561 if (ret > 0) {
Matt Caswellb77f3ed2017-05-22 12:33:42 +01004562 if (!ossl_assert(sizeof(tls11downgrade) < len)
4563 || !ossl_assert(sizeof(tls12downgrade) < len))
4564 return 0;
Matt Caswellf7f2a012017-03-22 08:52:54 +00004565 if (dgrd == DOWNGRADE_TO_1_2)
4566 memcpy(result + len - sizeof(tls12downgrade), tls12downgrade,
4567 sizeof(tls12downgrade));
4568 else if (dgrd == DOWNGRADE_TO_1_1)
4569 memcpy(result + len - sizeof(tls11downgrade), tls11downgrade,
4570 sizeof(tls11downgrade));
4571 }
4572#endif
4573 return ret;
Matt Caswella3680c82015-03-31 13:57:46 +01004574}
Dr. Stephen Henson57b272b2015-06-17 04:10:04 +01004575
4576int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen,
4577 int free_pms)
4578{
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004579 unsigned long alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
Matt Caswell8c1a5342016-10-03 23:22:07 +01004580 int ret = 0;
4581
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004582 if (alg_k & SSL_PSK) {
Matt Caswell0907d712016-07-06 09:55:31 +01004583#ifndef OPENSSL_NO_PSK
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004584 unsigned char *pskpms, *t;
4585 size_t psklen = s->s3->tmp.psklen;
4586 size_t pskpmslen;
4587
4588 /* create PSK premaster_secret */
4589
4590 /* For plain PSK "other_secret" is psklen zeroes */
4591 if (alg_k & SSL_kPSK)
4592 pmslen = psklen;
4593
4594 pskpmslen = 4 + pmslen + psklen;
4595 pskpms = OPENSSL_malloc(pskpmslen);
Matt Caswell8c1a5342016-10-03 23:22:07 +01004596 if (pskpms == NULL)
Dr. Stephen Hensona7846652015-07-28 16:04:53 +01004597 goto err;
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004598 t = pskpms;
4599 s2n(pmslen, t);
4600 if (alg_k & SSL_kPSK)
4601 memset(t, 0, pmslen);
4602 else
4603 memcpy(t, pms, pmslen);
4604 t += pmslen;
4605 s2n(psklen, t);
4606 memcpy(t, s->s3->tmp.psk, psklen);
4607
4608 OPENSSL_clear_free(s->s3->tmp.psk, psklen);
4609 s->s3->tmp.psk = NULL;
Matt Caswell8c1a5342016-10-03 23:22:07 +01004610 if (!s->method->ssl3_enc->generate_master_secret(s,
4611 s->session->master_key,pskpms, pskpmslen,
Matt Caswellf63a17d2017-11-21 17:18:43 +00004612 &s->session->master_key_length)) {
4613 /* SSLfatal() already called */
Matt Caswell8c1a5342016-10-03 23:22:07 +01004614 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004615 }
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004616 OPENSSL_clear_free(pskpms, pskpmslen);
Matt Caswell0907d712016-07-06 09:55:31 +01004617#else
4618 /* Should never happen */
Matt Caswell0907d712016-07-06 09:55:31 +01004619 goto err;
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004620#endif
Matt Caswell0907d712016-07-06 09:55:31 +01004621 } else {
Matt Caswell8c1a5342016-10-03 23:22:07 +01004622 if (!s->method->ssl3_enc->generate_master_secret(s,
4623 s->session->master_key, pms, pmslen,
Matt Caswellf63a17d2017-11-21 17:18:43 +00004624 &s->session->master_key_length)) {
4625 /* SSLfatal() already called */
Matt Caswell8c1a5342016-10-03 23:22:07 +01004626 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004627 }
Matt Caswell0907d712016-07-06 09:55:31 +01004628 }
4629
Matt Caswell8c1a5342016-10-03 23:22:07 +01004630 ret = 1;
Matt Caswell0907d712016-07-06 09:55:31 +01004631 err:
Dr. Stephen Henson8a0a12e2015-06-28 16:58:00 +01004632 if (pms) {
4633 if (free_pms)
4634 OPENSSL_clear_free(pms, pmslen);
4635 else
4636 OPENSSL_cleanse(pms, pmslen);
4637 }
Dr. Stephen Henson57b272b2015-06-17 04:10:04 +01004638 if (s->server == 0)
4639 s->s3->tmp.pms = NULL;
Matt Caswell8c1a5342016-10-03 23:22:07 +01004640 return ret;
Dr. Stephen Henson57b272b2015-06-17 04:10:04 +01004641}
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004642
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004643/* Generate a private key from parameters */
4644EVP_PKEY *ssl_generate_pkey(EVP_PKEY *pm)
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004645{
4646 EVP_PKEY_CTX *pctx = NULL;
4647 EVP_PKEY *pkey = NULL;
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004648
4649 if (pm == NULL)
4650 return NULL;
4651 pctx = EVP_PKEY_CTX_new(pm, NULL);
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004652 if (pctx == NULL)
4653 goto err;
4654 if (EVP_PKEY_keygen_init(pctx) <= 0)
4655 goto err;
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004656 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) {
4657 EVP_PKEY_free(pkey);
4658 pkey = NULL;
4659 }
4660
4661 err:
4662 EVP_PKEY_CTX_free(pctx);
4663 return pkey;
4664}
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004665#ifndef OPENSSL_NO_EC
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01004666/* Generate a private key from a group ID */
Matt Caswellf63a17d2017-11-21 17:18:43 +00004667EVP_PKEY *ssl_generate_pkey_group(SSL *s, uint16_t id)
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004668{
4669 EVP_PKEY_CTX *pctx = NULL;
4670 EVP_PKEY *pkey = NULL;
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01004671 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
4672 uint16_t gtype;
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004673
Matt Caswellf63a17d2017-11-21 17:18:43 +00004674 if (ginf == NULL) {
4675 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4676 ERR_R_INTERNAL_ERROR);
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004677 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004678 }
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01004679 gtype = ginf->flags & TLS_CURVE_TYPE;
4680 if (gtype == TLS_CURVE_CUSTOM)
4681 pctx = EVP_PKEY_CTX_new_id(ginf->nid, NULL);
4682 else
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004683 pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, NULL);
Matt Caswellf63a17d2017-11-21 17:18:43 +00004684 if (pctx == NULL) {
4685 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4686 ERR_R_MALLOC_FAILURE);
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004687 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004688 }
4689 if (EVP_PKEY_keygen_init(pctx) <= 0) {
4690 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4691 ERR_R_EVP_LIB);
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004692 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004693 }
Dr. Stephen Henson43b95d72017-09-23 00:15:34 +01004694 if (gtype != TLS_CURVE_CUSTOM
Matt Caswellf63a17d2017-11-21 17:18:43 +00004695 && EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, ginf->nid) <= 0) {
4696 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4697 ERR_R_EVP_LIB);
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004698 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004699 }
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004700 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) {
Matt Caswellf63a17d2017-11-21 17:18:43 +00004701 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4702 ERR_R_EVP_LIB);
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004703 EVP_PKEY_free(pkey);
4704 pkey = NULL;
4705 }
4706
Emilia Kaspera230b262016-08-05 19:03:17 +02004707 err:
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004708 EVP_PKEY_CTX_free(pctx);
4709 return pkey;
4710}
Dr. Stephen Henson612f9d22017-09-23 02:40:30 +01004711
4712/*
4713 * Generate parameters from a group ID
4714 */
4715EVP_PKEY *ssl_generate_param_group(uint16_t id)
4716{
4717 EVP_PKEY_CTX *pctx = NULL;
4718 EVP_PKEY *pkey = NULL;
4719 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
4720
4721 if (ginf == NULL)
4722 goto err;
4723
4724 if ((ginf->flags & TLS_CURVE_TYPE) == TLS_CURVE_CUSTOM) {
4725 pkey = EVP_PKEY_new();
4726 if (pkey != NULL && EVP_PKEY_set_type(pkey, ginf->nid))
4727 return pkey;
4728 EVP_PKEY_free(pkey);
4729 return NULL;
4730 }
4731
4732 pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, NULL);
4733 if (pctx == NULL)
4734 goto err;
4735 if (EVP_PKEY_paramgen_init(pctx) <= 0)
4736 goto err;
4737 if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, ginf->nid) <= 0)
4738 goto err;
4739 if (EVP_PKEY_paramgen(pctx, &pkey) <= 0) {
4740 EVP_PKEY_free(pkey);
4741 pkey = NULL;
4742 }
4743
4744 err:
4745 EVP_PKEY_CTX_free(pctx);
4746 return pkey;
4747}
Dr. Stephen Henson0a699a02016-08-15 14:07:33 +01004748#endif
Emilia Kaspera230b262016-08-05 19:03:17 +02004749
Matt Caswell92760c22016-11-09 14:06:12 +00004750/* Derive secrets for ECDH/DH */
4751int ssl_derive(SSL *s, EVP_PKEY *privkey, EVP_PKEY *pubkey, int gensecret)
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004752{
4753 int rv = 0;
4754 unsigned char *pms = NULL;
4755 size_t pmslen = 0;
4756 EVP_PKEY_CTX *pctx;
4757
Matt Caswellf63a17d2017-11-21 17:18:43 +00004758 if (privkey == NULL || pubkey == NULL) {
4759 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4760 ERR_R_INTERNAL_ERROR);
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004761 return 0;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004762 }
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004763
4764 pctx = EVP_PKEY_CTX_new(privkey, NULL);
4765
4766 if (EVP_PKEY_derive_init(pctx) <= 0
4767 || EVP_PKEY_derive_set_peer(pctx, pubkey) <= 0
4768 || EVP_PKEY_derive(pctx, NULL, &pmslen) <= 0) {
Matt Caswellf63a17d2017-11-21 17:18:43 +00004769 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4770 ERR_R_INTERNAL_ERROR);
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004771 goto err;
4772 }
4773
4774 pms = OPENSSL_malloc(pmslen);
Matt Caswellf63a17d2017-11-21 17:18:43 +00004775 if (pms == NULL) {
4776 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4777 ERR_R_MALLOC_FAILURE);
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004778 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004779 }
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004780
Matt Caswellf63a17d2017-11-21 17:18:43 +00004781 if (EVP_PKEY_derive(pctx, pms, &pmslen) <= 0) {
4782 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4783 ERR_R_INTERNAL_ERROR);
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004784 goto err;
Matt Caswellf63a17d2017-11-21 17:18:43 +00004785 }
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004786
Matt Caswell92760c22016-11-09 14:06:12 +00004787 if (gensecret) {
Matt Caswellf63a17d2017-11-21 17:18:43 +00004788 /* SSLfatal() called as appropriate in the below functions */
Matt Caswell92760c22016-11-09 14:06:12 +00004789 if (SSL_IS_TLS13(s)) {
4790 /*
Matt Caswellec15acb2017-01-13 17:00:49 +00004791 * If we are resuming then we already generated the early secret
4792 * when we created the ClientHello, so don't recreate it.
Matt Caswell92760c22016-11-09 14:06:12 +00004793 */
Matt Caswellec15acb2017-01-13 17:00:49 +00004794 if (!s->hit)
4795 rv = tls13_generate_secret(s, ssl_handshake_md(s), NULL, NULL,
4796 0,
4797 (unsigned char *)&s->early_secret);
Matt Caswell02470862017-01-18 17:22:18 +00004798 else
4799 rv = 1;
4800
Matt Caswellec15acb2017-01-13 17:00:49 +00004801 rv = rv && tls13_generate_handshake_secret(s, pms, pmslen);
Matt Caswell92760c22016-11-09 14:06:12 +00004802 } else {
Matt Caswellc8ab3a42017-01-30 19:36:51 +00004803 rv = ssl_generate_master_secret(s, pms, pmslen, 0);
Matt Caswell92760c22016-11-09 14:06:12 +00004804 }
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004805 } else {
Matt Caswell0f1e51e2016-11-02 15:03:56 +00004806 /* Save premaster secret */
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004807 s->s3->tmp.pms = pms;
4808 s->s3->tmp.pmslen = pmslen;
4809 pms = NULL;
4810 rv = 1;
4811 }
4812
Emilia Kaspera230b262016-08-05 19:03:17 +02004813 err:
Dr. Stephen Henson3f3504b2015-12-15 18:15:16 +00004814 OPENSSL_clear_free(pms, pmslen);
4815 EVP_PKEY_CTX_free(pctx);
4816 return rv;
4817}
Dr. Stephen Henson6c4e6672015-12-18 15:58:28 +00004818
Ben Laurie1e0784f2016-01-01 15:39:31 +00004819#ifndef OPENSSL_NO_DH
Dr. Stephen Henson6c4e6672015-12-18 15:58:28 +00004820EVP_PKEY *ssl_dh_to_pkey(DH *dh)
4821{
4822 EVP_PKEY *ret;
4823 if (dh == NULL)
4824 return NULL;
4825 ret = EVP_PKEY_new();
4826 if (EVP_PKEY_set1_DH(ret, dh) <= 0) {
4827 EVP_PKEY_free(ret);
4828 return NULL;
4829 }
4830 return ret;
4831}
Ben Laurie1e0784f2016-01-01 15:39:31 +00004832#endif