]> git.ipfire.org Git - thirdparty/openssl.git/blame - ssl/s3_lib.c
Fix no-psk
[thirdparty/openssl.git] / ssl / s3_lib.c
CommitLineData
846e33c7 1/*
6738bf14 2 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
aa8f3d76 3 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
c80149d9 4 * Copyright 2005 Nokia. All rights reserved.
5a4fbc69 5 *
846e33c7
RS
6 * 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
5a4fbc69 10 */
846e33c7 11
d02b48c6 12#include <stdio.h>
ec577822 13#include <openssl/objects.h>
677963e5 14#include "internal/nelem.h"
d02b48c6 15#include "ssl_locl.h"
dbad1690 16#include <openssl/md5.h>
3c27208f 17#include <openssl/dh.h>
a3680c8f 18#include <openssl/rand.h>
5f8dd0f8 19#include "internal/cryptlib.h"
d02b48c6 20
f865b081 21#define TLS13_NUM_CIPHERS OSSL_NELEM(tls13_ciphers)
b6eb9827 22#define SSL3_NUM_CIPHERS OSSL_NELEM(ssl3_ciphers)
650c6e41 23#define SSL3_NUM_SCSVS OSSL_NELEM(ssl3_scsvs)
d02b48c6 24
643a3580
MC
25/* 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
f865b081
MC
33/* 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,
40 0, 0,
41 SSL_AES128GCM,
42 SSL_AEAD,
43 TLS1_3_VERSION, TLS1_3_VERSION,
44 SSL_kANY,
45 SSL_aANY,
46 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
748f2546 117/*
ef28891b 118 * The list of available ciphers, mostly organized into the following
748f2546
RS
119 * groups:
120 * Always there
121 * EC
122 * PSK
123 * SRP (within that: RSA EC PSK)
9bb6f829 124 * Cipher families: Chacha/poly, Camellia, Gost, IDEA, SEED
748f2546
RS
125 * Weak ciphers
126 */
a230b26e 127static SSL_CIPHER ssl3_ciphers[] = {
0f113f3e
MC
128 {
129 1,
130 SSL3_TXT_RSA_NULL_MD5,
bbb4ceb8 131 SSL3_RFC_RSA_NULL_MD5,
0f113f3e
MC
132 SSL3_CK_RSA_NULL_MD5,
133 SSL_kRSA,
134 SSL_aRSA,
135 SSL_eNULL,
136 SSL_MD5,
3eb2aff4 137 SSL3_VERSION, TLS1_2_VERSION,
387cf213 138 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 139 SSL_STRONG_NONE,
0f113f3e
MC
140 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
141 0,
142 0,
143 },
0f113f3e
MC
144 {
145 1,
146 SSL3_TXT_RSA_NULL_SHA,
bbb4ceb8 147 SSL3_RFC_RSA_NULL_SHA,
0f113f3e
MC
148 SSL3_CK_RSA_NULL_SHA,
149 SSL_kRSA,
150 SSL_aRSA,
151 SSL_eNULL,
152 SSL_SHA1,
3eb2aff4 153 SSL3_VERSION, TLS1_2_VERSION,
387cf213 154 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 155 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e
MC
156 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
157 0,
158 0,
159 },
d33726b9 160#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
0f113f3e
MC
161 {
162 1,
163 SSL3_TXT_RSA_DES_192_CBC3_SHA,
bbb4ceb8 164 SSL3_RFC_RSA_DES_192_CBC3_SHA,
0f113f3e
MC
165 SSL3_CK_RSA_DES_192_CBC3_SHA,
166 SSL_kRSA,
167 SSL_aRSA,
168 SSL_3DES,
169 SSL_SHA1,
3eb2aff4 170 SSL3_VERSION, TLS1_2_VERSION,
387cf213 171 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 172 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
173 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
174 112,
175 168,
176 },
0f113f3e
MC
177 {
178 1,
179 SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA,
bbb4ceb8 180 SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA,
0f113f3e
MC
181 SSL3_CK_DHE_DSS_DES_192_CBC3_SHA,
182 SSL_kDHE,
183 SSL_aDSS,
184 SSL_3DES,
185 SSL_SHA1,
3eb2aff4 186 SSL3_VERSION, TLS1_2_VERSION,
387cf213 187 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 188 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
189 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
190 112,
191 168,
192 },
0f113f3e
MC
193 {
194 1,
195 SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA,
bbb4ceb8 196 SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA,
0f113f3e
MC
197 SSL3_CK_DHE_RSA_DES_192_CBC3_SHA,
198 SSL_kDHE,
199 SSL_aRSA,
200 SSL_3DES,
201 SSL_SHA1,
3eb2aff4 202 SSL3_VERSION, TLS1_2_VERSION,
387cf213 203 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 204 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
205 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
206 112,
207 168,
208 },
0f113f3e
MC
209 {
210 1,
211 SSL3_TXT_ADH_DES_192_CBC_SHA,
bbb4ceb8 212 SSL3_RFC_ADH_DES_192_CBC_SHA,
0f113f3e
MC
213 SSL3_CK_ADH_DES_192_CBC_SHA,
214 SSL_kDHE,
215 SSL_aNULL,
216 SSL_3DES,
217 SSL_SHA1,
3eb2aff4 218 SSL3_VERSION, TLS1_2_VERSION,
387cf213 219 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 220 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
221 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
222 112,
223 168,
224 },
d33726b9 225#endif
0f113f3e
MC
226 {
227 1,
228 TLS1_TXT_RSA_WITH_AES_128_SHA,
bbb4ceb8 229 TLS1_RFC_RSA_WITH_AES_128_SHA,
0f113f3e
MC
230 TLS1_CK_RSA_WITH_AES_128_SHA,
231 SSL_kRSA,
232 SSL_aRSA,
233 SSL_AES128,
234 SSL_SHA1,
3eb2aff4 235 SSL3_VERSION, TLS1_2_VERSION,
387cf213 236 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 237 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
238 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
239 128,
240 128,
241 },
0f113f3e
MC
242 {
243 1,
244 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
bbb4ceb8 245 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA,
0f113f3e
MC
246 TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
247 SSL_kDHE,
248 SSL_aDSS,
249 SSL_AES128,
250 SSL_SHA1,
3eb2aff4 251 SSL3_VERSION, TLS1_2_VERSION,
387cf213 252 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 253 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
254 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
255 128,
256 128,
257 },
0f113f3e
MC
258 {
259 1,
260 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
bbb4ceb8 261 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA,
0f113f3e
MC
262 TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
263 SSL_kDHE,
264 SSL_aRSA,
265 SSL_AES128,
266 SSL_SHA1,
3eb2aff4 267 SSL3_VERSION, TLS1_2_VERSION,
387cf213 268 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 269 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
270 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
271 128,
272 128,
273 },
0f113f3e
MC
274 {
275 1,
276 TLS1_TXT_ADH_WITH_AES_128_SHA,
bbb4ceb8 277 TLS1_RFC_ADH_WITH_AES_128_SHA,
0f113f3e
MC
278 TLS1_CK_ADH_WITH_AES_128_SHA,
279 SSL_kDHE,
280 SSL_aNULL,
281 SSL_AES128,
282 SSL_SHA1,
3eb2aff4 283 SSL3_VERSION, TLS1_2_VERSION,
387cf213 284 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 285 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
286 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
287 128,
288 128,
289 },
0f113f3e
MC
290 {
291 1,
292 TLS1_TXT_RSA_WITH_AES_256_SHA,
bbb4ceb8 293 TLS1_RFC_RSA_WITH_AES_256_SHA,
0f113f3e
MC
294 TLS1_CK_RSA_WITH_AES_256_SHA,
295 SSL_kRSA,
296 SSL_aRSA,
297 SSL_AES256,
298 SSL_SHA1,
3eb2aff4 299 SSL3_VERSION, TLS1_2_VERSION,
387cf213 300 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 301 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
302 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
303 256,
304 256,
305 },
0f113f3e
MC
306 {
307 1,
308 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
bbb4ceb8 309 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA,
0f113f3e
MC
310 TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
311 SSL_kDHE,
312 SSL_aDSS,
313 SSL_AES256,
314 SSL_SHA1,
3eb2aff4 315 SSL3_VERSION, TLS1_2_VERSION,
387cf213 316 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 317 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
318 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
319 256,
320 256,
321 },
0f113f3e
MC
322 {
323 1,
324 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,
bbb4ceb8 325 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA,
0f113f3e
MC
326 TLS1_CK_DHE_RSA_WITH_AES_256_SHA,
327 SSL_kDHE,
328 SSL_aRSA,
329 SSL_AES256,
330 SSL_SHA1,
3eb2aff4 331 SSL3_VERSION, TLS1_2_VERSION,
387cf213 332 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 333 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
334 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
335 256,
336 256,
337 },
0f113f3e
MC
338 {
339 1,
340 TLS1_TXT_ADH_WITH_AES_256_SHA,
bbb4ceb8 341 TLS1_RFC_ADH_WITH_AES_256_SHA,
0f113f3e
MC
342 TLS1_CK_ADH_WITH_AES_256_SHA,
343 SSL_kDHE,
344 SSL_aNULL,
345 SSL_AES256,
346 SSL_SHA1,
3eb2aff4 347 SSL3_VERSION, TLS1_2_VERSION,
387cf213 348 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 349 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
350 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
351 256,
352 256,
353 },
0f113f3e
MC
354 {
355 1,
356 TLS1_TXT_RSA_WITH_NULL_SHA256,
bbb4ceb8 357 TLS1_RFC_RSA_WITH_NULL_SHA256,
0f113f3e
MC
358 TLS1_CK_RSA_WITH_NULL_SHA256,
359 SSL_kRSA,
360 SSL_aRSA,
361 SSL_eNULL,
362 SSL_SHA256,
3eb2aff4
KR
363 TLS1_2_VERSION, TLS1_2_VERSION,
364 DTLS1_2_VERSION, DTLS1_2_VERSION,
1510b5f7 365 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e
MC
366 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
367 0,
368 0,
369 },
0f113f3e
MC
370 {
371 1,
372 TLS1_TXT_RSA_WITH_AES_128_SHA256,
bbb4ceb8 373 TLS1_RFC_RSA_WITH_AES_128_SHA256,
0f113f3e
MC
374 TLS1_CK_RSA_WITH_AES_128_SHA256,
375 SSL_kRSA,
376 SSL_aRSA,
377 SSL_AES128,
378 SSL_SHA256,
3eb2aff4
KR
379 TLS1_2_VERSION, TLS1_2_VERSION,
380 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 381 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
382 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
383 128,
384 128,
385 },
0f113f3e
MC
386 {
387 1,
388 TLS1_TXT_RSA_WITH_AES_256_SHA256,
bbb4ceb8 389 TLS1_RFC_RSA_WITH_AES_256_SHA256,
0f113f3e
MC
390 TLS1_CK_RSA_WITH_AES_256_SHA256,
391 SSL_kRSA,
392 SSL_aRSA,
393 SSL_AES256,
394 SSL_SHA256,
3eb2aff4
KR
395 TLS1_2_VERSION, TLS1_2_VERSION,
396 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 397 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
398 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
399 256,
400 256,
401 },
0f113f3e
MC
402 {
403 1,
404 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,
bbb4ceb8 405 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256,
0f113f3e
MC
406 TLS1_CK_DHE_DSS_WITH_AES_128_SHA256,
407 SSL_kDHE,
408 SSL_aDSS,
409 SSL_AES128,
410 SSL_SHA256,
3eb2aff4
KR
411 TLS1_2_VERSION, TLS1_2_VERSION,
412 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 413 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
414 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
415 128,
416 128,
417 },
0f113f3e
MC
418 {
419 1,
420 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256,
bbb4ceb8 421 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256,
0f113f3e
MC
422 TLS1_CK_DHE_RSA_WITH_AES_128_SHA256,
423 SSL_kDHE,
424 SSL_aRSA,
425 SSL_AES128,
426 SSL_SHA256,
3eb2aff4
KR
427 TLS1_2_VERSION, TLS1_2_VERSION,
428 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 429 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
430 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
431 128,
432 128,
433 },
0f113f3e
MC
434 {
435 1,
436 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,
bbb4ceb8 437 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256,
0f113f3e
MC
438 TLS1_CK_DHE_DSS_WITH_AES_256_SHA256,
439 SSL_kDHE,
440 SSL_aDSS,
441 SSL_AES256,
442 SSL_SHA256,
3eb2aff4
KR
443 TLS1_2_VERSION, TLS1_2_VERSION,
444 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 445 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
446 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
447 256,
448 256,
449 },
0f113f3e
MC
450 {
451 1,
452 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256,
bbb4ceb8 453 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256,
0f113f3e
MC
454 TLS1_CK_DHE_RSA_WITH_AES_256_SHA256,
455 SSL_kDHE,
456 SSL_aRSA,
457 SSL_AES256,
458 SSL_SHA256,
3eb2aff4
KR
459 TLS1_2_VERSION, TLS1_2_VERSION,
460 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 461 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
462 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
463 256,
464 256,
465 },
0f113f3e
MC
466 {
467 1,
468 TLS1_TXT_ADH_WITH_AES_128_SHA256,
bbb4ceb8 469 TLS1_RFC_ADH_WITH_AES_128_SHA256,
0f113f3e
MC
470 TLS1_CK_ADH_WITH_AES_128_SHA256,
471 SSL_kDHE,
472 SSL_aNULL,
473 SSL_AES128,
474 SSL_SHA256,
3eb2aff4
KR
475 TLS1_2_VERSION, TLS1_2_VERSION,
476 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 477 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
478 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
479 128,
480 128,
481 },
0f113f3e
MC
482 {
483 1,
484 TLS1_TXT_ADH_WITH_AES_256_SHA256,
bbb4ceb8 485 TLS1_RFC_ADH_WITH_AES_256_SHA256,
0f113f3e
MC
486 TLS1_CK_ADH_WITH_AES_256_SHA256,
487 SSL_kDHE,
488 SSL_aNULL,
489 SSL_AES256,
490 SSL_SHA256,
3eb2aff4
KR
491 TLS1_2_VERSION, TLS1_2_VERSION,
492 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 493 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
494 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
495 256,
496 256,
497 },
0f113f3e
MC
498 {
499 1,
748f2546 500 TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 501 TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256,
748f2546
RS
502 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 },
0f113f3e
MC
514 {
515 1,
748f2546 516 TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 517 TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384,
748f2546 518 TLS1_CK_RSA_WITH_AES_256_GCM_SHA384,
0f113f3e
MC
519 SSL_kRSA,
520 SSL_aRSA,
748f2546
RS
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,
0f113f3e
MC
527 256,
528 256,
529 },
0f113f3e
MC
530 {
531 1,
748f2546 532 TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 533 TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256,
748f2546 534 TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256,
0f113f3e 535 SSL_kDHE,
748f2546
RS
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,
0f113f3e 545 },
0f113f3e
MC
546 {
547 1,
748f2546 548 TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 549 TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384,
748f2546 550 TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384,
0f113f3e
MC
551 SSL_kDHE,
552 SSL_aRSA,
748f2546
RS
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,
0f113f3e
MC
559 256,
560 256,
561 },
0f113f3e
MC
562 {
563 1,
748f2546 564 TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,
bbb4ceb8 565 TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256,
748f2546 566 TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256,
0f113f3e 567 SSL_kDHE,
748f2546
RS
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,
0f113f3e
MC
575 128,
576 128,
577 },
0f113f3e
MC
578 {
579 1,
748f2546 580 TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,
bbb4ceb8 581 TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384,
748f2546
RS
582 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,
0f113f3e 593 },
0f113f3e
MC
594 {
595 1,
748f2546 596 TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256,
bbb4ceb8 597 TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256,
748f2546
RS
598 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,
0f113f3e
MC
607 128,
608 128,
609 },
0f113f3e
MC
610 {
611 1,
748f2546 612 TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384,
bbb4ceb8 613 TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384,
748f2546
RS
614 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,
0f113f3e
MC
623 256,
624 256,
625 },
ea6114c6
DSH
626 {
627 1,
748f2546 628 TLS1_TXT_RSA_WITH_AES_128_CCM,
bbb4ceb8 629 TLS1_RFC_RSA_WITH_AES_128_CCM,
748f2546
RS
630 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,
ea6114c6
DSH
639 128,
640 128,
641 },
ea6114c6
DSH
642 {
643 1,
748f2546 644 TLS1_TXT_RSA_WITH_AES_256_CCM,
bbb4ceb8 645 TLS1_RFC_RSA_WITH_AES_256_CCM,
748f2546
RS
646 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,
ea6114c6 657 },
ea6114c6
DSH
658 {
659 1,
748f2546 660 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM,
bbb4ceb8 661 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM,
748f2546
RS
662 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,
ea6114c6
DSH
671 128,
672 128,
673 },
ea6114c6
DSH
674 {
675 1,
748f2546 676 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM,
bbb4ceb8 677 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM,
748f2546
RS
678 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,
ea6114c6
DSH
687 256,
688 256,
689 },
ea6114c6
DSH
690 {
691 1,
748f2546 692 TLS1_TXT_RSA_WITH_AES_128_CCM_8,
bbb4ceb8 693 TLS1_RFC_RSA_WITH_AES_128_CCM_8,
748f2546
RS
694 TLS1_CK_RSA_WITH_AES_128_CCM_8,
695 SSL_kRSA,
ea6114c6 696 SSL_aRSA,
748f2546 697 SSL_AES128CCM8,
0f113f3e 698 SSL_AEAD,
3eb2aff4
KR
699 TLS1_2_VERSION, TLS1_2_VERSION,
700 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 701 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
702 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
703 128,
704 128,
705 },
0f113f3e
MC
706 {
707 1,
748f2546 708 TLS1_TXT_RSA_WITH_AES_256_CCM_8,
bbb4ceb8 709 TLS1_RFC_RSA_WITH_AES_256_CCM_8,
748f2546 710 TLS1_CK_RSA_WITH_AES_256_CCM_8,
0f113f3e
MC
711 SSL_kRSA,
712 SSL_aRSA,
748f2546 713 SSL_AES256CCM8,
0f113f3e 714 SSL_AEAD,
3eb2aff4
KR
715 TLS1_2_VERSION, TLS1_2_VERSION,
716 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
717 SSL_NOT_DEFAULT | SSL_HIGH,
718 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
719 256,
720 256,
721 },
0f113f3e
MC
722 {
723 1,
748f2546 724 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8,
bbb4ceb8 725 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8,
748f2546 726 TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8,
0f113f3e
MC
727 SSL_kDHE,
728 SSL_aRSA,
748f2546 729 SSL_AES128CCM8,
0f113f3e 730 SSL_AEAD,
3eb2aff4
KR
731 TLS1_2_VERSION, TLS1_2_VERSION,
732 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 733 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
734 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
735 128,
736 128,
737 },
0f113f3e
MC
738 {
739 1,
748f2546 740 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8,
bbb4ceb8 741 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8,
748f2546 742 TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8,
0f113f3e
MC
743 SSL_kDHE,
744 SSL_aRSA,
748f2546 745 SSL_AES256CCM8,
0f113f3e 746 SSL_AEAD,
3eb2aff4
KR
747 TLS1_2_VERSION, TLS1_2_VERSION,
748 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
749 SSL_NOT_DEFAULT | SSL_HIGH,
750 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
751 256,
752 256,
753 },
0f113f3e
MC
754 {
755 1,
748f2546 756 TLS1_TXT_PSK_WITH_AES_128_CCM,
bbb4ceb8 757 TLS1_RFC_PSK_WITH_AES_128_CCM,
748f2546
RS
758 TLS1_CK_PSK_WITH_AES_128_CCM,
759 SSL_kPSK,
760 SSL_aPSK,
761 SSL_AES128CCM,
0f113f3e 762 SSL_AEAD,
3eb2aff4
KR
763 TLS1_2_VERSION, TLS1_2_VERSION,
764 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 765 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
766 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
767 128,
768 128,
769 },
0f113f3e
MC
770 {
771 1,
748f2546 772 TLS1_TXT_PSK_WITH_AES_256_CCM,
bbb4ceb8 773 TLS1_RFC_PSK_WITH_AES_256_CCM,
748f2546
RS
774 TLS1_CK_PSK_WITH_AES_256_CCM,
775 SSL_kPSK,
776 SSL_aPSK,
777 SSL_AES256CCM,
0f113f3e 778 SSL_AEAD,
3eb2aff4
KR
779 TLS1_2_VERSION, TLS1_2_VERSION,
780 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
781 SSL_NOT_DEFAULT | SSL_HIGH,
782 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
783 256,
784 256,
785 },
0f113f3e
MC
786 {
787 1,
748f2546 788 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM,
bbb4ceb8 789 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM,
748f2546
RS
790 TLS1_CK_DHE_PSK_WITH_AES_128_CCM,
791 SSL_kDHEPSK,
792 SSL_aPSK,
793 SSL_AES128CCM,
0f113f3e 794 SSL_AEAD,
3eb2aff4
KR
795 TLS1_2_VERSION, TLS1_2_VERSION,
796 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 797 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
798 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
799 128,
800 128,
801 },
0f113f3e
MC
802 {
803 1,
748f2546 804 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM,
bbb4ceb8 805 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM,
748f2546
RS
806 TLS1_CK_DHE_PSK_WITH_AES_256_CCM,
807 SSL_kDHEPSK,
808 SSL_aPSK,
809 SSL_AES256CCM,
0f113f3e 810 SSL_AEAD,
3eb2aff4
KR
811 TLS1_2_VERSION, TLS1_2_VERSION,
812 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
813 SSL_NOT_DEFAULT | SSL_HIGH,
814 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
815 256,
816 256,
817 },
547dba74
DSH
818 {
819 1,
748f2546 820 TLS1_TXT_PSK_WITH_AES_128_CCM_8,
bbb4ceb8 821 TLS1_RFC_PSK_WITH_AES_128_CCM_8,
748f2546 822 TLS1_CK_PSK_WITH_AES_128_CCM_8,
547dba74
DSH
823 SSL_kPSK,
824 SSL_aPSK,
748f2546 825 SSL_AES128CCM8,
547dba74 826 SSL_AEAD,
3eb2aff4
KR
827 TLS1_2_VERSION, TLS1_2_VERSION,
828 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 829 SSL_NOT_DEFAULT | SSL_HIGH,
547dba74
DSH
830 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
831 128,
832 128,
833 },
547dba74
DSH
834 {
835 1,
748f2546 836 TLS1_TXT_PSK_WITH_AES_256_CCM_8,
bbb4ceb8 837 TLS1_RFC_PSK_WITH_AES_256_CCM_8,
748f2546 838 TLS1_CK_PSK_WITH_AES_256_CCM_8,
547dba74
DSH
839 SSL_kPSK,
840 SSL_aPSK,
748f2546 841 SSL_AES256CCM8,
547dba74 842 SSL_AEAD,
3eb2aff4
KR
843 TLS1_2_VERSION, TLS1_2_VERSION,
844 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
845 SSL_NOT_DEFAULT | SSL_HIGH,
846 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
547dba74
DSH
847 256,
848 256,
849 },
ea6114c6
DSH
850 {
851 1,
748f2546 852 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8,
bbb4ceb8 853 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8,
748f2546 854 TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8,
ea6114c6
DSH
855 SSL_kDHEPSK,
856 SSL_aPSK,
748f2546 857 SSL_AES128CCM8,
ea6114c6 858 SSL_AEAD,
3eb2aff4
KR
859 TLS1_2_VERSION, TLS1_2_VERSION,
860 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 861 SSL_NOT_DEFAULT | SSL_HIGH,
ea6114c6
DSH
862 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
863 128,
864 128,
865 },
ea6114c6
DSH
866 {
867 1,
748f2546 868 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8,
bbb4ceb8 869 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8,
748f2546
RS
870 TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8,
871 SSL_kDHEPSK,
ea6114c6 872 SSL_aPSK,
748f2546 873 SSL_AES256CCM8,
ea6114c6 874 SSL_AEAD,
3eb2aff4
KR
875 TLS1_2_VERSION, TLS1_2_VERSION,
876 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
877 SSL_NOT_DEFAULT | SSL_HIGH,
878 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
879 256,
880 256,
881 },
ea6114c6
DSH
882 {
883 1,
748f2546 884 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM,
bbb4ceb8 885 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM,
748f2546
RS
886 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM,
887 SSL_kECDHE,
888 SSL_aECDSA,
889 SSL_AES128CCM,
ea6114c6 890 SSL_AEAD,
3eb2aff4
KR
891 TLS1_2_VERSION, TLS1_2_VERSION,
892 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 893 SSL_NOT_DEFAULT | SSL_HIGH,
ea6114c6
DSH
894 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
895 128,
896 128,
897 },
ea6114c6
DSH
898 {
899 1,
748f2546 900 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM,
bbb4ceb8 901 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM,
748f2546
RS
902 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM,
903 SSL_kECDHE,
904 SSL_aECDSA,
905 SSL_AES256CCM,
ea6114c6 906 SSL_AEAD,
3eb2aff4
KR
907 TLS1_2_VERSION, TLS1_2_VERSION,
908 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
909 SSL_NOT_DEFAULT | SSL_HIGH,
910 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
911 256,
912 256,
913 },
ea6114c6
DSH
914 {
915 1,
748f2546 916 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8,
bbb4ceb8 917 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8,
748f2546
RS
918 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,
ea6114c6
DSH
927 128,
928 128,
929 },
ea6114c6
DSH
930 {
931 1,
748f2546 932 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8,
bbb4ceb8 933 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8,
748f2546
RS
934 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,
ea6114c6
DSH
943 256,
944 256,
945 },
ea6114c6
DSH
946 {
947 1,
748f2546 948 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA,
bbb4ceb8 949 TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA,
748f2546
RS
950 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA,
951 SSL_kECDHE,
952 SSL_aECDSA,
ea6114c6 953 SSL_eNULL,
748f2546 954 SSL_SHA1,
fe55c4a2 955 TLS1_VERSION, TLS1_2_VERSION,
387cf213 956 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 957 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
958 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
959 0,
960 0,
961 },
d33726b9 962# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
963 {
964 1,
748f2546 965 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
bbb4ceb8 966 TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
748f2546
RS
967 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
968 SSL_kECDHE,
969 SSL_aECDSA,
970 SSL_3DES,
971 SSL_SHA1,
fe55c4a2 972 TLS1_VERSION, TLS1_2_VERSION,
387cf213 973 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 974 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
748f2546
RS
975 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
976 112,
977 168,
ea6114c6 978 },
d33726b9 979# endif
ea6114c6
DSH
980 {
981 1,
748f2546 982 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
bbb4ceb8 983 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
748f2546
RS
984 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
985 SSL_kECDHE,
986 SSL_aECDSA,
ea6114c6 987 SSL_AES128,
748f2546 988 SSL_SHA1,
fe55c4a2 989 TLS1_VERSION, TLS1_2_VERSION,
387cf213 990 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 991 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
992 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
993 128,
994 128,
995 },
ea6114c6
DSH
996 {
997 1,
748f2546 998 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
bbb4ceb8 999 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
748f2546
RS
1000 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
1001 SSL_kECDHE,
1002 SSL_aECDSA,
ea6114c6 1003 SSL_AES256,
748f2546 1004 SSL_SHA1,
fe55c4a2 1005 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1006 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1007 SSL_HIGH | SSL_FIPS,
748f2546 1008 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
ea6114c6
DSH
1009 256,
1010 256,
1011 },
ea6114c6
DSH
1012 {
1013 1,
748f2546 1014 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA,
bbb4ceb8 1015 TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA,
748f2546
RS
1016 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA,
1017 SSL_kECDHE,
1018 SSL_aRSA,
ea6114c6 1019 SSL_eNULL,
748f2546 1020 SSL_SHA1,
fe55c4a2 1021 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1022 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1023 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1024 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1025 0,
1026 0,
1027 },
d33726b9 1028# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
1029 {
1030 1,
748f2546 1031 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
bbb4ceb8 1032 TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
748f2546
RS
1033 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
1034 SSL_kECDHE,
1035 SSL_aRSA,
1036 SSL_3DES,
1037 SSL_SHA1,
fe55c4a2 1038 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1039 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1040 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
748f2546
RS
1041 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1042 112,
1043 168,
ea6114c6 1044 },
d33726b9 1045# endif
ea6114c6
DSH
1046 {
1047 1,
748f2546 1048 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,
bbb4ceb8 1049 TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA,
748f2546
RS
1050 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA,
1051 SSL_kECDHE,
ea6114c6
DSH
1052 SSL_aRSA,
1053 SSL_AES128,
748f2546 1054 SSL_SHA1,
fe55c4a2 1055 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1056 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1057 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1058 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1059 128,
1060 128,
1061 },
ea6114c6
DSH
1062 {
1063 1,
748f2546 1064 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,
bbb4ceb8 1065 TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA,
748f2546
RS
1066 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA,
1067 SSL_kECDHE,
ea6114c6
DSH
1068 SSL_aRSA,
1069 SSL_AES256,
748f2546 1070 SSL_SHA1,
fe55c4a2 1071 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1072 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1073 SSL_HIGH | SSL_FIPS,
748f2546 1074 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
ea6114c6
DSH
1075 256,
1076 256,
1077 },
ea6114c6
DSH
1078 {
1079 1,
748f2546 1080 TLS1_TXT_ECDH_anon_WITH_NULL_SHA,
bbb4ceb8 1081 TLS1_RFC_ECDH_anon_WITH_NULL_SHA,
748f2546
RS
1082 TLS1_CK_ECDH_anon_WITH_NULL_SHA,
1083 SSL_kECDHE,
1084 SSL_aNULL,
ea6114c6 1085 SSL_eNULL,
748f2546 1086 SSL_SHA1,
fe55c4a2 1087 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1088 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1089 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1090 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1091 0,
1092 0,
1093 },
d33726b9 1094# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
1095 {
1096 1,
748f2546 1097 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA,
bbb4ceb8 1098 TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA,
748f2546
RS
1099 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA,
1100 SSL_kECDHE,
1101 SSL_aNULL,
1102 SSL_3DES,
1103 SSL_SHA1,
fe55c4a2 1104 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1105 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 1106 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
748f2546
RS
1107 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1108 112,
1109 168,
ea6114c6 1110 },
d33726b9 1111# endif
0f113f3e
MC
1112 {
1113 1,
748f2546 1114 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA,
bbb4ceb8 1115 TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA,
748f2546
RS
1116 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA,
1117 SSL_kECDHE,
1118 SSL_aNULL,
1119 SSL_AES128,
1120 SSL_SHA1,
fe55c4a2 1121 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1122 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1123 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
1124 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1125 128,
1126 128,
1127 },
0f113f3e
MC
1128 {
1129 1,
748f2546 1130 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA,
bbb4ceb8 1131 TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA,
748f2546
RS
1132 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA,
1133 SSL_kECDHE,
1134 SSL_aNULL,
1135 SSL_AES256,
1136 SSL_SHA1,
fe55c4a2 1137 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1138 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1139 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,
bbb4ceb8 1147 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256,
748f2546
RS
1148 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256,
1149 SSL_kECDHE,
1150 SSL_aECDSA,
1151 SSL_AES128,
0f113f3e 1152 SSL_SHA256,
3eb2aff4
KR
1153 TLS1_2_VERSION, TLS1_2_VERSION,
1154 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1155 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1156 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1157 128,
1158 128,
1159 },
0f113f3e
MC
1160 {
1161 1,
748f2546 1162 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384,
bbb4ceb8 1163 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384,
748f2546
RS
1164 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384,
1165 SSL_kECDHE,
1166 SSL_aECDSA,
1167 SSL_AES256,
1168 SSL_SHA384,
3eb2aff4
KR
1169 TLS1_2_VERSION, TLS1_2_VERSION,
1170 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
1171 SSL_HIGH | SSL_FIPS,
1172 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1173 256,
1174 256,
0f113f3e 1175 },
0f113f3e
MC
1176 {
1177 1,
748f2546 1178 TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256,
bbb4ceb8 1179 TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256,
748f2546
RS
1180 TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256,
1181 SSL_kECDHE,
1182 SSL_aRSA,
1183 SSL_AES128,
0f113f3e 1184 SSL_SHA256,
3eb2aff4
KR
1185 TLS1_2_VERSION, TLS1_2_VERSION,
1186 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1187 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1188 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1189 128,
1190 128,
1191 },
0f113f3e
MC
1192 {
1193 1,
748f2546 1194 TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384,
bbb4ceb8 1195 TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384,
748f2546
RS
1196 TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384,
1197 SSL_kECDHE,
0f113f3e 1198 SSL_aRSA,
748f2546
RS
1199 SSL_AES256,
1200 SSL_SHA384,
3eb2aff4
KR
1201 TLS1_2_VERSION, TLS1_2_VERSION,
1202 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
1203 SSL_HIGH | SSL_FIPS,
1204 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1205 256,
1206 256,
1207 },
0f113f3e
MC
1208 {
1209 1,
748f2546 1210 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1211 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
748f2546
RS
1212 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
1213 SSL_kECDHE,
1214 SSL_aECDSA,
1215 SSL_AES128GCM,
1216 SSL_AEAD,
3eb2aff4
KR
1217 TLS1_2_VERSION, TLS1_2_VERSION,
1218 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1219 SSL_HIGH | SSL_FIPS,
0f113f3e 1220 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
748f2546
RS
1221 128,
1222 128,
1223 },
1224 {
1225 1,
1226 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1227 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
748f2546
RS
1228 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,
0f113f3e
MC
1237 256,
1238 256,
1239 },
0f113f3e
MC
1240 {
1241 1,
748f2546 1242 TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1243 TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
748f2546
RS
1244 TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
1245 SSL_kECDHE,
0f113f3e 1246 SSL_aRSA,
748f2546
RS
1247 SSL_AES128GCM,
1248 SSL_AEAD,
3eb2aff4
KR
1249 TLS1_2_VERSION, TLS1_2_VERSION,
1250 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1251 SSL_HIGH | SSL_FIPS,
0f113f3e 1252 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
748f2546
RS
1253 128,
1254 128,
0f113f3e 1255 },
0f113f3e
MC
1256 {
1257 1,
748f2546 1258 TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1259 TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
748f2546
RS
1260 TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
1261 SSL_kECDHE,
1262 SSL_aRSA,
1263 SSL_AES256GCM,
1264 SSL_AEAD,
3eb2aff4
KR
1265 TLS1_2_VERSION, TLS1_2_VERSION,
1266 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
1267 SSL_HIGH | SSL_FIPS,
1268 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1269 256,
1270 256,
1271 },
0f113f3e
MC
1272 {
1273 1,
748f2546 1274 TLS1_TXT_PSK_WITH_NULL_SHA,
bbb4ceb8 1275 TLS1_RFC_PSK_WITH_NULL_SHA,
748f2546
RS
1276 TLS1_CK_PSK_WITH_NULL_SHA,
1277 SSL_kPSK,
1278 SSL_aPSK,
0f113f3e
MC
1279 SSL_eNULL,
1280 SSL_SHA1,
3eb2aff4 1281 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1282 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1283 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e
MC
1284 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1285 0,
1286 0,
1287 },
0f113f3e
MC
1288 {
1289 1,
748f2546 1290 TLS1_TXT_DHE_PSK_WITH_NULL_SHA,
bbb4ceb8 1291 TLS1_RFC_DHE_PSK_WITH_NULL_SHA,
748f2546
RS
1292 TLS1_CK_DHE_PSK_WITH_NULL_SHA,
1293 SSL_kDHEPSK,
1294 SSL_aPSK,
1295 SSL_eNULL,
0f113f3e 1296 SSL_SHA1,
3eb2aff4 1297 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1298 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1299 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1300 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1301 0,
1302 0,
0f113f3e 1303 },
0f113f3e
MC
1304 {
1305 1,
748f2546 1306 TLS1_TXT_RSA_PSK_WITH_NULL_SHA,
bbb4ceb8 1307 TLS1_RFC_RSA_PSK_WITH_NULL_SHA,
748f2546
RS
1308 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,
387cf213 1314 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1315 SSL_STRONG_NONE | SSL_FIPS,
1316 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1317 0,
1318 0,
1319 },
d33726b9 1320# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
748f2546
RS
1321 {
1322 1,
1323 TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1324 TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1325 TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA,
1326 SSL_kPSK,
1327 SSL_aPSK,
0f113f3e
MC
1328 SSL_3DES,
1329 SSL_SHA1,
3eb2aff4 1330 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1331 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1332 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
1333 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1334 112,
1335 168,
1336 },
d33726b9 1337# endif
0f113f3e
MC
1338 {
1339 1,
748f2546 1340 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1341 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA,
748f2546
RS
1342 TLS1_CK_PSK_WITH_AES_128_CBC_SHA,
1343 SSL_kPSK,
1344 SSL_aPSK,
0f113f3e
MC
1345 SSL_AES128,
1346 SSL_SHA1,
3eb2aff4 1347 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1348 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1349 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1350 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1351 128,
1352 128,
1353 },
0f113f3e
MC
1354 {
1355 1,
748f2546 1356 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1357 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA,
748f2546
RS
1358 TLS1_CK_PSK_WITH_AES_256_CBC_SHA,
1359 SSL_kPSK,
1360 SSL_aPSK,
0f113f3e
MC
1361 SSL_AES256,
1362 SSL_SHA1,
3eb2aff4 1363 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1364 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1365 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1366 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1367 256,
1368 256,
1369 },
d33726b9 1370# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
0f113f3e
MC
1371 {
1372 1,
748f2546 1373 TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1374 TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1375 TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
1376 SSL_kDHEPSK,
1377 SSL_aPSK,
1378 SSL_3DES,
0f113f3e 1379 SSL_SHA1,
3eb2aff4 1380 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1381 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1382 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e 1383 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1384 112,
1385 168,
0f113f3e 1386 },
d33726b9 1387# endif
0f113f3e
MC
1388 {
1389 1,
748f2546 1390 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1391 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA,
748f2546
RS
1392 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,
387cf213 1398 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1399 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1400 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1401 128,
1402 128,
1403 },
0f113f3e
MC
1404 {
1405 1,
748f2546 1406 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1407 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA,
748f2546
RS
1408 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,
387cf213 1414 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1415 SSL_HIGH | SSL_FIPS,
1416 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1417 256,
1418 256,
1419 },
d33726b9 1420# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
748f2546
RS
1421 {
1422 1,
1423 TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1424 TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1425 TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
1426 SSL_kRSAPSK,
0f113f3e
MC
1427 SSL_aRSA,
1428 SSL_3DES,
1429 SSL_SHA1,
3eb2aff4 1430 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1431 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1432 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
1433 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1434 112,
1435 168,
1436 },
d33726b9 1437# endif
0f113f3e
MC
1438 {
1439 1,
748f2546 1440 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1441 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA,
748f2546
RS
1442 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA,
1443 SSL_kRSAPSK,
0f113f3e
MC
1444 SSL_aRSA,
1445 SSL_AES128,
1446 SSL_SHA1,
3eb2aff4 1447 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1448 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1449 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1450 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1451 128,
1452 128,
1453 },
0f113f3e
MC
1454 {
1455 1,
748f2546 1456 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1457 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA,
748f2546
RS
1458 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA,
1459 SSL_kRSAPSK,
0f113f3e
MC
1460 SSL_aRSA,
1461 SSL_AES256,
1462 SSL_SHA1,
3eb2aff4 1463 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1464 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1465 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1466 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1467 256,
1468 256,
1469 },
0f113f3e
MC
1470 {
1471 1,
748f2546 1472 TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1473 TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256,
748f2546
RS
1474 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,
0f113f3e
MC
1483 128,
1484 128,
1485 },
0f113f3e
MC
1486 {
1487 1,
748f2546 1488 TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1489 TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384,
748f2546
RS
1490 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,
0f113f3e 1501 },
0f113f3e
MC
1502 {
1503 1,
748f2546 1504 TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1505 TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256,
748f2546
RS
1506 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,
0f113f3e
MC
1515 128,
1516 128,
1517 },
0f113f3e
MC
1518 {
1519 1,
748f2546 1520 TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1521 TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384,
748f2546
RS
1522 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,
0f113f3e
MC
1531 256,
1532 256,
1533 },
0f113f3e
MC
1534 {
1535 1,
748f2546 1536 TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1537 TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256,
748f2546
RS
1538 TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256,
1539 SSL_kRSAPSK,
0f113f3e 1540 SSL_aRSA,
748f2546
RS
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,
0f113f3e 1549 },
0f113f3e
MC
1550 {
1551 1,
748f2546 1552 TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1553 TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384,
748f2546
RS
1554 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,
0f113f3e 1565 },
0f113f3e
MC
1566 {
1567 1,
748f2546 1568 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1569 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256,
748f2546
RS
1570 TLS1_CK_PSK_WITH_AES_128_CBC_SHA256,
1571 SSL_kPSK,
1572 SSL_aPSK,
0f113f3e 1573 SSL_AES128,
748f2546
RS
1574 SSL_SHA256,
1575 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1576 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1577 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1578 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1579 128,
1580 128,
1581 },
0f113f3e
MC
1582 {
1583 1,
748f2546 1584 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1585 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384,
748f2546
RS
1586 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,
387cf213 1592 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1593 SSL_HIGH | SSL_FIPS,
1594 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1595 256,
1596 256,
0f113f3e 1597 },
0f113f3e
MC
1598 {
1599 1,
748f2546 1600 TLS1_TXT_PSK_WITH_NULL_SHA256,
bbb4ceb8 1601 TLS1_RFC_PSK_WITH_NULL_SHA256,
748f2546
RS
1602 TLS1_CK_PSK_WITH_NULL_SHA256,
1603 SSL_kPSK,
1604 SSL_aPSK,
1605 SSL_eNULL,
1606 SSL_SHA256,
1607 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1608 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1609 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1610 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1611 0,
1612 0,
0f113f3e 1613 },
0f113f3e
MC
1614 {
1615 1,
748f2546 1616 TLS1_TXT_PSK_WITH_NULL_SHA384,
bbb4ceb8 1617 TLS1_RFC_PSK_WITH_NULL_SHA384,
748f2546
RS
1618 TLS1_CK_PSK_WITH_NULL_SHA384,
1619 SSL_kPSK,
1620 SSL_aPSK,
1621 SSL_eNULL,
1622 SSL_SHA384,
1623 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1624 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1625 SSL_STRONG_NONE | SSL_FIPS,
1626 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1627 0,
1628 0,
0f113f3e 1629 },
0f113f3e
MC
1630 {
1631 1,
748f2546 1632 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1633 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256,
748f2546
RS
1634 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,
387cf213 1640 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1641 SSL_HIGH | SSL_FIPS,
0f113f3e 1642 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1643 128,
1644 128,
0f113f3e 1645 },
0f113f3e
MC
1646 {
1647 1,
748f2546 1648 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1649 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384,
748f2546
RS
1650 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384,
1651 SSL_kDHEPSK,
1652 SSL_aPSK,
0f113f3e 1653 SSL_AES256,
748f2546
RS
1654 SSL_SHA384,
1655 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1656 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1657 SSL_HIGH | SSL_FIPS,
1658 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1659 256,
1660 256,
1661 },
0f113f3e
MC
1662 {
1663 1,
748f2546 1664 TLS1_TXT_DHE_PSK_WITH_NULL_SHA256,
bbb4ceb8 1665 TLS1_RFC_DHE_PSK_WITH_NULL_SHA256,
748f2546
RS
1666 TLS1_CK_DHE_PSK_WITH_NULL_SHA256,
1667 SSL_kDHEPSK,
1668 SSL_aPSK,
1669 SSL_eNULL,
0f113f3e 1670 SSL_SHA256,
748f2546 1671 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1672 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1673 SSL_STRONG_NONE | SSL_FIPS,
1674 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1675 0,
1676 0,
0f113f3e 1677 },
0f113f3e
MC
1678 {
1679 1,
748f2546 1680 TLS1_TXT_DHE_PSK_WITH_NULL_SHA384,
bbb4ceb8 1681 TLS1_RFC_DHE_PSK_WITH_NULL_SHA384,
748f2546
RS
1682 TLS1_CK_DHE_PSK_WITH_NULL_SHA384,
1683 SSL_kDHEPSK,
1684 SSL_aPSK,
1685 SSL_eNULL,
0f113f3e 1686 SSL_SHA384,
748f2546 1687 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1688 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1689 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1690 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
748f2546
RS
1691 0,
1692 0,
0f113f3e 1693 },
0f113f3e
MC
1694 {
1695 1,
748f2546 1696 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1697 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256,
748f2546
RS
1698 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256,
1699 SSL_kRSAPSK,
0f113f3e
MC
1700 SSL_aRSA,
1701 SSL_AES128,
1702 SSL_SHA256,
748f2546 1703 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1704 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1705 SSL_HIGH | SSL_FIPS,
748f2546 1706 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
0f113f3e
MC
1707 128,
1708 128,
1709 },
0f113f3e
MC
1710 {
1711 1,
748f2546 1712 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1713 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384,
748f2546
RS
1714 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384,
1715 SSL_kRSAPSK,
0f113f3e
MC
1716 SSL_aRSA,
1717 SSL_AES256,
1718 SSL_SHA384,
748f2546 1719 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1720 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1721 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1722 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1723 256,
1724 256,
1725 },
0f113f3e
MC
1726 {
1727 1,
748f2546 1728 TLS1_TXT_RSA_PSK_WITH_NULL_SHA256,
bbb4ceb8 1729 TLS1_RFC_RSA_PSK_WITH_NULL_SHA256,
748f2546
RS
1730 TLS1_CK_RSA_PSK_WITH_NULL_SHA256,
1731 SSL_kRSAPSK,
0f113f3e 1732 SSL_aRSA,
748f2546
RS
1733 SSL_eNULL,
1734 SSL_SHA256,
1735 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1736 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1737 SSL_STRONG_NONE | SSL_FIPS,
1738 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1739 0,
1740 0,
0f113f3e 1741 },
0f113f3e
MC
1742 {
1743 1,
748f2546 1744 TLS1_TXT_RSA_PSK_WITH_NULL_SHA384,
bbb4ceb8 1745 TLS1_RFC_RSA_PSK_WITH_NULL_SHA384,
748f2546
RS
1746 TLS1_CK_RSA_PSK_WITH_NULL_SHA384,
1747 SSL_kRSAPSK,
0f113f3e 1748 SSL_aRSA,
748f2546
RS
1749 SSL_eNULL,
1750 SSL_SHA384,
1751 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1752 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1753 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1754 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
748f2546
RS
1755 0,
1756 0,
ea6114c6 1757 },
d33726b9 1758# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
1759 {
1760 1,
1761 TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1762 TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
ea6114c6
DSH
1763 TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
1764 SSL_kECDHEPSK,
1765 SSL_aPSK,
1766 SSL_3DES,
1767 SSL_SHA1,
fe55c4a2 1768 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1769 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1770 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
ea6114c6
DSH
1771 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1772 112,
1773 168,
1774 },
d33726b9 1775# endif
ea6114c6
DSH
1776 {
1777 1,
1778 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1779 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA,
ea6114c6
DSH
1780 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA,
1781 SSL_kECDHEPSK,
1782 SSL_aPSK,
1783 SSL_AES128,
1784 SSL_SHA1,
fe55c4a2 1785 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1786 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1787 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1788 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1789 128,
1790 128,
1791 },
ea6114c6
DSH
1792 {
1793 1,
1794 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1795 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA,
ea6114c6
DSH
1796 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA,
1797 SSL_kECDHEPSK,
1798 SSL_aPSK,
1799 SSL_AES256,
1800 SSL_SHA1,
fe55c4a2 1801 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1802 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1803 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1804 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1805 256,
1806 256,
1807 },
ea6114c6
DSH
1808 {
1809 1,
1810 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1811 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
ea6114c6
DSH
1812 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
1813 SSL_kECDHEPSK,
1814 SSL_aPSK,
1815 SSL_AES128,
1816 SSL_SHA256,
3eb2aff4 1817 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1818 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1819 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1820 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1821 128,
1822 128,
1823 },
ea6114c6
DSH
1824 {
1825 1,
1826 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1827 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
ea6114c6
DSH
1828 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
1829 SSL_kECDHEPSK,
1830 SSL_aPSK,
1831 SSL_AES256,
1832 SSL_SHA384,
3eb2aff4 1833 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1834 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1835 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1836 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1837 256,
1838 256,
1839 },
ea6114c6
DSH
1840 {
1841 1,
1842 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA,
bbb4ceb8 1843 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA,
ea6114c6
DSH
1844 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA,
1845 SSL_kECDHEPSK,
1846 SSL_aPSK,
1847 SSL_eNULL,
1848 SSL_SHA1,
fe55c4a2 1849 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1850 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1851 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1852 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1853 0,
1854 0,
1855 },
ea6114c6
DSH
1856 {
1857 1,
1858 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256,
bbb4ceb8 1859 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256,
ea6114c6
DSH
1860 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256,
1861 SSL_kECDHEPSK,
1862 SSL_aPSK,
1863 SSL_eNULL,
1864 SSL_SHA256,
3eb2aff4 1865 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1866 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1867 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1868 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1869 0,
1870 0,
1871 },
ea6114c6
DSH
1872 {
1873 1,
1874 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384,
bbb4ceb8 1875 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384,
ea6114c6
DSH
1876 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384,
1877 SSL_kECDHEPSK,
1878 SSL_aPSK,
1879 SSL_eNULL,
1880 SSL_SHA384,
3eb2aff4 1881 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1882 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1883 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1884 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1885 0,
1886 0,
1887 },
1888
d33726b9 1889# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
748f2546
RS
1890 {
1891 1,
1892 TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1893 TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1894 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,
387cf213 1900 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1901 SSL_NOT_DEFAULT | SSL_MEDIUM,
748f2546
RS
1902 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,
bbb4ceb8 1909 TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1910 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,
387cf213 1916 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1917 SSL_NOT_DEFAULT | SSL_MEDIUM,
748f2546
RS
1918 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,
bbb4ceb8 1925 TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1926 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,
387cf213 1932 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 1933 SSL_NOT_DEFAULT | SSL_MEDIUM,
748f2546
RS
1934 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1935 112,
1936 168,
1937 },
d33726b9 1938# endif
748f2546
RS
1939 {
1940 1,
1941 TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA,
bbb4ceb8 1942 TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA,
748f2546
RS
1943 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,
387cf213 1949 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1950 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,
bbb4ceb8 1958 TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
748f2546
RS
1959 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,
387cf213 1965 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1966 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,
bbb4ceb8 1974 TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
748f2546
RS
1975 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,
387cf213 1981 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1982 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,
bbb4ceb8 1990 TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA,
748f2546
RS
1991 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,
387cf213 1997 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1998 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,
bbb4ceb8 2006 TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
748f2546
RS
2007 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,
387cf213 2013 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2014 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,
bbb4ceb8 2022 TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
748f2546
RS
2023 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,
387cf213 2029 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2030 SSL_NOT_DEFAULT | SSL_HIGH,
2031 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2032 256,
2033 256,
2034 },
748f2546
RS
2035
2036#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
748f2546
RS
2037 {
2038 1,
2039 TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305,
bbb4ceb8 2040 TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305,
748f2546
RS
2041 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 },
748f2546
RS
2053 {
2054 1,
2055 TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305,
bbb4ceb8 2056 TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305,
748f2546
RS
2057 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,
bbb4ceb8 2072 TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
748f2546
RS
2073 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 },
748f2546
RS
2085 {
2086 1,
2087 TLS1_TXT_PSK_WITH_CHACHA20_POLY1305,
bbb4ceb8 2088 TLS1_RFC_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2089 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,
bbb4ceb8 2104 TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2105 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,
bbb4ceb8 2120 TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2121 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,
bbb4ceb8 2136 TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2137 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 },
a230b26e
EK
2149#endif /* !defined(OPENSSL_NO_CHACHA) &&
2150 * !defined(OPENSSL_NO_POLY1305) */
748f2546
RS
2151
2152#ifndef OPENSSL_NO_CAMELLIA
2153 {
2154 1,
2155 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2156 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2157 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,
bbb4ceb8 2172 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2173 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,
bbb4ceb8 2188 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2189 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,
bbb4ceb8 2204 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2205 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,
bbb4ceb8 2220 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2221 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,
bbb4ceb8 2236 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2237 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,
bbb4ceb8 2252 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2253 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,
bbb4ceb8 2268 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2269 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,
bbb4ceb8 2284 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2285 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,
387cf213 2291 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2292 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,
bbb4ceb8 2300 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2301 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,
387cf213 2307 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2308 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,
bbb4ceb8 2316 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2317 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,
387cf213 2323 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2324 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,
bbb4ceb8 2332 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2333 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,
387cf213 2339 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2340 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,
bbb4ceb8 2348 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2349 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,
387cf213 2355 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2356 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,
bbb4ceb8 2364 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2365 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,
387cf213 2371 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2372 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,
bbb4ceb8 2380 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2381 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,
387cf213 2387 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2388 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,
bbb4ceb8 2396 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2397 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,
387cf213 2403 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2404 SSL_NOT_DEFAULT | SSL_HIGH,
2405 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2406 128,
2407 128,
2408 },
748f2546 2409 {
0f113f3e
MC
2410 1,
2411 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2412 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
0f113f3e
MC
2413 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
2414 SSL_kECDHE,
2415 SSL_aECDSA,
2416 SSL_CAMELLIA128,
2417 SSL_SHA256,
3eb2aff4
KR
2418 TLS1_2_VERSION, TLS1_2_VERSION,
2419 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2420 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2421 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2422 128,
a230b26e
EK
2423 128,
2424 },
748f2546 2425 {
0f113f3e
MC
2426 1,
2427 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2428 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
0f113f3e
MC
2429 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
2430 SSL_kECDHE,
2431 SSL_aECDSA,
2432 SSL_CAMELLIA256,
2433 SSL_SHA384,
3eb2aff4
KR
2434 TLS1_2_VERSION, TLS1_2_VERSION,
2435 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2436 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2437 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2438 256,
a230b26e
EK
2439 256,
2440 },
748f2546 2441 {
0f113f3e
MC
2442 1,
2443 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2444 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
0f113f3e
MC
2445 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2446 SSL_kECDHE,
2447 SSL_aRSA,
2448 SSL_CAMELLIA128,
2449 SSL_SHA256,
3eb2aff4
KR
2450 TLS1_2_VERSION, TLS1_2_VERSION,
2451 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2452 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2453 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2454 128,
a230b26e
EK
2455 128,
2456 },
748f2546 2457 {
0f113f3e
MC
2458 1,
2459 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2460 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
0f113f3e
MC
2461 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
2462 SSL_kECDHE,
2463 SSL_aRSA,
2464 SSL_CAMELLIA256,
2465 SSL_SHA384,
3eb2aff4
KR
2466 TLS1_2_VERSION, TLS1_2_VERSION,
2467 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2468 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2469 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2470 256,
a230b26e
EK
2471 256,
2472 },
748f2546 2473 {
69a3a9f5
DSH
2474 1,
2475 TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2476 TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256,
69a3a9f5
DSH
2477 TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2478 SSL_kPSK,
2479 SSL_aPSK,
2480 SSL_CAMELLIA128,
2481 SSL_SHA256,
3eb2aff4 2482 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2483 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2484 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2485 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2486 128,
a230b26e
EK
2487 128,
2488 },
748f2546 2489 {
69a3a9f5
DSH
2490 1,
2491 TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2492 TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384,
69a3a9f5
DSH
2493 TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2494 SSL_kPSK,
2495 SSL_aPSK,
2496 SSL_CAMELLIA256,
2497 SSL_SHA384,
3eb2aff4 2498 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2499 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2500 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2501 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2502 256,
a230b26e
EK
2503 256,
2504 },
748f2546 2505 {
69a3a9f5
DSH
2506 1,
2507 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2508 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
69a3a9f5
DSH
2509 TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2510 SSL_kDHEPSK,
2511 SSL_aPSK,
2512 SSL_CAMELLIA128,
2513 SSL_SHA256,
3eb2aff4 2514 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2515 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2516 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2517 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2518 128,
a230b26e
EK
2519 128,
2520 },
748f2546 2521 {
69a3a9f5
DSH
2522 1,
2523 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2524 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
69a3a9f5
DSH
2525 TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2526 SSL_kDHEPSK,
2527 SSL_aPSK,
2528 SSL_CAMELLIA256,
2529 SSL_SHA384,
3eb2aff4 2530 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2531 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2532 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2533 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2534 256,
a230b26e
EK
2535 256,
2536 },
748f2546 2537 {
69a3a9f5
DSH
2538 1,
2539 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2540 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
69a3a9f5
DSH
2541 TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2542 SSL_kRSAPSK,
2543 SSL_aRSA,
2544 SSL_CAMELLIA128,
2545 SSL_SHA256,
3eb2aff4 2546 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2547 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2548 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2549 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2550 128,
a230b26e
EK
2551 128,
2552 },
748f2546 2553 {
69a3a9f5
DSH
2554 1,
2555 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2556 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
69a3a9f5
DSH
2557 TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2558 SSL_kRSAPSK,
2559 SSL_aRSA,
2560 SSL_CAMELLIA256,
2561 SSL_SHA384,
3eb2aff4 2562 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2563 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2564 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2565 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2566 256,
a230b26e
EK
2567 256,
2568 },
176f85a2
DSH
2569 {
2570 1,
748f2546 2571 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2572 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2573 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2574 SSL_kECDHEPSK,
176f85a2 2575 SSL_aPSK,
748f2546
RS
2576 SSL_CAMELLIA128,
2577 SSL_SHA256,
2578 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2579 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2580 SSL_NOT_DEFAULT | SSL_HIGH,
748f2546 2581 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2 2582 128,
a230b26e
EK
2583 128,
2584 },
176f85a2
DSH
2585 {
2586 1,
748f2546 2587 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2588 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
748f2546
RS
2589 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2590 SSL_kECDHEPSK,
176f85a2 2591 SSL_aPSK,
748f2546
RS
2592 SSL_CAMELLIA256,
2593 SSL_SHA384,
2594 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2595 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2596 SSL_NOT_DEFAULT | SSL_HIGH,
748f2546 2597 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
176f85a2 2598 256,
a230b26e
EK
2599 256,
2600 },
a230b26e 2601#endif /* OPENSSL_NO_CAMELLIA */
176f85a2 2602
580731af 2603#ifndef OPENSSL_NO_GOST
176f85a2
DSH
2604 {
2605 1,
748f2546 2606 "GOST2001-GOST89-GOST89",
bbb4ceb8 2607 "TLS_GOSTR341001_WITH_28147_CNT_IMIT",
748f2546
RS
2608 0x3000081,
2609 SSL_kGOST,
2610 SSL_aGOST01,
2611 SSL_eGOST2814789CNT,
2612 SSL_GOST89MAC,
2613 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2614 0, 0,
748f2546
RS
2615 SSL_HIGH,
2616 SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94 | TLS1_STREAM_MAC,
176f85a2 2617 256,
a230b26e
EK
2618 256,
2619 },
748f2546
RS
2620 {
2621 1,
2622 "GOST2001-NULL-GOST94",
bbb4ceb8 2623 "TLS_GOSTR341001_WITH_NULL_GOSTR3411",
748f2546
RS
2624 0x3000083,
2625 SSL_kGOST,
2626 SSL_aGOST01,
2627 SSL_eNULL,
2628 SSL_GOST94,
2629 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2630 0, 0,
748f2546
RS
2631 SSL_STRONG_NONE,
2632 SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94,
2633 0,
a230b26e
EK
2634 0,
2635 },
748f2546
RS
2636 {
2637 1,
2638 "GOST2012-GOST8912-GOST8912",
bbb4ceb8 2639 NULL,
748f2546
RS
2640 0x0300ff85,
2641 SSL_kGOST,
2642 SSL_aGOST12 | SSL_aGOST01,
2643 SSL_eGOST2814789CNT12,
2644 SSL_GOST89MAC12,
2645 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2646 0, 0,
748f2546
RS
2647 SSL_HIGH,
2648 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
176f85a2 2649 256,
a230b26e
EK
2650 256,
2651 },
748f2546
RS
2652 {
2653 1,
2654 "GOST2012-NULL-GOST12",
bbb4ceb8 2655 NULL,
748f2546
RS
2656 0x0300ff87,
2657 SSL_kGOST,
2658 SSL_aGOST12 | SSL_aGOST01,
2659 SSL_eNULL,
2660 SSL_GOST12_256,
2661 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2662 0, 0,
748f2546
RS
2663 SSL_STRONG_NONE,
2664 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
2665 0,
a230b26e
EK
2666 0,
2667 },
2668#endif /* OPENSSL_NO_GOST */
176f85a2 2669
748f2546 2670#ifndef OPENSSL_NO_IDEA
176f85a2
DSH
2671 {
2672 1,
748f2546 2673 SSL3_TXT_RSA_IDEA_128_SHA,
bbb4ceb8 2674 SSL3_RFC_RSA_IDEA_128_SHA,
748f2546
RS
2675 SSL3_CK_RSA_IDEA_128_SHA,
2676 SSL_kRSA,
2677 SSL_aRSA,
2678 SSL_IDEA,
2679 SSL_SHA1,
2680 SSL3_VERSION, TLS1_1_VERSION,
387cf213 2681 DTLS1_BAD_VER, DTLS1_VERSION,
748f2546
RS
2682 SSL_NOT_DEFAULT | SSL_MEDIUM,
2683 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2684 128,
2685 128,
2686 },
748f2546 2687#endif
176f85a2 2688
748f2546 2689#ifndef OPENSSL_NO_SEED
176f85a2
DSH
2690 {
2691 1,
748f2546 2692 TLS1_TXT_RSA_WITH_SEED_SHA,
bbb4ceb8 2693 TLS1_RFC_RSA_WITH_SEED_SHA,
748f2546
RS
2694 TLS1_CK_RSA_WITH_SEED_SHA,
2695 SSL_kRSA,
2696 SSL_aRSA,
2697 SSL_SEED,
2698 SSL_SHA1,
2699 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2700 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2701 SSL_NOT_DEFAULT | SSL_MEDIUM,
2702 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2703 128,
2704 128,
176f85a2 2705 },
176f85a2
DSH
2706 {
2707 1,
748f2546 2708 TLS1_TXT_DHE_DSS_WITH_SEED_SHA,
bbb4ceb8 2709 TLS1_RFC_DHE_DSS_WITH_SEED_SHA,
748f2546
RS
2710 TLS1_CK_DHE_DSS_WITH_SEED_SHA,
2711 SSL_kDHE,
2712 SSL_aDSS,
2713 SSL_SEED,
2714 SSL_SHA1,
2715 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2716 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2717 SSL_NOT_DEFAULT | SSL_MEDIUM,
2718 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2719 128,
2720 128,
2721 },
176f85a2
DSH
2722 {
2723 1,
748f2546 2724 TLS1_TXT_DHE_RSA_WITH_SEED_SHA,
bbb4ceb8 2725 TLS1_RFC_DHE_RSA_WITH_SEED_SHA,
748f2546
RS
2726 TLS1_CK_DHE_RSA_WITH_SEED_SHA,
2727 SSL_kDHE,
2728 SSL_aRSA,
2729 SSL_SEED,
2730 SSL_SHA1,
2731 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2732 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2733 SSL_NOT_DEFAULT | SSL_MEDIUM,
2734 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2735 128,
2736 128,
176f85a2 2737 },
176f85a2
DSH
2738 {
2739 1,
748f2546 2740 TLS1_TXT_ADH_WITH_SEED_SHA,
bbb4ceb8 2741 TLS1_RFC_ADH_WITH_SEED_SHA,
748f2546
RS
2742 TLS1_CK_ADH_WITH_SEED_SHA,
2743 SSL_kDHE,
2744 SSL_aNULL,
2745 SSL_SEED,
2746 SSL_SHA1,
2747 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2748 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2749 SSL_NOT_DEFAULT | SSL_MEDIUM,
2750 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2751 128,
2752 128,
2753 },
a230b26e 2754#endif /* OPENSSL_NO_SEED */
176f85a2 2755
748f2546
RS
2756#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
2757 {
2758 1,
2759 SSL3_TXT_RSA_RC4_128_MD5,
bbb4ceb8 2760 SSL3_RFC_RSA_RC4_128_MD5,
748f2546
RS
2761 SSL3_CK_RSA_RC4_128_MD5,
2762 SSL_kRSA,
2763 SSL_aRSA,
2764 SSL_RC4,
2765 SSL_MD5,
2766 SSL3_VERSION, TLS1_2_VERSION,
2767 0, 0,
2768 SSL_NOT_DEFAULT | SSL_MEDIUM,
2769 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2770 128,
2771 128,
2772 },
176f85a2
DSH
2773 {
2774 1,
748f2546 2775 SSL3_TXT_RSA_RC4_128_SHA,
bbb4ceb8 2776 SSL3_RFC_RSA_RC4_128_SHA,
748f2546
RS
2777 SSL3_CK_RSA_RC4_128_SHA,
2778 SSL_kRSA,
2779 SSL_aRSA,
2780 SSL_RC4,
2781 SSL_SHA1,
2782 SSL3_VERSION, TLS1_2_VERSION,
2783 0, 0,
2784 SSL_NOT_DEFAULT | SSL_MEDIUM,
2785 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2786 128,
2787 128,
176f85a2 2788 },
176f85a2
DSH
2789 {
2790 1,
748f2546 2791 SSL3_TXT_ADH_RC4_128_MD5,
bbb4ceb8 2792 SSL3_RFC_ADH_RC4_128_MD5,
748f2546
RS
2793 SSL3_CK_ADH_RC4_128_MD5,
2794 SSL_kDHE,
2795 SSL_aNULL,
2796 SSL_RC4,
2797 SSL_MD5,
2798 SSL3_VERSION, TLS1_2_VERSION,
2799 0, 0,
2800 SSL_NOT_DEFAULT | SSL_MEDIUM,
2801 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2802 128,
2803 128,
2804 },
176f85a2
DSH
2805 {
2806 1,
748f2546 2807 TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2808 TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA,
748f2546
RS
2809 TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA,
2810 SSL_kECDHEPSK,
2811 SSL_aPSK,
2812 SSL_RC4,
2813 SSL_SHA1,
fe55c4a2 2814 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2815 0, 0,
2816 SSL_NOT_DEFAULT | SSL_MEDIUM,
2817 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2818 128,
2819 128,
176f85a2 2820 },
a76ba82c
AP
2821 {
2822 1,
748f2546 2823 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA,
bbb4ceb8 2824 TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA,
748f2546 2825 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA,
a76ba82c 2826 SSL_kECDHE,
748f2546
RS
2827 SSL_aNULL,
2828 SSL_RC4,
2829 SSL_SHA1,
fe55c4a2 2830 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2831 0, 0,
2832 SSL_NOT_DEFAULT | SSL_MEDIUM,
2833 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2834 128,
2835 128,
a76ba82c 2836 },
a76ba82c
AP
2837 {
2838 1,
748f2546 2839 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA,
bbb4ceb8 2840 TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA,
748f2546 2841 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA,
a76ba82c
AP
2842 SSL_kECDHE,
2843 SSL_aECDSA,
748f2546
RS
2844 SSL_RC4,
2845 SSL_SHA1,
fe55c4a2 2846 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2847 0, 0,
2848 SSL_NOT_DEFAULT | SSL_MEDIUM,
2849 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2850 128,
2851 128,
a76ba82c 2852 },
a76ba82c
AP
2853 {
2854 1,
748f2546 2855 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA,
bbb4ceb8 2856 TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA,
748f2546
RS
2857 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA,
2858 SSL_kECDHE,
a76ba82c 2859 SSL_aRSA,
748f2546
RS
2860 SSL_RC4,
2861 SSL_SHA1,
fe55c4a2 2862 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2863 0, 0,
2864 SSL_NOT_DEFAULT | SSL_MEDIUM,
2865 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2866 128,
2867 128,
a76ba82c 2868 },
a76ba82c
AP
2869 {
2870 1,
748f2546 2871 TLS1_TXT_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2872 TLS1_RFC_PSK_WITH_RC4_128_SHA,
748f2546 2873 TLS1_CK_PSK_WITH_RC4_128_SHA,
a76ba82c
AP
2874 SSL_kPSK,
2875 SSL_aPSK,
748f2546
RS
2876 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,
a76ba82c 2884 },
a76ba82c
AP
2885 {
2886 1,
748f2546 2887 TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2888 TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA,
748f2546
RS
2889 TLS1_CK_RSA_PSK_WITH_RC4_128_SHA,
2890 SSL_kRSAPSK,
2891 SSL_aRSA,
2892 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,
a76ba82c 2900 },
a76ba82c
AP
2901 {
2902 1,
748f2546 2903 TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2904 TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA,
748f2546 2905 TLS1_CK_DHE_PSK_WITH_RC4_128_SHA,
a76ba82c
AP
2906 SSL_kDHEPSK,
2907 SSL_aPSK,
748f2546
RS
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,
a76ba82c 2916 },
a230b26e 2917#endif /* OPENSSL_NO_WEAK_SSL_CIPHERS */
e44380a9 2918
bc326738
JS
2919#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 },
bc326738
JS
3048 {
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 },
bc326738
JS
3144 {
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 */
0f113f3e
MC
3177};
3178
650c6e41
BK
3179/*
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",
bbb4ceb8 3188 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
650c6e41
BK
3189 SSL3_CK_SCSV,
3190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3191 },
3192 {
3193 0,
3194 "TLS_FALLBACK_SCSV",
bbb4ceb8 3195 "TLS_FALLBACK_SCSV",
650c6e41
BK
3196 SSL3_CK_FALLBACK_SCSV,
3197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3198 },
3199};
3200
748f2546
RS
3201static 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
a7ff5796
RL
3206 if (ap->id == bp->id)
3207 return 0;
3208 return ap->id < bp->id ? -1 : 1;
748f2546
RS
3209}
3210
3211void ssl_sort_cipher_list(void)
3212{
f865b081
MC
3213 qsort(tls13_ciphers, TLS13_NUM_CIPHERS, sizeof(tls13_ciphers[0]),
3214 cipher_compare);
cbe29648 3215 qsort(ssl3_ciphers, SSL3_NUM_CIPHERS, sizeof(ssl3_ciphers[0]),
748f2546 3216 cipher_compare);
cbe29648 3217 qsort(ssl3_scsvs, SSL3_NUM_SCSVS, sizeof(ssl3_scsvs[0]), cipher_compare);
748f2546
RS
3218}
3219
fce78bd4
BE
3220static 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
0f113f3e
MC
3234const 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,
0f113f3e
MC
3241 SSL3_MD_CLIENT_FINISHED_CONST, 4,
3242 SSL3_MD_SERVER_FINISHED_CONST, 4,
3243 ssl3_alert_code,
fce78bd4 3244 ssl_undefined_function_1,
0f113f3e 3245 0,
a29fa98c 3246 ssl3_set_handshake_header,
2c7b4dbc 3247 tls_close_construct_packet,
0f113f3e
MC
3248 ssl3_handshake_write
3249};
58964a49 3250
f3b656b2 3251long ssl3_default_timeout(void)
0f113f3e
MC
3252{
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}
d02b48c6 3259
6b691a5c 3260int ssl3_num_ciphers(void)
0f113f3e 3261{
26a7d938 3262 return SSL3_NUM_CIPHERS;
0f113f3e 3263}
d02b48c6 3264
babb3798 3265const SSL_CIPHER *ssl3_get_cipher(unsigned int u)
0f113f3e
MC
3266{
3267 if (u < SSL3_NUM_CIPHERS)
26a7d938 3268 return &(ssl3_ciphers[SSL3_NUM_CIPHERS - 1 - u]);
0f113f3e 3269 else
26a7d938 3270 return NULL;
0f113f3e 3271}
d02b48c6 3272
a29fa98c 3273int ssl3_set_handshake_header(SSL *s, WPACKET *pkt, int htype)
2c7b4dbc 3274{
4a01c59f
MC
3275 /* No header in the event of a CCS */
3276 if (htype == SSL3_MT_CHANGE_CIPHER_SPEC)
3277 return 1;
3278
2c7b4dbc 3279 /* Set the content type and 3 bytes for the message len */
08029dfa 3280 if (!WPACKET_put_bytes_u8(pkt, htype)
de451856 3281 || !WPACKET_start_sub_packet_u24(pkt))
2c7b4dbc
MC
3282 return 0;
3283
3284 return 1;
3285}
3286
173e72e6 3287int ssl3_handshake_write(SSL *s)
0f113f3e
MC
3288{
3289 return ssl3_do_write(s, SSL3_RT_HANDSHAKE);
3290}
173e72e6 3291
6b691a5c 3292int ssl3_new(SSL *s)
0f113f3e
MC
3293{
3294 SSL3_STATE *s3;
d02b48c6 3295
b51bce94 3296 if ((s3 = OPENSSL_zalloc(sizeof(*s3))) == NULL)
0f113f3e 3297 goto err;
0f113f3e 3298 s->s3 = s3;
1e0784ff 3299
edc032b5 3300#ifndef OPENSSL_NO_SRP
61986d32 3301 if (!SSL_SRP_CTX_init(s))
a230b26e 3302 goto err;
edc032b5 3303#endif
b77f3ed1
MC
3304
3305 if (!s->method->ssl_clear(s))
3306 return 0;
3307
a89325e4 3308 return 1;
0f113f3e 3309 err:
a89325e4 3310 return 0;
0f113f3e 3311}
d02b48c6 3312
6b691a5c 3313void ssl3_free(SSL *s)
0f113f3e 3314{
a60c151a 3315 if (s == NULL || s->s3 == NULL)
0f113f3e 3316 return;
e03ddfae 3317
0f113f3e 3318 ssl3_cleanup_key_block(s);
8d92c1f8 3319
fb79abe3 3320#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
61dd9f7a
DSH
3321 EVP_PKEY_free(s->s3->peer_tmp);
3322 s->s3->peer_tmp = NULL;
b22d7113
DSH
3323 EVP_PKEY_free(s->s3->tmp.pkey);
3324 s->s3->tmp.pkey = NULL;
ea262260
BM
3325#endif
3326
75c13e78 3327 OPENSSL_free(s->s3->tmp.ctype);
fa7c2637 3328 sk_X509_NAME_pop_free(s->s3->tmp.peer_ca_names, X509_NAME_free);
76106e60
DSH
3329 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);
c589c34e 3332 OPENSSL_free(s->s3->tmp.peer_cert_sigalgs);
85fb6fda 3333 ssl3_free_digest_list(s);
25aaa98a 3334 OPENSSL_free(s->s3->alpn_selected);
817cd0d5 3335 OPENSSL_free(s->s3->alpn_proposed);
6f017a8f 3336
edc032b5 3337#ifndef OPENSSL_NO_SRP
0f113f3e 3338 SSL_SRP_CTX_free(s);
edc032b5 3339#endif
b4faea50 3340 OPENSSL_clear_free(s->s3, sizeof(*s->s3));
0f113f3e
MC
3341 s->s3 = NULL;
3342}
d02b48c6 3343
b77f3ed1 3344int ssl3_clear(SSL *s)
0f113f3e 3345{
0f113f3e 3346 ssl3_cleanup_key_block(s);
75c13e78 3347 OPENSSL_free(s->s3->tmp.ctype);
fa7c2637 3348 sk_X509_NAME_pop_free(s->s3->tmp.peer_ca_names, X509_NAME_free);
76106e60 3349 OPENSSL_free(s->s3->tmp.ciphers_raw);
76106e60 3350 OPENSSL_clear_free(s->s3->tmp.pms, s->s3->tmp.pmslen);
76106e60 3351 OPENSSL_free(s->s3->tmp.peer_sigalgs);
c589c34e 3352 OPENSSL_free(s->s3->tmp.peer_cert_sigalgs);
d02b48c6 3353
fb79abe3 3354#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
b22d7113 3355 EVP_PKEY_free(s->s3->tmp.pkey);
61dd9f7a 3356 EVP_PKEY_free(s->s3->peer_tmp);
a230b26e 3357#endif /* !OPENSSL_NO_EC */
0f113f3e 3358
85fb6fda 3359 ssl3_free_digest_list(s);
e481f9b9 3360
817cd0d5
TS
3361 OPENSSL_free(s->s3->alpn_selected);
3362 OPENSSL_free(s->s3->alpn_proposed);
e481f9b9 3363
817cd0d5 3364 /* NULL/zero-out everything in the s3 struct */
b4faea50 3365 memset(s->s3, 0, sizeof(*s->s3));
0f113f3e 3366
b77f3ed1
MC
3367 if (!ssl_free_wbio_buffer(s))
3368 return 0;
0f113f3e 3369
0f113f3e 3370 s->version = SSL3_VERSION;
ee2ffc27 3371
e481f9b9 3372#if !defined(OPENSSL_NO_NEXTPROTONEG)
aff8c126
RS
3373 OPENSSL_free(s->ext.npn);
3374 s->ext.npn = NULL;
3375 s->ext.npn_len = 0;
ee2ffc27 3376#endif
b77f3ed1
MC
3377
3378 return 1;
0f113f3e 3379}
d02b48c6 3380
edc032b5 3381#ifndef OPENSSL_NO_SRP
0f113f3e
MC
3382static char *srp_password_from_info_cb(SSL *s, void *arg)
3383{
7644a9ae 3384 return OPENSSL_strdup(s->srp_ctx.info);
0f113f3e 3385}
edc032b5
BL
3386#endif
3387
a230b26e 3388static int ssl3_set_req_cert_type(CERT *c, const unsigned char *p, size_t len);
9f27b1ee 3389
a661b653 3390long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
0f113f3e
MC
3391{
3392 int ret = 0;
58964a49 3393
0f113f3e 3394 switch (cmd) {
0f113f3e
MC
3395 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;
bc36ee62 3410#ifndef OPENSSL_NO_DH
0f113f3e
MC
3411 case SSL_CTRL_SET_TMP_DH:
3412 {
3413 DH *dh = (DH *)parg;
e2b420fd 3414 EVP_PKEY *pkdh = NULL;
0f113f3e
MC
3415 if (dh == NULL) {
3416 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
26a7d938 3417 return ret;
0f113f3e 3418 }
e2b420fd
DSH
3419 pkdh = ssl_dh_to_pkey(dh);
3420 if (pkdh == NULL) {
3421 SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE);
3422 return 0;
3423 }
0f113f3e 3424 if (!ssl_security(s, SSL_SECOP_TMP_DH,
e2b420fd 3425 EVP_PKEY_security_bits(pkdh), 0, pkdh)) {
0f113f3e 3426 SSLerr(SSL_F_SSL3_CTRL, SSL_R_DH_KEY_TOO_SMALL);
e2b420fd
DSH
3427 EVP_PKEY_free(pkdh);
3428 return ret;
0f113f3e 3429 }
e2b420fd
DSH
3430 EVP_PKEY_free(s->cert->dh_tmp);
3431 s->cert->dh_tmp = pkdh;
0f113f3e
MC
3432 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);
26a7d938 3438 return ret;
0f113f3e 3439 }
0f113f3e
MC
3440 case SSL_CTRL_SET_DH_AUTO:
3441 s->cert->dh_tmp_auto = larg;
3442 return 1;
d3442bc7 3443#endif
10bf4fc2 3444#ifndef OPENSSL_NO_EC
0f113f3e
MC
3445 case SSL_CTRL_SET_TMP_ECDH:
3446 {
6977e8ee
KR
3447 const EC_GROUP *group = NULL;
3448 int nid;
0f113f3e
MC
3449
3450 if (parg == NULL) {
3451 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
6977e8ee 3452 return 0;
0f113f3e 3453 }
6977e8ee
KR
3454 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;
0f113f3e 3458 }
6977e8ee
KR
3459 nid = EC_GROUP_get_curve_name(group);
3460 if (nid == NID_undef)
3461 return 0;
aff8c126
RS
3462 return tls1_set_groups(&s->ext.supportedgroups,
3463 &s->ext.supportedgroups_len,
6977e8ee 3464 &nid, 1);
0f113f3e
MC
3465 }
3466 break;
10bf4fc2 3467#endif /* !OPENSSL_NO_EC */
0f113f3e
MC
3468 case SSL_CTRL_SET_TLSEXT_HOSTNAME:
3469 if (larg == TLSEXT_NAMETYPE_host_name) {
0982ecaa
VD
3470 size_t len;
3471
aff8c126
RS
3472 OPENSSL_free(s->ext.hostname);
3473 s->ext.hostname = NULL;
0f113f3e
MC
3474
3475 ret = 1;
3476 if (parg == NULL)
3477 break;
0982ecaa
VD
3478 len = strlen((char *)parg);
3479 if (len == 0 || len > TLSEXT_MAXLEN_host_name) {
0f113f3e
MC
3480 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
3481 return 0;
3482 }
aff8c126 3483 if ((s->ext.hostname = OPENSSL_strdup((char *)parg)) == NULL) {
0f113f3e
MC
3484 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:
aff8c126 3493 s->ext.debug_arg = parg;
0f113f3e
MC
3494 ret = 1;
3495 break;
3496
4300aaf3 3497 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3498 ret = s->ext.status_type;
4300aaf3
AG
3499 break;
3500
0f113f3e 3501 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3502 s->ext.status_type = larg;
0f113f3e
MC
3503 ret = 1;
3504 break;
3505
3506 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS:
aff8c126 3507 *(STACK_OF(X509_EXTENSION) **)parg = s->ext.ocsp.exts;
0f113f3e
MC
3508 ret = 1;
3509 break;
3510
3511 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS:
aff8c126 3512 s->ext.ocsp.exts = parg;
0f113f3e
MC
3513 ret = 1;
3514 break;
3515
3516 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS:
aff8c126 3517 *(STACK_OF(OCSP_RESPID) **)parg = s->ext.ocsp.ids;
0f113f3e
MC
3518 ret = 1;
3519 break;
3520
3521 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS:
aff8c126 3522 s->ext.ocsp.ids = parg;
0f113f3e
MC
3523 ret = 1;
3524 break;
3525
3526 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP:
aff8c126
RS
3527 *(unsigned char **)parg = s->ext.ocsp.resp;
3528 if (s->ext.ocsp.resp_len == 0
3529 || s->ext.ocsp.resp_len > LONG_MAX)
8b0e934a 3530 return -1;
aff8c126 3531 return (long)s->ext.ocsp.resp_len;
0f113f3e
MC
3532
3533 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP:
aff8c126
RS
3534 OPENSSL_free(s->ext.ocsp.resp);
3535 s->ext.ocsp.resp = parg;
3536 s->ext.ocsp.resp_len = larg;
0f113f3e
MC
3537 ret = 1;
3538 break;
3539
b612799a
RL
3540#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
0f113f3e
MC
3547 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);
3552
3553 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);
3558
3559 case SSL_CTRL_GET_CHAIN_CERTS:
3560 *(STACK_OF(X509) **)parg = s->cert->key->chain;
3561 break;
3562
3563 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) {
0f113f3e
MC
3568 const SSL_CIPHER *cipher;
3569 if (!s->server)
3570 return 0;
3571 cipher = s->s3->tmp.new_cipher;
f365a3e2 3572 if (cipher == NULL)
0f113f3e
MC
3573 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;
a497cf25 3580 if (s->s3->tmp.cert == NULL)
0f113f3e 3581 return 0;
a497cf25 3582 s->cert->key = s->s3->tmp.cert;
0f113f3e
MC
3583 return 1;
3584 }
3585 return ssl_cert_set_current(s->cert, larg);
0f78819c 3586
14536c8c 3587#ifndef OPENSSL_NO_EC
de4d764e 3588 case SSL_CTRL_GET_GROUPS:
0f113f3e 3589 {
9e84a42d 3590 uint16_t *clist;
0f113f3e 3591 size_t clistlen;
aff8c126 3592
0f113f3e
MC
3593 if (!s->session)
3594 return 0;
aff8c126 3595 clist = s->session->ext.supportedgroups;
9e84a42d 3596 clistlen = s->session->ext.supportedgroups_len;
0f113f3e
MC
3597 if (parg) {
3598 size_t i;
3599 int *cptr = parg;
43b95d73 3600
0f113f3e 3601 for (i = 0; i < clistlen; i++) {
43b95d73
DSH
3602 const TLS_GROUP_INFO *cinf = tls1_group_id_lookup(clist[i]);
3603
3604 if (cinf != NULL)
3605 cptr[i] = cinf->nid;
0f113f3e 3606 else
9e84a42d 3607 cptr[i] = TLSEXT_nid_unknown | clist[i];
0f113f3e
MC
3608 }
3609 }
3610 return (int)clistlen;
3611 }
3612
de4d764e 3613 case SSL_CTRL_SET_GROUPS:
aff8c126
RS
3614 return tls1_set_groups(&s->ext.supportedgroups,
3615 &s->ext.supportedgroups_len, parg, larg);
0f113f3e 3616
de4d764e 3617 case SSL_CTRL_SET_GROUPS_LIST:
aff8c126
RS
3618 return tls1_set_groups_list(&s->ext.supportedgroups,
3619 &s->ext.supportedgroups_len, parg);
0f113f3e 3620
de4d764e 3621 case SSL_CTRL_GET_SHARED_GROUP:
43b95d73
DSH
3622 {
3623 uint16_t id = tls1_shared_group(s, larg);
0f113f3e 3624
43b95d73
DSH
3625 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 }
14536c8c 3632#endif
0f113f3e
MC
3633 case SSL_CTRL_SET_SIGALGS:
3634 return tls1_set_sigalgs(s->cert, parg, larg, 0);
3635
3636 case SSL_CTRL_SET_SIGALGS_LIST:
3637 return tls1_set_sigalgs_list(s->cert, parg, 0);
3638
3639 case SSL_CTRL_SET_CLIENT_SIGALGS:
3640 return tls1_set_sigalgs(s->cert, parg, larg, 1);
3641
3642 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST:
3643 return tls1_set_sigalgs_list(s->cert, parg, 1);
3644
3645 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;
0f113f3e 3650 if (pctype)
75c13e78
DSH
3651 *pctype = s->s3->tmp.ctype;
3652 return s->s3->tmp.ctype_len;
0f113f3e
MC
3653 }
3654
3655 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);
3659
3660 case SSL_CTRL_BUILD_CERT_CHAIN:
3661 return ssl_build_cert_chain(s, NULL, larg);
3662
3663 case SSL_CTRL_SET_VERIFY_CERT_STORE:
3664 return ssl_cert_set_cert_store(s->cert, parg, 0, larg);
3665
3666 case SSL_CTRL_SET_CHAIN_CERT_STORE:
3667 return ssl_cert_set_cert_store(s->cert, parg, 1, larg);
3668
3669 case SSL_CTRL_GET_PEER_SIGNATURE_NID:
f742cda8 3670 if (s->s3->tmp.peer_sigalg == NULL)
0f113f3e 3671 return 0;
f742cda8
DSH
3672 *(int *)parg = s->s3->tmp.peer_sigalg->hash;
3673 return 1;
0f113f3e
MC
3674
3675 case SSL_CTRL_GET_SERVER_TMP_KEY:
fb79abe3
DSH
3676#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC)
3677 if (s->server || s->session == NULL || s->s3->peer_tmp == NULL) {
0f113f3e 3678 return 0;
fb79abe3
DSH
3679 } else {
3680 EVP_PKEY_up_ref(s->s3->peer_tmp);
3681 *(EVP_PKEY **)parg = s->s3->peer_tmp;
3682 return 1;
0f113f3e 3683 }
fb79abe3
DSH
3684#else
3685 return 0;
3686#endif
14536c8c 3687#ifndef OPENSSL_NO_EC
0f113f3e
MC
3688 case SSL_CTRL_GET_EC_POINT_FORMATS:
3689 {
3690 SSL_SESSION *sess = s->session;
3691 const unsigned char **pformat = parg;
aff8c126
RS
3692
3693 if (sess == NULL || sess->ext.ecpointformats == NULL)
0f113f3e 3694 return 0;
aff8c126
RS
3695 *pformat = sess->ext.ecpointformats;
3696 return (int)sess->ext.ecpointformats_len;
0f113f3e 3697 }
14536c8c 3698#endif
cf6da053 3699
0f113f3e
MC
3700 default:
3701 break;
3702 }
26a7d938 3703 return ret;
0f113f3e
MC
3704}
3705
3706long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp) (void))
3707{
3708 int ret = 0;
d3442bc7 3709
0f113f3e 3710 switch (cmd) {
bc36ee62 3711#ifndef OPENSSL_NO_DH
0f113f3e
MC
3712 case SSL_CTRL_SET_TMP_DH_CB:
3713 {
3714 s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
3715 }
3716 break;
6434abbf 3717#endif
0f113f3e 3718 case SSL_CTRL_SET_TLSEXT_DEBUG_CB:
aff8c126 3719 s->ext.debug_cb = (void (*)(SSL *, int, int,
1ed327f7 3720 const unsigned char *, int, void *))fp;
0f113f3e 3721 break;
e481f9b9 3722
0f113f3e
MC
3723 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 }
26a7d938 3731 return ret;
0f113f3e 3732}
d02b48c6 3733
a661b653 3734long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
0f113f3e 3735{
0f113f3e 3736 switch (cmd) {
bc36ee62 3737#ifndef OPENSSL_NO_DH
0f113f3e
MC
3738 case SSL_CTRL_SET_TMP_DH:
3739 {
e2b420fd
DSH
3740 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);
0f113f3e
MC
3744 return 0;
3745 }
e2b420fd
DSH
3746 pkdh = ssl_dh_to_pkey(dh);
3747 if (pkdh == NULL) {
3748 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
0f113f3e
MC
3749 return 0;
3750 }
e2b420fd
DSH
3751 if (!ssl_ctx_security(ctx, SSL_SECOP_TMP_DH,
3752 EVP_PKEY_security_bits(pkdh), 0, pkdh)) {
3753 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_DH_KEY_TOO_SMALL);
3754 EVP_PKEY_free(pkdh);
3755 return 1;
0f113f3e 3756 }
e2b420fd
DSH
3757 EVP_PKEY_free(ctx->cert->dh_tmp);
3758 ctx->cert->dh_tmp = pkdh;
0f113f3e
MC
3759 return 1;
3760 }
0f113f3e
MC
3761 case SSL_CTRL_SET_TMP_DH_CB:
3762 {
3763 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
26a7d938 3764 return 0;
0f113f3e 3765 }
0f113f3e
MC
3766 case SSL_CTRL_SET_DH_AUTO:
3767 ctx->cert->dh_tmp_auto = larg;
3768 return 1;
d02b48c6 3769#endif
10bf4fc2 3770#ifndef OPENSSL_NO_EC
0f113f3e
MC
3771 case SSL_CTRL_SET_TMP_ECDH:
3772 {
6977e8ee
KR
3773 const EC_GROUP *group = NULL;
3774 int nid;
0f113f3e
MC
3775
3776 if (parg == NULL) {
6977e8ee 3777 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_PASSED_NULL_PARAMETER);
0f113f3e
MC
3778 return 0;
3779 }
6977e8ee
KR
3780 group = EC_KEY_get0_group((const EC_KEY *)parg);
3781 if (group == NULL) {
3782 SSLerr(SSL_F_SSL3_CTX_CTRL, EC_R_MISSING_PARAMETERS);
0f113f3e
MC
3783 return 0;
3784 }
6977e8ee
KR
3785 nid = EC_GROUP_get_curve_name(group);
3786 if (nid == NID_undef)
3787 return 0;
aff8c126
RS
3788 return tls1_set_groups(&ctx->ext.supportedgroups,
3789 &ctx->ext.supportedgroups_len,
6977e8ee 3790 &nid, 1);
0f113f3e 3791 }
10bf4fc2 3792#endif /* !OPENSSL_NO_EC */
0f113f3e 3793 case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG:
aff8c126 3794 ctx->ext.servername_arg = parg;
0f113f3e
MC
3795 break;
3796 case SSL_CTRL_SET_TLSEXT_TICKET_KEYS:
3797 case SSL_CTRL_GET_TLSEXT_TICKET_KEYS:
3798 {
3799 unsigned char *keys = parg;
aff8c126
RS
3800 long tick_keylen = (sizeof(ctx->ext.tick_key_name) +
3801 sizeof(ctx->ext.tick_hmac_key) +
3802 sizeof(ctx->ext.tick_aes_key));
d139723b 3803 if (keys == NULL)
aff8c126
RS
3804 return tick_keylen;
3805 if (larg != tick_keylen) {
0f113f3e
MC
3806 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) {
aff8c126
RS
3810 memcpy(ctx->ext.tick_key_name, keys,
3811 sizeof(ctx->ext.tick_key_name));
3812 memcpy(ctx->ext.tick_hmac_key,
3813 keys + sizeof(ctx->ext.tick_key_name),
3814 sizeof(ctx->ext.tick_hmac_key));
3815 memcpy(ctx->ext.tick_aes_key,
3816 keys + sizeof(ctx->ext.tick_key_name) +
3817 sizeof(ctx->ext.tick_hmac_key),
3818 sizeof(ctx->ext.tick_aes_key));
0f113f3e 3819 } else {
aff8c126
RS
3820 memcpy(keys, ctx->ext.tick_key_name,
3821 sizeof(ctx->ext.tick_key_name));
3822 memcpy(keys + sizeof(ctx->ext.tick_key_name),
3823 ctx->ext.tick_hmac_key,
3824 sizeof(ctx->ext.tick_hmac_key));
3825 memcpy(keys + sizeof(ctx->ext.tick_key_name) +
3826 sizeof(ctx->ext.tick_hmac_key),
3827 ctx->ext.tick_aes_key,
3828 sizeof(ctx->ext.tick_aes_key));
0f113f3e
MC
3829 }
3830 return 1;
3831 }
3832
30b96765 3833 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3834 return ctx->ext.status_type;
30b96765 3835
ba261f71 3836 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3837 ctx->ext.status_type = larg;
ba261f71 3838 break;
3839
0f113f3e 3840 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
aff8c126 3841 ctx->ext.status_arg = parg;
0f113f3e 3842 return 1;
0f113f3e 3843
fddfc0af 3844 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG:
aff8c126 3845 *(void**)parg = ctx->ext.status_arg;
fddfc0af
RG
3846 break;
3847
3848 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB:
aff8c126 3849 *(int (**)(SSL*, void*))parg = ctx->ext.status_cb;
fddfc0af
RG
3850 break;
3851
e481f9b9 3852#ifndef OPENSSL_NO_SRP
0f113f3e
MC
3853 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME:
3854 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
b548a1f1 3855 OPENSSL_free(ctx->srp_ctx.login);
0f113f3e
MC
3856 ctx->srp_ctx.login = NULL;
3857 if (parg == NULL)
3858 break;
a230b26e 3859 if (strlen((const char *)parg) > 255 || strlen((const char *)parg) < 1) {
0f113f3e
MC
3860 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_SRP_USERNAME);
3861 return 0;
3862 }
7644a9ae 3863 if ((ctx->srp_ctx.login = OPENSSL_strdup((char *)parg)) == NULL) {
0f113f3e
MC
3864 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;
e655f549
DSC
3871 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 }
0f113f3e
MC
3877 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;
3882
3883 case SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH:
3884 ctx->srp_ctx.strength = larg;
3885 break;
e481f9b9 3886#endif
0f113f3e 3887
e481f9b9 3888#ifndef OPENSSL_NO_EC
de4d764e 3889 case SSL_CTRL_SET_GROUPS:
aff8c126
RS
3890 return tls1_set_groups(&ctx->ext.supportedgroups,
3891 &ctx->ext.supportedgroups_len,
0f113f3e
MC
3892 parg, larg);
3893
de4d764e 3894 case SSL_CTRL_SET_GROUPS_LIST:
aff8c126
RS
3895 return tls1_set_groups_list(&ctx->ext.supportedgroups,
3896 &ctx->ext.supportedgroups_len,
0f113f3e 3897 parg);
e481f9b9 3898#endif
0f113f3e
MC
3899 case SSL_CTRL_SET_SIGALGS:
3900 return tls1_set_sigalgs(ctx->cert, parg, larg, 0);
3901
3902 case SSL_CTRL_SET_SIGALGS_LIST:
3903 return tls1_set_sigalgs_list(ctx->cert, parg, 0);
3904
3905 case SSL_CTRL_SET_CLIENT_SIGALGS:
3906 return tls1_set_sigalgs(ctx->cert, parg, larg, 1);
3907
3908 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST:
3909 return tls1_set_sigalgs_list(ctx->cert, parg, 1);
3910
3911 case SSL_CTRL_SET_CLIENT_CERT_TYPES:
3912 return ssl3_set_req_cert_type(ctx->cert, parg, larg);
3913
3914 case SSL_CTRL_BUILD_CERT_CHAIN:
3915 return ssl_build_cert_chain(NULL, ctx, larg);
3916
3917 case SSL_CTRL_SET_VERIFY_CERT_STORE:
3918 return ssl_cert_set_cert_store(ctx->cert, parg, 0, larg);
3919
3920 case SSL_CTRL_SET_CHAIN_CERT_STORE:
3921 return ssl_cert_set_cert_store(ctx->cert, parg, 1, larg);
3922
0f113f3e
MC
3923 /* A Thawte special :-) */
3924 case SSL_CTRL_EXTRA_CHAIN_CERT:
3925 if (ctx->extra_certs == NULL) {
3c82e437
F
3926 if ((ctx->extra_certs = sk_X509_new_null()) == NULL) {
3927 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3928 return 0;
3929 }
3930 }
3931 if (!sk_X509_push(ctx->extra_certs, (X509 *)parg)) {
3932 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3933 return 0;
0f113f3e 3934 }
0f113f3e
MC
3935 break;
3936
3937 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;
3943
3944 case SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS:
222561fe
RS
3945 sk_X509_pop_free(ctx->extra_certs, X509_free);
3946 ctx->extra_certs = NULL;
0f113f3e
MC
3947 break;
3948
3949 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);
3954
3955 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);
3960
3961 case SSL_CTRL_GET_CHAIN_CERTS:
3962 *(STACK_OF(X509) **)parg = ctx->cert->key->chain;
3963 break;
3964
3965 case SSL_CTRL_SELECT_CURRENT_CERT:
3966 return ssl_cert_select_current(ctx->cert, (X509 *)parg);
3967
3968 case SSL_CTRL_SET_CURRENT_CERT:
3969 return ssl_cert_set_current(ctx->cert, larg);
3970
3971 default:
26a7d938 3972 return 0;
0f113f3e 3973 }
208fb891 3974 return 1;
0f113f3e
MC
3975}
3976
3977long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void))
3978{
0f113f3e 3979 switch (cmd) {
bc36ee62 3980#ifndef OPENSSL_NO_DH
0f113f3e
MC
3981 case SSL_CTRL_SET_TMP_DH_CB:
3982 {
8ca8fc48 3983 ctx->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
0f113f3e
MC
3984 }
3985 break;
ed3883d2 3986#endif
0f113f3e 3987 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB:
aff8c126 3988 ctx->ext.servername_cb = (int (*)(SSL *, int *, void *))fp;
0f113f3e
MC
3989 break;
3990
0f113f3e 3991 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB:
aff8c126 3992 ctx->ext.status_cb = (int (*)(SSL *, void *))fp;
0f113f3e
MC
3993 break;
3994
3995 case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB:
aff8c126 3996 ctx->ext.ticket_key_cb = (int (*)(SSL *, unsigned char *,
0f113f3e
MC
3997 unsigned char *,
3998 EVP_CIPHER_CTX *,
3999 HMAC_CTX *, int))fp;
4000 break;
4001
e481f9b9 4002#ifndef OPENSSL_NO_SRP
0f113f3e
MC
4003 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;
761772d7 4017#endif
0f113f3e
MC
4018 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB:
4019 {
4020 ctx->not_resumable_session_cb = (int (*)(SSL *, int))fp;
4021 }
4022 break;
4023 default:
26a7d938 4024 return 0;
0f113f3e 4025 }
208fb891 4026 return 1;
0f113f3e 4027}
761772d7 4028
ec15acb6
MC
4029const SSL_CIPHER *ssl3_get_cipher_by_id(uint32_t id)
4030{
4031 SSL_CIPHER c;
650c6e41 4032 const SSL_CIPHER *cp;
ec15acb6
MC
4033
4034 c.id = id;
f865b081
MC
4035 cp = OBJ_bsearch_ssl_cipher_id(&c, tls13_ciphers, TLS13_NUM_CIPHERS);
4036 if (cp != NULL)
4037 return cp;
650c6e41
BK
4038 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);
ec15acb6
MC
4042}
4043
bbb4ceb8
PY
4044const SSL_CIPHER *ssl3_get_cipher_by_std_name(const char *stdname)
4045{
f865b081
MC
4046 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};
bbb4ceb8 4049
3519bae5 4050 /* this is not efficient, necessary to optimize this? */
f865b081
MC
4051 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 }
bbb4ceb8
PY
4059 }
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
0f113f3e
MC
4073/*
4074 * This function needs to check if the ciphers required are actually
4075 * available
4076 */
babb3798 4077const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p)
0f113f3e 4078{
1f5b44e9 4079 return ssl3_get_cipher_by_id(SSL3_CK_CIPHERSUITE_FLAG
ec15acb6
MC
4080 | ((uint32_t)p[0] << 8L)
4081 | (uint32_t)p[1]);
0f113f3e 4082}
d02b48c6 4083
ae2f7b37 4084int ssl3_put_cipher_by_char(const SSL_CIPHER *c, WPACKET *pkt, size_t *len)
2c7b4dbc 4085{
34f7245b 4086 if ((c->id & 0xff000000) != SSL3_CK_CIPHERSUITE_FLAG) {
2c7b4dbc
MC
4087 *len = 0;
4088 return 1;
4089 }
4090
08029dfa 4091 if (!WPACKET_put_bytes_u16(pkt, c->id & 0xffff))
2c7b4dbc
MC
4092 return 0;
4093
4094 *len = 2;
4095 return 1;
4096}
4097
3eb2aff4
KR
4098/*
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 */
4a640fb6 4106const SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
a230b26e 4107 STACK_OF(SSL_CIPHER) *srvr)
0f113f3e 4108{
4a640fb6 4109 const SSL_CIPHER *c, *ret = NULL;
0f113f3e
MC
4110 STACK_OF(SSL_CIPHER) *prio, *allow;
4111 int i, ii, ok;
0de6d66d 4112 unsigned long alg_k = 0, alg_a = 0, mask_k = 0, mask_a = 0;
e1c7871d
TS
4113#ifndef OPENSSL_NO_CHACHA
4114 STACK_OF(SSL_CIPHER) *prio_chacha = NULL;
4115#endif
d02b48c6 4116
0f113f3e 4117 /* Let's see which ciphers we can support */
d02b48c6 4118
0f113f3e
MC
4119 /*
4120 * Do not set the compare functions, because this may lead to a
4121 * reordering by "id". We want to keep the original ordering. We may pay
4122 * a price in performance during sk_SSL_CIPHER_find(), but would have to
4123 * pay with the price of sk_SSL_CIPHER_dup().
4124 */
d02b48c6 4125
f415fa32 4126#ifdef CIPHER_DEBUG
0f113f3e
MC
4127 fprintf(stderr, "Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr),
4128 (void *)srvr);
4129 for (i = 0; i < sk_SSL_CIPHER_num(srvr); ++i) {
4130 c = sk_SSL_CIPHER_value(srvr, i);
4131 fprintf(stderr, "%p:%s\n", (void *)c, c->name);
4132 }
4133 fprintf(stderr, "Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt),
4134 (void *)clnt);
4135 for (i = 0; i < sk_SSL_CIPHER_num(clnt); ++i) {
4136 c = sk_SSL_CIPHER_value(clnt, i);
4137 fprintf(stderr, "%p:%s\n", (void *)c, c->name);
4138 }
f415fa32
BL
4139#endif
4140
e1c7871d
TS
4141 /* SUITE-B takes precedence over server preference and ChaCha priortiy */
4142 if (tls1_suiteb(s)) {
4143 prio = srvr;
4144 allow = clnt;
4145 } else if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) {
0f113f3e
MC
4146 prio = srvr;
4147 allow = clnt;
e1c7871d
TS
4148#ifndef OPENSSL_NO_CHACHA
4149 /* If ChaCha20 is at the top of the client preference list,
4150 and there are ChaCha20 ciphers in the server list, then
4151 temporarily prioritize all ChaCha20 ciphers in the servers list. */
4152 if (s->options & SSL_OP_PRIORITIZE_CHACHA && sk_SSL_CIPHER_num(clnt) > 0) {
4153 c = sk_SSL_CIPHER_value(clnt, 0);
4154 if (c->algorithm_enc == SSL_CHACHA20POLY1305) {
4155 /* ChaCha20 is client preferred, check server... */
4156 int num = sk_SSL_CIPHER_num(srvr);
4157 int found = 0;
4158 for (i = 0; i < num; i++) {
4159 c = sk_SSL_CIPHER_value(srvr, i);
4160 if (c->algorithm_enc == SSL_CHACHA20POLY1305) {
4161 found = 1;
4162 break;
4163 }
4164 }
4165 if (found) {
e670e903 4166 prio_chacha = sk_SSL_CIPHER_new_reserve(NULL, num);
e1c7871d
TS
4167 /* if reserve fails, then there's likely a memory issue */
4168 if (prio_chacha != NULL) {
4169 /* Put all ChaCha20 at the top, starting with the one we just found */
4170 sk_SSL_CIPHER_push(prio_chacha, c);
4171 for (i++; i < num; i++) {
4172 c = sk_SSL_CIPHER_value(srvr, i);
4173 if (c->algorithm_enc == SSL_CHACHA20POLY1305)
4174 sk_SSL_CIPHER_push(prio_chacha, c);
4175 }
4176 /* Pull in the rest */
4177 for (i = 0; i < num; i++) {
4178 c = sk_SSL_CIPHER_value(srvr, i);
4179 if (c->algorithm_enc != SSL_CHACHA20POLY1305)
4180 sk_SSL_CIPHER_push(prio_chacha, c);
4181 }
4182 prio = prio_chacha;
4183 }
4184 }
4185 }
4186 }
4187# endif
0f113f3e
MC
4188 } else {
4189 prio = clnt;
4190 allow = srvr;
4191 }
4192
0de6d66d
MC
4193 if (!SSL_IS_TLS13(s)) {
4194 tls1_set_cert_validity(s);
4195 ssl_set_masks(s);
4196 }
0f113f3e
MC
4197
4198 for (i = 0; i < sk_SSL_CIPHER_num(prio); i++) {
4199 c = sk_SSL_CIPHER_value(prio, i);
4200
3eb2aff4
KR
4201 /* Skip ciphers not supported by the protocol version */
4202 if (!SSL_IS_DTLS(s) &&
a230b26e 4203 ((s->version < c->min_tls) || (s->version > c->max_tls)))
0f113f3e 4204 continue;
3eb2aff4 4205 if (SSL_IS_DTLS(s) &&
a230b26e
EK
4206 (DTLS_VERSION_LT(s->version, c->min_dtls) ||
4207 DTLS_VERSION_GT(s->version, c->max_dtls)))
2b573382 4208 continue;
a055a881 4209
0de6d66d
MC
4210 /*
4211 * Since TLS 1.3 ciphersuites can be used with any auth or
4212 * key exchange scheme skip tests.
4213 */
4214 if (!SSL_IS_TLS13(s)) {
612ca806
DSH
4215 mask_k = s->s3->tmp.mask_k;
4216 mask_a = s->s3->tmp.mask_a;
edc032b5 4217#ifndef OPENSSL_NO_SRP
612ca806
DSH
4218 if (s->srp_ctx.srp_Mask & SSL_kSRP) {
4219 mask_k |= SSL_kSRP;
4220 mask_a |= SSL_aSRP;
4221 }
edc032b5 4222#endif
0f113f3e 4223
612ca806
DSH
4224 alg_k = c->algorithm_mkey;
4225 alg_a = c->algorithm_auth;
52b8dad8 4226
ddac1974 4227#ifndef OPENSSL_NO_PSK
612ca806
DSH
4228 /* with PSK there must be server callback set */
4229 if ((alg_k & SSL_PSK) && s->psk_server_callback == NULL)
4230 continue;
0f113f3e
MC
4231#endif /* OPENSSL_NO_PSK */
4232
612ca806 4233 ok = (alg_k & mask_k) && (alg_a & mask_a);
d02b48c6 4234#ifdef CIPHER_DEBUG
612ca806
DSH
4235 fprintf(stderr, "%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n", ok, alg_k,
4236 alg_a, mask_k, mask_a, (void *)c, c->name);
d02b48c6 4237#endif
d02b48c6 4238
a230b26e 4239#ifndef OPENSSL_NO_EC
612ca806
DSH
4240 /*
4241 * if we are considering an ECC cipher suite that uses an ephemeral
4242 * EC key check it
4243 */
4244 if (alg_k & SSL_kECDHE)
4245 ok = ok && tls1_check_ec_tmp_key(s, c->id);
a230b26e 4246#endif /* OPENSSL_NO_EC */
0f113f3e 4247
612ca806
DSH
4248 if (!ok)
4249 continue;
4250 }
0f113f3e
MC
4251 ii = sk_SSL_CIPHER_find(allow, c);
4252 if (ii >= 0) {
4253 /* Check security callback permits this cipher */
4254 if (!ssl_security(s, SSL_SECOP_CIPHER_SHARED,
4a640fb6 4255 c->strength_bits, 0, (void *)c))
0f113f3e 4256 continue;
e481f9b9 4257#if !defined(OPENSSL_NO_EC)
0f113f3e
MC
4258 if ((alg_k & SSL_kECDHE) && (alg_a & SSL_aECDSA)
4259 && s->s3->is_probably_safari) {
4260 if (!ret)
4261 ret = sk_SSL_CIPHER_value(allow, ii);
4262 continue;
4263 }
d89cd382 4264#endif
0f113f3e
MC
4265 ret = sk_SSL_CIPHER_value(allow, ii);
4266 break;
4267 }
4268 }
e1c7871d
TS
4269#ifndef OPENSSL_NO_CHACHA
4270 sk_SSL_CIPHER_free(prio_chacha);
4271#endif
26a7d938 4272 return ret;
0f113f3e 4273}
d02b48c6 4274
28ff8ef3 4275int ssl3_get_req_cert_type(SSL *s, WPACKET *pkt)
0f113f3e 4276{
90d9e49a 4277 uint32_t alg_k, alg_a = 0;
0f113f3e
MC
4278
4279 /* If we have custom certificate types set, use them */
75c13e78
DSH
4280 if (s->cert->ctype)
4281 return WPACKET_memcpy(pkt, s->cert->ctype, s->cert->ctype_len);
0f113f3e
MC
4282 /* Get mask of algorithms disabled by signature list */
4283 ssl_set_sig_mask(&alg_a, s, SSL_SECOP_SIGALG_MASK);
0f113f3e
MC
4284
4285 alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
d02b48c6 4286
caa97ef1 4287#ifndef OPENSSL_NO_GOST
28ff8ef3
MC
4288 if (s->version >= TLS1_VERSION && (alg_k & SSL_kGOST))
4289 return WPACKET_put_bytes_u8(pkt, TLS_CT_GOST01_SIGN)
4290 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_SIGN)
4291 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_512_SIGN);
caa97ef1
DSH
4292#endif
4293
bc71f910 4294 if ((s->version == SSL3_VERSION) && (alg_k & SSL_kDHE)) {
bc36ee62 4295#ifndef OPENSSL_NO_DH
0f113f3e 4296# ifndef OPENSSL_NO_RSA
28ff8ef3
MC
4297 if (!WPACKET_put_bytes_u8(pkt, SSL3_CT_RSA_EPHEMERAL_DH))
4298 return 0;
0f113f3e
MC
4299# endif
4300# ifndef OPENSSL_NO_DSA
28ff8ef3
MC
4301 if (!WPACKET_put_bytes_u8(pkt, SSL3_CT_DSS_EPHEMERAL_DH))
4302 return 0;
0f113f3e 4303# endif
0f113f3e 4304#endif /* !OPENSSL_NO_DH */
1e0784ff 4305 }
bc36ee62 4306#ifndef OPENSSL_NO_RSA
28ff8ef3
MC
4307 if (!(alg_a & SSL_aRSA) && !WPACKET_put_bytes_u8(pkt, SSL3_CT_RSA_SIGN))
4308 return 0;
d02b48c6 4309#endif
bc36ee62 4310#ifndef OPENSSL_NO_DSA
28ff8ef3
MC
4311 if (!(alg_a & SSL_aDSS) && !WPACKET_put_bytes_u8(pkt, SSL3_CT_DSS_SIGN))
4312 return 0;
dfeab068 4313#endif
10bf4fc2 4314#ifndef OPENSSL_NO_EC
0f113f3e 4315 /*
c66ce5eb 4316 * ECDSA certs can be used with RSA cipher suites too so we don't
0f113f3e
MC
4317 * need to check for SSL_kECDH or SSL_kECDHE
4318 */
28ff8ef3
MC
4319 if (s->version >= TLS1_VERSION
4320 && !(alg_a & SSL_aECDSA)
4321 && !WPACKET_put_bytes_u8(pkt, TLS_CT_ECDSA_SIGN))
4322 return 0;
0f113f3e 4323#endif
28ff8ef3 4324 return 1;
0f113f3e 4325}
d02b48c6 4326
9f27b1ee 4327static int ssl3_set_req_cert_type(CERT *c, const unsigned char *p, size_t len)
0f113f3e 4328{
75c13e78
DSH
4329 OPENSSL_free(c->ctype);
4330 c->ctype = NULL;
4331 c->ctype_len = 0;
4332 if (p == NULL || len == 0)
0f113f3e
MC
4333 return 1;
4334 if (len > 0xff)
4335 return 0;
75c13e78
DSH
4336 c->ctype = OPENSSL_memdup(p, len);
4337 if (c->ctype == NULL)
0f113f3e 4338 return 0;
75c13e78 4339 c->ctype_len = len;
0f113f3e
MC
4340 return 1;
4341}
9f27b1ee 4342
6b691a5c 4343int ssl3_shutdown(SSL *s)
0f113f3e
MC
4344{
4345 int ret;
4346
4347 /*
4348 * Don't do anything much if we have not done the handshake or we don't
4349 * want to send messages :-)
4350 */
c874def6 4351 if (s->quiet_shutdown || SSL_in_before(s)) {
0f113f3e 4352 s->shutdown = (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN);
208fb891 4353 return 1;
0f113f3e
MC
4354 }
4355
4356 if (!(s->shutdown & SSL_SENT_SHUTDOWN)) {
4357 s->shutdown |= SSL_SENT_SHUTDOWN;
0f113f3e 4358 ssl3_send_alert(s, SSL3_AL_WARNING, SSL_AD_CLOSE_NOTIFY);
0f113f3e
MC
4359 /*
4360 * our shutdown alert has been sent now, and if it still needs to be
4361 * written, s->s3->alert_dispatch will be true
4362 */
4363 if (s->s3->alert_dispatch)
26a7d938 4364 return -1; /* return WANT_WRITE */
0f113f3e
MC
4365 } else if (s->s3->alert_dispatch) {
4366 /* resend it if not sent */
0f113f3e
MC
4367 ret = s->method->ssl_dispatch_alert(s);
4368 if (ret == -1) {
4369 /*
4370 * we only get to return -1 here the 2nd/Nth invocation, we must
8483a003 4371 * have already signalled return 0 upon a previous invocation,
0f113f3e
MC
4372 * return WANT_WRITE
4373 */
26a7d938 4374 return ret;
0f113f3e 4375 }
0f113f3e 4376 } else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) {
54105ddd 4377 size_t readbytes;
0f113f3e
MC
4378 /*
4379 * If we are waiting for a close from our peer, we are closed
4380 */
54105ddd 4381 s->method->ssl_read_bytes(s, 0, NULL, NULL, 0, 0, &readbytes);
0f113f3e 4382 if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) {
eda75751 4383 return -1; /* return WANT_READ */
0f113f3e
MC
4384 }
4385 }
4386
4387 if ((s->shutdown == (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN)) &&
4388 !s->s3->alert_dispatch)
208fb891 4389 return 1;
0f113f3e 4390 else
26a7d938 4391 return 0;
0f113f3e 4392}
d02b48c6 4393
7ee8627f 4394int ssl3_write(SSL *s, const void *buf, size_t len, size_t *written)
0f113f3e 4395{
0f113f3e
MC
4396 clear_sys_error();
4397 if (s->s3->renegotiate)
c7f47786 4398 ssl3_renegotiate_check(s, 0);
0f113f3e 4399
7ee8627f
MC
4400 return s->method->ssl_write_bytes(s, SSL3_RT_APPLICATION_DATA, buf, len,
4401 written);
0f113f3e 4402}
d02b48c6 4403
eda75751 4404static int ssl3_read_internal(SSL *s, void *buf, size_t len, int peek,
54105ddd 4405 size_t *readbytes)
0f113f3e
MC
4406{
4407 int ret;
4408
4409 clear_sys_error();
4410 if (s->s3->renegotiate)
c7f47786 4411 ssl3_renegotiate_check(s, 0);
0f113f3e
MC
4412 s->s3->in_read_app_data = 1;
4413 ret =
657da85e 4414 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf, len,
54105ddd 4415 peek, readbytes);
0f113f3e
MC
4416 if ((ret == -1) && (s->s3->in_read_app_data == 2)) {
4417 /*
4418 * ssl3_read_bytes decided to call s->handshake_func, which called
4419 * ssl3_read_bytes to read handshake data. However, ssl3_read_bytes
4420 * actually found application data and thinks that application data
4421 * makes sense here; so disable handshake processing and try to read
4422 * application data again.
4423 */
024f543c 4424 ossl_statem_set_in_handshake(s, 1);
0f113f3e 4425 ret =
657da85e 4426 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf,
54105ddd 4427 len, peek, readbytes);
024f543c 4428 ossl_statem_set_in_handshake(s, 0);
0f113f3e
MC
4429 } else
4430 s->s3->in_read_app_data = 0;
4431
eda75751 4432 return ret;
0f113f3e 4433}
d02b48c6 4434
54105ddd 4435int ssl3_read(SSL *s, void *buf, size_t len, size_t *readbytes)
0f113f3e 4436{
54105ddd 4437 return ssl3_read_internal(s, buf, len, 0, readbytes);
0f113f3e 4438}
d02b48c6 4439
54105ddd 4440int ssl3_peek(SSL *s, void *buf, size_t len, size_t *readbytes)
0f113f3e 4441{
54105ddd 4442 return ssl3_read_internal(s, buf, len, 1, readbytes);
0f113f3e 4443}
d02b48c6 4444
6b691a5c 4445int ssl3_renegotiate(SSL *s)
0f113f3e
MC
4446{
4447 if (s->handshake_func == NULL)
208fb891 4448 return 1;
d02b48c6 4449
0f113f3e 4450 s->s3->renegotiate = 1;
208fb891 4451 return 1;
0f113f3e 4452}
d02b48c6 4453
c7f47786
MC
4454/*
4455 * Check if we are waiting to do a renegotiation and if so whether now is a
4456 * good time to do it. If |initok| is true then we are being called from inside
4457 * the state machine so ignore the result of SSL_in_init(s). Otherwise we
4458 * should not do a renegotiation if SSL_in_init(s) is true. Returns 1 if we
4459 * should do a renegotiation now and sets up the state machine for it. Otherwise
4460 * returns 0.
4461 */
4462int ssl3_renegotiate_check(SSL *s, int initok)
0f113f3e
MC
4463{
4464 int ret = 0;
4465
4466 if (s->s3->renegotiate) {
f161995e
MC
4467 if (!RECORD_LAYER_read_pending(&s->rlayer)
4468 && !RECORD_LAYER_write_pending(&s->rlayer)
c7f47786 4469 && (initok || !SSL_in_init(s))) {
0f113f3e
MC
4470 /*
4471 * if we are the server, and we have sent a 'RENEGOTIATE'
49ae7423
MC
4472 * message, we need to set the state machine into the renegotiate
4473 * state.
0f113f3e 4474 */
fe3a3291 4475 ossl_statem_set_renegotiate(s);
0f113f3e
MC
4476 s->s3->renegotiate = 0;
4477 s->s3->num_renegotiations++;
4478 s->s3->total_renegotiations++;
4479 ret = 1;
4480 }
4481 }
c7f47786 4482 return ret;
0f113f3e
MC
4483}
4484
58964a49 4485/*
0f113f3e
MC
4486 * If we are using default SHA1+MD5 algorithms switch to new SHA256 PRF and
4487 * handshake macs if required.
12053a81
DSH
4488 *
4489 * If PSK and using SHA384 for TLS < 1.2 switch to default.
7409d7ad
DSH
4490 */
4491long ssl_get_algorithm2(SSL *s)
0f113f3e 4492{
52eede5a
DSH
4493 long alg2;
4494 if (s->s3 == NULL || s->s3->tmp.new_cipher == NULL)
4495 return -1;
4496 alg2 = s->s3->tmp.new_cipher->algorithm2;
12053a81
DSH
4497 if (s->method->ssl3_enc->enc_flags & SSL_ENC_FLAG_SHA256_PRF) {
4498 if (alg2 == (SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF))
4499 return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256;
4500 } else if (s->s3->tmp.new_cipher->algorithm_mkey & SSL_PSK) {
4501 if (alg2 == (SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384))
4502 return SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF;
4503 }
0f113f3e
MC
4504 return alg2;
4505}
a3680c8f
MC
4506
4507/*
4508 * Fill a ClientRandom or ServerRandom field of length len. Returns <= 0 on
4509 * failure, 1 on success.
4510 */
f7f2a01d
MC
4511int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, size_t len,
4512 DOWNGRADE dgrd)
a3680c8f 4513{
f7f2a01d 4514 int send_time = 0, ret;
a3680c8f
MC
4515
4516 if (len < 4)
4517 return 0;
4518 if (server)
4519 send_time = (s->mode & SSL_MODE_SEND_SERVERHELLO_TIME) != 0;
4520 else
4521 send_time = (s->mode & SSL_MODE_SEND_CLIENTHELLO_TIME) != 0;
4522 if (send_time) {
4523 unsigned long Time = (unsigned long)time(NULL);
4524 unsigned char *p = result;
ae3947de 4525
a3680c8f 4526 l2n(Time, p);
16cfc2c9 4527 ret = RAND_bytes(p, len - 4);
f7f2a01d 4528 } else {
16cfc2c9 4529 ret = RAND_bytes(result, len);
f7f2a01d
MC
4530 }
4531#ifndef OPENSSL_NO_TLS13DOWNGRADE
16cfc2c9 4532 if (ret > 0) {
b77f3ed1
MC
4533 if (!ossl_assert(sizeof(tls11downgrade) < len)
4534 || !ossl_assert(sizeof(tls12downgrade) < len))
4535 return 0;
f7f2a01d
MC
4536 if (dgrd == DOWNGRADE_TO_1_2)
4537 memcpy(result + len - sizeof(tls12downgrade), tls12downgrade,
4538 sizeof(tls12downgrade));
4539 else if (dgrd == DOWNGRADE_TO_1_1)
4540 memcpy(result + len - sizeof(tls11downgrade), tls11downgrade,
4541 sizeof(tls11downgrade));
4542 }
4543#endif
4544 return ret;
a3680c8f 4545}
57b272b0
DSH
4546
4547int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen,
4548 int free_pms)
4549{
8a0a12e5 4550 unsigned long alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
8c1a5343
MC
4551 int ret = 0;
4552
8a0a12e5 4553 if (alg_k & SSL_PSK) {
0907d710 4554#ifndef OPENSSL_NO_PSK
8a0a12e5
DSH
4555 unsigned char *pskpms, *t;
4556 size_t psklen = s->s3->tmp.psklen;
4557 size_t pskpmslen;
4558
4559 /* create PSK premaster_secret */
4560
4561 /* For plain PSK "other_secret" is psklen zeroes */
4562 if (alg_k & SSL_kPSK)
4563 pmslen = psklen;
4564
4565 pskpmslen = 4 + pmslen + psklen;
4566 pskpms = OPENSSL_malloc(pskpmslen);
8c1a5343 4567 if (pskpms == NULL)
a784665e 4568 goto err;
8a0a12e5
DSH
4569 t = pskpms;
4570 s2n(pmslen, t);
4571 if (alg_k & SSL_kPSK)
4572 memset(t, 0, pmslen);
4573 else
4574 memcpy(t, pms, pmslen);
4575 t += pmslen;
4576 s2n(psklen, t);
4577 memcpy(t, s->s3->tmp.psk, psklen);
4578
4579 OPENSSL_clear_free(s->s3->tmp.psk, psklen);
4580 s->s3->tmp.psk = NULL;
8c1a5343
MC
4581 if (!s->method->ssl3_enc->generate_master_secret(s,
4582 s->session->master_key,pskpms, pskpmslen,
f63a17d6
MC
4583 &s->session->master_key_length)) {
4584 /* SSLfatal() already called */
8c1a5343 4585 goto err;
f63a17d6 4586 }
8a0a12e5 4587 OPENSSL_clear_free(pskpms, pskpmslen);
0907d710
MC
4588#else
4589 /* Should never happen */
0907d710 4590 goto err;
8a0a12e5 4591#endif
0907d710 4592 } else {
8c1a5343
MC
4593 if (!s->method->ssl3_enc->generate_master_secret(s,
4594 s->session->master_key, pms, pmslen,
f63a17d6
MC
4595 &s->session->master_key_length)) {
4596 /* SSLfatal() already called */
8c1a5343 4597 goto err;
f63a17d6 4598 }
0907d710
MC
4599 }
4600
8c1a5343 4601 ret = 1;
0907d710 4602 err:
8a0a12e5
DSH
4603 if (pms) {
4604 if (free_pms)
4605 OPENSSL_clear_free(pms, pmslen);
4606 else
4607 OPENSSL_cleanse(pms, pmslen);
4608 }
57b272b0
DSH
4609 if (s->server == 0)
4610 s->s3->tmp.pms = NULL;
8c1a5343 4611 return ret;
57b272b0 4612}
3f3504bd 4613
0a699a07
DSH
4614/* Generate a private key from parameters */
4615EVP_PKEY *ssl_generate_pkey(EVP_PKEY *pm)
3f3504bd
DSH
4616{
4617 EVP_PKEY_CTX *pctx = NULL;
4618 EVP_PKEY *pkey = NULL;
0a699a07
DSH
4619
4620 if (pm == NULL)
4621 return NULL;
4622 pctx = EVP_PKEY_CTX_new(pm, NULL);
4623 if (pctx == NULL)
4624 goto err;
4625 if (EVP_PKEY_keygen_init(pctx) <= 0)
4626 goto err;
4627 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) {
4628 EVP_PKEY_free(pkey);
4629 pkey = NULL;
4630 }
4631
4632 err:
4633 EVP_PKEY_CTX_free(pctx);
4634 return pkey;
4635}
4636#ifndef OPENSSL_NO_EC
43b95d73 4637/* Generate a private key from a group ID */
f63a17d6 4638EVP_PKEY *ssl_generate_pkey_group(SSL *s, uint16_t id)
0a699a07
DSH
4639{
4640 EVP_PKEY_CTX *pctx = NULL;
4641 EVP_PKEY *pkey = NULL;
43b95d73
DSH
4642 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
4643 uint16_t gtype;
0a699a07 4644
f63a17d6
MC
4645 if (ginf == NULL) {
4646 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4647 ERR_R_INTERNAL_ERROR);
0a699a07 4648 goto err;
f63a17d6 4649 }
43b95d73
DSH
4650 gtype = ginf->flags & TLS_CURVE_TYPE;
4651 if (gtype == TLS_CURVE_CUSTOM)
4652 pctx = EVP_PKEY_CTX_new_id(ginf->nid, NULL);
4653 else
0a699a07 4654 pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, NULL);
f63a17d6
MC
4655 if (pctx == NULL) {
4656 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4657 ERR_R_MALLOC_FAILURE);
3f3504bd 4658 goto err;
f63a17d6
MC
4659 }
4660 if (EVP_PKEY_keygen_init(pctx) <= 0) {
4661 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4662 ERR_R_EVP_LIB);
3f3504bd 4663 goto err;
f63a17d6 4664 }
43b95d73 4665 if (gtype != TLS_CURVE_CUSTOM
f63a17d6
MC
4666 && EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, ginf->nid) <= 0) {
4667 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4668 ERR_R_EVP_LIB);
3f3504bd 4669 goto err;
f63a17d6 4670 }
3f3504bd 4671 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) {
f63a17d6
MC
4672 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4673 ERR_R_EVP_LIB);
3f3504bd
DSH
4674 EVP_PKEY_free(pkey);
4675 pkey = NULL;
4676 }
4677
a230b26e 4678 err:
3f3504bd
DSH
4679 EVP_PKEY_CTX_free(pctx);
4680 return pkey;
4681}
612f9d22
DSH
4682
4683/*
4684 * Generate parameters from a group ID
4685 */
4686EVP_PKEY *ssl_generate_param_group(uint16_t id)
4687{
4688 EVP_PKEY_CTX *pctx = NULL;
4689 EVP_PKEY *pkey = NULL;
4690 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
4691
4692 if (ginf == NULL)
4693 goto err;
4694
4695 if ((ginf->flags & TLS_CURVE_TYPE) == TLS_CURVE_CUSTOM) {
4696 pkey = EVP_PKEY_new();
4697 if (pkey != NULL && EVP_PKEY_set_type(pkey, ginf->nid))
4698 return pkey;
4699 EVP_PKEY_free(pkey);
4700 return NULL;
4701 }
4702
4703 pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, NULL);
4704 if (pctx == NULL)
4705 goto err;
4706 if (EVP_PKEY_paramgen_init(pctx) <= 0)
4707 goto err;
4708 if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, ginf->nid) <= 0)
4709 goto err;
4710 if (EVP_PKEY_paramgen(pctx, &pkey) <= 0) {
4711 EVP_PKEY_free(pkey);
4712 pkey = NULL;
4713 }
4714
4715 err:
4716 EVP_PKEY_CTX_free(pctx);
4717 return pkey;
4718}
0a699a07 4719#endif
a230b26e 4720
92760c21
MC
4721/* Derive secrets for ECDH/DH */
4722int ssl_derive(SSL *s, EVP_PKEY *privkey, EVP_PKEY *pubkey, int gensecret)
3f3504bd
DSH
4723{
4724 int rv = 0;
4725 unsigned char *pms = NULL;
4726 size_t pmslen = 0;
4727 EVP_PKEY_CTX *pctx;
4728
f63a17d6
MC
4729 if (privkey == NULL || pubkey == NULL) {
4730 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4731 ERR_R_INTERNAL_ERROR);
3f3504bd 4732 return 0;
f63a17d6 4733 }
3f3504bd
DSH
4734
4735 pctx = EVP_PKEY_CTX_new(privkey, NULL);
4736
4737 if (EVP_PKEY_derive_init(pctx) <= 0
4738 || EVP_PKEY_derive_set_peer(pctx, pubkey) <= 0
4739 || EVP_PKEY_derive(pctx, NULL, &pmslen) <= 0) {
f63a17d6
MC
4740 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4741 ERR_R_INTERNAL_ERROR);
3f3504bd
DSH
4742 goto err;
4743 }
4744
4745 pms = OPENSSL_malloc(pmslen);
f63a17d6
MC
4746 if (pms == NULL) {
4747 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4748 ERR_R_MALLOC_FAILURE);
3f3504bd 4749 goto err;
f63a17d6 4750 }
3f3504bd 4751
f63a17d6
MC
4752 if (EVP_PKEY_derive(pctx, pms, &pmslen) <= 0) {
4753 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4754 ERR_R_INTERNAL_ERROR);
3f3504bd 4755 goto err;
f63a17d6 4756 }
3f3504bd 4757
92760c21 4758 if (gensecret) {
f63a17d6 4759 /* SSLfatal() called as appropriate in the below functions */
92760c21
MC
4760 if (SSL_IS_TLS13(s)) {
4761 /*
ec15acb6
MC
4762 * If we are resuming then we already generated the early secret
4763 * when we created the ClientHello, so don't recreate it.
92760c21 4764 */
ec15acb6
MC
4765 if (!s->hit)
4766 rv = tls13_generate_secret(s, ssl_handshake_md(s), NULL, NULL,
4767 0,
4768 (unsigned char *)&s->early_secret);
0247086d
MC
4769 else
4770 rv = 1;
4771
ec15acb6 4772 rv = rv && tls13_generate_handshake_secret(s, pms, pmslen);
92760c21 4773 } else {
c8ab3a46 4774 rv = ssl_generate_master_secret(s, pms, pmslen, 0);
92760c21 4775 }
3f3504bd 4776 } else {
0f1e51ea 4777 /* Save premaster secret */
3f3504bd
DSH
4778 s->s3->tmp.pms = pms;
4779 s->s3->tmp.pmslen = pmslen;
4780 pms = NULL;
4781 rv = 1;
4782 }
4783
a230b26e 4784 err:
3f3504bd
DSH
4785 OPENSSL_clear_free(pms, pmslen);
4786 EVP_PKEY_CTX_free(pctx);
4787 return rv;
4788}
6c4e6670 4789
1e0784ff 4790#ifndef OPENSSL_NO_DH
6c4e6670
DSH
4791EVP_PKEY *ssl_dh_to_pkey(DH *dh)
4792{
4793 EVP_PKEY *ret;
4794 if (dh == NULL)
4795 return NULL;
4796 ret = EVP_PKEY_new();
4797 if (EVP_PKEY_set1_DH(ret, dh) <= 0) {
4798 EVP_PKEY_free(ret);
4799 return NULL;
4800 }
4801 return ret;
4802}
1e0784ff 4803#endif