]> git.ipfire.org Git - thirdparty/openssl.git/blame - ssl/s3_lib.c
GOST-related objects changes
[thirdparty/openssl.git] / ssl / s3_lib.c
CommitLineData
846e33c7 1/*
98278b96 2 * Copyright 1995-2020 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 *
2c18d164 6 * Licensed under the Apache License 2.0 (the "License"). You may not use
846e33c7
RS
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"
706457b7 15#include "ssl_local.h"
dbad1690 16#include <openssl/md5.h>
3c27208f 17#include <openssl/dh.h>
a3680c8f 18#include <openssl/rand.h>
77359d22 19#include <openssl/trace.h>
9f0f53b7 20#include <openssl/x509v3.h>
5f8dd0f8 21#include "internal/cryptlib.h"
d02b48c6 22
852c2ed2
RS
23DEFINE_STACK_OF(X509_NAME)
24DEFINE_STACK_OF(X509)
25DEFINE_STACK_OF_CONST(SSL_CIPHER)
26
f865b081 27#define TLS13_NUM_CIPHERS OSSL_NELEM(tls13_ciphers)
b6eb9827 28#define SSL3_NUM_CIPHERS OSSL_NELEM(ssl3_ciphers)
650c6e41 29#define SSL3_NUM_SCSVS OSSL_NELEM(ssl3_scsvs)
d02b48c6 30
643a3580
MC
31/* TLSv1.3 downgrade protection sentinel values */
32const unsigned char tls11downgrade[] = {
33 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x00
34};
35const unsigned char tls12downgrade[] = {
36 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x01
37};
38
f865b081
MC
39/* The list of available TLSv1.3 ciphers */
40static SSL_CIPHER tls13_ciphers[] = {
41 {
42 1,
43 TLS1_3_RFC_AES_128_GCM_SHA256,
44 TLS1_3_RFC_AES_128_GCM_SHA256,
45 TLS1_3_CK_AES_128_GCM_SHA256,
f80c8643
MC
46 SSL_kANY,
47 SSL_aANY,
f865b081
MC
48 SSL_AES128GCM,
49 SSL_AEAD,
50 TLS1_3_VERSION, TLS1_3_VERSION,
f80c8643 51 0, 0,
f865b081
MC
52 SSL_HIGH,
53 SSL_HANDSHAKE_MAC_SHA256,
54 128,
55 128,
56 }, {
57 1,
58 TLS1_3_RFC_AES_256_GCM_SHA384,
59 TLS1_3_RFC_AES_256_GCM_SHA384,
60 TLS1_3_CK_AES_256_GCM_SHA384,
61 SSL_kANY,
62 SSL_aANY,
63 SSL_AES256GCM,
64 SSL_AEAD,
65 TLS1_3_VERSION, TLS1_3_VERSION,
66 0, 0,
67 SSL_HIGH,
68 SSL_HANDSHAKE_MAC_SHA384,
69 256,
70 256,
71 },
72#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
73 {
74 1,
75 TLS1_3_RFC_CHACHA20_POLY1305_SHA256,
76 TLS1_3_RFC_CHACHA20_POLY1305_SHA256,
77 TLS1_3_CK_CHACHA20_POLY1305_SHA256,
78 SSL_kANY,
79 SSL_aANY,
80 SSL_CHACHA20POLY1305,
81 SSL_AEAD,
82 TLS1_3_VERSION, TLS1_3_VERSION,
83 0, 0,
84 SSL_HIGH,
85 SSL_HANDSHAKE_MAC_SHA256,
86 256,
87 256,
88 },
89#endif
90 {
91 1,
92 TLS1_3_RFC_AES_128_CCM_SHA256,
93 TLS1_3_RFC_AES_128_CCM_SHA256,
94 TLS1_3_CK_AES_128_CCM_SHA256,
95 SSL_kANY,
96 SSL_aANY,
97 SSL_AES128CCM,
98 SSL_AEAD,
99 TLS1_3_VERSION, TLS1_3_VERSION,
100 0, 0,
101 SSL_NOT_DEFAULT | SSL_HIGH,
102 SSL_HANDSHAKE_MAC_SHA256,
103 128,
104 128,
105 }, {
106 1,
107 TLS1_3_RFC_AES_128_CCM_8_SHA256,
108 TLS1_3_RFC_AES_128_CCM_8_SHA256,
109 TLS1_3_CK_AES_128_CCM_8_SHA256,
110 SSL_kANY,
111 SSL_aANY,
112 SSL_AES128CCM8,
113 SSL_AEAD,
114 TLS1_3_VERSION, TLS1_3_VERSION,
115 0, 0,
116 SSL_NOT_DEFAULT | SSL_HIGH,
117 SSL_HANDSHAKE_MAC_SHA256,
118 128,
119 128,
120 }
121};
122
748f2546 123/*
ef28891b 124 * The list of available ciphers, mostly organized into the following
748f2546
RS
125 * groups:
126 * Always there
127 * EC
128 * PSK
129 * SRP (within that: RSA EC PSK)
9bb6f829 130 * Cipher families: Chacha/poly, Camellia, Gost, IDEA, SEED
748f2546
RS
131 * Weak ciphers
132 */
a230b26e 133static SSL_CIPHER ssl3_ciphers[] = {
0f113f3e
MC
134 {
135 1,
136 SSL3_TXT_RSA_NULL_MD5,
bbb4ceb8 137 SSL3_RFC_RSA_NULL_MD5,
0f113f3e
MC
138 SSL3_CK_RSA_NULL_MD5,
139 SSL_kRSA,
140 SSL_aRSA,
141 SSL_eNULL,
142 SSL_MD5,
3eb2aff4 143 SSL3_VERSION, TLS1_2_VERSION,
387cf213 144 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 145 SSL_STRONG_NONE,
0f113f3e
MC
146 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
147 0,
148 0,
149 },
0f113f3e
MC
150 {
151 1,
152 SSL3_TXT_RSA_NULL_SHA,
bbb4ceb8 153 SSL3_RFC_RSA_NULL_SHA,
0f113f3e
MC
154 SSL3_CK_RSA_NULL_SHA,
155 SSL_kRSA,
156 SSL_aRSA,
157 SSL_eNULL,
158 SSL_SHA1,
3eb2aff4 159 SSL3_VERSION, TLS1_2_VERSION,
387cf213 160 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 161 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e
MC
162 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
163 0,
164 0,
165 },
d33726b9 166#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
0f113f3e
MC
167 {
168 1,
169 SSL3_TXT_RSA_DES_192_CBC3_SHA,
bbb4ceb8 170 SSL3_RFC_RSA_DES_192_CBC3_SHA,
0f113f3e
MC
171 SSL3_CK_RSA_DES_192_CBC3_SHA,
172 SSL_kRSA,
173 SSL_aRSA,
174 SSL_3DES,
175 SSL_SHA1,
3eb2aff4 176 SSL3_VERSION, TLS1_2_VERSION,
387cf213 177 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 178 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
179 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
180 112,
181 168,
182 },
0f113f3e
MC
183 {
184 1,
185 SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA,
bbb4ceb8 186 SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA,
0f113f3e
MC
187 SSL3_CK_DHE_DSS_DES_192_CBC3_SHA,
188 SSL_kDHE,
189 SSL_aDSS,
190 SSL_3DES,
191 SSL_SHA1,
3eb2aff4 192 SSL3_VERSION, TLS1_2_VERSION,
387cf213 193 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 194 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
195 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
196 112,
197 168,
198 },
0f113f3e
MC
199 {
200 1,
201 SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA,
bbb4ceb8 202 SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA,
0f113f3e
MC
203 SSL3_CK_DHE_RSA_DES_192_CBC3_SHA,
204 SSL_kDHE,
205 SSL_aRSA,
206 SSL_3DES,
207 SSL_SHA1,
3eb2aff4 208 SSL3_VERSION, TLS1_2_VERSION,
387cf213 209 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 210 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
211 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
212 112,
213 168,
214 },
0f113f3e
MC
215 {
216 1,
217 SSL3_TXT_ADH_DES_192_CBC_SHA,
bbb4ceb8 218 SSL3_RFC_ADH_DES_192_CBC_SHA,
0f113f3e
MC
219 SSL3_CK_ADH_DES_192_CBC_SHA,
220 SSL_kDHE,
221 SSL_aNULL,
222 SSL_3DES,
223 SSL_SHA1,
3eb2aff4 224 SSL3_VERSION, TLS1_2_VERSION,
387cf213 225 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 226 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
227 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
228 112,
229 168,
230 },
d33726b9 231#endif
0f113f3e
MC
232 {
233 1,
234 TLS1_TXT_RSA_WITH_AES_128_SHA,
bbb4ceb8 235 TLS1_RFC_RSA_WITH_AES_128_SHA,
0f113f3e
MC
236 TLS1_CK_RSA_WITH_AES_128_SHA,
237 SSL_kRSA,
238 SSL_aRSA,
239 SSL_AES128,
240 SSL_SHA1,
3eb2aff4 241 SSL3_VERSION, TLS1_2_VERSION,
387cf213 242 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 243 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
244 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
245 128,
246 128,
247 },
0f113f3e
MC
248 {
249 1,
250 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
bbb4ceb8 251 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA,
0f113f3e
MC
252 TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
253 SSL_kDHE,
254 SSL_aDSS,
255 SSL_AES128,
256 SSL_SHA1,
3eb2aff4 257 SSL3_VERSION, TLS1_2_VERSION,
387cf213 258 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 259 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
260 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
261 128,
262 128,
263 },
0f113f3e
MC
264 {
265 1,
266 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
bbb4ceb8 267 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA,
0f113f3e
MC
268 TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
269 SSL_kDHE,
270 SSL_aRSA,
271 SSL_AES128,
272 SSL_SHA1,
3eb2aff4 273 SSL3_VERSION, TLS1_2_VERSION,
387cf213 274 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 275 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
276 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
277 128,
278 128,
279 },
0f113f3e
MC
280 {
281 1,
282 TLS1_TXT_ADH_WITH_AES_128_SHA,
bbb4ceb8 283 TLS1_RFC_ADH_WITH_AES_128_SHA,
0f113f3e
MC
284 TLS1_CK_ADH_WITH_AES_128_SHA,
285 SSL_kDHE,
286 SSL_aNULL,
287 SSL_AES128,
288 SSL_SHA1,
3eb2aff4 289 SSL3_VERSION, TLS1_2_VERSION,
387cf213 290 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 291 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
292 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
293 128,
294 128,
295 },
0f113f3e
MC
296 {
297 1,
298 TLS1_TXT_RSA_WITH_AES_256_SHA,
bbb4ceb8 299 TLS1_RFC_RSA_WITH_AES_256_SHA,
0f113f3e
MC
300 TLS1_CK_RSA_WITH_AES_256_SHA,
301 SSL_kRSA,
302 SSL_aRSA,
303 SSL_AES256,
304 SSL_SHA1,
3eb2aff4 305 SSL3_VERSION, TLS1_2_VERSION,
387cf213 306 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 307 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
308 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
309 256,
310 256,
311 },
0f113f3e
MC
312 {
313 1,
314 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
bbb4ceb8 315 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA,
0f113f3e
MC
316 TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
317 SSL_kDHE,
318 SSL_aDSS,
319 SSL_AES256,
320 SSL_SHA1,
3eb2aff4 321 SSL3_VERSION, TLS1_2_VERSION,
387cf213 322 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 323 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
324 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
325 256,
326 256,
327 },
0f113f3e
MC
328 {
329 1,
330 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,
bbb4ceb8 331 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA,
0f113f3e
MC
332 TLS1_CK_DHE_RSA_WITH_AES_256_SHA,
333 SSL_kDHE,
334 SSL_aRSA,
335 SSL_AES256,
336 SSL_SHA1,
3eb2aff4 337 SSL3_VERSION, TLS1_2_VERSION,
387cf213 338 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 339 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
340 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
341 256,
342 256,
343 },
0f113f3e
MC
344 {
345 1,
346 TLS1_TXT_ADH_WITH_AES_256_SHA,
bbb4ceb8 347 TLS1_RFC_ADH_WITH_AES_256_SHA,
0f113f3e
MC
348 TLS1_CK_ADH_WITH_AES_256_SHA,
349 SSL_kDHE,
350 SSL_aNULL,
351 SSL_AES256,
352 SSL_SHA1,
3eb2aff4 353 SSL3_VERSION, TLS1_2_VERSION,
387cf213 354 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 355 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
356 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
357 256,
358 256,
359 },
0f113f3e
MC
360 {
361 1,
362 TLS1_TXT_RSA_WITH_NULL_SHA256,
bbb4ceb8 363 TLS1_RFC_RSA_WITH_NULL_SHA256,
0f113f3e
MC
364 TLS1_CK_RSA_WITH_NULL_SHA256,
365 SSL_kRSA,
366 SSL_aRSA,
367 SSL_eNULL,
368 SSL_SHA256,
3eb2aff4
KR
369 TLS1_2_VERSION, TLS1_2_VERSION,
370 DTLS1_2_VERSION, DTLS1_2_VERSION,
1510b5f7 371 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e
MC
372 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
373 0,
374 0,
375 },
0f113f3e
MC
376 {
377 1,
378 TLS1_TXT_RSA_WITH_AES_128_SHA256,
bbb4ceb8 379 TLS1_RFC_RSA_WITH_AES_128_SHA256,
0f113f3e
MC
380 TLS1_CK_RSA_WITH_AES_128_SHA256,
381 SSL_kRSA,
382 SSL_aRSA,
383 SSL_AES128,
384 SSL_SHA256,
3eb2aff4
KR
385 TLS1_2_VERSION, TLS1_2_VERSION,
386 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 387 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
388 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
389 128,
390 128,
391 },
0f113f3e
MC
392 {
393 1,
394 TLS1_TXT_RSA_WITH_AES_256_SHA256,
bbb4ceb8 395 TLS1_RFC_RSA_WITH_AES_256_SHA256,
0f113f3e
MC
396 TLS1_CK_RSA_WITH_AES_256_SHA256,
397 SSL_kRSA,
398 SSL_aRSA,
399 SSL_AES256,
400 SSL_SHA256,
3eb2aff4
KR
401 TLS1_2_VERSION, TLS1_2_VERSION,
402 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 403 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
404 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
405 256,
406 256,
407 },
0f113f3e
MC
408 {
409 1,
410 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,
bbb4ceb8 411 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256,
0f113f3e
MC
412 TLS1_CK_DHE_DSS_WITH_AES_128_SHA256,
413 SSL_kDHE,
414 SSL_aDSS,
415 SSL_AES128,
416 SSL_SHA256,
3eb2aff4
KR
417 TLS1_2_VERSION, TLS1_2_VERSION,
418 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 419 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
420 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
421 128,
422 128,
423 },
0f113f3e
MC
424 {
425 1,
426 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256,
bbb4ceb8 427 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256,
0f113f3e
MC
428 TLS1_CK_DHE_RSA_WITH_AES_128_SHA256,
429 SSL_kDHE,
430 SSL_aRSA,
431 SSL_AES128,
432 SSL_SHA256,
3eb2aff4
KR
433 TLS1_2_VERSION, TLS1_2_VERSION,
434 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 435 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
436 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
437 128,
438 128,
439 },
0f113f3e
MC
440 {
441 1,
442 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,
bbb4ceb8 443 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256,
0f113f3e
MC
444 TLS1_CK_DHE_DSS_WITH_AES_256_SHA256,
445 SSL_kDHE,
446 SSL_aDSS,
447 SSL_AES256,
448 SSL_SHA256,
3eb2aff4
KR
449 TLS1_2_VERSION, TLS1_2_VERSION,
450 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 451 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
452 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
453 256,
454 256,
455 },
0f113f3e
MC
456 {
457 1,
458 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256,
bbb4ceb8 459 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256,
0f113f3e
MC
460 TLS1_CK_DHE_RSA_WITH_AES_256_SHA256,
461 SSL_kDHE,
462 SSL_aRSA,
463 SSL_AES256,
464 SSL_SHA256,
3eb2aff4
KR
465 TLS1_2_VERSION, TLS1_2_VERSION,
466 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 467 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
468 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
469 256,
470 256,
471 },
0f113f3e
MC
472 {
473 1,
474 TLS1_TXT_ADH_WITH_AES_128_SHA256,
bbb4ceb8 475 TLS1_RFC_ADH_WITH_AES_128_SHA256,
0f113f3e
MC
476 TLS1_CK_ADH_WITH_AES_128_SHA256,
477 SSL_kDHE,
478 SSL_aNULL,
479 SSL_AES128,
480 SSL_SHA256,
3eb2aff4
KR
481 TLS1_2_VERSION, TLS1_2_VERSION,
482 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 483 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
484 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
485 128,
486 128,
487 },
0f113f3e
MC
488 {
489 1,
490 TLS1_TXT_ADH_WITH_AES_256_SHA256,
bbb4ceb8 491 TLS1_RFC_ADH_WITH_AES_256_SHA256,
0f113f3e
MC
492 TLS1_CK_ADH_WITH_AES_256_SHA256,
493 SSL_kDHE,
494 SSL_aNULL,
495 SSL_AES256,
496 SSL_SHA256,
3eb2aff4
KR
497 TLS1_2_VERSION, TLS1_2_VERSION,
498 DTLS1_2_VERSION, DTLS1_2_VERSION,
361a1191 499 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
0f113f3e
MC
500 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
501 256,
502 256,
503 },
0f113f3e
MC
504 {
505 1,
748f2546 506 TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 507 TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256,
748f2546
RS
508 TLS1_CK_RSA_WITH_AES_128_GCM_SHA256,
509 SSL_kRSA,
510 SSL_aRSA,
511 SSL_AES128GCM,
512 SSL_AEAD,
513 TLS1_2_VERSION, TLS1_2_VERSION,
514 DTLS1_2_VERSION, DTLS1_2_VERSION,
515 SSL_HIGH | SSL_FIPS,
516 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
517 128,
518 128,
519 },
0f113f3e
MC
520 {
521 1,
748f2546 522 TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 523 TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384,
748f2546 524 TLS1_CK_RSA_WITH_AES_256_GCM_SHA384,
0f113f3e
MC
525 SSL_kRSA,
526 SSL_aRSA,
748f2546
RS
527 SSL_AES256GCM,
528 SSL_AEAD,
529 TLS1_2_VERSION, TLS1_2_VERSION,
530 DTLS1_2_VERSION, DTLS1_2_VERSION,
531 SSL_HIGH | SSL_FIPS,
532 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
533 256,
534 256,
535 },
0f113f3e
MC
536 {
537 1,
748f2546 538 TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 539 TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256,
748f2546 540 TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256,
0f113f3e 541 SSL_kDHE,
748f2546
RS
542 SSL_aRSA,
543 SSL_AES128GCM,
544 SSL_AEAD,
545 TLS1_2_VERSION, TLS1_2_VERSION,
546 DTLS1_2_VERSION, DTLS1_2_VERSION,
547 SSL_HIGH | SSL_FIPS,
548 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
549 128,
550 128,
0f113f3e 551 },
0f113f3e
MC
552 {
553 1,
748f2546 554 TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 555 TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384,
748f2546 556 TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384,
0f113f3e
MC
557 SSL_kDHE,
558 SSL_aRSA,
748f2546
RS
559 SSL_AES256GCM,
560 SSL_AEAD,
561 TLS1_2_VERSION, TLS1_2_VERSION,
562 DTLS1_2_VERSION, DTLS1_2_VERSION,
563 SSL_HIGH | SSL_FIPS,
564 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
565 256,
566 256,
567 },
0f113f3e
MC
568 {
569 1,
748f2546 570 TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,
bbb4ceb8 571 TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256,
748f2546 572 TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256,
0f113f3e 573 SSL_kDHE,
748f2546
RS
574 SSL_aDSS,
575 SSL_AES128GCM,
576 SSL_AEAD,
577 TLS1_2_VERSION, TLS1_2_VERSION,
578 DTLS1_2_VERSION, DTLS1_2_VERSION,
579 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
580 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
581 128,
582 128,
583 },
0f113f3e
MC
584 {
585 1,
748f2546 586 TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,
bbb4ceb8 587 TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384,
748f2546
RS
588 TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384,
589 SSL_kDHE,
590 SSL_aDSS,
591 SSL_AES256GCM,
592 SSL_AEAD,
593 TLS1_2_VERSION, TLS1_2_VERSION,
594 DTLS1_2_VERSION, DTLS1_2_VERSION,
595 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
596 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
597 256,
598 256,
0f113f3e 599 },
0f113f3e
MC
600 {
601 1,
748f2546 602 TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256,
bbb4ceb8 603 TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256,
748f2546
RS
604 TLS1_CK_ADH_WITH_AES_128_GCM_SHA256,
605 SSL_kDHE,
606 SSL_aNULL,
607 SSL_AES128GCM,
608 SSL_AEAD,
609 TLS1_2_VERSION, TLS1_2_VERSION,
610 DTLS1_2_VERSION, DTLS1_2_VERSION,
611 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
612 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
613 128,
614 128,
615 },
0f113f3e
MC
616 {
617 1,
748f2546 618 TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384,
bbb4ceb8 619 TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384,
748f2546
RS
620 TLS1_CK_ADH_WITH_AES_256_GCM_SHA384,
621 SSL_kDHE,
622 SSL_aNULL,
623 SSL_AES256GCM,
624 SSL_AEAD,
625 TLS1_2_VERSION, TLS1_2_VERSION,
626 DTLS1_2_VERSION, DTLS1_2_VERSION,
627 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
628 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
629 256,
630 256,
631 },
ea6114c6
DSH
632 {
633 1,
748f2546 634 TLS1_TXT_RSA_WITH_AES_128_CCM,
bbb4ceb8 635 TLS1_RFC_RSA_WITH_AES_128_CCM,
748f2546
RS
636 TLS1_CK_RSA_WITH_AES_128_CCM,
637 SSL_kRSA,
638 SSL_aRSA,
639 SSL_AES128CCM,
640 SSL_AEAD,
641 TLS1_2_VERSION, TLS1_2_VERSION,
642 DTLS1_2_VERSION, DTLS1_2_VERSION,
643 SSL_NOT_DEFAULT | SSL_HIGH,
644 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
645 128,
646 128,
647 },
ea6114c6
DSH
648 {
649 1,
748f2546 650 TLS1_TXT_RSA_WITH_AES_256_CCM,
bbb4ceb8 651 TLS1_RFC_RSA_WITH_AES_256_CCM,
748f2546
RS
652 TLS1_CK_RSA_WITH_AES_256_CCM,
653 SSL_kRSA,
654 SSL_aRSA,
655 SSL_AES256CCM,
656 SSL_AEAD,
657 TLS1_2_VERSION, TLS1_2_VERSION,
658 DTLS1_2_VERSION, DTLS1_2_VERSION,
659 SSL_NOT_DEFAULT | SSL_HIGH,
660 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
661 256,
662 256,
ea6114c6 663 },
ea6114c6
DSH
664 {
665 1,
748f2546 666 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM,
bbb4ceb8 667 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM,
748f2546
RS
668 TLS1_CK_DHE_RSA_WITH_AES_128_CCM,
669 SSL_kDHE,
670 SSL_aRSA,
671 SSL_AES128CCM,
672 SSL_AEAD,
673 TLS1_2_VERSION, TLS1_2_VERSION,
674 DTLS1_2_VERSION, DTLS1_2_VERSION,
675 SSL_NOT_DEFAULT | SSL_HIGH,
676 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
677 128,
678 128,
679 },
ea6114c6
DSH
680 {
681 1,
748f2546 682 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM,
bbb4ceb8 683 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM,
748f2546
RS
684 TLS1_CK_DHE_RSA_WITH_AES_256_CCM,
685 SSL_kDHE,
686 SSL_aRSA,
687 SSL_AES256CCM,
688 SSL_AEAD,
689 TLS1_2_VERSION, TLS1_2_VERSION,
690 DTLS1_2_VERSION, DTLS1_2_VERSION,
691 SSL_NOT_DEFAULT | SSL_HIGH,
692 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
693 256,
694 256,
695 },
ea6114c6
DSH
696 {
697 1,
748f2546 698 TLS1_TXT_RSA_WITH_AES_128_CCM_8,
bbb4ceb8 699 TLS1_RFC_RSA_WITH_AES_128_CCM_8,
748f2546
RS
700 TLS1_CK_RSA_WITH_AES_128_CCM_8,
701 SSL_kRSA,
ea6114c6 702 SSL_aRSA,
748f2546 703 SSL_AES128CCM8,
0f113f3e 704 SSL_AEAD,
3eb2aff4
KR
705 TLS1_2_VERSION, TLS1_2_VERSION,
706 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 707 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
708 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
709 128,
710 128,
711 },
0f113f3e
MC
712 {
713 1,
748f2546 714 TLS1_TXT_RSA_WITH_AES_256_CCM_8,
bbb4ceb8 715 TLS1_RFC_RSA_WITH_AES_256_CCM_8,
748f2546 716 TLS1_CK_RSA_WITH_AES_256_CCM_8,
0f113f3e
MC
717 SSL_kRSA,
718 SSL_aRSA,
748f2546 719 SSL_AES256CCM8,
0f113f3e 720 SSL_AEAD,
3eb2aff4
KR
721 TLS1_2_VERSION, TLS1_2_VERSION,
722 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
723 SSL_NOT_DEFAULT | SSL_HIGH,
724 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
725 256,
726 256,
727 },
0f113f3e
MC
728 {
729 1,
748f2546 730 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8,
bbb4ceb8 731 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8,
748f2546 732 TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8,
0f113f3e
MC
733 SSL_kDHE,
734 SSL_aRSA,
748f2546 735 SSL_AES128CCM8,
0f113f3e 736 SSL_AEAD,
3eb2aff4
KR
737 TLS1_2_VERSION, TLS1_2_VERSION,
738 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 739 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
740 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
741 128,
742 128,
743 },
0f113f3e
MC
744 {
745 1,
748f2546 746 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8,
bbb4ceb8 747 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8,
748f2546 748 TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8,
0f113f3e
MC
749 SSL_kDHE,
750 SSL_aRSA,
748f2546 751 SSL_AES256CCM8,
0f113f3e 752 SSL_AEAD,
3eb2aff4
KR
753 TLS1_2_VERSION, TLS1_2_VERSION,
754 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
755 SSL_NOT_DEFAULT | SSL_HIGH,
756 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
757 256,
758 256,
759 },
0f113f3e
MC
760 {
761 1,
748f2546 762 TLS1_TXT_PSK_WITH_AES_128_CCM,
bbb4ceb8 763 TLS1_RFC_PSK_WITH_AES_128_CCM,
748f2546
RS
764 TLS1_CK_PSK_WITH_AES_128_CCM,
765 SSL_kPSK,
766 SSL_aPSK,
767 SSL_AES128CCM,
0f113f3e 768 SSL_AEAD,
3eb2aff4
KR
769 TLS1_2_VERSION, TLS1_2_VERSION,
770 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 771 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
772 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
773 128,
774 128,
775 },
0f113f3e
MC
776 {
777 1,
748f2546 778 TLS1_TXT_PSK_WITH_AES_256_CCM,
bbb4ceb8 779 TLS1_RFC_PSK_WITH_AES_256_CCM,
748f2546
RS
780 TLS1_CK_PSK_WITH_AES_256_CCM,
781 SSL_kPSK,
782 SSL_aPSK,
783 SSL_AES256CCM,
0f113f3e 784 SSL_AEAD,
3eb2aff4
KR
785 TLS1_2_VERSION, TLS1_2_VERSION,
786 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
787 SSL_NOT_DEFAULT | SSL_HIGH,
788 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
789 256,
790 256,
791 },
0f113f3e
MC
792 {
793 1,
748f2546 794 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM,
bbb4ceb8 795 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM,
748f2546
RS
796 TLS1_CK_DHE_PSK_WITH_AES_128_CCM,
797 SSL_kDHEPSK,
798 SSL_aPSK,
799 SSL_AES128CCM,
0f113f3e 800 SSL_AEAD,
3eb2aff4
KR
801 TLS1_2_VERSION, TLS1_2_VERSION,
802 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 803 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
804 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
805 128,
806 128,
807 },
0f113f3e
MC
808 {
809 1,
748f2546 810 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM,
bbb4ceb8 811 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM,
748f2546
RS
812 TLS1_CK_DHE_PSK_WITH_AES_256_CCM,
813 SSL_kDHEPSK,
814 SSL_aPSK,
815 SSL_AES256CCM,
0f113f3e 816 SSL_AEAD,
3eb2aff4
KR
817 TLS1_2_VERSION, TLS1_2_VERSION,
818 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
819 SSL_NOT_DEFAULT | SSL_HIGH,
820 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
821 256,
822 256,
823 },
547dba74
DSH
824 {
825 1,
748f2546 826 TLS1_TXT_PSK_WITH_AES_128_CCM_8,
bbb4ceb8 827 TLS1_RFC_PSK_WITH_AES_128_CCM_8,
748f2546 828 TLS1_CK_PSK_WITH_AES_128_CCM_8,
547dba74
DSH
829 SSL_kPSK,
830 SSL_aPSK,
748f2546 831 SSL_AES128CCM8,
547dba74 832 SSL_AEAD,
3eb2aff4
KR
833 TLS1_2_VERSION, TLS1_2_VERSION,
834 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 835 SSL_NOT_DEFAULT | SSL_HIGH,
547dba74
DSH
836 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
837 128,
838 128,
839 },
547dba74
DSH
840 {
841 1,
748f2546 842 TLS1_TXT_PSK_WITH_AES_256_CCM_8,
bbb4ceb8 843 TLS1_RFC_PSK_WITH_AES_256_CCM_8,
748f2546 844 TLS1_CK_PSK_WITH_AES_256_CCM_8,
547dba74
DSH
845 SSL_kPSK,
846 SSL_aPSK,
748f2546 847 SSL_AES256CCM8,
547dba74 848 SSL_AEAD,
3eb2aff4
KR
849 TLS1_2_VERSION, TLS1_2_VERSION,
850 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
851 SSL_NOT_DEFAULT | SSL_HIGH,
852 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
547dba74
DSH
853 256,
854 256,
855 },
ea6114c6
DSH
856 {
857 1,
748f2546 858 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8,
bbb4ceb8 859 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8,
748f2546 860 TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8,
ea6114c6
DSH
861 SSL_kDHEPSK,
862 SSL_aPSK,
748f2546 863 SSL_AES128CCM8,
ea6114c6 864 SSL_AEAD,
3eb2aff4
KR
865 TLS1_2_VERSION, TLS1_2_VERSION,
866 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 867 SSL_NOT_DEFAULT | SSL_HIGH,
ea6114c6
DSH
868 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
869 128,
870 128,
871 },
ea6114c6
DSH
872 {
873 1,
748f2546 874 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8,
bbb4ceb8 875 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8,
748f2546
RS
876 TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8,
877 SSL_kDHEPSK,
ea6114c6 878 SSL_aPSK,
748f2546 879 SSL_AES256CCM8,
ea6114c6 880 SSL_AEAD,
3eb2aff4
KR
881 TLS1_2_VERSION, TLS1_2_VERSION,
882 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
883 SSL_NOT_DEFAULT | SSL_HIGH,
884 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
885 256,
886 256,
887 },
ea6114c6
DSH
888 {
889 1,
748f2546 890 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM,
bbb4ceb8 891 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM,
748f2546
RS
892 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM,
893 SSL_kECDHE,
894 SSL_aECDSA,
895 SSL_AES128CCM,
ea6114c6 896 SSL_AEAD,
3eb2aff4
KR
897 TLS1_2_VERSION, TLS1_2_VERSION,
898 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 899 SSL_NOT_DEFAULT | SSL_HIGH,
ea6114c6
DSH
900 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
901 128,
902 128,
903 },
ea6114c6
DSH
904 {
905 1,
748f2546 906 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM,
bbb4ceb8 907 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM,
748f2546
RS
908 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM,
909 SSL_kECDHE,
910 SSL_aECDSA,
911 SSL_AES256CCM,
ea6114c6 912 SSL_AEAD,
3eb2aff4
KR
913 TLS1_2_VERSION, TLS1_2_VERSION,
914 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
915 SSL_NOT_DEFAULT | SSL_HIGH,
916 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
917 256,
918 256,
919 },
ea6114c6
DSH
920 {
921 1,
748f2546 922 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8,
bbb4ceb8 923 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8,
748f2546
RS
924 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8,
925 SSL_kECDHE,
926 SSL_aECDSA,
927 SSL_AES128CCM8,
928 SSL_AEAD,
929 TLS1_2_VERSION, TLS1_2_VERSION,
930 DTLS1_2_VERSION, DTLS1_2_VERSION,
931 SSL_NOT_DEFAULT | SSL_HIGH,
932 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
933 128,
934 128,
935 },
ea6114c6
DSH
936 {
937 1,
748f2546 938 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8,
bbb4ceb8 939 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8,
748f2546
RS
940 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8,
941 SSL_kECDHE,
942 SSL_aECDSA,
943 SSL_AES256CCM8,
944 SSL_AEAD,
945 TLS1_2_VERSION, TLS1_2_VERSION,
946 DTLS1_2_VERSION, DTLS1_2_VERSION,
947 SSL_NOT_DEFAULT | SSL_HIGH,
948 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
ea6114c6
DSH
949 256,
950 256,
951 },
ea6114c6
DSH
952 {
953 1,
748f2546 954 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA,
bbb4ceb8 955 TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA,
748f2546
RS
956 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA,
957 SSL_kECDHE,
958 SSL_aECDSA,
ea6114c6 959 SSL_eNULL,
748f2546 960 SSL_SHA1,
fe55c4a2 961 TLS1_VERSION, TLS1_2_VERSION,
387cf213 962 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 963 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
964 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
965 0,
966 0,
967 },
d33726b9 968# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
969 {
970 1,
748f2546 971 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
bbb4ceb8 972 TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
748f2546
RS
973 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
974 SSL_kECDHE,
975 SSL_aECDSA,
976 SSL_3DES,
977 SSL_SHA1,
fe55c4a2 978 TLS1_VERSION, TLS1_2_VERSION,
387cf213 979 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 980 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
748f2546
RS
981 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
982 112,
983 168,
ea6114c6 984 },
d33726b9 985# endif
ea6114c6
DSH
986 {
987 1,
748f2546 988 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
bbb4ceb8 989 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
748f2546
RS
990 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
991 SSL_kECDHE,
992 SSL_aECDSA,
ea6114c6 993 SSL_AES128,
748f2546 994 SSL_SHA1,
fe55c4a2 995 TLS1_VERSION, TLS1_2_VERSION,
387cf213 996 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 997 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
998 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
999 128,
1000 128,
1001 },
ea6114c6
DSH
1002 {
1003 1,
748f2546 1004 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
bbb4ceb8 1005 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
748f2546
RS
1006 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
1007 SSL_kECDHE,
1008 SSL_aECDSA,
ea6114c6 1009 SSL_AES256,
748f2546 1010 SSL_SHA1,
fe55c4a2 1011 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1012 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1013 SSL_HIGH | SSL_FIPS,
748f2546 1014 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
ea6114c6
DSH
1015 256,
1016 256,
1017 },
ea6114c6
DSH
1018 {
1019 1,
748f2546 1020 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA,
bbb4ceb8 1021 TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA,
748f2546
RS
1022 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA,
1023 SSL_kECDHE,
1024 SSL_aRSA,
ea6114c6 1025 SSL_eNULL,
748f2546 1026 SSL_SHA1,
fe55c4a2 1027 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1028 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1029 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1030 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1031 0,
1032 0,
1033 },
d33726b9 1034# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
1035 {
1036 1,
748f2546 1037 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
bbb4ceb8 1038 TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
748f2546
RS
1039 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
1040 SSL_kECDHE,
1041 SSL_aRSA,
1042 SSL_3DES,
1043 SSL_SHA1,
fe55c4a2 1044 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1045 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1046 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
748f2546
RS
1047 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1048 112,
1049 168,
ea6114c6 1050 },
d33726b9 1051# endif
ea6114c6
DSH
1052 {
1053 1,
748f2546 1054 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,
bbb4ceb8 1055 TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA,
748f2546
RS
1056 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA,
1057 SSL_kECDHE,
ea6114c6
DSH
1058 SSL_aRSA,
1059 SSL_AES128,
748f2546 1060 SSL_SHA1,
fe55c4a2 1061 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1062 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1063 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1064 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1065 128,
1066 128,
1067 },
ea6114c6
DSH
1068 {
1069 1,
748f2546 1070 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,
bbb4ceb8 1071 TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA,
748f2546
RS
1072 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA,
1073 SSL_kECDHE,
ea6114c6
DSH
1074 SSL_aRSA,
1075 SSL_AES256,
748f2546 1076 SSL_SHA1,
fe55c4a2 1077 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1078 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1079 SSL_HIGH | SSL_FIPS,
748f2546 1080 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
ea6114c6
DSH
1081 256,
1082 256,
1083 },
ea6114c6
DSH
1084 {
1085 1,
748f2546 1086 TLS1_TXT_ECDH_anon_WITH_NULL_SHA,
bbb4ceb8 1087 TLS1_RFC_ECDH_anon_WITH_NULL_SHA,
748f2546
RS
1088 TLS1_CK_ECDH_anon_WITH_NULL_SHA,
1089 SSL_kECDHE,
1090 SSL_aNULL,
ea6114c6 1091 SSL_eNULL,
748f2546 1092 SSL_SHA1,
fe55c4a2 1093 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1094 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1095 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1096 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1097 0,
1098 0,
1099 },
d33726b9 1100# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
1101 {
1102 1,
748f2546 1103 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA,
bbb4ceb8 1104 TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA,
748f2546
RS
1105 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA,
1106 SSL_kECDHE,
1107 SSL_aNULL,
1108 SSL_3DES,
1109 SSL_SHA1,
fe55c4a2 1110 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1111 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 1112 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
748f2546
RS
1113 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1114 112,
1115 168,
ea6114c6 1116 },
d33726b9 1117# endif
0f113f3e
MC
1118 {
1119 1,
748f2546 1120 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA,
bbb4ceb8 1121 TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA,
748f2546
RS
1122 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA,
1123 SSL_kECDHE,
1124 SSL_aNULL,
1125 SSL_AES128,
1126 SSL_SHA1,
fe55c4a2 1127 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1128 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1129 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
1130 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1131 128,
1132 128,
1133 },
0f113f3e
MC
1134 {
1135 1,
748f2546 1136 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA,
bbb4ceb8 1137 TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA,
748f2546
RS
1138 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA,
1139 SSL_kECDHE,
1140 SSL_aNULL,
1141 SSL_AES256,
1142 SSL_SHA1,
fe55c4a2 1143 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1144 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1145 SSL_NOT_DEFAULT | SSL_HIGH | SSL_FIPS,
1146 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1147 256,
1148 256,
1149 },
1150 {
1151 1,
1152 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256,
bbb4ceb8 1153 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256,
748f2546
RS
1154 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256,
1155 SSL_kECDHE,
1156 SSL_aECDSA,
1157 SSL_AES128,
0f113f3e 1158 SSL_SHA256,
3eb2aff4
KR
1159 TLS1_2_VERSION, TLS1_2_VERSION,
1160 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1161 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1162 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1163 128,
1164 128,
1165 },
0f113f3e
MC
1166 {
1167 1,
748f2546 1168 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384,
bbb4ceb8 1169 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384,
748f2546
RS
1170 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384,
1171 SSL_kECDHE,
1172 SSL_aECDSA,
1173 SSL_AES256,
1174 SSL_SHA384,
3eb2aff4
KR
1175 TLS1_2_VERSION, TLS1_2_VERSION,
1176 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
1177 SSL_HIGH | SSL_FIPS,
1178 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1179 256,
1180 256,
0f113f3e 1181 },
0f113f3e
MC
1182 {
1183 1,
748f2546 1184 TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256,
bbb4ceb8 1185 TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256,
748f2546
RS
1186 TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256,
1187 SSL_kECDHE,
1188 SSL_aRSA,
1189 SSL_AES128,
0f113f3e 1190 SSL_SHA256,
3eb2aff4
KR
1191 TLS1_2_VERSION, TLS1_2_VERSION,
1192 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1193 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1194 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1195 128,
1196 128,
1197 },
0f113f3e
MC
1198 {
1199 1,
748f2546 1200 TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384,
bbb4ceb8 1201 TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384,
748f2546
RS
1202 TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384,
1203 SSL_kECDHE,
0f113f3e 1204 SSL_aRSA,
748f2546
RS
1205 SSL_AES256,
1206 SSL_SHA384,
3eb2aff4
KR
1207 TLS1_2_VERSION, TLS1_2_VERSION,
1208 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
1209 SSL_HIGH | SSL_FIPS,
1210 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1211 256,
1212 256,
1213 },
0f113f3e
MC
1214 {
1215 1,
748f2546 1216 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1217 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
748f2546
RS
1218 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
1219 SSL_kECDHE,
1220 SSL_aECDSA,
1221 SSL_AES128GCM,
1222 SSL_AEAD,
3eb2aff4
KR
1223 TLS1_2_VERSION, TLS1_2_VERSION,
1224 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1225 SSL_HIGH | SSL_FIPS,
0f113f3e 1226 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
748f2546
RS
1227 128,
1228 128,
1229 },
1230 {
1231 1,
1232 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1233 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
748f2546
RS
1234 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
1235 SSL_kECDHE,
1236 SSL_aECDSA,
1237 SSL_AES256GCM,
1238 SSL_AEAD,
1239 TLS1_2_VERSION, TLS1_2_VERSION,
1240 DTLS1_2_VERSION, DTLS1_2_VERSION,
1241 SSL_HIGH | SSL_FIPS,
1242 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1243 256,
1244 256,
1245 },
0f113f3e
MC
1246 {
1247 1,
748f2546 1248 TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1249 TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
748f2546
RS
1250 TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
1251 SSL_kECDHE,
0f113f3e 1252 SSL_aRSA,
748f2546
RS
1253 SSL_AES128GCM,
1254 SSL_AEAD,
3eb2aff4
KR
1255 TLS1_2_VERSION, TLS1_2_VERSION,
1256 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546 1257 SSL_HIGH | SSL_FIPS,
0f113f3e 1258 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
748f2546
RS
1259 128,
1260 128,
0f113f3e 1261 },
0f113f3e
MC
1262 {
1263 1,
748f2546 1264 TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1265 TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
748f2546
RS
1266 TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
1267 SSL_kECDHE,
1268 SSL_aRSA,
1269 SSL_AES256GCM,
1270 SSL_AEAD,
3eb2aff4
KR
1271 TLS1_2_VERSION, TLS1_2_VERSION,
1272 DTLS1_2_VERSION, DTLS1_2_VERSION,
748f2546
RS
1273 SSL_HIGH | SSL_FIPS,
1274 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1275 256,
1276 256,
1277 },
0f113f3e
MC
1278 {
1279 1,
748f2546 1280 TLS1_TXT_PSK_WITH_NULL_SHA,
bbb4ceb8 1281 TLS1_RFC_PSK_WITH_NULL_SHA,
748f2546
RS
1282 TLS1_CK_PSK_WITH_NULL_SHA,
1283 SSL_kPSK,
1284 SSL_aPSK,
0f113f3e
MC
1285 SSL_eNULL,
1286 SSL_SHA1,
3eb2aff4 1287 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1288 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1289 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e
MC
1290 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1291 0,
1292 0,
1293 },
0f113f3e
MC
1294 {
1295 1,
748f2546 1296 TLS1_TXT_DHE_PSK_WITH_NULL_SHA,
bbb4ceb8 1297 TLS1_RFC_DHE_PSK_WITH_NULL_SHA,
748f2546
RS
1298 TLS1_CK_DHE_PSK_WITH_NULL_SHA,
1299 SSL_kDHEPSK,
1300 SSL_aPSK,
1301 SSL_eNULL,
0f113f3e 1302 SSL_SHA1,
3eb2aff4 1303 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1304 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1305 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1306 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1307 0,
1308 0,
0f113f3e 1309 },
0f113f3e
MC
1310 {
1311 1,
748f2546 1312 TLS1_TXT_RSA_PSK_WITH_NULL_SHA,
bbb4ceb8 1313 TLS1_RFC_RSA_PSK_WITH_NULL_SHA,
748f2546
RS
1314 TLS1_CK_RSA_PSK_WITH_NULL_SHA,
1315 SSL_kRSAPSK,
1316 SSL_aRSA,
1317 SSL_eNULL,
1318 SSL_SHA1,
1319 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1320 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1321 SSL_STRONG_NONE | SSL_FIPS,
1322 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1323 0,
1324 0,
1325 },
d33726b9 1326# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
748f2546
RS
1327 {
1328 1,
1329 TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1330 TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1331 TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA,
1332 SSL_kPSK,
1333 SSL_aPSK,
0f113f3e
MC
1334 SSL_3DES,
1335 SSL_SHA1,
3eb2aff4 1336 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1337 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1338 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
1339 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1340 112,
1341 168,
1342 },
d33726b9 1343# endif
0f113f3e
MC
1344 {
1345 1,
748f2546 1346 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1347 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA,
748f2546
RS
1348 TLS1_CK_PSK_WITH_AES_128_CBC_SHA,
1349 SSL_kPSK,
1350 SSL_aPSK,
0f113f3e
MC
1351 SSL_AES128,
1352 SSL_SHA1,
3eb2aff4 1353 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1354 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1355 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1356 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1357 128,
1358 128,
1359 },
0f113f3e
MC
1360 {
1361 1,
748f2546 1362 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1363 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA,
748f2546
RS
1364 TLS1_CK_PSK_WITH_AES_256_CBC_SHA,
1365 SSL_kPSK,
1366 SSL_aPSK,
0f113f3e
MC
1367 SSL_AES256,
1368 SSL_SHA1,
3eb2aff4 1369 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1370 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1371 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1372 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1373 256,
1374 256,
1375 },
d33726b9 1376# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
0f113f3e
MC
1377 {
1378 1,
748f2546 1379 TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1380 TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1381 TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
1382 SSL_kDHEPSK,
1383 SSL_aPSK,
1384 SSL_3DES,
0f113f3e 1385 SSL_SHA1,
3eb2aff4 1386 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1387 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1388 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e 1389 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1390 112,
1391 168,
0f113f3e 1392 },
d33726b9 1393# endif
0f113f3e
MC
1394 {
1395 1,
748f2546 1396 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1397 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA,
748f2546
RS
1398 TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA,
1399 SSL_kDHEPSK,
1400 SSL_aPSK,
1401 SSL_AES128,
1402 SSL_SHA1,
1403 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1404 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1405 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1406 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1407 128,
1408 128,
1409 },
0f113f3e
MC
1410 {
1411 1,
748f2546 1412 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1413 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA,
748f2546
RS
1414 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA,
1415 SSL_kDHEPSK,
1416 SSL_aPSK,
1417 SSL_AES256,
1418 SSL_SHA1,
1419 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1420 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1421 SSL_HIGH | SSL_FIPS,
1422 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1423 256,
1424 256,
1425 },
d33726b9 1426# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
748f2546
RS
1427 {
1428 1,
1429 TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1430 TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1431 TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
1432 SSL_kRSAPSK,
0f113f3e
MC
1433 SSL_aRSA,
1434 SSL_3DES,
1435 SSL_SHA1,
3eb2aff4 1436 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1437 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1438 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
0f113f3e
MC
1439 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1440 112,
1441 168,
1442 },
d33726b9 1443# endif
0f113f3e
MC
1444 {
1445 1,
748f2546 1446 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1447 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA,
748f2546
RS
1448 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA,
1449 SSL_kRSAPSK,
0f113f3e
MC
1450 SSL_aRSA,
1451 SSL_AES128,
1452 SSL_SHA1,
3eb2aff4 1453 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1454 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1455 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1456 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1457 128,
1458 128,
1459 },
0f113f3e
MC
1460 {
1461 1,
748f2546 1462 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1463 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA,
748f2546
RS
1464 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA,
1465 SSL_kRSAPSK,
0f113f3e
MC
1466 SSL_aRSA,
1467 SSL_AES256,
1468 SSL_SHA1,
3eb2aff4 1469 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1470 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1471 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1472 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1473 256,
1474 256,
1475 },
0f113f3e
MC
1476 {
1477 1,
748f2546 1478 TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1479 TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256,
748f2546
RS
1480 TLS1_CK_PSK_WITH_AES_128_GCM_SHA256,
1481 SSL_kPSK,
1482 SSL_aPSK,
1483 SSL_AES128GCM,
1484 SSL_AEAD,
1485 TLS1_2_VERSION, TLS1_2_VERSION,
1486 DTLS1_2_VERSION, DTLS1_2_VERSION,
1487 SSL_HIGH | SSL_FIPS,
1488 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
1489 128,
1490 128,
1491 },
0f113f3e
MC
1492 {
1493 1,
748f2546 1494 TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1495 TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384,
748f2546
RS
1496 TLS1_CK_PSK_WITH_AES_256_GCM_SHA384,
1497 SSL_kPSK,
1498 SSL_aPSK,
1499 SSL_AES256GCM,
1500 SSL_AEAD,
1501 TLS1_2_VERSION, TLS1_2_VERSION,
1502 DTLS1_2_VERSION, DTLS1_2_VERSION,
1503 SSL_HIGH | SSL_FIPS,
1504 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1505 256,
1506 256,
0f113f3e 1507 },
0f113f3e
MC
1508 {
1509 1,
748f2546 1510 TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1511 TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256,
748f2546
RS
1512 TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256,
1513 SSL_kDHEPSK,
1514 SSL_aPSK,
1515 SSL_AES128GCM,
1516 SSL_AEAD,
1517 TLS1_2_VERSION, TLS1_2_VERSION,
1518 DTLS1_2_VERSION, DTLS1_2_VERSION,
1519 SSL_HIGH | SSL_FIPS,
1520 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
0f113f3e
MC
1521 128,
1522 128,
1523 },
0f113f3e
MC
1524 {
1525 1,
748f2546 1526 TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1527 TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384,
748f2546
RS
1528 TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384,
1529 SSL_kDHEPSK,
1530 SSL_aPSK,
1531 SSL_AES256GCM,
1532 SSL_AEAD,
1533 TLS1_2_VERSION, TLS1_2_VERSION,
1534 DTLS1_2_VERSION, DTLS1_2_VERSION,
1535 SSL_HIGH | SSL_FIPS,
1536 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1537 256,
1538 256,
1539 },
0f113f3e
MC
1540 {
1541 1,
748f2546 1542 TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256,
bbb4ceb8 1543 TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256,
748f2546
RS
1544 TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256,
1545 SSL_kRSAPSK,
0f113f3e 1546 SSL_aRSA,
748f2546
RS
1547 SSL_AES128GCM,
1548 SSL_AEAD,
1549 TLS1_2_VERSION, TLS1_2_VERSION,
1550 DTLS1_2_VERSION, DTLS1_2_VERSION,
1551 SSL_HIGH | SSL_FIPS,
1552 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
1553 128,
1554 128,
0f113f3e 1555 },
0f113f3e
MC
1556 {
1557 1,
748f2546 1558 TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384,
bbb4ceb8 1559 TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384,
748f2546
RS
1560 TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384,
1561 SSL_kRSAPSK,
1562 SSL_aRSA,
1563 SSL_AES256GCM,
1564 SSL_AEAD,
1565 TLS1_2_VERSION, TLS1_2_VERSION,
1566 DTLS1_2_VERSION, DTLS1_2_VERSION,
1567 SSL_HIGH | SSL_FIPS,
1568 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1569 256,
1570 256,
0f113f3e 1571 },
0f113f3e
MC
1572 {
1573 1,
748f2546 1574 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1575 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256,
748f2546
RS
1576 TLS1_CK_PSK_WITH_AES_128_CBC_SHA256,
1577 SSL_kPSK,
1578 SSL_aPSK,
0f113f3e 1579 SSL_AES128,
748f2546
RS
1580 SSL_SHA256,
1581 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1582 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1583 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1584 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1585 128,
1586 128,
1587 },
0f113f3e
MC
1588 {
1589 1,
748f2546 1590 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1591 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384,
748f2546
RS
1592 TLS1_CK_PSK_WITH_AES_256_CBC_SHA384,
1593 SSL_kPSK,
1594 SSL_aPSK,
1595 SSL_AES256,
1596 SSL_SHA384,
1597 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1598 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1599 SSL_HIGH | SSL_FIPS,
1600 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1601 256,
1602 256,
0f113f3e 1603 },
0f113f3e
MC
1604 {
1605 1,
748f2546 1606 TLS1_TXT_PSK_WITH_NULL_SHA256,
bbb4ceb8 1607 TLS1_RFC_PSK_WITH_NULL_SHA256,
748f2546
RS
1608 TLS1_CK_PSK_WITH_NULL_SHA256,
1609 SSL_kPSK,
1610 SSL_aPSK,
1611 SSL_eNULL,
1612 SSL_SHA256,
1613 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1614 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1615 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1616 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1617 0,
1618 0,
0f113f3e 1619 },
0f113f3e
MC
1620 {
1621 1,
748f2546 1622 TLS1_TXT_PSK_WITH_NULL_SHA384,
bbb4ceb8 1623 TLS1_RFC_PSK_WITH_NULL_SHA384,
748f2546
RS
1624 TLS1_CK_PSK_WITH_NULL_SHA384,
1625 SSL_kPSK,
1626 SSL_aPSK,
1627 SSL_eNULL,
1628 SSL_SHA384,
1629 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1630 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1631 SSL_STRONG_NONE | SSL_FIPS,
1632 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1633 0,
1634 0,
0f113f3e 1635 },
0f113f3e
MC
1636 {
1637 1,
748f2546 1638 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1639 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256,
748f2546
RS
1640 TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256,
1641 SSL_kDHEPSK,
1642 SSL_aPSK,
1643 SSL_AES128,
1644 SSL_SHA256,
1645 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1646 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1647 SSL_HIGH | SSL_FIPS,
0f113f3e 1648 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
748f2546
RS
1649 128,
1650 128,
0f113f3e 1651 },
0f113f3e
MC
1652 {
1653 1,
748f2546 1654 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1655 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384,
748f2546
RS
1656 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384,
1657 SSL_kDHEPSK,
1658 SSL_aPSK,
0f113f3e 1659 SSL_AES256,
748f2546
RS
1660 SSL_SHA384,
1661 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1662 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1663 SSL_HIGH | SSL_FIPS,
1664 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
0f113f3e
MC
1665 256,
1666 256,
1667 },
0f113f3e
MC
1668 {
1669 1,
748f2546 1670 TLS1_TXT_DHE_PSK_WITH_NULL_SHA256,
bbb4ceb8 1671 TLS1_RFC_DHE_PSK_WITH_NULL_SHA256,
748f2546
RS
1672 TLS1_CK_DHE_PSK_WITH_NULL_SHA256,
1673 SSL_kDHEPSK,
1674 SSL_aPSK,
1675 SSL_eNULL,
0f113f3e 1676 SSL_SHA256,
748f2546 1677 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1678 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1679 SSL_STRONG_NONE | SSL_FIPS,
1680 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1681 0,
1682 0,
0f113f3e 1683 },
0f113f3e
MC
1684 {
1685 1,
748f2546 1686 TLS1_TXT_DHE_PSK_WITH_NULL_SHA384,
bbb4ceb8 1687 TLS1_RFC_DHE_PSK_WITH_NULL_SHA384,
748f2546
RS
1688 TLS1_CK_DHE_PSK_WITH_NULL_SHA384,
1689 SSL_kDHEPSK,
1690 SSL_aPSK,
1691 SSL_eNULL,
0f113f3e 1692 SSL_SHA384,
748f2546 1693 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1694 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1695 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1696 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
748f2546
RS
1697 0,
1698 0,
0f113f3e 1699 },
0f113f3e
MC
1700 {
1701 1,
748f2546 1702 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1703 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256,
748f2546
RS
1704 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256,
1705 SSL_kRSAPSK,
0f113f3e
MC
1706 SSL_aRSA,
1707 SSL_AES128,
1708 SSL_SHA256,
748f2546 1709 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1710 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1711 SSL_HIGH | SSL_FIPS,
748f2546 1712 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
0f113f3e
MC
1713 128,
1714 128,
1715 },
0f113f3e
MC
1716 {
1717 1,
748f2546 1718 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1719 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384,
748f2546
RS
1720 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384,
1721 SSL_kRSAPSK,
0f113f3e
MC
1722 SSL_aRSA,
1723 SSL_AES256,
1724 SSL_SHA384,
748f2546 1725 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1726 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1727 SSL_HIGH | SSL_FIPS,
0f113f3e
MC
1728 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1729 256,
1730 256,
1731 },
0f113f3e
MC
1732 {
1733 1,
748f2546 1734 TLS1_TXT_RSA_PSK_WITH_NULL_SHA256,
bbb4ceb8 1735 TLS1_RFC_RSA_PSK_WITH_NULL_SHA256,
748f2546
RS
1736 TLS1_CK_RSA_PSK_WITH_NULL_SHA256,
1737 SSL_kRSAPSK,
0f113f3e 1738 SSL_aRSA,
748f2546
RS
1739 SSL_eNULL,
1740 SSL_SHA256,
1741 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1742 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1743 SSL_STRONG_NONE | SSL_FIPS,
1744 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1745 0,
1746 0,
0f113f3e 1747 },
0f113f3e
MC
1748 {
1749 1,
748f2546 1750 TLS1_TXT_RSA_PSK_WITH_NULL_SHA384,
bbb4ceb8 1751 TLS1_RFC_RSA_PSK_WITH_NULL_SHA384,
748f2546
RS
1752 TLS1_CK_RSA_PSK_WITH_NULL_SHA384,
1753 SSL_kRSAPSK,
0f113f3e 1754 SSL_aRSA,
748f2546
RS
1755 SSL_eNULL,
1756 SSL_SHA384,
1757 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1758 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546 1759 SSL_STRONG_NONE | SSL_FIPS,
0f113f3e 1760 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
748f2546
RS
1761 0,
1762 0,
ea6114c6 1763 },
d33726b9 1764# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
ea6114c6
DSH
1765 {
1766 1,
1767 TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1768 TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
ea6114c6
DSH
1769 TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA,
1770 SSL_kECDHEPSK,
1771 SSL_aPSK,
1772 SSL_3DES,
1773 SSL_SHA1,
fe55c4a2 1774 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1775 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1776 SSL_NOT_DEFAULT | SSL_MEDIUM | SSL_FIPS,
ea6114c6
DSH
1777 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1778 112,
1779 168,
1780 },
d33726b9 1781# endif
ea6114c6
DSH
1782 {
1783 1,
1784 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA,
bbb4ceb8 1785 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA,
ea6114c6
DSH
1786 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA,
1787 SSL_kECDHEPSK,
1788 SSL_aPSK,
1789 SSL_AES128,
1790 SSL_SHA1,
fe55c4a2 1791 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1792 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1793 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1794 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1795 128,
1796 128,
1797 },
ea6114c6
DSH
1798 {
1799 1,
1800 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA,
bbb4ceb8 1801 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA,
ea6114c6
DSH
1802 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA,
1803 SSL_kECDHEPSK,
1804 SSL_aPSK,
1805 SSL_AES256,
1806 SSL_SHA1,
fe55c4a2 1807 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1808 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1809 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1810 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1811 256,
1812 256,
1813 },
ea6114c6
DSH
1814 {
1815 1,
1816 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
bbb4ceb8 1817 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
ea6114c6
DSH
1818 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256,
1819 SSL_kECDHEPSK,
1820 SSL_aPSK,
1821 SSL_AES128,
1822 SSL_SHA256,
3eb2aff4 1823 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1824 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1825 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1826 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1827 128,
1828 128,
1829 },
ea6114c6
DSH
1830 {
1831 1,
1832 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
bbb4ceb8 1833 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
ea6114c6
DSH
1834 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384,
1835 SSL_kECDHEPSK,
1836 SSL_aPSK,
1837 SSL_AES256,
1838 SSL_SHA384,
3eb2aff4 1839 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1840 DTLS1_BAD_VER, DTLS1_2_VERSION,
361a1191 1841 SSL_HIGH | SSL_FIPS,
ea6114c6
DSH
1842 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1843 256,
1844 256,
1845 },
ea6114c6
DSH
1846 {
1847 1,
1848 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA,
bbb4ceb8 1849 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA,
ea6114c6
DSH
1850 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA,
1851 SSL_kECDHEPSK,
1852 SSL_aPSK,
1853 SSL_eNULL,
1854 SSL_SHA1,
fe55c4a2 1855 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1856 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1857 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1858 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1859 0,
1860 0,
1861 },
ea6114c6
DSH
1862 {
1863 1,
1864 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256,
bbb4ceb8 1865 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256,
ea6114c6
DSH
1866 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256,
1867 SSL_kECDHEPSK,
1868 SSL_aPSK,
1869 SSL_eNULL,
1870 SSL_SHA256,
3eb2aff4 1871 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1872 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1873 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1874 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1875 0,
1876 0,
1877 },
ea6114c6
DSH
1878 {
1879 1,
1880 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384,
bbb4ceb8 1881 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384,
ea6114c6
DSH
1882 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384,
1883 SSL_kECDHEPSK,
1884 SSL_aPSK,
1885 SSL_eNULL,
1886 SSL_SHA384,
3eb2aff4 1887 TLS1_VERSION, TLS1_2_VERSION,
387cf213 1888 DTLS1_BAD_VER, DTLS1_2_VERSION,
1510b5f7 1889 SSL_STRONG_NONE | SSL_FIPS,
ea6114c6
DSH
1890 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
1891 0,
1892 0,
1893 },
1894
d33726b9 1895# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
748f2546
RS
1896 {
1897 1,
1898 TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1899 TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1900 TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA,
1901 SSL_kSRP,
1902 SSL_aSRP,
1903 SSL_3DES,
1904 SSL_SHA1,
1905 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1906 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1907 SSL_NOT_DEFAULT | SSL_MEDIUM,
748f2546
RS
1908 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1909 112,
1910 168,
1911 },
1912 {
1913 1,
1914 TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1915 TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1916 TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA,
1917 SSL_kSRP,
1918 SSL_aRSA,
1919 SSL_3DES,
1920 SSL_SHA1,
1921 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1922 DTLS1_BAD_VER, DTLS1_2_VERSION,
ef28891b 1923 SSL_NOT_DEFAULT | SSL_MEDIUM,
748f2546
RS
1924 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1925 112,
1926 168,
1927 },
1928 {
1929 1,
1930 TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
bbb4ceb8 1931 TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
748f2546
RS
1932 TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA,
1933 SSL_kSRP,
1934 SSL_aDSS,
1935 SSL_3DES,
1936 SSL_SHA1,
1937 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1938 DTLS1_BAD_VER, DTLS1_2_VERSION,
4a8e9c22 1939 SSL_NOT_DEFAULT | SSL_MEDIUM,
748f2546
RS
1940 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1941 112,
1942 168,
1943 },
d33726b9 1944# endif
748f2546
RS
1945 {
1946 1,
1947 TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA,
bbb4ceb8 1948 TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA,
748f2546
RS
1949 TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA,
1950 SSL_kSRP,
1951 SSL_aSRP,
1952 SSL_AES128,
1953 SSL_SHA1,
1954 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1955 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1956 SSL_HIGH,
1957 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1958 128,
1959 128,
1960 },
1961 {
1962 1,
1963 TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
bbb4ceb8 1964 TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
748f2546
RS
1965 TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
1966 SSL_kSRP,
1967 SSL_aRSA,
1968 SSL_AES128,
1969 SSL_SHA1,
1970 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1971 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1972 SSL_HIGH,
1973 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1974 128,
1975 128,
1976 },
1977 {
1978 1,
1979 TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
bbb4ceb8 1980 TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
748f2546
RS
1981 TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,
1982 SSL_kSRP,
1983 SSL_aDSS,
1984 SSL_AES128,
1985 SSL_SHA1,
1986 SSL3_VERSION, TLS1_2_VERSION,
387cf213 1987 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
1988 SSL_NOT_DEFAULT | SSL_HIGH,
1989 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
1990 128,
1991 128,
1992 },
1993 {
1994 1,
1995 TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA,
bbb4ceb8 1996 TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA,
748f2546
RS
1997 TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA,
1998 SSL_kSRP,
1999 SSL_aSRP,
2000 SSL_AES256,
2001 SSL_SHA1,
2002 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2003 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2004 SSL_HIGH,
2005 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2006 256,
2007 256,
2008 },
2009 {
2010 1,
2011 TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
bbb4ceb8 2012 TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
748f2546
RS
2013 TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
2014 SSL_kSRP,
2015 SSL_aRSA,
2016 SSL_AES256,
2017 SSL_SHA1,
2018 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2019 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2020 SSL_HIGH,
2021 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2022 256,
2023 256,
2024 },
2025 {
2026 1,
2027 TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
bbb4ceb8 2028 TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
748f2546
RS
2029 TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,
2030 SSL_kSRP,
2031 SSL_aDSS,
2032 SSL_AES256,
2033 SSL_SHA1,
2034 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2035 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2036 SSL_NOT_DEFAULT | SSL_HIGH,
2037 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2038 256,
2039 256,
2040 },
748f2546
RS
2041
2042#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
748f2546
RS
2043 {
2044 1,
2045 TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305,
bbb4ceb8 2046 TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305,
748f2546
RS
2047 TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305,
2048 SSL_kDHE,
2049 SSL_aRSA,
2050 SSL_CHACHA20POLY1305,
2051 SSL_AEAD,
2052 TLS1_2_VERSION, TLS1_2_VERSION,
2053 DTLS1_2_VERSION, DTLS1_2_VERSION,
2054 SSL_HIGH,
2055 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2056 256,
2057 256,
2058 },
748f2546
RS
2059 {
2060 1,
2061 TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305,
bbb4ceb8 2062 TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305,
748f2546
RS
2063 TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305,
2064 SSL_kECDHE,
2065 SSL_aRSA,
2066 SSL_CHACHA20POLY1305,
2067 SSL_AEAD,
2068 TLS1_2_VERSION, TLS1_2_VERSION,
2069 DTLS1_2_VERSION, DTLS1_2_VERSION,
2070 SSL_HIGH,
2071 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2072 256,
2073 256,
2074 },
2075 {
2076 1,
2077 TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
bbb4ceb8 2078 TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
748f2546
RS
2079 TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,
2080 SSL_kECDHE,
2081 SSL_aECDSA,
2082 SSL_CHACHA20POLY1305,
2083 SSL_AEAD,
2084 TLS1_2_VERSION, TLS1_2_VERSION,
2085 DTLS1_2_VERSION, DTLS1_2_VERSION,
2086 SSL_HIGH,
2087 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2088 256,
2089 256,
2090 },
748f2546
RS
2091 {
2092 1,
2093 TLS1_TXT_PSK_WITH_CHACHA20_POLY1305,
bbb4ceb8 2094 TLS1_RFC_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2095 TLS1_CK_PSK_WITH_CHACHA20_POLY1305,
2096 SSL_kPSK,
2097 SSL_aPSK,
2098 SSL_CHACHA20POLY1305,
2099 SSL_AEAD,
2100 TLS1_2_VERSION, TLS1_2_VERSION,
2101 DTLS1_2_VERSION, DTLS1_2_VERSION,
2102 SSL_HIGH,
2103 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2104 256,
2105 256,
2106 },
2107 {
2108 1,
2109 TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305,
bbb4ceb8 2110 TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2111 TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305,
2112 SSL_kECDHEPSK,
2113 SSL_aPSK,
2114 SSL_CHACHA20POLY1305,
2115 SSL_AEAD,
2116 TLS1_2_VERSION, TLS1_2_VERSION,
2117 DTLS1_2_VERSION, DTLS1_2_VERSION,
2118 SSL_HIGH,
2119 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2120 256,
2121 256,
2122 },
2123 {
2124 1,
2125 TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305,
bbb4ceb8 2126 TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2127 TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305,
2128 SSL_kDHEPSK,
2129 SSL_aPSK,
2130 SSL_CHACHA20POLY1305,
2131 SSL_AEAD,
2132 TLS1_2_VERSION, TLS1_2_VERSION,
2133 DTLS1_2_VERSION, DTLS1_2_VERSION,
2134 SSL_HIGH,
2135 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2136 256,
2137 256,
2138 },
2139 {
2140 1,
2141 TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305,
bbb4ceb8 2142 TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305,
748f2546
RS
2143 TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305,
2144 SSL_kRSAPSK,
2145 SSL_aRSA,
2146 SSL_CHACHA20POLY1305,
2147 SSL_AEAD,
2148 TLS1_2_VERSION, TLS1_2_VERSION,
2149 DTLS1_2_VERSION, DTLS1_2_VERSION,
2150 SSL_HIGH,
2151 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2152 256,
2153 256,
2154 },
a230b26e
EK
2155#endif /* !defined(OPENSSL_NO_CHACHA) &&
2156 * !defined(OPENSSL_NO_POLY1305) */
748f2546
RS
2157
2158#ifndef OPENSSL_NO_CAMELLIA
2159 {
2160 1,
2161 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2162 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2163 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2164 SSL_kRSA,
2165 SSL_aRSA,
2166 SSL_CAMELLIA128,
2167 SSL_SHA256,
2168 TLS1_2_VERSION, TLS1_2_VERSION,
2169 DTLS1_2_VERSION, DTLS1_2_VERSION,
2170 SSL_NOT_DEFAULT | SSL_HIGH,
2171 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2172 128,
2173 128,
2174 },
2175 {
2176 1,
2177 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2178 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2179 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256,
2180 SSL_kEDH,
2181 SSL_aDSS,
2182 SSL_CAMELLIA128,
2183 SSL_SHA256,
2184 TLS1_2_VERSION, TLS1_2_VERSION,
2185 DTLS1_2_VERSION, DTLS1_2_VERSION,
2186 SSL_NOT_DEFAULT | SSL_HIGH,
2187 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2188 128,
2189 128,
2190 },
2191 {
2192 1,
2193 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2194 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2195 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2196 SSL_kEDH,
2197 SSL_aRSA,
2198 SSL_CAMELLIA128,
2199 SSL_SHA256,
2200 TLS1_2_VERSION, TLS1_2_VERSION,
2201 DTLS1_2_VERSION, DTLS1_2_VERSION,
2202 SSL_NOT_DEFAULT | SSL_HIGH,
2203 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2204 128,
2205 128,
2206 },
2207 {
2208 1,
2209 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2210 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2211 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256,
2212 SSL_kEDH,
2213 SSL_aNULL,
2214 SSL_CAMELLIA128,
2215 SSL_SHA256,
2216 TLS1_2_VERSION, TLS1_2_VERSION,
2217 DTLS1_2_VERSION, DTLS1_2_VERSION,
2218 SSL_NOT_DEFAULT | SSL_HIGH,
2219 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2220 128,
2221 128,
2222 },
2223 {
2224 1,
2225 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256,
bbb4ceb8 2226 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2227 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256,
2228 SSL_kRSA,
2229 SSL_aRSA,
2230 SSL_CAMELLIA256,
2231 SSL_SHA256,
2232 TLS1_2_VERSION, TLS1_2_VERSION,
2233 DTLS1_2_VERSION, DTLS1_2_VERSION,
2234 SSL_NOT_DEFAULT | SSL_HIGH,
2235 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2236 256,
2237 256,
2238 },
2239 {
2240 1,
2241 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
bbb4ceb8 2242 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2243 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256,
2244 SSL_kEDH,
2245 SSL_aDSS,
2246 SSL_CAMELLIA256,
2247 SSL_SHA256,
2248 TLS1_2_VERSION, TLS1_2_VERSION,
2249 DTLS1_2_VERSION, DTLS1_2_VERSION,
2250 SSL_NOT_DEFAULT | SSL_HIGH,
2251 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2252 256,
2253 256,
2254 },
2255 {
2256 1,
2257 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
bbb4ceb8 2258 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2259 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256,
2260 SSL_kEDH,
2261 SSL_aRSA,
2262 SSL_CAMELLIA256,
2263 SSL_SHA256,
2264 TLS1_2_VERSION, TLS1_2_VERSION,
2265 DTLS1_2_VERSION, DTLS1_2_VERSION,
2266 SSL_NOT_DEFAULT | SSL_HIGH,
2267 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2268 256,
2269 256,
2270 },
2271 {
2272 1,
2273 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256,
bbb4ceb8 2274 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256,
748f2546
RS
2275 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256,
2276 SSL_kEDH,
2277 SSL_aNULL,
2278 SSL_CAMELLIA256,
2279 SSL_SHA256,
2280 TLS1_2_VERSION, TLS1_2_VERSION,
2281 DTLS1_2_VERSION, DTLS1_2_VERSION,
2282 SSL_NOT_DEFAULT | SSL_HIGH,
2283 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2284 256,
2285 256,
2286 },
2287 {
2288 1,
2289 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,
bbb4ceb8 2290 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2291 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA,
2292 SSL_kRSA,
2293 SSL_aRSA,
2294 SSL_CAMELLIA256,
2295 SSL_SHA1,
2296 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2297 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2298 SSL_NOT_DEFAULT | SSL_HIGH,
2299 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2300 256,
2301 256,
2302 },
2303 {
2304 1,
2305 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
bbb4ceb8 2306 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2307 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
2308 SSL_kDHE,
2309 SSL_aDSS,
2310 SSL_CAMELLIA256,
2311 SSL_SHA1,
2312 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2313 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2314 SSL_NOT_DEFAULT | SSL_HIGH,
2315 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2316 256,
2317 256,
2318 },
2319 {
2320 1,
2321 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
bbb4ceb8 2322 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2323 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
2324 SSL_kDHE,
2325 SSL_aRSA,
2326 SSL_CAMELLIA256,
2327 SSL_SHA1,
2328 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2329 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2330 SSL_NOT_DEFAULT | SSL_HIGH,
2331 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2332 256,
2333 256,
2334 },
2335 {
2336 1,
2337 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA,
bbb4ceb8 2338 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA,
748f2546
RS
2339 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA,
2340 SSL_kDHE,
2341 SSL_aNULL,
2342 SSL_CAMELLIA256,
2343 SSL_SHA1,
2344 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2345 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2346 SSL_NOT_DEFAULT | SSL_HIGH,
2347 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2348 256,
2349 256,
2350 },
2351 {
2352 1,
2353 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,
bbb4ceb8 2354 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2355 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA,
2356 SSL_kRSA,
2357 SSL_aRSA,
2358 SSL_CAMELLIA128,
2359 SSL_SHA1,
2360 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2361 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2362 SSL_NOT_DEFAULT | SSL_HIGH,
2363 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2364 128,
2365 128,
2366 },
2367 {
2368 1,
2369 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
bbb4ceb8 2370 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2371 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
2372 SSL_kDHE,
2373 SSL_aDSS,
2374 SSL_CAMELLIA128,
2375 SSL_SHA1,
2376 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2377 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2378 SSL_NOT_DEFAULT | SSL_HIGH,
2379 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2380 128,
2381 128,
2382 },
2383 {
2384 1,
2385 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
bbb4ceb8 2386 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2387 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
2388 SSL_kDHE,
2389 SSL_aRSA,
2390 SSL_CAMELLIA128,
2391 SSL_SHA1,
2392 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2393 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2394 SSL_NOT_DEFAULT | SSL_HIGH,
2395 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2396 128,
2397 128,
2398 },
2399 {
2400 1,
2401 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA,
bbb4ceb8 2402 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA,
748f2546
RS
2403 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA,
2404 SSL_kDHE,
2405 SSL_aNULL,
2406 SSL_CAMELLIA128,
2407 SSL_SHA1,
2408 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2409 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2410 SSL_NOT_DEFAULT | SSL_HIGH,
2411 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2412 128,
2413 128,
2414 },
748f2546 2415 {
0f113f3e
MC
2416 1,
2417 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2418 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
0f113f3e
MC
2419 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
2420 SSL_kECDHE,
2421 SSL_aECDSA,
2422 SSL_CAMELLIA128,
2423 SSL_SHA256,
3eb2aff4
KR
2424 TLS1_2_VERSION, TLS1_2_VERSION,
2425 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2426 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2427 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2428 128,
a230b26e
EK
2429 128,
2430 },
748f2546 2431 {
0f113f3e
MC
2432 1,
2433 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2434 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
0f113f3e
MC
2435 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
2436 SSL_kECDHE,
2437 SSL_aECDSA,
2438 SSL_CAMELLIA256,
2439 SSL_SHA384,
3eb2aff4
KR
2440 TLS1_2_VERSION, TLS1_2_VERSION,
2441 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2442 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2443 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2444 256,
a230b26e
EK
2445 256,
2446 },
748f2546 2447 {
0f113f3e
MC
2448 1,
2449 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2450 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
0f113f3e
MC
2451 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
2452 SSL_kECDHE,
2453 SSL_aRSA,
2454 SSL_CAMELLIA128,
2455 SSL_SHA256,
3eb2aff4
KR
2456 TLS1_2_VERSION, TLS1_2_VERSION,
2457 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2458 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2459 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2460 128,
a230b26e
EK
2461 128,
2462 },
748f2546 2463 {
0f113f3e
MC
2464 1,
2465 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2466 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
0f113f3e
MC
2467 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
2468 SSL_kECDHE,
2469 SSL_aRSA,
2470 SSL_CAMELLIA256,
2471 SSL_SHA384,
3eb2aff4
KR
2472 TLS1_2_VERSION, TLS1_2_VERSION,
2473 DTLS1_2_VERSION, DTLS1_2_VERSION,
a556f342 2474 SSL_NOT_DEFAULT | SSL_HIGH,
0f113f3e
MC
2475 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2476 256,
a230b26e
EK
2477 256,
2478 },
748f2546 2479 {
69a3a9f5
DSH
2480 1,
2481 TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2482 TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256,
69a3a9f5
DSH
2483 TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2484 SSL_kPSK,
2485 SSL_aPSK,
2486 SSL_CAMELLIA128,
2487 SSL_SHA256,
3eb2aff4 2488 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2489 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2490 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2491 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2492 128,
a230b26e
EK
2493 128,
2494 },
748f2546 2495 {
69a3a9f5
DSH
2496 1,
2497 TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2498 TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384,
69a3a9f5
DSH
2499 TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2500 SSL_kPSK,
2501 SSL_aPSK,
2502 SSL_CAMELLIA256,
2503 SSL_SHA384,
3eb2aff4 2504 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2505 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2506 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2507 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2508 256,
a230b26e
EK
2509 256,
2510 },
748f2546 2511 {
69a3a9f5
DSH
2512 1,
2513 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2514 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
69a3a9f5
DSH
2515 TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2516 SSL_kDHEPSK,
2517 SSL_aPSK,
2518 SSL_CAMELLIA128,
2519 SSL_SHA256,
3eb2aff4 2520 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2521 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2522 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2523 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2524 128,
a230b26e
EK
2525 128,
2526 },
748f2546 2527 {
69a3a9f5
DSH
2528 1,
2529 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2530 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
69a3a9f5
DSH
2531 TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2532 SSL_kDHEPSK,
2533 SSL_aPSK,
2534 SSL_CAMELLIA256,
2535 SSL_SHA384,
3eb2aff4 2536 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2537 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2538 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2539 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2540 256,
a230b26e
EK
2541 256,
2542 },
748f2546 2543 {
69a3a9f5
DSH
2544 1,
2545 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2546 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
69a3a9f5
DSH
2547 TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2548 SSL_kRSAPSK,
2549 SSL_aRSA,
2550 SSL_CAMELLIA128,
2551 SSL_SHA256,
3eb2aff4 2552 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2553 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2554 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2555 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2556 128,
a230b26e
EK
2557 128,
2558 },
748f2546 2559 {
69a3a9f5
DSH
2560 1,
2561 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2562 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
69a3a9f5
DSH
2563 TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2564 SSL_kRSAPSK,
2565 SSL_aRSA,
2566 SSL_CAMELLIA256,
2567 SSL_SHA384,
3eb2aff4 2568 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2569 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2570 SSL_NOT_DEFAULT | SSL_HIGH,
69a3a9f5
DSH
2571 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2572 256,
a230b26e
EK
2573 256,
2574 },
176f85a2
DSH
2575 {
2576 1,
748f2546 2577 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
bbb4ceb8 2578 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
748f2546
RS
2579 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256,
2580 SSL_kECDHEPSK,
176f85a2 2581 SSL_aPSK,
748f2546
RS
2582 SSL_CAMELLIA128,
2583 SSL_SHA256,
2584 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2585 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2586 SSL_NOT_DEFAULT | SSL_HIGH,
748f2546 2587 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2 2588 128,
a230b26e
EK
2589 128,
2590 },
176f85a2
DSH
2591 {
2592 1,
748f2546 2593 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
bbb4ceb8 2594 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
748f2546
RS
2595 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384,
2596 SSL_kECDHEPSK,
176f85a2 2597 SSL_aPSK,
748f2546
RS
2598 SSL_CAMELLIA256,
2599 SSL_SHA384,
2600 TLS1_VERSION, TLS1_2_VERSION,
387cf213 2601 DTLS1_BAD_VER, DTLS1_2_VERSION,
a556f342 2602 SSL_NOT_DEFAULT | SSL_HIGH,
748f2546 2603 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
176f85a2 2604 256,
a230b26e
EK
2605 256,
2606 },
a230b26e 2607#endif /* OPENSSL_NO_CAMELLIA */
176f85a2 2608
580731af 2609#ifndef OPENSSL_NO_GOST
176f85a2
DSH
2610 {
2611 1,
748f2546 2612 "GOST2001-GOST89-GOST89",
bbb4ceb8 2613 "TLS_GOSTR341001_WITH_28147_CNT_IMIT",
748f2546
RS
2614 0x3000081,
2615 SSL_kGOST,
2616 SSL_aGOST01,
2617 SSL_eGOST2814789CNT,
2618 SSL_GOST89MAC,
2619 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2620 0, 0,
748f2546
RS
2621 SSL_HIGH,
2622 SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94 | TLS1_STREAM_MAC,
176f85a2 2623 256,
a230b26e
EK
2624 256,
2625 },
748f2546
RS
2626 {
2627 1,
2628 "GOST2001-NULL-GOST94",
bbb4ceb8 2629 "TLS_GOSTR341001_WITH_NULL_GOSTR3411",
748f2546
RS
2630 0x3000083,
2631 SSL_kGOST,
2632 SSL_aGOST01,
2633 SSL_eNULL,
2634 SSL_GOST94,
2635 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2636 0, 0,
748f2546
RS
2637 SSL_STRONG_NONE,
2638 SSL_HANDSHAKE_MAC_GOST94 | TLS1_PRF_GOST94,
2639 0,
a230b26e
EK
2640 0,
2641 },
748f2546
RS
2642 {
2643 1,
98278b96
NM
2644 "IANA-GOST2012-GOST8912-GOST8912",
2645 NULL,
2646 0x0300c102,
2647 SSL_kGOST,
2648 SSL_aGOST12 | SSL_aGOST01,
2649 SSL_eGOST2814789CNT12,
2650 SSL_GOST89MAC12,
2651 TLS1_VERSION, TLS1_2_VERSION,
2652 0, 0,
2653 SSL_HIGH,
2654 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
2655 256,
2656 256,
2657 },
2658 {
2659 1,
2660 "LEGACY-GOST2012-GOST8912-GOST8912",
bbb4ceb8 2661 NULL,
748f2546
RS
2662 0x0300ff85,
2663 SSL_kGOST,
2664 SSL_aGOST12 | SSL_aGOST01,
2665 SSL_eGOST2814789CNT12,
2666 SSL_GOST89MAC12,
2667 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2668 0, 0,
748f2546
RS
2669 SSL_HIGH,
2670 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
176f85a2 2671 256,
a230b26e
EK
2672 256,
2673 },
748f2546
RS
2674 {
2675 1,
2676 "GOST2012-NULL-GOST12",
bbb4ceb8 2677 NULL,
748f2546
RS
2678 0x0300ff87,
2679 SSL_kGOST,
2680 SSL_aGOST12 | SSL_aGOST01,
2681 SSL_eNULL,
2682 SSL_GOST12_256,
2683 TLS1_VERSION, TLS1_2_VERSION,
48c16012 2684 0, 0,
748f2546
RS
2685 SSL_STRONG_NONE,
2686 SSL_HANDSHAKE_MAC_GOST12_256 | TLS1_PRF_GOST12_256 | TLS1_STREAM_MAC,
2687 0,
a230b26e
EK
2688 0,
2689 },
2690#endif /* OPENSSL_NO_GOST */
176f85a2 2691
748f2546 2692#ifndef OPENSSL_NO_IDEA
176f85a2
DSH
2693 {
2694 1,
748f2546 2695 SSL3_TXT_RSA_IDEA_128_SHA,
bbb4ceb8 2696 SSL3_RFC_RSA_IDEA_128_SHA,
748f2546
RS
2697 SSL3_CK_RSA_IDEA_128_SHA,
2698 SSL_kRSA,
2699 SSL_aRSA,
2700 SSL_IDEA,
2701 SSL_SHA1,
2702 SSL3_VERSION, TLS1_1_VERSION,
387cf213 2703 DTLS1_BAD_VER, DTLS1_VERSION,
748f2546
RS
2704 SSL_NOT_DEFAULT | SSL_MEDIUM,
2705 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2706 128,
2707 128,
2708 },
748f2546 2709#endif
176f85a2 2710
748f2546 2711#ifndef OPENSSL_NO_SEED
176f85a2
DSH
2712 {
2713 1,
748f2546 2714 TLS1_TXT_RSA_WITH_SEED_SHA,
bbb4ceb8 2715 TLS1_RFC_RSA_WITH_SEED_SHA,
748f2546
RS
2716 TLS1_CK_RSA_WITH_SEED_SHA,
2717 SSL_kRSA,
2718 SSL_aRSA,
2719 SSL_SEED,
2720 SSL_SHA1,
2721 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2722 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2723 SSL_NOT_DEFAULT | SSL_MEDIUM,
2724 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2725 128,
2726 128,
176f85a2 2727 },
176f85a2
DSH
2728 {
2729 1,
748f2546 2730 TLS1_TXT_DHE_DSS_WITH_SEED_SHA,
bbb4ceb8 2731 TLS1_RFC_DHE_DSS_WITH_SEED_SHA,
748f2546
RS
2732 TLS1_CK_DHE_DSS_WITH_SEED_SHA,
2733 SSL_kDHE,
2734 SSL_aDSS,
2735 SSL_SEED,
2736 SSL_SHA1,
2737 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2738 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2739 SSL_NOT_DEFAULT | SSL_MEDIUM,
2740 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2741 128,
2742 128,
2743 },
176f85a2
DSH
2744 {
2745 1,
748f2546 2746 TLS1_TXT_DHE_RSA_WITH_SEED_SHA,
bbb4ceb8 2747 TLS1_RFC_DHE_RSA_WITH_SEED_SHA,
748f2546
RS
2748 TLS1_CK_DHE_RSA_WITH_SEED_SHA,
2749 SSL_kDHE,
2750 SSL_aRSA,
2751 SSL_SEED,
2752 SSL_SHA1,
2753 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2754 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2755 SSL_NOT_DEFAULT | SSL_MEDIUM,
2756 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2757 128,
2758 128,
176f85a2 2759 },
176f85a2
DSH
2760 {
2761 1,
748f2546 2762 TLS1_TXT_ADH_WITH_SEED_SHA,
bbb4ceb8 2763 TLS1_RFC_ADH_WITH_SEED_SHA,
748f2546
RS
2764 TLS1_CK_ADH_WITH_SEED_SHA,
2765 SSL_kDHE,
2766 SSL_aNULL,
2767 SSL_SEED,
2768 SSL_SHA1,
2769 SSL3_VERSION, TLS1_2_VERSION,
387cf213 2770 DTLS1_BAD_VER, DTLS1_2_VERSION,
748f2546
RS
2771 SSL_NOT_DEFAULT | SSL_MEDIUM,
2772 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2773 128,
2774 128,
2775 },
a230b26e 2776#endif /* OPENSSL_NO_SEED */
176f85a2 2777
748f2546
RS
2778#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
2779 {
2780 1,
2781 SSL3_TXT_RSA_RC4_128_MD5,
bbb4ceb8 2782 SSL3_RFC_RSA_RC4_128_MD5,
748f2546
RS
2783 SSL3_CK_RSA_RC4_128_MD5,
2784 SSL_kRSA,
2785 SSL_aRSA,
2786 SSL_RC4,
2787 SSL_MD5,
2788 SSL3_VERSION, TLS1_2_VERSION,
2789 0, 0,
2790 SSL_NOT_DEFAULT | SSL_MEDIUM,
2791 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2792 128,
2793 128,
2794 },
176f85a2
DSH
2795 {
2796 1,
748f2546 2797 SSL3_TXT_RSA_RC4_128_SHA,
bbb4ceb8 2798 SSL3_RFC_RSA_RC4_128_SHA,
748f2546
RS
2799 SSL3_CK_RSA_RC4_128_SHA,
2800 SSL_kRSA,
2801 SSL_aRSA,
2802 SSL_RC4,
2803 SSL_SHA1,
2804 SSL3_VERSION, TLS1_2_VERSION,
2805 0, 0,
2806 SSL_NOT_DEFAULT | SSL_MEDIUM,
2807 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2808 128,
2809 128,
176f85a2 2810 },
176f85a2
DSH
2811 {
2812 1,
748f2546 2813 SSL3_TXT_ADH_RC4_128_MD5,
bbb4ceb8 2814 SSL3_RFC_ADH_RC4_128_MD5,
748f2546
RS
2815 SSL3_CK_ADH_RC4_128_MD5,
2816 SSL_kDHE,
2817 SSL_aNULL,
2818 SSL_RC4,
2819 SSL_MD5,
2820 SSL3_VERSION, TLS1_2_VERSION,
2821 0, 0,
2822 SSL_NOT_DEFAULT | SSL_MEDIUM,
2823 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
176f85a2
DSH
2824 128,
2825 128,
2826 },
176f85a2
DSH
2827 {
2828 1,
748f2546 2829 TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2830 TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA,
748f2546
RS
2831 TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA,
2832 SSL_kECDHEPSK,
2833 SSL_aPSK,
2834 SSL_RC4,
2835 SSL_SHA1,
fe55c4a2 2836 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2837 0, 0,
2838 SSL_NOT_DEFAULT | SSL_MEDIUM,
2839 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2840 128,
2841 128,
176f85a2 2842 },
a76ba82c
AP
2843 {
2844 1,
748f2546 2845 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA,
bbb4ceb8 2846 TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA,
748f2546 2847 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA,
a76ba82c 2848 SSL_kECDHE,
748f2546
RS
2849 SSL_aNULL,
2850 SSL_RC4,
2851 SSL_SHA1,
fe55c4a2 2852 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2853 0, 0,
2854 SSL_NOT_DEFAULT | SSL_MEDIUM,
2855 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2856 128,
2857 128,
a76ba82c 2858 },
a76ba82c
AP
2859 {
2860 1,
748f2546 2861 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA,
bbb4ceb8 2862 TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA,
748f2546 2863 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA,
a76ba82c
AP
2864 SSL_kECDHE,
2865 SSL_aECDSA,
748f2546
RS
2866 SSL_RC4,
2867 SSL_SHA1,
fe55c4a2 2868 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2869 0, 0,
2870 SSL_NOT_DEFAULT | SSL_MEDIUM,
2871 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2872 128,
2873 128,
a76ba82c 2874 },
a76ba82c
AP
2875 {
2876 1,
748f2546 2877 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA,
bbb4ceb8 2878 TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA,
748f2546
RS
2879 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA,
2880 SSL_kECDHE,
a76ba82c 2881 SSL_aRSA,
748f2546
RS
2882 SSL_RC4,
2883 SSL_SHA1,
fe55c4a2 2884 TLS1_VERSION, TLS1_2_VERSION,
748f2546
RS
2885 0, 0,
2886 SSL_NOT_DEFAULT | SSL_MEDIUM,
2887 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2888 128,
2889 128,
a76ba82c 2890 },
a76ba82c
AP
2891 {
2892 1,
748f2546 2893 TLS1_TXT_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2894 TLS1_RFC_PSK_WITH_RC4_128_SHA,
748f2546 2895 TLS1_CK_PSK_WITH_RC4_128_SHA,
a76ba82c
AP
2896 SSL_kPSK,
2897 SSL_aPSK,
748f2546
RS
2898 SSL_RC4,
2899 SSL_SHA1,
2900 SSL3_VERSION, TLS1_2_VERSION,
2901 0, 0,
2902 SSL_NOT_DEFAULT | SSL_MEDIUM,
2903 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2904 128,
2905 128,
a76ba82c 2906 },
a76ba82c
AP
2907 {
2908 1,
748f2546 2909 TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2910 TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA,
748f2546
RS
2911 TLS1_CK_RSA_PSK_WITH_RC4_128_SHA,
2912 SSL_kRSAPSK,
2913 SSL_aRSA,
2914 SSL_RC4,
2915 SSL_SHA1,
2916 SSL3_VERSION, TLS1_2_VERSION,
2917 0, 0,
2918 SSL_NOT_DEFAULT | SSL_MEDIUM,
2919 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2920 128,
2921 128,
a76ba82c 2922 },
a76ba82c
AP
2923 {
2924 1,
748f2546 2925 TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA,
bbb4ceb8 2926 TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA,
748f2546 2927 TLS1_CK_DHE_PSK_WITH_RC4_128_SHA,
a76ba82c
AP
2928 SSL_kDHEPSK,
2929 SSL_aPSK,
748f2546
RS
2930 SSL_RC4,
2931 SSL_SHA1,
2932 SSL3_VERSION, TLS1_2_VERSION,
2933 0, 0,
2934 SSL_NOT_DEFAULT | SSL_MEDIUM,
2935 SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF,
2936 128,
2937 128,
a76ba82c 2938 },
a230b26e 2939#endif /* OPENSSL_NO_WEAK_SSL_CIPHERS */
e44380a9 2940
bc326738
JS
2941#ifndef OPENSSL_NO_ARIA
2942 {
2943 1,
2944 TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256,
2945 TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256,
2946 TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256,
2947 SSL_kRSA,
2948 SSL_aRSA,
2949 SSL_ARIA128GCM,
2950 SSL_AEAD,
2951 TLS1_2_VERSION, TLS1_2_VERSION,
2952 DTLS1_2_VERSION, DTLS1_2_VERSION,
2953 SSL_NOT_DEFAULT | SSL_HIGH,
2954 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2955 128,
2956 128,
2957 },
2958 {
2959 1,
2960 TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384,
2961 TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384,
2962 TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384,
2963 SSL_kRSA,
2964 SSL_aRSA,
2965 SSL_ARIA256GCM,
2966 SSL_AEAD,
2967 TLS1_2_VERSION, TLS1_2_VERSION,
2968 DTLS1_2_VERSION, DTLS1_2_VERSION,
2969 SSL_NOT_DEFAULT | SSL_HIGH,
2970 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
2971 256,
2972 256,
2973 },
2974 {
2975 1,
2976 TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256,
2977 TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256,
2978 TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256,
2979 SSL_kDHE,
2980 SSL_aRSA,
2981 SSL_ARIA128GCM,
2982 SSL_AEAD,
2983 TLS1_2_VERSION, TLS1_2_VERSION,
2984 DTLS1_2_VERSION, DTLS1_2_VERSION,
2985 SSL_NOT_DEFAULT | SSL_HIGH,
2986 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
2987 128,
2988 128,
2989 },
2990 {
2991 1,
2992 TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384,
2993 TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384,
2994 TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384,
2995 SSL_kDHE,
2996 SSL_aRSA,
2997 SSL_ARIA256GCM,
2998 SSL_AEAD,
2999 TLS1_2_VERSION, TLS1_2_VERSION,
3000 DTLS1_2_VERSION, DTLS1_2_VERSION,
3001 SSL_NOT_DEFAULT | SSL_HIGH,
3002 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3003 256,
3004 256,
3005 },
3006 {
3007 1,
3008 TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256,
3009 TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256,
3010 TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256,
3011 SSL_kDHE,
3012 SSL_aDSS,
3013 SSL_ARIA128GCM,
3014 SSL_AEAD,
3015 TLS1_2_VERSION, TLS1_2_VERSION,
3016 DTLS1_2_VERSION, DTLS1_2_VERSION,
3017 SSL_NOT_DEFAULT | SSL_HIGH,
3018 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3019 128,
3020 128,
3021 },
3022 {
3023 1,
3024 TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384,
3025 TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384,
3026 TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384,
3027 SSL_kDHE,
3028 SSL_aDSS,
3029 SSL_ARIA256GCM,
3030 SSL_AEAD,
3031 TLS1_2_VERSION, TLS1_2_VERSION,
3032 DTLS1_2_VERSION, DTLS1_2_VERSION,
3033 SSL_NOT_DEFAULT | SSL_HIGH,
3034 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3035 256,
3036 256,
3037 },
3038 {
3039 1,
3040 TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,
3041 TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,
3042 TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256,
3043 SSL_kECDHE,
3044 SSL_aECDSA,
3045 SSL_ARIA128GCM,
3046 SSL_AEAD,
3047 TLS1_2_VERSION, TLS1_2_VERSION,
3048 DTLS1_2_VERSION, DTLS1_2_VERSION,
3049 SSL_NOT_DEFAULT | SSL_HIGH,
3050 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3051 128,
3052 128,
3053 },
3054 {
3055 1,
3056 TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,
3057 TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,
3058 TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384,
3059 SSL_kECDHE,
3060 SSL_aECDSA,
3061 SSL_ARIA256GCM,
3062 SSL_AEAD,
3063 TLS1_2_VERSION, TLS1_2_VERSION,
3064 DTLS1_2_VERSION, DTLS1_2_VERSION,
3065 SSL_NOT_DEFAULT | SSL_HIGH,
3066 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3067 256,
3068 256,
3069 },
bc326738
JS
3070 {
3071 1,
3072 TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,
3073 TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,
3074 TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256,
3075 SSL_kECDHE,
3076 SSL_aRSA,
3077 SSL_ARIA128GCM,
3078 SSL_AEAD,
3079 TLS1_2_VERSION, TLS1_2_VERSION,
3080 DTLS1_2_VERSION, DTLS1_2_VERSION,
3081 SSL_NOT_DEFAULT | SSL_HIGH,
3082 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3083 128,
3084 128,
3085 },
3086 {
3087 1,
3088 TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,
3089 TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,
3090 TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384,
3091 SSL_kECDHE,
3092 SSL_aRSA,
3093 SSL_ARIA256GCM,
3094 SSL_AEAD,
3095 TLS1_2_VERSION, TLS1_2_VERSION,
3096 DTLS1_2_VERSION, DTLS1_2_VERSION,
3097 SSL_NOT_DEFAULT | SSL_HIGH,
3098 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3099 256,
3100 256,
3101 },
3102 {
3103 1,
3104 TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256,
3105 TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256,
3106 TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256,
3107 SSL_kPSK,
3108 SSL_aPSK,
3109 SSL_ARIA128GCM,
3110 SSL_AEAD,
3111 TLS1_2_VERSION, TLS1_2_VERSION,
3112 DTLS1_2_VERSION, DTLS1_2_VERSION,
3113 SSL_NOT_DEFAULT | SSL_HIGH,
3114 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3115 128,
3116 128,
3117 },
3118 {
3119 1,
3120 TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384,
3121 TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384,
3122 TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384,
3123 SSL_kPSK,
3124 SSL_aPSK,
3125 SSL_ARIA256GCM,
3126 SSL_AEAD,
3127 TLS1_2_VERSION, TLS1_2_VERSION,
3128 DTLS1_2_VERSION, DTLS1_2_VERSION,
3129 SSL_NOT_DEFAULT | SSL_HIGH,
3130 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3131 256,
3132 256,
3133 },
3134 {
3135 1,
3136 TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256,
3137 TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256,
3138 TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256,
3139 SSL_kDHEPSK,
3140 SSL_aPSK,
3141 SSL_ARIA128GCM,
3142 SSL_AEAD,
3143 TLS1_2_VERSION, TLS1_2_VERSION,
3144 DTLS1_2_VERSION, DTLS1_2_VERSION,
3145 SSL_NOT_DEFAULT | SSL_HIGH,
3146 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3147 128,
3148 128,
3149 },
3150 {
3151 1,
3152 TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384,
3153 TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384,
3154 TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384,
3155 SSL_kDHEPSK,
3156 SSL_aPSK,
3157 SSL_ARIA256GCM,
3158 SSL_AEAD,
3159 TLS1_2_VERSION, TLS1_2_VERSION,
3160 DTLS1_2_VERSION, DTLS1_2_VERSION,
3161 SSL_NOT_DEFAULT | SSL_HIGH,
3162 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3163 256,
3164 256,
3165 },
bc326738
JS
3166 {
3167 1,
3168 TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256,
3169 TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256,
3170 TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256,
3171 SSL_kRSAPSK,
3172 SSL_aRSA,
3173 SSL_ARIA128GCM,
3174 SSL_AEAD,
3175 TLS1_2_VERSION, TLS1_2_VERSION,
3176 DTLS1_2_VERSION, DTLS1_2_VERSION,
3177 SSL_NOT_DEFAULT | SSL_HIGH,
3178 SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256,
3179 128,
3180 128,
3181 },
3182 {
3183 1,
3184 TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384,
3185 TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384,
3186 TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384,
3187 SSL_kRSAPSK,
3188 SSL_aRSA,
3189 SSL_ARIA256GCM,
3190 SSL_AEAD,
3191 TLS1_2_VERSION, TLS1_2_VERSION,
3192 DTLS1_2_VERSION, DTLS1_2_VERSION,
3193 SSL_NOT_DEFAULT | SSL_HIGH,
3194 SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384,
3195 256,
3196 256,
3197 },
3198#endif /* OPENSSL_NO_ARIA */
0f113f3e
MC
3199};
3200
650c6e41
BK
3201/*
3202 * The list of known Signalling Cipher-Suite Value "ciphers", non-valid
3203 * values stuffed into the ciphers field of the wire protocol for signalling
3204 * purposes.
3205 */
3206static SSL_CIPHER ssl3_scsvs[] = {
3207 {
3208 0,
3209 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
bbb4ceb8 3210 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
650c6e41
BK
3211 SSL3_CK_SCSV,
3212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3213 },
3214 {
3215 0,
3216 "TLS_FALLBACK_SCSV",
bbb4ceb8 3217 "TLS_FALLBACK_SCSV",
650c6e41
BK
3218 SSL3_CK_FALLBACK_SCSV,
3219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3220 },
3221};
3222
748f2546
RS
3223static int cipher_compare(const void *a, const void *b)
3224{
3225 const SSL_CIPHER *ap = (const SSL_CIPHER *)a;
3226 const SSL_CIPHER *bp = (const SSL_CIPHER *)b;
3227
a7ff5796
RL
3228 if (ap->id == bp->id)
3229 return 0;
3230 return ap->id < bp->id ? -1 : 1;
748f2546
RS
3231}
3232
3233void ssl_sort_cipher_list(void)
3234{
f865b081
MC
3235 qsort(tls13_ciphers, TLS13_NUM_CIPHERS, sizeof(tls13_ciphers[0]),
3236 cipher_compare);
cbe29648 3237 qsort(ssl3_ciphers, SSL3_NUM_CIPHERS, sizeof(ssl3_ciphers[0]),
748f2546 3238 cipher_compare);
cbe29648 3239 qsort(ssl3_scsvs, SSL3_NUM_SCSVS, sizeof(ssl3_scsvs[0]), cipher_compare);
748f2546
RS
3240}
3241
fce78bd4
BE
3242static int ssl_undefined_function_1(SSL *ssl, unsigned char *r, size_t s,
3243 const char * t, size_t u,
3244 const unsigned char * v, size_t w, int x)
3245{
3246 (void)r;
3247 (void)s;
3248 (void)t;
3249 (void)u;
3250 (void)v;
3251 (void)w;
3252 (void)x;
3253 return ssl_undefined_function(ssl);
3254}
3255
0f113f3e
MC
3256const SSL3_ENC_METHOD SSLv3_enc_data = {
3257 ssl3_enc,
3258 n_ssl3_mac,
3259 ssl3_setup_key_block,
3260 ssl3_generate_master_secret,
3261 ssl3_change_cipher_state,
3262 ssl3_final_finish_mac,
0f113f3e
MC
3263 SSL3_MD_CLIENT_FINISHED_CONST, 4,
3264 SSL3_MD_SERVER_FINISHED_CONST, 4,
3265 ssl3_alert_code,
fce78bd4 3266 ssl_undefined_function_1,
0f113f3e 3267 0,
a29fa98c 3268 ssl3_set_handshake_header,
2c7b4dbc 3269 tls_close_construct_packet,
0f113f3e
MC
3270 ssl3_handshake_write
3271};
58964a49 3272
f3b656b2 3273long ssl3_default_timeout(void)
0f113f3e
MC
3274{
3275 /*
3276 * 2 hours, the 24 hours mentioned in the SSLv3 spec is way too long for
3277 * http, the cache would over fill
3278 */
3279 return (60 * 60 * 2);
3280}
d02b48c6 3281
6b691a5c 3282int ssl3_num_ciphers(void)
0f113f3e 3283{
26a7d938 3284 return SSL3_NUM_CIPHERS;
0f113f3e 3285}
d02b48c6 3286
babb3798 3287const SSL_CIPHER *ssl3_get_cipher(unsigned int u)
0f113f3e
MC
3288{
3289 if (u < SSL3_NUM_CIPHERS)
26a7d938 3290 return &(ssl3_ciphers[SSL3_NUM_CIPHERS - 1 - u]);
0f113f3e 3291 else
26a7d938 3292 return NULL;
0f113f3e 3293}
d02b48c6 3294
a29fa98c 3295int ssl3_set_handshake_header(SSL *s, WPACKET *pkt, int htype)
2c7b4dbc 3296{
4a01c59f
MC
3297 /* No header in the event of a CCS */
3298 if (htype == SSL3_MT_CHANGE_CIPHER_SPEC)
3299 return 1;
3300
2c7b4dbc 3301 /* Set the content type and 3 bytes for the message len */
08029dfa 3302 if (!WPACKET_put_bytes_u8(pkt, htype)
de451856 3303 || !WPACKET_start_sub_packet_u24(pkt))
2c7b4dbc
MC
3304 return 0;
3305
3306 return 1;
3307}
3308
173e72e6 3309int ssl3_handshake_write(SSL *s)
0f113f3e
MC
3310{
3311 return ssl3_do_write(s, SSL3_RT_HANDSHAKE);
3312}
173e72e6 3313
6b691a5c 3314int ssl3_new(SSL *s)
0f113f3e 3315{
edc032b5 3316#ifndef OPENSSL_NO_SRP
61986d32 3317 if (!SSL_SRP_CTX_init(s))
e8fb288c 3318 return 0;
edc032b5 3319#endif
b77f3ed1
MC
3320
3321 if (!s->method->ssl_clear(s))
3322 return 0;
3323
a89325e4 3324 return 1;
0f113f3e 3325}
d02b48c6 3326
6b691a5c 3327void ssl3_free(SSL *s)
0f113f3e 3328{
555cbb32 3329 if (s == NULL)
0f113f3e 3330 return;
e03ddfae 3331
0f113f3e 3332 ssl3_cleanup_key_block(s);
8d92c1f8 3333
fb79abe3 3334#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
555cbb32
TS
3335 EVP_PKEY_free(s->s3.peer_tmp);
3336 s->s3.peer_tmp = NULL;
3337 EVP_PKEY_free(s->s3.tmp.pkey);
3338 s->s3.tmp.pkey = NULL;
ea262260
BM
3339#endif
3340
c8f6c28a
MC
3341 ssl_evp_cipher_free(s->s3.tmp.new_sym_enc);
3342 ssl_evp_md_free(s->s3.tmp.new_hash);
3343
555cbb32
TS
3344 OPENSSL_free(s->s3.tmp.ctype);
3345 sk_X509_NAME_pop_free(s->s3.tmp.peer_ca_names, X509_NAME_free);
3346 OPENSSL_free(s->s3.tmp.ciphers_raw);
3347 OPENSSL_clear_free(s->s3.tmp.pms, s->s3.tmp.pmslen);
3348 OPENSSL_free(s->s3.tmp.peer_sigalgs);
3349 OPENSSL_free(s->s3.tmp.peer_cert_sigalgs);
85fb6fda 3350 ssl3_free_digest_list(s);
555cbb32
TS
3351 OPENSSL_free(s->s3.alpn_selected);
3352 OPENSSL_free(s->s3.alpn_proposed);
6f017a8f 3353
edc032b5 3354#ifndef OPENSSL_NO_SRP
0f113f3e 3355 SSL_SRP_CTX_free(s);
edc032b5 3356#endif
555cbb32 3357 memset(&s->s3, 0, sizeof(s->s3));
0f113f3e 3358}
d02b48c6 3359
b77f3ed1 3360int ssl3_clear(SSL *s)
0f113f3e 3361{
0f113f3e 3362 ssl3_cleanup_key_block(s);
555cbb32
TS
3363 OPENSSL_free(s->s3.tmp.ctype);
3364 sk_X509_NAME_pop_free(s->s3.tmp.peer_ca_names, X509_NAME_free);
3365 OPENSSL_free(s->s3.tmp.ciphers_raw);
3366 OPENSSL_clear_free(s->s3.tmp.pms, s->s3.tmp.pmslen);
3367 OPENSSL_free(s->s3.tmp.peer_sigalgs);
3368 OPENSSL_free(s->s3.tmp.peer_cert_sigalgs);
d02b48c6 3369
fb79abe3 3370#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
555cbb32
TS
3371 EVP_PKEY_free(s->s3.tmp.pkey);
3372 EVP_PKEY_free(s->s3.peer_tmp);
a230b26e 3373#endif /* !OPENSSL_NO_EC */
0f113f3e 3374
85fb6fda 3375 ssl3_free_digest_list(s);
e481f9b9 3376
555cbb32
TS
3377 OPENSSL_free(s->s3.alpn_selected);
3378 OPENSSL_free(s->s3.alpn_proposed);
e481f9b9 3379
817cd0d5 3380 /* NULL/zero-out everything in the s3 struct */
555cbb32 3381 memset(&s->s3, 0, sizeof(s->s3));
0f113f3e 3382
b77f3ed1
MC
3383 if (!ssl_free_wbio_buffer(s))
3384 return 0;
0f113f3e 3385
0f113f3e 3386 s->version = SSL3_VERSION;
ee2ffc27 3387
e481f9b9 3388#if !defined(OPENSSL_NO_NEXTPROTONEG)
aff8c126
RS
3389 OPENSSL_free(s->ext.npn);
3390 s->ext.npn = NULL;
3391 s->ext.npn_len = 0;
ee2ffc27 3392#endif
b77f3ed1
MC
3393
3394 return 1;
0f113f3e 3395}
d02b48c6 3396
edc032b5 3397#ifndef OPENSSL_NO_SRP
0f113f3e
MC
3398static char *srp_password_from_info_cb(SSL *s, void *arg)
3399{
7644a9ae 3400 return OPENSSL_strdup(s->srp_ctx.info);
0f113f3e 3401}
edc032b5
BL
3402#endif
3403
a230b26e 3404static int ssl3_set_req_cert_type(CERT *c, const unsigned char *p, size_t len);
9f27b1ee 3405
a661b653 3406long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
0f113f3e
MC
3407{
3408 int ret = 0;
58964a49 3409
0f113f3e 3410 switch (cmd) {
0f113f3e
MC
3411 case SSL_CTRL_GET_CLIENT_CERT_REQUEST:
3412 break;
3413 case SSL_CTRL_GET_NUM_RENEGOTIATIONS:
555cbb32 3414 ret = s->s3.num_renegotiations;
0f113f3e
MC
3415 break;
3416 case SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS:
555cbb32
TS
3417 ret = s->s3.num_renegotiations;
3418 s->s3.num_renegotiations = 0;
0f113f3e
MC
3419 break;
3420 case SSL_CTRL_GET_TOTAL_RENEGOTIATIONS:
555cbb32 3421 ret = s->s3.total_renegotiations;
0f113f3e
MC
3422 break;
3423 case SSL_CTRL_GET_FLAGS:
555cbb32 3424 ret = (int)(s->s3.flags);
0f113f3e 3425 break;
bc36ee62 3426#ifndef OPENSSL_NO_DH
0f113f3e
MC
3427 case SSL_CTRL_SET_TMP_DH:
3428 {
3429 DH *dh = (DH *)parg;
e2b420fd 3430 EVP_PKEY *pkdh = NULL;
0f113f3e
MC
3431 if (dh == NULL) {
3432 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
d9720a59 3433 return 0;
0f113f3e 3434 }
e2b420fd
DSH
3435 pkdh = ssl_dh_to_pkey(dh);
3436 if (pkdh == NULL) {
3437 SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE);
3438 return 0;
3439 }
0f113f3e 3440 if (!ssl_security(s, SSL_SECOP_TMP_DH,
e2b420fd 3441 EVP_PKEY_security_bits(pkdh), 0, pkdh)) {
0f113f3e 3442 SSLerr(SSL_F_SSL3_CTRL, SSL_R_DH_KEY_TOO_SMALL);
e2b420fd 3443 EVP_PKEY_free(pkdh);
d9720a59 3444 return 0;
0f113f3e 3445 }
e2b420fd
DSH
3446 EVP_PKEY_free(s->cert->dh_tmp);
3447 s->cert->dh_tmp = pkdh;
d9720a59 3448 return 1;
0f113f3e
MC
3449 }
3450 break;
3451 case SSL_CTRL_SET_TMP_DH_CB:
3452 {
3453 SSLerr(SSL_F_SSL3_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
26a7d938 3454 return ret;
0f113f3e 3455 }
0f113f3e
MC
3456 case SSL_CTRL_SET_DH_AUTO:
3457 s->cert->dh_tmp_auto = larg;
3458 return 1;
d3442bc7 3459#endif
10bf4fc2 3460#ifndef OPENSSL_NO_EC
0f113f3e
MC
3461 case SSL_CTRL_SET_TMP_ECDH:
3462 {
6977e8ee
KR
3463 const EC_GROUP *group = NULL;
3464 int nid;
0f113f3e
MC
3465
3466 if (parg == NULL) {
3467 SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER);
6977e8ee 3468 return 0;
0f113f3e 3469 }
6977e8ee
KR
3470 group = EC_KEY_get0_group((const EC_KEY *)parg);
3471 if (group == NULL) {
3472 SSLerr(SSL_F_SSL3_CTRL, EC_R_MISSING_PARAMETERS);
3473 return 0;
0f113f3e 3474 }
6977e8ee
KR
3475 nid = EC_GROUP_get_curve_name(group);
3476 if (nid == NID_undef)
3477 return 0;
aff8c126
RS
3478 return tls1_set_groups(&s->ext.supportedgroups,
3479 &s->ext.supportedgroups_len,
6977e8ee 3480 &nid, 1);
0f113f3e
MC
3481 }
3482 break;
10bf4fc2 3483#endif /* !OPENSSL_NO_EC */
0f113f3e 3484 case SSL_CTRL_SET_TLSEXT_HOSTNAME:
c5d1fb78
BK
3485 /*
3486 * TODO(OpenSSL1.2)
3487 * This API is only used for a client to set what SNI it will request
3488 * from the server, but we currently allow it to be used on servers
3489 * as well, which is a programming error. Currently we just clear
3490 * the field in SSL_do_handshake() for server SSLs, but when we can
3491 * make ABI-breaking changes, we may want to make use of this API
3492 * an error on server SSLs.
3493 */
0f113f3e 3494 if (larg == TLSEXT_NAMETYPE_host_name) {
0982ecaa
VD
3495 size_t len;
3496
aff8c126
RS
3497 OPENSSL_free(s->ext.hostname);
3498 s->ext.hostname = NULL;
0f113f3e
MC
3499
3500 ret = 1;
3501 if (parg == NULL)
3502 break;
0982ecaa
VD
3503 len = strlen((char *)parg);
3504 if (len == 0 || len > TLSEXT_MAXLEN_host_name) {
0f113f3e
MC
3505 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME);
3506 return 0;
3507 }
aff8c126 3508 if ((s->ext.hostname = OPENSSL_strdup((char *)parg)) == NULL) {
0f113f3e
MC
3509 SSLerr(SSL_F_SSL3_CTRL, ERR_R_INTERNAL_ERROR);
3510 return 0;
3511 }
3512 } else {
3513 SSLerr(SSL_F_SSL3_CTRL, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE);
3514 return 0;
3515 }
3516 break;
3517 case SSL_CTRL_SET_TLSEXT_DEBUG_ARG:
aff8c126 3518 s->ext.debug_arg = parg;
0f113f3e
MC
3519 ret = 1;
3520 break;
3521
4300aaf3 3522 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3523 ret = s->ext.status_type;
4300aaf3
AG
3524 break;
3525
0f113f3e 3526 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3527 s->ext.status_type = larg;
0f113f3e
MC
3528 ret = 1;
3529 break;
3530
3531 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS:
aff8c126 3532 *(STACK_OF(X509_EXTENSION) **)parg = s->ext.ocsp.exts;
0f113f3e
MC
3533 ret = 1;
3534 break;
3535
3536 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS:
aff8c126 3537 s->ext.ocsp.exts = parg;
0f113f3e
MC
3538 ret = 1;
3539 break;
3540
3541 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS:
aff8c126 3542 *(STACK_OF(OCSP_RESPID) **)parg = s->ext.ocsp.ids;
0f113f3e
MC
3543 ret = 1;
3544 break;
3545
3546 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS:
aff8c126 3547 s->ext.ocsp.ids = parg;
0f113f3e
MC
3548 ret = 1;
3549 break;
3550
3551 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP:
aff8c126
RS
3552 *(unsigned char **)parg = s->ext.ocsp.resp;
3553 if (s->ext.ocsp.resp_len == 0
3554 || s->ext.ocsp.resp_len > LONG_MAX)
8b0e934a 3555 return -1;
aff8c126 3556 return (long)s->ext.ocsp.resp_len;
0f113f3e
MC
3557
3558 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP:
aff8c126
RS
3559 OPENSSL_free(s->ext.ocsp.resp);
3560 s->ext.ocsp.resp = parg;
3561 s->ext.ocsp.resp_len = larg;
0f113f3e
MC
3562 ret = 1;
3563 break;
3564
0f113f3e
MC
3565 case SSL_CTRL_CHAIN:
3566 if (larg)
3567 return ssl_cert_set1_chain(s, NULL, (STACK_OF(X509) *)parg);
3568 else
3569 return ssl_cert_set0_chain(s, NULL, (STACK_OF(X509) *)parg);
3570
3571 case SSL_CTRL_CHAIN_CERT:
3572 if (larg)
3573 return ssl_cert_add1_chain_cert(s, NULL, (X509 *)parg);
3574 else
3575 return ssl_cert_add0_chain_cert(s, NULL, (X509 *)parg);
3576
3577 case SSL_CTRL_GET_CHAIN_CERTS:
3578 *(STACK_OF(X509) **)parg = s->cert->key->chain;
7bc82358 3579 ret = 1;
0f113f3e
MC
3580 break;
3581
3582 case SSL_CTRL_SELECT_CURRENT_CERT:
3583 return ssl_cert_select_current(s->cert, (X509 *)parg);
3584
3585 case SSL_CTRL_SET_CURRENT_CERT:
3586 if (larg == SSL_CERT_SET_SERVER) {
0f113f3e
MC
3587 const SSL_CIPHER *cipher;
3588 if (!s->server)
3589 return 0;
555cbb32 3590 cipher = s->s3.tmp.new_cipher;
f365a3e2 3591 if (cipher == NULL)
0f113f3e
MC
3592 return 0;
3593 /*
3594 * No certificate for unauthenticated ciphersuites or using SRP
3595 * authentication
3596 */
3597 if (cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP))
3598 return 2;
555cbb32 3599 if (s->s3.tmp.cert == NULL)
0f113f3e 3600 return 0;
555cbb32 3601 s->cert->key = s->s3.tmp.cert;
0f113f3e
MC
3602 return 1;
3603 }
3604 return ssl_cert_set_current(s->cert, larg);
0f78819c 3605
65dc5c3c 3606#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
de4d764e 3607 case SSL_CTRL_GET_GROUPS:
0f113f3e 3608 {
9e84a42d 3609 uint16_t *clist;
0f113f3e 3610 size_t clistlen;
aff8c126 3611
0f113f3e
MC
3612 if (!s->session)
3613 return 0;
45436e61
MC
3614 clist = s->ext.peer_supportedgroups;
3615 clistlen = s->ext.peer_supportedgroups_len;
0f113f3e
MC
3616 if (parg) {
3617 size_t i;
3618 int *cptr = parg;
43b95d73 3619
0f113f3e 3620 for (i = 0; i < clistlen; i++) {
43b95d73
DSH
3621 const TLS_GROUP_INFO *cinf = tls1_group_id_lookup(clist[i]);
3622
3623 if (cinf != NULL)
3624 cptr[i] = cinf->nid;
0f113f3e 3625 else
9e84a42d 3626 cptr[i] = TLSEXT_nid_unknown | clist[i];
0f113f3e
MC
3627 }
3628 }
3629 return (int)clistlen;
3630 }
3631
de4d764e 3632 case SSL_CTRL_SET_GROUPS:
aff8c126
RS
3633 return tls1_set_groups(&s->ext.supportedgroups,
3634 &s->ext.supportedgroups_len, parg, larg);
0f113f3e 3635
de4d764e 3636 case SSL_CTRL_SET_GROUPS_LIST:
aff8c126
RS
3637 return tls1_set_groups_list(&s->ext.supportedgroups,
3638 &s->ext.supportedgroups_len, parg);
0f113f3e 3639
de4d764e 3640 case SSL_CTRL_GET_SHARED_GROUP:
43b95d73
DSH
3641 {
3642 uint16_t id = tls1_shared_group(s, larg);
0f113f3e 3643
84d4b9e3 3644 if (larg != -1)
3645 return tls1_group_id2nid(id);
43b95d73
DSH
3646 return id;
3647 }
84d4b9e3 3648 case SSL_CTRL_GET_NEGOTIATED_GROUP:
3649 ret = tls1_group_id2nid(s->s3.group_id);
3650 break;
65dc5c3c 3651#endif /* !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH) */
dbc6268f 3652
0f113f3e
MC
3653 case SSL_CTRL_SET_SIGALGS:
3654 return tls1_set_sigalgs(s->cert, parg, larg, 0);
3655
3656 case SSL_CTRL_SET_SIGALGS_LIST:
3657 return tls1_set_sigalgs_list(s->cert, parg, 0);
3658
3659 case SSL_CTRL_SET_CLIENT_SIGALGS:
3660 return tls1_set_sigalgs(s->cert, parg, larg, 1);
3661
3662 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST:
3663 return tls1_set_sigalgs_list(s->cert, parg, 1);
3664
3665 case SSL_CTRL_GET_CLIENT_CERT_TYPES:
3666 {
3667 const unsigned char **pctype = parg;
555cbb32 3668 if (s->server || !s->s3.tmp.cert_req)
0f113f3e 3669 return 0;
0f113f3e 3670 if (pctype)
555cbb32
TS
3671 *pctype = s->s3.tmp.ctype;
3672 return s->s3.tmp.ctype_len;
0f113f3e
MC
3673 }
3674
3675 case SSL_CTRL_SET_CLIENT_CERT_TYPES:
3676 if (!s->server)
3677 return 0;
3678 return ssl3_set_req_cert_type(s->cert, parg, larg);
3679
3680 case SSL_CTRL_BUILD_CERT_CHAIN:
3681 return ssl_build_cert_chain(s, NULL, larg);
3682
3683 case SSL_CTRL_SET_VERIFY_CERT_STORE:
3684 return ssl_cert_set_cert_store(s->cert, parg, 0, larg);
3685
3686 case SSL_CTRL_SET_CHAIN_CERT_STORE:
3687 return ssl_cert_set_cert_store(s->cert, parg, 1, larg);
3688
3689 case SSL_CTRL_GET_PEER_SIGNATURE_NID:
555cbb32 3690 if (s->s3.tmp.peer_sigalg == NULL)
0f113f3e 3691 return 0;
555cbb32 3692 *(int *)parg = s->s3.tmp.peer_sigalg->hash;
f742cda8 3693 return 1;
0f113f3e 3694
a51c9f63 3695 case SSL_CTRL_GET_SIGNATURE_NID:
555cbb32 3696 if (s->s3.tmp.sigalg == NULL)
a51c9f63 3697 return 0;
555cbb32 3698 *(int *)parg = s->s3.tmp.sigalg->hash;
a51c9f63
VD
3699 return 1;
3700
3701 case SSL_CTRL_GET_PEER_TMP_KEY:
fb79abe3 3702#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC)
555cbb32 3703 if (s->session == NULL || s->s3.peer_tmp == NULL) {
0f113f3e 3704 return 0;
fb79abe3 3705 } else {
555cbb32
TS
3706 EVP_PKEY_up_ref(s->s3.peer_tmp);
3707 *(EVP_PKEY **)parg = s->s3.peer_tmp;
fb79abe3 3708 return 1;
0f113f3e 3709 }
fb79abe3
DSH
3710#else
3711 return 0;
3712#endif
a51c9f63
VD
3713
3714 case SSL_CTRL_GET_TMP_KEY:
3715#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC)
555cbb32 3716 if (s->session == NULL || s->s3.tmp.pkey == NULL) {
a51c9f63
VD
3717 return 0;
3718 } else {
555cbb32
TS
3719 EVP_PKEY_up_ref(s->s3.tmp.pkey);
3720 *(EVP_PKEY **)parg = s->s3.tmp.pkey;
a51c9f63
VD
3721 return 1;
3722 }
3723#else
3724 return 0;
3725#endif
3726
14536c8c 3727#ifndef OPENSSL_NO_EC
0f113f3e
MC
3728 case SSL_CTRL_GET_EC_POINT_FORMATS:
3729 {
0f113f3e 3730 const unsigned char **pformat = parg;
aff8c126 3731
cd0fb43c 3732 if (s->ext.peer_ecpointformats == NULL)
0f113f3e 3733 return 0;
cd0fb43c
MC
3734 *pformat = s->ext.peer_ecpointformats;
3735 return (int)s->ext.peer_ecpointformats_len;
0f113f3e 3736 }
14536c8c 3737#endif
cf6da053 3738
0f113f3e
MC
3739 default:
3740 break;
3741 }
26a7d938 3742 return ret;
0f113f3e
MC
3743}
3744
3745long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp) (void))
3746{
3747 int ret = 0;
d3442bc7 3748
0f113f3e 3749 switch (cmd) {
bc36ee62 3750#ifndef OPENSSL_NO_DH
0f113f3e
MC
3751 case SSL_CTRL_SET_TMP_DH_CB:
3752 {
3753 s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
3754 }
3755 break;
6434abbf 3756#endif
0f113f3e 3757 case SSL_CTRL_SET_TLSEXT_DEBUG_CB:
aff8c126 3758 s->ext.debug_cb = (void (*)(SSL *, int, int,
1ed327f7 3759 const unsigned char *, int, void *))fp;
0f113f3e 3760 break;
e481f9b9 3761
0f113f3e
MC
3762 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB:
3763 {
3764 s->not_resumable_session_cb = (int (*)(SSL *, int))fp;
3765 }
3766 break;
3767 default:
3768 break;
3769 }
26a7d938 3770 return ret;
0f113f3e 3771}
d02b48c6 3772
a661b653 3773long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
0f113f3e 3774{
0f113f3e 3775 switch (cmd) {
bc36ee62 3776#ifndef OPENSSL_NO_DH
0f113f3e
MC
3777 case SSL_CTRL_SET_TMP_DH:
3778 {
e2b420fd
DSH
3779 DH *dh = (DH *)parg;
3780 EVP_PKEY *pkdh = NULL;
3781 if (dh == NULL) {
3782 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_PASSED_NULL_PARAMETER);
0f113f3e
MC
3783 return 0;
3784 }
e2b420fd
DSH
3785 pkdh = ssl_dh_to_pkey(dh);
3786 if (pkdh == NULL) {
3787 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
0f113f3e
MC
3788 return 0;
3789 }
e2b420fd
DSH
3790 if (!ssl_ctx_security(ctx, SSL_SECOP_TMP_DH,
3791 EVP_PKEY_security_bits(pkdh), 0, pkdh)) {
3792 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_DH_KEY_TOO_SMALL);
3793 EVP_PKEY_free(pkdh);
d9720a59 3794 return 0;
0f113f3e 3795 }
e2b420fd
DSH
3796 EVP_PKEY_free(ctx->cert->dh_tmp);
3797 ctx->cert->dh_tmp = pkdh;
0f113f3e
MC
3798 return 1;
3799 }
0f113f3e
MC
3800 case SSL_CTRL_SET_TMP_DH_CB:
3801 {
3802 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
26a7d938 3803 return 0;
0f113f3e 3804 }
0f113f3e
MC
3805 case SSL_CTRL_SET_DH_AUTO:
3806 ctx->cert->dh_tmp_auto = larg;
3807 return 1;
d02b48c6 3808#endif
10bf4fc2 3809#ifndef OPENSSL_NO_EC
0f113f3e
MC
3810 case SSL_CTRL_SET_TMP_ECDH:
3811 {
6977e8ee
KR
3812 const EC_GROUP *group = NULL;
3813 int nid;
0f113f3e
MC
3814
3815 if (parg == NULL) {
6977e8ee 3816 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_PASSED_NULL_PARAMETER);
0f113f3e
MC
3817 return 0;
3818 }
6977e8ee
KR
3819 group = EC_KEY_get0_group((const EC_KEY *)parg);
3820 if (group == NULL) {
3821 SSLerr(SSL_F_SSL3_CTX_CTRL, EC_R_MISSING_PARAMETERS);
0f113f3e
MC
3822 return 0;
3823 }
6977e8ee
KR
3824 nid = EC_GROUP_get_curve_name(group);
3825 if (nid == NID_undef)
3826 return 0;
aff8c126
RS
3827 return tls1_set_groups(&ctx->ext.supportedgroups,
3828 &ctx->ext.supportedgroups_len,
6977e8ee 3829 &nid, 1);
0f113f3e 3830 }
10bf4fc2 3831#endif /* !OPENSSL_NO_EC */
0f113f3e 3832 case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG:
aff8c126 3833 ctx->ext.servername_arg = parg;
0f113f3e
MC
3834 break;
3835 case SSL_CTRL_SET_TLSEXT_TICKET_KEYS:
3836 case SSL_CTRL_GET_TLSEXT_TICKET_KEYS:
3837 {
3838 unsigned char *keys = parg;
aff8c126 3839 long tick_keylen = (sizeof(ctx->ext.tick_key_name) +
4bfb96f2
TS
3840 sizeof(ctx->ext.secure->tick_hmac_key) +
3841 sizeof(ctx->ext.secure->tick_aes_key));
d139723b 3842 if (keys == NULL)
aff8c126
RS
3843 return tick_keylen;
3844 if (larg != tick_keylen) {
0f113f3e
MC
3845 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_TICKET_KEYS_LENGTH);
3846 return 0;
3847 }
3848 if (cmd == SSL_CTRL_SET_TLSEXT_TICKET_KEYS) {
aff8c126
RS
3849 memcpy(ctx->ext.tick_key_name, keys,
3850 sizeof(ctx->ext.tick_key_name));
4bfb96f2 3851 memcpy(ctx->ext.secure->tick_hmac_key,
aff8c126 3852 keys + sizeof(ctx->ext.tick_key_name),
4bfb96f2
TS
3853 sizeof(ctx->ext.secure->tick_hmac_key));
3854 memcpy(ctx->ext.secure->tick_aes_key,
aff8c126 3855 keys + sizeof(ctx->ext.tick_key_name) +
4bfb96f2
TS
3856 sizeof(ctx->ext.secure->tick_hmac_key),
3857 sizeof(ctx->ext.secure->tick_aes_key));
0f113f3e 3858 } else {
aff8c126
RS
3859 memcpy(keys, ctx->ext.tick_key_name,
3860 sizeof(ctx->ext.tick_key_name));
3861 memcpy(keys + sizeof(ctx->ext.tick_key_name),
4bfb96f2
TS
3862 ctx->ext.secure->tick_hmac_key,
3863 sizeof(ctx->ext.secure->tick_hmac_key));
aff8c126 3864 memcpy(keys + sizeof(ctx->ext.tick_key_name) +
4bfb96f2
TS
3865 sizeof(ctx->ext.secure->tick_hmac_key),
3866 ctx->ext.secure->tick_aes_key,
3867 sizeof(ctx->ext.secure->tick_aes_key));
0f113f3e
MC
3868 }
3869 return 1;
3870 }
3871
30b96765 3872 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3873 return ctx->ext.status_type;
30b96765 3874
ba261f71 3875 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
aff8c126 3876 ctx->ext.status_type = larg;
ba261f71 3877 break;
3878
0f113f3e 3879 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
aff8c126 3880 ctx->ext.status_arg = parg;
0f113f3e 3881 return 1;
0f113f3e 3882
fddfc0af 3883 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG:
aff8c126 3884 *(void**)parg = ctx->ext.status_arg;
fddfc0af
RG
3885 break;
3886
3887 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB:
aff8c126 3888 *(int (**)(SSL*, void*))parg = ctx->ext.status_cb;
fddfc0af
RG
3889 break;
3890
e481f9b9 3891#ifndef OPENSSL_NO_SRP
0f113f3e
MC
3892 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME:
3893 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
b548a1f1 3894 OPENSSL_free(ctx->srp_ctx.login);
0f113f3e
MC
3895 ctx->srp_ctx.login = NULL;
3896 if (parg == NULL)
3897 break;
a230b26e 3898 if (strlen((const char *)parg) > 255 || strlen((const char *)parg) < 1) {
0f113f3e
MC
3899 SSLerr(SSL_F_SSL3_CTX_CTRL, SSL_R_INVALID_SRP_USERNAME);
3900 return 0;
3901 }
7644a9ae 3902 if ((ctx->srp_ctx.login = OPENSSL_strdup((char *)parg)) == NULL) {
0f113f3e
MC
3903 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_INTERNAL_ERROR);
3904 return 0;
3905 }
3906 break;
3907 case SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD:
3908 ctx->srp_ctx.SRP_give_srp_client_pwd_callback =
3909 srp_password_from_info_cb;
e655f549
DSC
3910 if (ctx->srp_ctx.info != NULL)
3911 OPENSSL_free(ctx->srp_ctx.info);
3d484574 3912 if ((ctx->srp_ctx.info = OPENSSL_strdup((char *)parg)) == NULL) {
e655f549
DSC
3913 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_INTERNAL_ERROR);
3914 return 0;
3915 }
0f113f3e
MC
3916 break;
3917 case SSL_CTRL_SET_SRP_ARG:
3918 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
3919 ctx->srp_ctx.SRP_cb_arg = parg;
3920 break;
3921
3922 case SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH:
3923 ctx->srp_ctx.strength = larg;
3924 break;
e481f9b9 3925#endif
0f113f3e 3926
65dc5c3c 3927#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH)
de4d764e 3928 case SSL_CTRL_SET_GROUPS:
aff8c126
RS
3929 return tls1_set_groups(&ctx->ext.supportedgroups,
3930 &ctx->ext.supportedgroups_len,
0f113f3e
MC
3931 parg, larg);
3932
de4d764e 3933 case SSL_CTRL_SET_GROUPS_LIST:
aff8c126
RS
3934 return tls1_set_groups_list(&ctx->ext.supportedgroups,
3935 &ctx->ext.supportedgroups_len,
0f113f3e 3936 parg);
65dc5c3c 3937#endif /* !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH) */
dbc6268f 3938
0f113f3e
MC
3939 case SSL_CTRL_SET_SIGALGS:
3940 return tls1_set_sigalgs(ctx->cert, parg, larg, 0);
3941
3942 case SSL_CTRL_SET_SIGALGS_LIST:
3943 return tls1_set_sigalgs_list(ctx->cert, parg, 0);
3944
3945 case SSL_CTRL_SET_CLIENT_SIGALGS:
3946 return tls1_set_sigalgs(ctx->cert, parg, larg, 1);
3947
3948 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST:
3949 return tls1_set_sigalgs_list(ctx->cert, parg, 1);
3950
3951 case SSL_CTRL_SET_CLIENT_CERT_TYPES:
3952 return ssl3_set_req_cert_type(ctx->cert, parg, larg);
3953
3954 case SSL_CTRL_BUILD_CERT_CHAIN:
3955 return ssl_build_cert_chain(NULL, ctx, larg);
3956
3957 case SSL_CTRL_SET_VERIFY_CERT_STORE:
3958 return ssl_cert_set_cert_store(ctx->cert, parg, 0, larg);
3959
3960 case SSL_CTRL_SET_CHAIN_CERT_STORE:
3961 return ssl_cert_set_cert_store(ctx->cert, parg, 1, larg);
3962
0f113f3e
MC
3963 /* A Thawte special :-) */
3964 case SSL_CTRL_EXTRA_CHAIN_CERT:
3965 if (ctx->extra_certs == NULL) {
3c82e437
F
3966 if ((ctx->extra_certs = sk_X509_new_null()) == NULL) {
3967 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3968 return 0;
3969 }
3970 }
9f0f53b7
MC
3971 if (!X509v3_cache_extensions((X509 *)parg, ctx->libctx, ctx->propq)) {
3972 SSLerr(0, ERR_LIB_X509);
3973 return 0;
3974 }
3c82e437
F
3975 if (!sk_X509_push(ctx->extra_certs, (X509 *)parg)) {
3976 SSLerr(SSL_F_SSL3_CTX_CTRL, ERR_R_MALLOC_FAILURE);
3977 return 0;
0f113f3e 3978 }
0f113f3e
MC
3979 break;
3980
3981 case SSL_CTRL_GET_EXTRA_CHAIN_CERTS:
3982 if (ctx->extra_certs == NULL && larg == 0)
3983 *(STACK_OF(X509) **)parg = ctx->cert->key->chain;
3984 else
3985 *(STACK_OF(X509) **)parg = ctx->extra_certs;
3986 break;
3987
3988 case SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS:
222561fe
RS
3989 sk_X509_pop_free(ctx->extra_certs, X509_free);
3990 ctx->extra_certs = NULL;
0f113f3e
MC
3991 break;
3992
3993 case SSL_CTRL_CHAIN:
3994 if (larg)
3995 return ssl_cert_set1_chain(NULL, ctx, (STACK_OF(X509) *)parg);
3996 else
3997 return ssl_cert_set0_chain(NULL, ctx, (STACK_OF(X509) *)parg);
3998
3999 case SSL_CTRL_CHAIN_CERT:
4000 if (larg)
4001 return ssl_cert_add1_chain_cert(NULL, ctx, (X509 *)parg);
4002 else
4003 return ssl_cert_add0_chain_cert(NULL, ctx, (X509 *)parg);
4004
4005 case SSL_CTRL_GET_CHAIN_CERTS:
4006 *(STACK_OF(X509) **)parg = ctx->cert->key->chain;
4007 break;
4008
4009 case SSL_CTRL_SELECT_CURRENT_CERT:
4010 return ssl_cert_select_current(ctx->cert, (X509 *)parg);
4011
4012 case SSL_CTRL_SET_CURRENT_CERT:
4013 return ssl_cert_set_current(ctx->cert, larg);
4014
4015 default:
26a7d938 4016 return 0;
0f113f3e 4017 }
208fb891 4018 return 1;
0f113f3e
MC
4019}
4020
4021long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void))
4022{
0f113f3e 4023 switch (cmd) {
bc36ee62 4024#ifndef OPENSSL_NO_DH
0f113f3e
MC
4025 case SSL_CTRL_SET_TMP_DH_CB:
4026 {
8ca8fc48 4027 ctx->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp;
0f113f3e
MC
4028 }
4029 break;
ed3883d2 4030#endif
0f113f3e 4031 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB:
aff8c126 4032 ctx->ext.servername_cb = (int (*)(SSL *, int *, void *))fp;
0f113f3e
MC
4033 break;
4034
0f113f3e 4035 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB:
aff8c126 4036 ctx->ext.status_cb = (int (*)(SSL *, void *))fp;
0f113f3e
MC
4037 break;
4038
a76ce286 4039# ifndef OPENSSL_NO_DEPRECATED_3_0
0f113f3e 4040 case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB:
aff8c126 4041 ctx->ext.ticket_key_cb = (int (*)(SSL *, unsigned char *,
0f113f3e
MC
4042 unsigned char *,
4043 EVP_CIPHER_CTX *,
4044 HMAC_CTX *, int))fp;
4045 break;
a76ce286 4046#endif
0f113f3e 4047
e481f9b9 4048#ifndef OPENSSL_NO_SRP
0f113f3e
MC
4049 case SSL_CTRL_SET_SRP_VERIFY_PARAM_CB:
4050 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
4051 ctx->srp_ctx.SRP_verify_param_callback = (int (*)(SSL *, void *))fp;
4052 break;
4053 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB:
4054 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
4055 ctx->srp_ctx.TLS_ext_srp_username_callback =
4056 (int (*)(SSL *, int *, void *))fp;
4057 break;
4058 case SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB:
4059 ctx->srp_ctx.srp_Mask |= SSL_kSRP;
4060 ctx->srp_ctx.SRP_give_srp_client_pwd_callback =
4061 (char *(*)(SSL *, void *))fp;
4062 break;
761772d7 4063#endif
0f113f3e
MC
4064 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB:
4065 {
4066 ctx->not_resumable_session_cb = (int (*)(SSL *, int))fp;
4067 }
4068 break;
4069 default:
26a7d938 4070 return 0;
0f113f3e 4071 }
208fb891 4072 return 1;
0f113f3e 4073}
761772d7 4074
a76ce286
P
4075int SSL_CTX_set_tlsext_ticket_key_evp_cb
4076 (SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *,
4077 EVP_CIPHER_CTX *, EVP_MAC_CTX *, int))
4078{
4079 ctx->ext.ticket_key_evp_cb = fp;
4080 return 1;
4081}
4082
ec15acb6
MC
4083const SSL_CIPHER *ssl3_get_cipher_by_id(uint32_t id)
4084{
4085 SSL_CIPHER c;
650c6e41 4086 const SSL_CIPHER *cp;
ec15acb6
MC
4087
4088 c.id = id;
f865b081
MC
4089 cp = OBJ_bsearch_ssl_cipher_id(&c, tls13_ciphers, TLS13_NUM_CIPHERS);
4090 if (cp != NULL)
4091 return cp;
650c6e41
BK
4092 cp = OBJ_bsearch_ssl_cipher_id(&c, ssl3_ciphers, SSL3_NUM_CIPHERS);
4093 if (cp != NULL)
4094 return cp;
4095 return OBJ_bsearch_ssl_cipher_id(&c, ssl3_scsvs, SSL3_NUM_SCSVS);
ec15acb6
MC
4096}
4097
bbb4ceb8
PY
4098const SSL_CIPHER *ssl3_get_cipher_by_std_name(const char *stdname)
4099{
f865b081
MC
4100 SSL_CIPHER *c = NULL, *tbl;
4101 SSL_CIPHER *alltabs[] = {tls13_ciphers, ssl3_ciphers};
4102 size_t i, j, tblsize[] = {TLS13_NUM_CIPHERS, SSL3_NUM_CIPHERS};
bbb4ceb8 4103
3519bae5 4104 /* this is not efficient, necessary to optimize this? */
f865b081
MC
4105 for (j = 0; j < OSSL_NELEM(alltabs); j++) {
4106 for (i = 0, tbl = alltabs[j]; i < tblsize[j]; i++, tbl++) {
4107 if (tbl->stdname == NULL)
4108 continue;
4109 if (strcmp(stdname, tbl->stdname) == 0) {
4110 c = tbl;
4111 break;
4112 }
bbb4ceb8
PY
4113 }
4114 }
4115 if (c == NULL) {
4116 tbl = ssl3_scsvs;
4117 for (i = 0; i < SSL3_NUM_SCSVS; i++, tbl++) {
4118 if (strcmp(stdname, tbl->stdname) == 0) {
4119 c = tbl;
4120 break;
4121 }
4122 }
4123 }
4124 return c;
4125}
4126
0f113f3e
MC
4127/*
4128 * This function needs to check if the ciphers required are actually
4129 * available
4130 */
babb3798 4131const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p)
0f113f3e 4132{
1f5b44e9 4133 return ssl3_get_cipher_by_id(SSL3_CK_CIPHERSUITE_FLAG
ec15acb6
MC
4134 | ((uint32_t)p[0] << 8L)
4135 | (uint32_t)p[1]);
0f113f3e 4136}
d02b48c6 4137
ae2f7b37 4138int ssl3_put_cipher_by_char(const SSL_CIPHER *c, WPACKET *pkt, size_t *len)
2c7b4dbc 4139{
34f7245b 4140 if ((c->id & 0xff000000) != SSL3_CK_CIPHERSUITE_FLAG) {
2c7b4dbc
MC
4141 *len = 0;
4142 return 1;
4143 }
4144
08029dfa 4145 if (!WPACKET_put_bytes_u16(pkt, c->id & 0xffff))
2c7b4dbc
MC
4146 return 0;
4147
4148 *len = 2;
4149 return 1;
4150}
4151
3eb2aff4
KR
4152/*
4153 * ssl3_choose_cipher - choose a cipher from those offered by the client
4154 * @s: SSL connection
4155 * @clnt: ciphers offered by the client
4156 * @srvr: ciphers enabled on the server?
4157 *
4158 * Returns the selected cipher or NULL when no common ciphers.
4159 */
4a640fb6 4160const SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
a230b26e 4161 STACK_OF(SSL_CIPHER) *srvr)
0f113f3e 4162{
4a640fb6 4163 const SSL_CIPHER *c, *ret = NULL;
0f113f3e 4164 STACK_OF(SSL_CIPHER) *prio, *allow;
48a03162 4165 int i, ii, ok, prefer_sha256 = 0;
0de6d66d 4166 unsigned long alg_k = 0, alg_a = 0, mask_k = 0, mask_a = 0;
e1c7871d
TS
4167#ifndef OPENSSL_NO_CHACHA
4168 STACK_OF(SSL_CIPHER) *prio_chacha = NULL;
4169#endif
d02b48c6 4170
0f113f3e 4171 /* Let's see which ciphers we can support */
d02b48c6 4172
0f113f3e
MC
4173 /*
4174 * Do not set the compare functions, because this may lead to a
4175 * reordering by "id". We want to keep the original ordering. We may pay
4176 * a price in performance during sk_SSL_CIPHER_find(), but would have to
4177 * pay with the price of sk_SSL_CIPHER_dup().
4178 */
d02b48c6 4179
77359d22
RL
4180 OSSL_TRACE_BEGIN(TLS_CIPHER) {
4181 BIO_printf(trc_out, "Server has %d from %p:\n",
4182 sk_SSL_CIPHER_num(srvr), (void *)srvr);
4183 for (i = 0; i < sk_SSL_CIPHER_num(srvr); ++i) {
4184 c = sk_SSL_CIPHER_value(srvr, i);
4185 BIO_printf(trc_out, "%p:%s\n", (void *)c, c->name);
4186 }
4187 BIO_printf(trc_out, "Client sent %d from %p:\n",
4188 sk_SSL_CIPHER_num(clnt), (void *)clnt);
4189 for (i = 0; i < sk_SSL_CIPHER_num(clnt); ++i) {
4190 c = sk_SSL_CIPHER_value(clnt, i);
4191 BIO_printf(trc_out, "%p:%s\n", (void *)c, c->name);
4192 }
4193 } OSSL_TRACE_END(TLS_CIPHER);
f415fa32 4194
e1c7871d
TS
4195 /* SUITE-B takes precedence over server preference and ChaCha priortiy */
4196 if (tls1_suiteb(s)) {
4197 prio = srvr;
4198 allow = clnt;
4199 } else if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) {
0f113f3e
MC
4200 prio = srvr;
4201 allow = clnt;
e1c7871d
TS
4202#ifndef OPENSSL_NO_CHACHA
4203 /* If ChaCha20 is at the top of the client preference list,
4204 and there are ChaCha20 ciphers in the server list, then
4205 temporarily prioritize all ChaCha20 ciphers in the servers list. */
4206 if (s->options & SSL_OP_PRIORITIZE_CHACHA && sk_SSL_CIPHER_num(clnt) > 0) {
4207 c = sk_SSL_CIPHER_value(clnt, 0);
4208 if (c->algorithm_enc == SSL_CHACHA20POLY1305) {
4209 /* ChaCha20 is client preferred, check server... */
4210 int num = sk_SSL_CIPHER_num(srvr);
4211 int found = 0;
4212 for (i = 0; i < num; i++) {
4213 c = sk_SSL_CIPHER_value(srvr, i);
4214 if (c->algorithm_enc == SSL_CHACHA20POLY1305) {
4215 found = 1;
4216 break;
4217 }
4218 }
4219 if (found) {
e670e903 4220 prio_chacha = sk_SSL_CIPHER_new_reserve(NULL, num);
e1c7871d
TS
4221 /* if reserve fails, then there's likely a memory issue */
4222 if (prio_chacha != NULL) {
4223 /* Put all ChaCha20 at the top, starting with the one we just found */
4224 sk_SSL_CIPHER_push(prio_chacha, c);
4225 for (i++; i < num; i++) {
4226 c = sk_SSL_CIPHER_value(srvr, i);
4227 if (c->algorithm_enc == SSL_CHACHA20POLY1305)
4228 sk_SSL_CIPHER_push(prio_chacha, c);
4229 }
4230 /* Pull in the rest */
4231 for (i = 0; i < num; i++) {
4232 c = sk_SSL_CIPHER_value(srvr, i);
4233 if (c->algorithm_enc != SSL_CHACHA20POLY1305)
4234 sk_SSL_CIPHER_push(prio_chacha, c);
4235 }
4236 prio = prio_chacha;
4237 }
4238 }
4239 }
4240 }
4241# endif
0f113f3e
MC
4242 } else {
4243 prio = clnt;
4244 allow = srvr;
4245 }
4246
48a03162 4247 if (SSL_IS_TLS13(s)) {
199dc0d3 4248#ifndef OPENSSL_NO_PSK
48a03162
MC
4249 int j;
4250
4251 /*
4252 * If we allow "old" style PSK callbacks, and we have no certificate (so
4253 * we're not going to succeed without a PSK anyway), and we're in
4254 * TLSv1.3 then the default hash for a PSK is SHA-256 (as per the
4255 * TLSv1.3 spec). Therefore we should prioritise ciphersuites using
4256 * that.
4257 */
4258 if (s->psk_server_callback != NULL) {
4259 for (j = 0; j < SSL_PKEY_NUM && !ssl_has_cert(s, j); j++);
4260 if (j == SSL_PKEY_NUM) {
4261 /* There are no certificates */
4262 prefer_sha256 = 1;
4263 }
4264 }
199dc0d3 4265#endif
48a03162 4266 } else {
0de6d66d
MC
4267 tls1_set_cert_validity(s);
4268 ssl_set_masks(s);
4269 }
0f113f3e
MC
4270
4271 for (i = 0; i < sk_SSL_CIPHER_num(prio); i++) {
4272 c = sk_SSL_CIPHER_value(prio, i);
4273
3eb2aff4
KR
4274 /* Skip ciphers not supported by the protocol version */
4275 if (!SSL_IS_DTLS(s) &&
a230b26e 4276 ((s->version < c->min_tls) || (s->version > c->max_tls)))
0f113f3e 4277 continue;
3eb2aff4 4278 if (SSL_IS_DTLS(s) &&
a230b26e
EK
4279 (DTLS_VERSION_LT(s->version, c->min_dtls) ||
4280 DTLS_VERSION_GT(s->version, c->max_dtls)))
2b573382 4281 continue;
a055a881 4282
0de6d66d
MC
4283 /*
4284 * Since TLS 1.3 ciphersuites can be used with any auth or
4285 * key exchange scheme skip tests.
4286 */
4287 if (!SSL_IS_TLS13(s)) {
555cbb32
TS
4288 mask_k = s->s3.tmp.mask_k;
4289 mask_a = s->s3.tmp.mask_a;
edc032b5 4290#ifndef OPENSSL_NO_SRP
612ca806
DSH
4291 if (s->srp_ctx.srp_Mask & SSL_kSRP) {
4292 mask_k |= SSL_kSRP;
4293 mask_a |= SSL_aSRP;
4294 }
edc032b5 4295#endif
0f113f3e 4296
612ca806
DSH
4297 alg_k = c->algorithm_mkey;
4298 alg_a = c->algorithm_auth;
52b8dad8 4299
ddac1974 4300#ifndef OPENSSL_NO_PSK
612ca806
DSH
4301 /* with PSK there must be server callback set */
4302 if ((alg_k & SSL_PSK) && s->psk_server_callback == NULL)
4303 continue;
0f113f3e
MC
4304#endif /* OPENSSL_NO_PSK */
4305
612ca806 4306 ok = (alg_k & mask_k) && (alg_a & mask_a);
77359d22
RL
4307 OSSL_TRACE7(TLS_CIPHER,
4308 "%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n",
4309 ok, alg_k, alg_a, mask_k, mask_a, (void *)c, c->name);
d02b48c6 4310
a230b26e 4311#ifndef OPENSSL_NO_EC
612ca806
DSH
4312 /*
4313 * if we are considering an ECC cipher suite that uses an ephemeral
4314 * EC key check it
4315 */
4316 if (alg_k & SSL_kECDHE)
4317 ok = ok && tls1_check_ec_tmp_key(s, c->id);
a230b26e 4318#endif /* OPENSSL_NO_EC */
0f113f3e 4319
612ca806
DSH
4320 if (!ok)
4321 continue;
4322 }
0f113f3e
MC
4323 ii = sk_SSL_CIPHER_find(allow, c);
4324 if (ii >= 0) {
4325 /* Check security callback permits this cipher */
4326 if (!ssl_security(s, SSL_SECOP_CIPHER_SHARED,
4a640fb6 4327 c->strength_bits, 0, (void *)c))
0f113f3e 4328 continue;
e481f9b9 4329#if !defined(OPENSSL_NO_EC)
0f113f3e 4330 if ((alg_k & SSL_kECDHE) && (alg_a & SSL_aECDSA)
555cbb32 4331 && s->s3.is_probably_safari) {
0f113f3e
MC
4332 if (!ret)
4333 ret = sk_SSL_CIPHER_value(allow, ii);
4334 continue;
4335 }
d89cd382 4336#endif
48a03162
MC
4337 if (prefer_sha256) {
4338 const SSL_CIPHER *tmp = sk_SSL_CIPHER_value(allow, ii);
4339
c8f6c28a
MC
4340 /*
4341 * TODO: When there are no more legacy digests we can just use
4342 * OSSL_DIGEST_NAME_SHA2_256 instead of calling OBJ_nid2sn
4343 */
4344 if (EVP_MD_is_a(ssl_md(s->ctx, tmp->algorithm2),
4345 OBJ_nid2sn(NID_sha256))) {
48a03162
MC
4346 ret = tmp;
4347 break;
4348 }
4349 if (ret == NULL)
4350 ret = tmp;
4351 continue;
4352 }
0f113f3e
MC
4353 ret = sk_SSL_CIPHER_value(allow, ii);
4354 break;
4355 }
4356 }
e1c7871d
TS
4357#ifndef OPENSSL_NO_CHACHA
4358 sk_SSL_CIPHER_free(prio_chacha);
4359#endif
26a7d938 4360 return ret;
0f113f3e 4361}
d02b48c6 4362
28ff8ef3 4363int ssl3_get_req_cert_type(SSL *s, WPACKET *pkt)
0f113f3e 4364{
90d9e49a 4365 uint32_t alg_k, alg_a = 0;
0f113f3e
MC
4366
4367 /* If we have custom certificate types set, use them */
75c13e78
DSH
4368 if (s->cert->ctype)
4369 return WPACKET_memcpy(pkt, s->cert->ctype, s->cert->ctype_len);
0f113f3e
MC
4370 /* Get mask of algorithms disabled by signature list */
4371 ssl_set_sig_mask(&alg_a, s, SSL_SECOP_SIGALG_MASK);
0f113f3e 4372
555cbb32 4373 alg_k = s->s3.tmp.new_cipher->algorithm_mkey;
d02b48c6 4374
caa97ef1 4375#ifndef OPENSSL_NO_GOST
28ff8ef3
MC
4376 if (s->version >= TLS1_VERSION && (alg_k & SSL_kGOST))
4377 return WPACKET_put_bytes_u8(pkt, TLS_CT_GOST01_SIGN)
7a417606
NM
4378 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_IANA_SIGN)
4379 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_IANA_512_SIGN)
4380 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_LEGACY_SIGN)
4381 && WPACKET_put_bytes_u8(pkt, TLS_CT_GOST12_LEGACY_512_SIGN);
caa97ef1
DSH
4382#endif
4383
bc71f910 4384 if ((s->version == SSL3_VERSION) && (alg_k & SSL_kDHE)) {
bc36ee62 4385#ifndef OPENSSL_NO_DH
0f113f3e 4386# ifndef OPENSSL_NO_RSA
28ff8ef3
MC
4387 if (!WPACKET_put_bytes_u8(pkt, SSL3_CT_RSA_EPHEMERAL_DH))
4388 return 0;
0f113f3e
MC
4389# endif
4390# ifndef OPENSSL_NO_DSA
28ff8ef3
MC
4391 if (!WPACKET_put_bytes_u8(pkt, SSL3_CT_DSS_EPHEMERAL_DH))
4392 return 0;
0f113f3e 4393# endif
0f113f3e 4394#endif /* !OPENSSL_NO_DH */
1e0784ff 4395 }
bc36ee62 4396#ifndef OPENSSL_NO_RSA
28ff8ef3
MC
4397 if (!(alg_a & SSL_aRSA) && !WPACKET_put_bytes_u8(pkt, SSL3_CT_RSA_SIGN))
4398 return 0;
d02b48c6 4399#endif
bc36ee62 4400#ifndef OPENSSL_NO_DSA
28ff8ef3
MC
4401 if (!(alg_a & SSL_aDSS) && !WPACKET_put_bytes_u8(pkt, SSL3_CT_DSS_SIGN))
4402 return 0;
dfeab068 4403#endif
10bf4fc2 4404#ifndef OPENSSL_NO_EC
0f113f3e 4405 /*
c66ce5eb 4406 * ECDSA certs can be used with RSA cipher suites too so we don't
0f113f3e
MC
4407 * need to check for SSL_kECDH or SSL_kECDHE
4408 */
28ff8ef3
MC
4409 if (s->version >= TLS1_VERSION
4410 && !(alg_a & SSL_aECDSA)
4411 && !WPACKET_put_bytes_u8(pkt, TLS_CT_ECDSA_SIGN))
4412 return 0;
0f113f3e 4413#endif
28ff8ef3 4414 return 1;
0f113f3e 4415}
d02b48c6 4416
9f27b1ee 4417static int ssl3_set_req_cert_type(CERT *c, const unsigned char *p, size_t len)
0f113f3e 4418{
75c13e78
DSH
4419 OPENSSL_free(c->ctype);
4420 c->ctype = NULL;
4421 c->ctype_len = 0;
4422 if (p == NULL || len == 0)
0f113f3e
MC
4423 return 1;
4424 if (len > 0xff)
4425 return 0;
75c13e78
DSH
4426 c->ctype = OPENSSL_memdup(p, len);
4427 if (c->ctype == NULL)
0f113f3e 4428 return 0;
75c13e78 4429 c->ctype_len = len;
0f113f3e
MC
4430 return 1;
4431}
9f27b1ee 4432
6b691a5c 4433int ssl3_shutdown(SSL *s)
0f113f3e
MC
4434{
4435 int ret;
4436
4437 /*
4438 * Don't do anything much if we have not done the handshake or we don't
4439 * want to send messages :-)
4440 */
c874def6 4441 if (s->quiet_shutdown || SSL_in_before(s)) {
0f113f3e 4442 s->shutdown = (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN);
208fb891 4443 return 1;
0f113f3e
MC
4444 }
4445
4446 if (!(s->shutdown & SSL_SENT_SHUTDOWN)) {
4447 s->shutdown |= SSL_SENT_SHUTDOWN;
0f113f3e 4448 ssl3_send_alert(s, SSL3_AL_WARNING, SSL_AD_CLOSE_NOTIFY);
0f113f3e
MC
4449 /*
4450 * our shutdown alert has been sent now, and if it still needs to be
555cbb32 4451 * written, s->s3.alert_dispatch will be true
0f113f3e 4452 */
555cbb32 4453 if (s->s3.alert_dispatch)
26a7d938 4454 return -1; /* return WANT_WRITE */
555cbb32 4455 } else if (s->s3.alert_dispatch) {
0f113f3e 4456 /* resend it if not sent */
0f113f3e
MC
4457 ret = s->method->ssl_dispatch_alert(s);
4458 if (ret == -1) {
4459 /*
4460 * we only get to return -1 here the 2nd/Nth invocation, we must
8483a003 4461 * have already signalled return 0 upon a previous invocation,
0f113f3e
MC
4462 * return WANT_WRITE
4463 */
26a7d938 4464 return ret;
0f113f3e 4465 }
0f113f3e 4466 } else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) {
54105ddd 4467 size_t readbytes;
0f113f3e
MC
4468 /*
4469 * If we are waiting for a close from our peer, we are closed
4470 */
54105ddd 4471 s->method->ssl_read_bytes(s, 0, NULL, NULL, 0, 0, &readbytes);
0f113f3e 4472 if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) {
eda75751 4473 return -1; /* return WANT_READ */
0f113f3e
MC
4474 }
4475 }
4476
4477 if ((s->shutdown == (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN)) &&
555cbb32 4478 !s->s3.alert_dispatch)
208fb891 4479 return 1;
0f113f3e 4480 else
26a7d938 4481 return 0;
0f113f3e 4482}
d02b48c6 4483
7ee8627f 4484int ssl3_write(SSL *s, const void *buf, size_t len, size_t *written)
0f113f3e 4485{
0f113f3e 4486 clear_sys_error();
555cbb32 4487 if (s->s3.renegotiate)
c7f47786 4488 ssl3_renegotiate_check(s, 0);
0f113f3e 4489
7ee8627f
MC
4490 return s->method->ssl_write_bytes(s, SSL3_RT_APPLICATION_DATA, buf, len,
4491 written);
0f113f3e 4492}
d02b48c6 4493
eda75751 4494static int ssl3_read_internal(SSL *s, void *buf, size_t len, int peek,
54105ddd 4495 size_t *readbytes)
0f113f3e
MC
4496{
4497 int ret;
4498
4499 clear_sys_error();
555cbb32 4500 if (s->s3.renegotiate)
c7f47786 4501 ssl3_renegotiate_check(s, 0);
555cbb32 4502 s->s3.in_read_app_data = 1;
0f113f3e 4503 ret =
657da85e 4504 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf, len,
54105ddd 4505 peek, readbytes);
555cbb32 4506 if ((ret == -1) && (s->s3.in_read_app_data == 2)) {
0f113f3e
MC
4507 /*
4508 * ssl3_read_bytes decided to call s->handshake_func, which called
4509 * ssl3_read_bytes to read handshake data. However, ssl3_read_bytes
4510 * actually found application data and thinks that application data
4511 * makes sense here; so disable handshake processing and try to read
4512 * application data again.
4513 */
024f543c 4514 ossl_statem_set_in_handshake(s, 1);
0f113f3e 4515 ret =
657da85e 4516 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf,
54105ddd 4517 len, peek, readbytes);
024f543c 4518 ossl_statem_set_in_handshake(s, 0);
0f113f3e 4519 } else
555cbb32 4520 s->s3.in_read_app_data = 0;
0f113f3e 4521
eda75751 4522 return ret;
0f113f3e 4523}
d02b48c6 4524
54105ddd 4525int ssl3_read(SSL *s, void *buf, size_t len, size_t *readbytes)
0f113f3e 4526{
54105ddd 4527 return ssl3_read_internal(s, buf, len, 0, readbytes);
0f113f3e 4528}
d02b48c6 4529
54105ddd 4530int ssl3_peek(SSL *s, void *buf, size_t len, size_t *readbytes)
0f113f3e 4531{
54105ddd 4532 return ssl3_read_internal(s, buf, len, 1, readbytes);
0f113f3e 4533}
d02b48c6 4534
6b691a5c 4535int ssl3_renegotiate(SSL *s)
0f113f3e
MC
4536{
4537 if (s->handshake_func == NULL)
208fb891 4538 return 1;
d02b48c6 4539
555cbb32 4540 s->s3.renegotiate = 1;
208fb891 4541 return 1;
0f113f3e 4542}
d02b48c6 4543
c7f47786
MC
4544/*
4545 * Check if we are waiting to do a renegotiation and if so whether now is a
4546 * good time to do it. If |initok| is true then we are being called from inside
4547 * the state machine so ignore the result of SSL_in_init(s). Otherwise we
4548 * should not do a renegotiation if SSL_in_init(s) is true. Returns 1 if we
4549 * should do a renegotiation now and sets up the state machine for it. Otherwise
4550 * returns 0.
4551 */
4552int ssl3_renegotiate_check(SSL *s, int initok)
0f113f3e
MC
4553{
4554 int ret = 0;
4555
555cbb32 4556 if (s->s3.renegotiate) {
f161995e
MC
4557 if (!RECORD_LAYER_read_pending(&s->rlayer)
4558 && !RECORD_LAYER_write_pending(&s->rlayer)
c7f47786 4559 && (initok || !SSL_in_init(s))) {
0f113f3e
MC
4560 /*
4561 * if we are the server, and we have sent a 'RENEGOTIATE'
49ae7423
MC
4562 * message, we need to set the state machine into the renegotiate
4563 * state.
0f113f3e 4564 */
fe3a3291 4565 ossl_statem_set_renegotiate(s);
555cbb32
TS
4566 s->s3.renegotiate = 0;
4567 s->s3.num_renegotiations++;
4568 s->s3.total_renegotiations++;
0f113f3e
MC
4569 ret = 1;
4570 }
4571 }
c7f47786 4572 return ret;
0f113f3e
MC
4573}
4574
58964a49 4575/*
0f113f3e
MC
4576 * If we are using default SHA1+MD5 algorithms switch to new SHA256 PRF and
4577 * handshake macs if required.
12053a81
DSH
4578 *
4579 * If PSK and using SHA384 for TLS < 1.2 switch to default.
7409d7ad
DSH
4580 */
4581long ssl_get_algorithm2(SSL *s)
0f113f3e 4582{
52eede5a 4583 long alg2;
555cbb32 4584 if (s->s3.tmp.new_cipher == NULL)
52eede5a 4585 return -1;
555cbb32 4586 alg2 = s->s3.tmp.new_cipher->algorithm2;
12053a81
DSH
4587 if (s->method->ssl3_enc->enc_flags & SSL_ENC_FLAG_SHA256_PRF) {
4588 if (alg2 == (SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF))
4589 return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256;
555cbb32 4590 } else if (s->s3.tmp.new_cipher->algorithm_mkey & SSL_PSK) {
12053a81
DSH
4591 if (alg2 == (SSL_HANDSHAKE_MAC_SHA384 | TLS1_PRF_SHA384))
4592 return SSL_HANDSHAKE_MAC_DEFAULT | TLS1_PRF;
4593 }
0f113f3e
MC
4594 return alg2;
4595}
a3680c8f
MC
4596
4597/*
4598 * Fill a ClientRandom or ServerRandom field of length len. Returns <= 0 on
4599 * failure, 1 on success.
4600 */
f7f2a01d
MC
4601int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, size_t len,
4602 DOWNGRADE dgrd)
a3680c8f 4603{
f7f2a01d 4604 int send_time = 0, ret;
a3680c8f
MC
4605
4606 if (len < 4)
4607 return 0;
4608 if (server)
4609 send_time = (s->mode & SSL_MODE_SEND_SERVERHELLO_TIME) != 0;
4610 else
4611 send_time = (s->mode & SSL_MODE_SEND_CLIENTHELLO_TIME) != 0;
4612 if (send_time) {
4613 unsigned long Time = (unsigned long)time(NULL);
4614 unsigned char *p = result;
ae3947de 4615
a3680c8f 4616 l2n(Time, p);
8f21260b 4617 ret = RAND_bytes_ex(s->ctx->libctx, p, len - 4);
f7f2a01d 4618 } else {
8f21260b 4619 ret = RAND_bytes_ex(s->ctx->libctx, result, len);
f7f2a01d 4620 }
9f22c527 4621
16cfc2c9 4622 if (ret > 0) {
b77f3ed1
MC
4623 if (!ossl_assert(sizeof(tls11downgrade) < len)
4624 || !ossl_assert(sizeof(tls12downgrade) < len))
4625 return 0;
f7f2a01d
MC
4626 if (dgrd == DOWNGRADE_TO_1_2)
4627 memcpy(result + len - sizeof(tls12downgrade), tls12downgrade,
4628 sizeof(tls12downgrade));
4629 else if (dgrd == DOWNGRADE_TO_1_1)
4630 memcpy(result + len - sizeof(tls11downgrade), tls11downgrade,
4631 sizeof(tls11downgrade));
4632 }
9f22c527 4633
f7f2a01d 4634 return ret;
a3680c8f 4635}
57b272b0
DSH
4636
4637int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen,
4638 int free_pms)
4639{
555cbb32 4640 unsigned long alg_k = s->s3.tmp.new_cipher->algorithm_mkey;
8c1a5343
MC
4641 int ret = 0;
4642
8a0a12e5 4643 if (alg_k & SSL_PSK) {
0907d710 4644#ifndef OPENSSL_NO_PSK
8a0a12e5 4645 unsigned char *pskpms, *t;
555cbb32 4646 size_t psklen = s->s3.tmp.psklen;
8a0a12e5
DSH
4647 size_t pskpmslen;
4648
4649 /* create PSK premaster_secret */
4650
4651 /* For plain PSK "other_secret" is psklen zeroes */
4652 if (alg_k & SSL_kPSK)
4653 pmslen = psklen;
4654
4655 pskpmslen = 4 + pmslen + psklen;
4656 pskpms = OPENSSL_malloc(pskpmslen);
8c1a5343 4657 if (pskpms == NULL)
a784665e 4658 goto err;
8a0a12e5
DSH
4659 t = pskpms;
4660 s2n(pmslen, t);
4661 if (alg_k & SSL_kPSK)
4662 memset(t, 0, pmslen);
4663 else
4664 memcpy(t, pms, pmslen);
4665 t += pmslen;
4666 s2n(psklen, t);
555cbb32 4667 memcpy(t, s->s3.tmp.psk, psklen);
8a0a12e5 4668
555cbb32
TS
4669 OPENSSL_clear_free(s->s3.tmp.psk, psklen);
4670 s->s3.tmp.psk = NULL;
8c1a5343 4671 if (!s->method->ssl3_enc->generate_master_secret(s,
1866a0d3 4672 s->session->master_key, pskpms, pskpmslen,
f63a17d6 4673 &s->session->master_key_length)) {
c2cb1a18 4674 OPENSSL_clear_free(pskpms, pskpmslen);
f63a17d6 4675 /* SSLfatal() already called */
8c1a5343 4676 goto err;
f63a17d6 4677 }
8a0a12e5 4678 OPENSSL_clear_free(pskpms, pskpmslen);
0907d710
MC
4679#else
4680 /* Should never happen */
0907d710 4681 goto err;
8a0a12e5 4682#endif
0907d710 4683 } else {
8c1a5343
MC
4684 if (!s->method->ssl3_enc->generate_master_secret(s,
4685 s->session->master_key, pms, pmslen,
f63a17d6
MC
4686 &s->session->master_key_length)) {
4687 /* SSLfatal() already called */
8c1a5343 4688 goto err;
f63a17d6 4689 }
0907d710
MC
4690 }
4691
8c1a5343 4692 ret = 1;
0907d710 4693 err:
8a0a12e5
DSH
4694 if (pms) {
4695 if (free_pms)
4696 OPENSSL_clear_free(pms, pmslen);
4697 else
4698 OPENSSL_cleanse(pms, pmslen);
4699 }
57b272b0 4700 if (s->server == 0)
555cbb32 4701 s->s3.tmp.pms = NULL;
8c1a5343 4702 return ret;
57b272b0 4703}
3f3504bd 4704
0a699a07 4705/* Generate a private key from parameters */
0f00ed77 4706EVP_PKEY *ssl_generate_pkey(SSL *s, EVP_PKEY *pm)
3f3504bd
DSH
4707{
4708 EVP_PKEY_CTX *pctx = NULL;
4709 EVP_PKEY *pkey = NULL;
0a699a07
DSH
4710
4711 if (pm == NULL)
4712 return NULL;
0f00ed77 4713 pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, pm, s->ctx->propq);
0a699a07
DSH
4714 if (pctx == NULL)
4715 goto err;
4716 if (EVP_PKEY_keygen_init(pctx) <= 0)
4717 goto err;
4718 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) {
4719 EVP_PKEY_free(pkey);
4720 pkey = NULL;
4721 }
4722
4723 err:
4724 EVP_PKEY_CTX_free(pctx);
4725 return pkey;
4726}
9aaecbfc 4727
43b95d73 4728/* Generate a private key from a group ID */
65dc5c3c 4729#if !defined(OPENSSL_NO_DH) || !defined(OPENSSL_NO_EC)
f63a17d6 4730EVP_PKEY *ssl_generate_pkey_group(SSL *s, uint16_t id)
0a699a07 4731{
9aaecbfc 4732 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
0a699a07
DSH
4733 EVP_PKEY_CTX *pctx = NULL;
4734 EVP_PKEY *pkey = NULL;
43b95d73 4735 uint16_t gtype;
9aaecbfc 4736# ifndef OPENSSL_NO_DH
4737 DH *dh = NULL;
4738# endif
0a699a07 4739
f63a17d6
MC
4740 if (ginf == NULL) {
4741 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4742 ERR_R_INTERNAL_ERROR);
0a699a07 4743 goto err;
f63a17d6 4744 }
9aaecbfc 4745 gtype = ginf->flags & TLS_GROUP_TYPE;
d882e4ce 4746
c0bfc473
MC
4747 pctx = EVP_PKEY_CTX_new_from_name(s->ctx->libctx, ginf->keytype,
4748 s->ctx->propq);
4749
f63a17d6
MC
4750 if (pctx == NULL) {
4751 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4752 ERR_R_MALLOC_FAILURE);
3f3504bd 4753 goto err;
f63a17d6
MC
4754 }
4755 if (EVP_PKEY_keygen_init(pctx) <= 0) {
4756 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4757 ERR_R_EVP_LIB);
3f3504bd 4758 goto err;
f63a17d6 4759 }
9aaecbfc 4760# ifndef OPENSSL_NO_DH
4761 if (gtype == TLS_GROUP_FFDHE) {
4762 if ((pkey = EVP_PKEY_new()) == NULL
4763 || (dh = DH_new_by_nid(ginf->nid)) == NULL
4764 || !EVP_PKEY_assign(pkey, EVP_PKEY_DH, dh)) {
4765 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
ada66e78 4766 ERR_R_EVP_LIB);
9aaecbfc 4767 DH_free(dh);
4768 EVP_PKEY_free(pkey);
4769 pkey = NULL;
4770 goto err;
4771 }
4772 if (EVP_PKEY_CTX_set_dh_nid(pctx, ginf->nid) <= 0) {
4773 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
ada66e78 4774 ERR_R_EVP_LIB);
9aaecbfc 4775 EVP_PKEY_free(pkey);
4776 pkey = NULL;
4777 goto err;
4778 }
4779 }
4780# ifndef OPENSSL_NO_EC
4781 else
4782# endif
4783# endif
4784# ifndef OPENSSL_NO_EC
4785 {
4786 if (gtype != TLS_GROUP_CURVE_CUSTOM
4787 && EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, ginf->nid) <= 0) {
4788 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4789 ERR_R_EVP_LIB);
4790 goto err;
4791 }
f63a17d6 4792 }
9aaecbfc 4793# endif
3f3504bd 4794 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) {
f63a17d6
MC
4795 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_GENERATE_PKEY_GROUP,
4796 ERR_R_EVP_LIB);
3f3504bd
DSH
4797 EVP_PKEY_free(pkey);
4798 pkey = NULL;
4799 }
4800
a230b26e 4801 err:
3f3504bd
DSH
4802 EVP_PKEY_CTX_free(pctx);
4803 return pkey;
4804}
65dc5c3c 4805#endif
612f9d22
DSH
4806
4807/*
4808 * Generate parameters from a group ID
4809 */
ada66e78 4810EVP_PKEY *ssl_generate_param_group(SSL *s, uint16_t id)
612f9d22
DSH
4811{
4812 EVP_PKEY_CTX *pctx = NULL;
4813 EVP_PKEY *pkey = NULL;
4814 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(id);
d882e4ce 4815 const char *pkey_ctx_name;
612f9d22
DSH
4816
4817 if (ginf == NULL)
4818 goto err;
4819
9aaecbfc 4820 if ((ginf->flags & TLS_GROUP_TYPE) == TLS_GROUP_CURVE_CUSTOM) {
612f9d22
DSH
4821 pkey = EVP_PKEY_new();
4822 if (pkey != NULL && EVP_PKEY_set_type(pkey, ginf->nid))
4823 return pkey;
4824 EVP_PKEY_free(pkey);
4825 return NULL;
4826 }
4827
d882e4ce
MC
4828 pkey_ctx_name = (ginf->flags & TLS_GROUP_FFDHE) != 0 ? "DH" : "EC";
4829 pctx = EVP_PKEY_CTX_new_from_name(s->ctx->libctx, pkey_ctx_name,
4830 s->ctx->propq);
d882e4ce 4831
612f9d22
DSH
4832 if (pctx == NULL)
4833 goto err;
4834 if (EVP_PKEY_paramgen_init(pctx) <= 0)
4835 goto err;
6597d62b 4836# ifndef OPENSSL_NO_DH
9aaecbfc 4837 if (ginf->flags & TLS_GROUP_FFDHE) {
4838 if (EVP_PKEY_CTX_set_dh_nid(pctx, ginf->nid) <= 0)
4839 goto err;
4840 }
4841# ifndef OPENSSL_NO_EC
4842 else
4843# endif
4844# endif
4845# ifndef OPENSSL_NO_EC
4846 {
4847 if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, ginf->nid) <= 0)
4848 goto err;
4849 }
4850# endif
612f9d22
DSH
4851 if (EVP_PKEY_paramgen(pctx, &pkey) <= 0) {
4852 EVP_PKEY_free(pkey);
4853 pkey = NULL;
4854 }
4855
4856 err:
4857 EVP_PKEY_CTX_free(pctx);
4858 return pkey;
4859}
a230b26e 4860
92760c21
MC
4861/* Derive secrets for ECDH/DH */
4862int ssl_derive(SSL *s, EVP_PKEY *privkey, EVP_PKEY *pubkey, int gensecret)
3f3504bd
DSH
4863{
4864 int rv = 0;
4865 unsigned char *pms = NULL;
4866 size_t pmslen = 0;
4867 EVP_PKEY_CTX *pctx;
4868
f63a17d6
MC
4869 if (privkey == NULL || pubkey == NULL) {
4870 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4871 ERR_R_INTERNAL_ERROR);
3f3504bd 4872 return 0;
f63a17d6 4873 }
3f3504bd 4874
0f00ed77 4875 pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, privkey, s->ctx->propq);
3f3504bd
DSH
4876
4877 if (EVP_PKEY_derive_init(pctx) <= 0
4878 || EVP_PKEY_derive_set_peer(pctx, pubkey) <= 0
4879 || EVP_PKEY_derive(pctx, NULL, &pmslen) <= 0) {
f63a17d6
MC
4880 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4881 ERR_R_INTERNAL_ERROR);
3f3504bd
DSH
4882 goto err;
4883 }
4884
6597d62b 4885#ifndef OPENSSL_NO_DH
9aaecbfc 4886 if (SSL_IS_TLS13(s) && EVP_PKEY_id(privkey) == EVP_PKEY_DH)
4887 EVP_PKEY_CTX_set_dh_pad(pctx, 1);
6597d62b 4888#endif
9aaecbfc 4889
3f3504bd 4890 pms = OPENSSL_malloc(pmslen);
f63a17d6
MC
4891 if (pms == NULL) {
4892 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4893 ERR_R_MALLOC_FAILURE);
3f3504bd 4894 goto err;
f63a17d6 4895 }
3f3504bd 4896
f63a17d6
MC
4897 if (EVP_PKEY_derive(pctx, pms, &pmslen) <= 0) {
4898 SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL_DERIVE,
4899 ERR_R_INTERNAL_ERROR);
3f3504bd 4900 goto err;
f63a17d6 4901 }
3f3504bd 4902
92760c21 4903 if (gensecret) {
f63a17d6 4904 /* SSLfatal() called as appropriate in the below functions */
92760c21
MC
4905 if (SSL_IS_TLS13(s)) {
4906 /*
ec15acb6
MC
4907 * If we are resuming then we already generated the early secret
4908 * when we created the ClientHello, so don't recreate it.
92760c21 4909 */
ec15acb6
MC
4910 if (!s->hit)
4911 rv = tls13_generate_secret(s, ssl_handshake_md(s), NULL, NULL,
4912 0,
4913 (unsigned char *)&s->early_secret);
0247086d
MC
4914 else
4915 rv = 1;
4916
ec15acb6 4917 rv = rv && tls13_generate_handshake_secret(s, pms, pmslen);
92760c21 4918 } else {
c8ab3a46 4919 rv = ssl_generate_master_secret(s, pms, pmslen, 0);
92760c21 4920 }
3f3504bd 4921 } else {
0f1e51ea 4922 /* Save premaster secret */
555cbb32
TS
4923 s->s3.tmp.pms = pms;
4924 s->s3.tmp.pmslen = pmslen;
3f3504bd
DSH
4925 pms = NULL;
4926 rv = 1;
4927 }
4928
a230b26e 4929 err:
3f3504bd
DSH
4930 OPENSSL_clear_free(pms, pmslen);
4931 EVP_PKEY_CTX_free(pctx);
4932 return rv;
4933}
6c4e6670 4934
1e0784ff 4935#ifndef OPENSSL_NO_DH
6c4e6670
DSH
4936EVP_PKEY *ssl_dh_to_pkey(DH *dh)
4937{
4938 EVP_PKEY *ret;
4939 if (dh == NULL)
4940 return NULL;
4941 ret = EVP_PKEY_new();
4942 if (EVP_PKEY_set1_DH(ret, dh) <= 0) {
4943 EVP_PKEY_free(ret);
4944 return NULL;
4945 }
4946 return ret;
4947}
1e0784ff 4948#endif