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