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