2 * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.
3 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
4 * Copyright 2005 Nokia. All rights reserved.
6 * Licensed under the Apache License 2.0 (the "License"). You may not use
7 * this file except in compliance with the License. You can obtain a copy
8 * in the file LICENSE in the source distribution or at
9 * https://www.openssl.org/source/license.html
12 #include "internal/e_os.h"
14 #include <openssl/objects.h>
15 #include "internal/nelem.h"
16 #include "ssl_local.h"
17 #include <openssl/md5.h>
18 #include <openssl/dh.h>
19 #include <openssl/rand.h>
20 #include <openssl/trace.h>
21 #include <openssl/x509v3.h>
22 #include <openssl/core_names.h>
23 #include "internal/cryptlib.h"
24 #include "internal/ssl_unwrap.h"
26 #define TLS13_NUM_CIPHERS OSSL_NELEM(tls13_ciphers)
27 #define SSL3_NUM_CIPHERS OSSL_NELEM(ssl3_ciphers)
28 #define SSL3_NUM_SCSVS OSSL_NELEM(ssl3_scsvs)
30 /* TLSv1.3 downgrade protection sentinel values */
31 const unsigned char tls11downgrade
[] = {
32 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x00
34 const unsigned char tls12downgrade
[] = {
35 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x01
38 /* The list of available TLSv1.3 ciphers */
39 static SSL_CIPHER tls13_ciphers
[] = {
42 TLS1_3_RFC_AES_128_GCM_SHA256
,
43 TLS1_3_RFC_AES_128_GCM_SHA256
,
44 TLS1_3_CK_AES_128_GCM_SHA256
,
49 TLS1_3_VERSION
, TLS1_3_VERSION
,
52 SSL_HANDSHAKE_MAC_SHA256
| SSL_QUIC
,
57 TLS1_3_RFC_AES_256_GCM_SHA384
,
58 TLS1_3_RFC_AES_256_GCM_SHA384
,
59 TLS1_3_CK_AES_256_GCM_SHA384
,
64 TLS1_3_VERSION
, TLS1_3_VERSION
,
67 SSL_HANDSHAKE_MAC_SHA384
| SSL_QUIC
,
73 TLS1_3_RFC_CHACHA20_POLY1305_SHA256
,
74 TLS1_3_RFC_CHACHA20_POLY1305_SHA256
,
75 TLS1_3_CK_CHACHA20_POLY1305_SHA256
,
80 TLS1_3_VERSION
, TLS1_3_VERSION
,
83 SSL_HANDSHAKE_MAC_SHA256
| SSL_QUIC
,
89 TLS1_3_RFC_AES_128_CCM_SHA256
,
90 TLS1_3_RFC_AES_128_CCM_SHA256
,
91 TLS1_3_CK_AES_128_CCM_SHA256
,
96 TLS1_3_VERSION
, TLS1_3_VERSION
,
98 SSL_NOT_DEFAULT
| SSL_HIGH
,
99 SSL_HANDSHAKE_MAC_SHA256
,
104 TLS1_3_RFC_AES_128_CCM_8_SHA256
,
105 TLS1_3_RFC_AES_128_CCM_8_SHA256
,
106 TLS1_3_CK_AES_128_CCM_8_SHA256
,
111 TLS1_3_VERSION
, TLS1_3_VERSION
,
113 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
114 SSL_HANDSHAKE_MAC_SHA256
,
115 64, /* CCM8 uses a short tag, so we have a low security strength */
118 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
121 TLS1_3_RFC_SHA256_SHA256
,
122 TLS1_3_RFC_SHA256_SHA256
,
123 TLS1_3_CK_SHA256_SHA256
,
128 TLS1_3_VERSION
, TLS1_3_VERSION
,
130 SSL_NOT_DEFAULT
| SSL_STRONG_NONE
,
131 SSL_HANDSHAKE_MAC_SHA256
,
136 TLS1_3_RFC_SHA384_SHA384
,
137 TLS1_3_RFC_SHA384_SHA384
,
138 TLS1_3_CK_SHA384_SHA384
,
143 TLS1_3_VERSION
, TLS1_3_VERSION
,
145 SSL_NOT_DEFAULT
| SSL_STRONG_NONE
,
146 SSL_HANDSHAKE_MAC_SHA384
,
154 * The list of available ciphers, mostly organized into the following
159 * SRP (within that: RSA EC PSK)
160 * Cipher families: Chacha/poly, Camellia, Gost, IDEA, SEED
163 static SSL_CIPHER ssl3_ciphers
[] = {
164 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
167 SSL3_TXT_RSA_NULL_MD5
,
168 SSL3_RFC_RSA_NULL_MD5
,
169 SSL3_CK_RSA_NULL_MD5
,
174 SSL3_VERSION
, TLS1_2_VERSION
,
175 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
177 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
183 SSL3_TXT_RSA_NULL_SHA
,
184 SSL3_RFC_RSA_NULL_SHA
,
185 SSL3_CK_RSA_NULL_SHA
,
190 SSL3_VERSION
, TLS1_2_VERSION
,
191 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
192 SSL_STRONG_NONE
| SSL_FIPS
,
193 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
198 #ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
201 SSL3_TXT_RSA_DES_192_CBC3_SHA
,
202 SSL3_RFC_RSA_DES_192_CBC3_SHA
,
203 SSL3_CK_RSA_DES_192_CBC3_SHA
,
208 SSL3_VERSION
, TLS1_2_VERSION
,
209 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
210 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
211 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
217 SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA
,
218 SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA
,
219 SSL3_CK_DHE_DSS_DES_192_CBC3_SHA
,
224 SSL3_VERSION
, TLS1_2_VERSION
,
225 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
226 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
227 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
233 SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA
,
234 SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA
,
235 SSL3_CK_DHE_RSA_DES_192_CBC3_SHA
,
240 SSL3_VERSION
, TLS1_2_VERSION
,
241 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
242 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
243 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
249 SSL3_TXT_ADH_DES_192_CBC_SHA
,
250 SSL3_RFC_ADH_DES_192_CBC_SHA
,
251 SSL3_CK_ADH_DES_192_CBC_SHA
,
256 SSL3_VERSION
, TLS1_2_VERSION
,
257 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
258 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
259 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
266 TLS1_TXT_RSA_WITH_AES_128_SHA
,
267 TLS1_RFC_RSA_WITH_AES_128_SHA
,
268 TLS1_CK_RSA_WITH_AES_128_SHA
,
273 SSL3_VERSION
, TLS1_2_VERSION
,
274 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
276 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
282 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA
,
283 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA
,
284 TLS1_CK_DHE_DSS_WITH_AES_128_SHA
,
289 SSL3_VERSION
, TLS1_2_VERSION
,
290 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
291 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
292 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
298 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA
,
299 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA
,
300 TLS1_CK_DHE_RSA_WITH_AES_128_SHA
,
305 SSL3_VERSION
, TLS1_2_VERSION
,
306 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
308 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
314 TLS1_TXT_ADH_WITH_AES_128_SHA
,
315 TLS1_RFC_ADH_WITH_AES_128_SHA
,
316 TLS1_CK_ADH_WITH_AES_128_SHA
,
321 SSL3_VERSION
, TLS1_2_VERSION
,
322 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
323 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
324 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
330 TLS1_TXT_RSA_WITH_AES_256_SHA
,
331 TLS1_RFC_RSA_WITH_AES_256_SHA
,
332 TLS1_CK_RSA_WITH_AES_256_SHA
,
337 SSL3_VERSION
, TLS1_2_VERSION
,
338 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
340 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
346 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA
,
347 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA
,
348 TLS1_CK_DHE_DSS_WITH_AES_256_SHA
,
353 SSL3_VERSION
, TLS1_2_VERSION
,
354 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
355 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
356 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
362 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA
,
363 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA
,
364 TLS1_CK_DHE_RSA_WITH_AES_256_SHA
,
369 SSL3_VERSION
, TLS1_2_VERSION
,
370 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
372 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
378 TLS1_TXT_ADH_WITH_AES_256_SHA
,
379 TLS1_RFC_ADH_WITH_AES_256_SHA
,
380 TLS1_CK_ADH_WITH_AES_256_SHA
,
385 SSL3_VERSION
, TLS1_2_VERSION
,
386 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
387 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
388 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
392 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
395 TLS1_TXT_RSA_WITH_NULL_SHA256
,
396 TLS1_RFC_RSA_WITH_NULL_SHA256
,
397 TLS1_CK_RSA_WITH_NULL_SHA256
,
402 TLS1_2_VERSION
, TLS1_2_VERSION
,
403 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
404 SSL_STRONG_NONE
| SSL_FIPS
,
405 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
412 TLS1_TXT_RSA_WITH_AES_128_SHA256
,
413 TLS1_RFC_RSA_WITH_AES_128_SHA256
,
414 TLS1_CK_RSA_WITH_AES_128_SHA256
,
419 TLS1_2_VERSION
, TLS1_2_VERSION
,
420 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
422 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
428 TLS1_TXT_RSA_WITH_AES_256_SHA256
,
429 TLS1_RFC_RSA_WITH_AES_256_SHA256
,
430 TLS1_CK_RSA_WITH_AES_256_SHA256
,
435 TLS1_2_VERSION
, TLS1_2_VERSION
,
436 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
438 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
444 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256
,
445 TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256
,
446 TLS1_CK_DHE_DSS_WITH_AES_128_SHA256
,
451 TLS1_2_VERSION
, TLS1_2_VERSION
,
452 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
453 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
454 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
460 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256
,
461 TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256
,
462 TLS1_CK_DHE_RSA_WITH_AES_128_SHA256
,
467 TLS1_2_VERSION
, TLS1_2_VERSION
,
468 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
470 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
476 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256
,
477 TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256
,
478 TLS1_CK_DHE_DSS_WITH_AES_256_SHA256
,
483 TLS1_2_VERSION
, TLS1_2_VERSION
,
484 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
485 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
486 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
492 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256
,
493 TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256
,
494 TLS1_CK_DHE_RSA_WITH_AES_256_SHA256
,
499 TLS1_2_VERSION
, TLS1_2_VERSION
,
500 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
502 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
508 TLS1_TXT_ADH_WITH_AES_128_SHA256
,
509 TLS1_RFC_ADH_WITH_AES_128_SHA256
,
510 TLS1_CK_ADH_WITH_AES_128_SHA256
,
515 TLS1_2_VERSION
, TLS1_2_VERSION
,
516 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
517 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
518 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
524 TLS1_TXT_ADH_WITH_AES_256_SHA256
,
525 TLS1_RFC_ADH_WITH_AES_256_SHA256
,
526 TLS1_CK_ADH_WITH_AES_256_SHA256
,
531 TLS1_2_VERSION
, TLS1_2_VERSION
,
532 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
533 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
534 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
540 TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256
,
541 TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256
,
542 TLS1_CK_RSA_WITH_AES_128_GCM_SHA256
,
547 TLS1_2_VERSION
, TLS1_2_VERSION
,
548 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
550 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
556 TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384
,
557 TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384
,
558 TLS1_CK_RSA_WITH_AES_256_GCM_SHA384
,
563 TLS1_2_VERSION
, TLS1_2_VERSION
,
564 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
566 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
572 TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256
,
573 TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256
,
574 TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256
,
579 TLS1_2_VERSION
, TLS1_2_VERSION
,
580 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
582 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
588 TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384
,
589 TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384
,
590 TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384
,
595 TLS1_2_VERSION
, TLS1_2_VERSION
,
596 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
598 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
604 TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256
,
605 TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256
,
606 TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256
,
611 TLS1_2_VERSION
, TLS1_2_VERSION
,
612 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
613 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
614 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
620 TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384
,
621 TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384
,
622 TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384
,
627 TLS1_2_VERSION
, TLS1_2_VERSION
,
628 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
629 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
630 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
636 TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256
,
637 TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256
,
638 TLS1_CK_ADH_WITH_AES_128_GCM_SHA256
,
643 TLS1_2_VERSION
, TLS1_2_VERSION
,
644 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
645 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
646 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
652 TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384
,
653 TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384
,
654 TLS1_CK_ADH_WITH_AES_256_GCM_SHA384
,
659 TLS1_2_VERSION
, TLS1_2_VERSION
,
660 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
661 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
662 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
668 TLS1_TXT_RSA_WITH_AES_128_CCM
,
669 TLS1_RFC_RSA_WITH_AES_128_CCM
,
670 TLS1_CK_RSA_WITH_AES_128_CCM
,
675 TLS1_2_VERSION
, TLS1_2_VERSION
,
676 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
677 SSL_NOT_DEFAULT
| SSL_HIGH
,
678 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
684 TLS1_TXT_RSA_WITH_AES_256_CCM
,
685 TLS1_RFC_RSA_WITH_AES_256_CCM
,
686 TLS1_CK_RSA_WITH_AES_256_CCM
,
691 TLS1_2_VERSION
, TLS1_2_VERSION
,
692 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
693 SSL_NOT_DEFAULT
| SSL_HIGH
,
694 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
700 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM
,
701 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM
,
702 TLS1_CK_DHE_RSA_WITH_AES_128_CCM
,
707 TLS1_2_VERSION
, TLS1_2_VERSION
,
708 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
709 SSL_NOT_DEFAULT
| SSL_HIGH
,
710 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
716 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM
,
717 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM
,
718 TLS1_CK_DHE_RSA_WITH_AES_256_CCM
,
723 TLS1_2_VERSION
, TLS1_2_VERSION
,
724 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
725 SSL_NOT_DEFAULT
| SSL_HIGH
,
726 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
732 TLS1_TXT_RSA_WITH_AES_128_CCM_8
,
733 TLS1_RFC_RSA_WITH_AES_128_CCM_8
,
734 TLS1_CK_RSA_WITH_AES_128_CCM_8
,
739 TLS1_2_VERSION
, TLS1_2_VERSION
,
740 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
741 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
742 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
743 64, /* CCM8 uses a short tag, so we have a low security strength */
748 TLS1_TXT_RSA_WITH_AES_256_CCM_8
,
749 TLS1_RFC_RSA_WITH_AES_256_CCM_8
,
750 TLS1_CK_RSA_WITH_AES_256_CCM_8
,
755 TLS1_2_VERSION
, TLS1_2_VERSION
,
756 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
757 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
758 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
759 64, /* CCM8 uses a short tag, so we have a low security strength */
764 TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8
,
765 TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8
,
766 TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8
,
771 TLS1_2_VERSION
, TLS1_2_VERSION
,
772 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
773 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
774 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
775 64, /* CCM8 uses a short tag, so we have a low security strength */
780 TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8
,
781 TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8
,
782 TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8
,
787 TLS1_2_VERSION
, TLS1_2_VERSION
,
788 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
789 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
790 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
791 64, /* CCM8 uses a short tag, so we have a low security strength */
796 TLS1_TXT_PSK_WITH_AES_128_CCM
,
797 TLS1_RFC_PSK_WITH_AES_128_CCM
,
798 TLS1_CK_PSK_WITH_AES_128_CCM
,
803 TLS1_2_VERSION
, TLS1_2_VERSION
,
804 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
805 SSL_NOT_DEFAULT
| SSL_HIGH
,
806 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
812 TLS1_TXT_PSK_WITH_AES_256_CCM
,
813 TLS1_RFC_PSK_WITH_AES_256_CCM
,
814 TLS1_CK_PSK_WITH_AES_256_CCM
,
819 TLS1_2_VERSION
, TLS1_2_VERSION
,
820 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
821 SSL_NOT_DEFAULT
| SSL_HIGH
,
822 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
828 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM
,
829 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM
,
830 TLS1_CK_DHE_PSK_WITH_AES_128_CCM
,
835 TLS1_2_VERSION
, TLS1_2_VERSION
,
836 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
837 SSL_NOT_DEFAULT
| SSL_HIGH
,
838 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
844 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM
,
845 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM
,
846 TLS1_CK_DHE_PSK_WITH_AES_256_CCM
,
851 TLS1_2_VERSION
, TLS1_2_VERSION
,
852 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
853 SSL_NOT_DEFAULT
| SSL_HIGH
,
854 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
860 TLS1_TXT_PSK_WITH_AES_128_CCM_8
,
861 TLS1_RFC_PSK_WITH_AES_128_CCM_8
,
862 TLS1_CK_PSK_WITH_AES_128_CCM_8
,
867 TLS1_2_VERSION
, TLS1_2_VERSION
,
868 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
869 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
870 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
871 64, /* CCM8 uses a short tag, so we have a low security strength */
876 TLS1_TXT_PSK_WITH_AES_256_CCM_8
,
877 TLS1_RFC_PSK_WITH_AES_256_CCM_8
,
878 TLS1_CK_PSK_WITH_AES_256_CCM_8
,
883 TLS1_2_VERSION
, TLS1_2_VERSION
,
884 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
885 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
886 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
887 64, /* CCM8 uses a short tag, so we have a low security strength */
892 TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8
,
893 TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8
,
894 TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8
,
899 TLS1_2_VERSION
, TLS1_2_VERSION
,
900 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
901 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
902 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
903 64, /* CCM8 uses a short tag, so we have a low security strength */
908 TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8
,
909 TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8
,
910 TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8
,
915 TLS1_2_VERSION
, TLS1_2_VERSION
,
916 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
917 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
918 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
919 64, /* CCM8 uses a short tag, so we have a low security strength */
924 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM
,
925 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM
,
926 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM
,
931 TLS1_2_VERSION
, TLS1_2_VERSION
,
932 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
933 SSL_NOT_DEFAULT
| SSL_HIGH
,
934 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
940 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM
,
941 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM
,
942 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM
,
947 TLS1_2_VERSION
, TLS1_2_VERSION
,
948 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
949 SSL_NOT_DEFAULT
| SSL_HIGH
,
950 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
956 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8
,
957 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8
,
958 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8
,
963 TLS1_2_VERSION
, TLS1_2_VERSION
,
964 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
965 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
966 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
967 64, /* CCM8 uses a short tag, so we have a low security strength */
972 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8
,
973 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8
,
974 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8
,
979 TLS1_2_VERSION
, TLS1_2_VERSION
,
980 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
981 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
982 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
983 64, /* CCM8 uses a short tag, so we have a low security strength */
986 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
989 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA
,
990 TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA
,
991 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA
,
996 TLS1_VERSION
, TLS1_2_VERSION
,
997 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
998 SSL_STRONG_NONE
| SSL_FIPS
,
999 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1004 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1007 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA
,
1008 TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA
,
1009 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA
,
1014 TLS1_VERSION
, TLS1_2_VERSION
,
1015 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1016 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1017 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1024 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
,
1025 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
,
1026 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
,
1031 TLS1_VERSION
, TLS1_2_VERSION
,
1032 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1033 SSL_HIGH
| SSL_FIPS
,
1034 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1040 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
,
1041 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
,
1042 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
,
1047 TLS1_VERSION
, TLS1_2_VERSION
,
1048 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1049 SSL_HIGH
| SSL_FIPS
,
1050 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1054 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1057 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA
,
1058 TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA
,
1059 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA
,
1064 TLS1_VERSION
, TLS1_2_VERSION
,
1065 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1066 SSL_STRONG_NONE
| SSL_FIPS
,
1067 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1072 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1075 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA
,
1076 TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA
,
1077 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA
,
1082 TLS1_VERSION
, TLS1_2_VERSION
,
1083 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1084 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1085 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1092 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA
,
1093 TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA
,
1094 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA
,
1099 TLS1_VERSION
, TLS1_2_VERSION
,
1100 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1101 SSL_HIGH
| SSL_FIPS
,
1102 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1108 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA
,
1109 TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA
,
1110 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA
,
1115 TLS1_VERSION
, TLS1_2_VERSION
,
1116 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1117 SSL_HIGH
| SSL_FIPS
,
1118 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1122 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1125 TLS1_TXT_ECDH_anon_WITH_NULL_SHA
,
1126 TLS1_RFC_ECDH_anon_WITH_NULL_SHA
,
1127 TLS1_CK_ECDH_anon_WITH_NULL_SHA
,
1132 TLS1_VERSION
, TLS1_2_VERSION
,
1133 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1134 SSL_STRONG_NONE
| SSL_FIPS
,
1135 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1140 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1143 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA
,
1144 TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA
,
1145 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA
,
1150 TLS1_VERSION
, TLS1_2_VERSION
,
1151 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1152 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1153 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1160 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA
,
1161 TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA
,
1162 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA
,
1167 TLS1_VERSION
, TLS1_2_VERSION
,
1168 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1169 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
1170 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1176 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA
,
1177 TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA
,
1178 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA
,
1183 TLS1_VERSION
, TLS1_2_VERSION
,
1184 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1185 SSL_NOT_DEFAULT
| SSL_HIGH
| SSL_FIPS
,
1186 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1192 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256
,
1193 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256
,
1194 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256
,
1199 TLS1_2_VERSION
, TLS1_2_VERSION
,
1200 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1201 SSL_HIGH
| SSL_FIPS
,
1202 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1208 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384
,
1209 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384
,
1210 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384
,
1215 TLS1_2_VERSION
, TLS1_2_VERSION
,
1216 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1217 SSL_HIGH
| SSL_FIPS
,
1218 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1224 TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256
,
1225 TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256
,
1226 TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256
,
1231 TLS1_2_VERSION
, TLS1_2_VERSION
,
1232 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1233 SSL_HIGH
| SSL_FIPS
,
1234 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1240 TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384
,
1241 TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384
,
1242 TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384
,
1247 TLS1_2_VERSION
, TLS1_2_VERSION
,
1248 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1249 SSL_HIGH
| SSL_FIPS
,
1250 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1256 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
,
1257 TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
,
1258 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
,
1263 TLS1_2_VERSION
, TLS1_2_VERSION
,
1264 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1265 SSL_HIGH
| SSL_FIPS
,
1266 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1272 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
,
1273 TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
,
1274 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
,
1279 TLS1_2_VERSION
, TLS1_2_VERSION
,
1280 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1281 SSL_HIGH
| SSL_FIPS
,
1282 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1288 TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256
,
1289 TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256
,
1290 TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256
,
1295 TLS1_2_VERSION
, TLS1_2_VERSION
,
1296 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1297 SSL_HIGH
| SSL_FIPS
,
1298 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1304 TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384
,
1305 TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384
,
1306 TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384
,
1311 TLS1_2_VERSION
, TLS1_2_VERSION
,
1312 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1313 SSL_HIGH
| SSL_FIPS
,
1314 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1318 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1321 TLS1_TXT_PSK_WITH_NULL_SHA
,
1322 TLS1_RFC_PSK_WITH_NULL_SHA
,
1323 TLS1_CK_PSK_WITH_NULL_SHA
,
1328 SSL3_VERSION
, TLS1_2_VERSION
,
1329 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1330 SSL_STRONG_NONE
| SSL_FIPS
,
1331 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1337 TLS1_TXT_DHE_PSK_WITH_NULL_SHA
,
1338 TLS1_RFC_DHE_PSK_WITH_NULL_SHA
,
1339 TLS1_CK_DHE_PSK_WITH_NULL_SHA
,
1344 SSL3_VERSION
, TLS1_2_VERSION
,
1345 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1346 SSL_STRONG_NONE
| SSL_FIPS
,
1347 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1353 TLS1_TXT_RSA_PSK_WITH_NULL_SHA
,
1354 TLS1_RFC_RSA_PSK_WITH_NULL_SHA
,
1355 TLS1_CK_RSA_PSK_WITH_NULL_SHA
,
1360 SSL3_VERSION
, TLS1_2_VERSION
,
1361 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1362 SSL_STRONG_NONE
| SSL_FIPS
,
1363 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1368 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1371 TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA
,
1372 TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA
,
1373 TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA
,
1378 SSL3_VERSION
, TLS1_2_VERSION
,
1379 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1380 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1381 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1388 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA
,
1389 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA
,
1390 TLS1_CK_PSK_WITH_AES_128_CBC_SHA
,
1395 SSL3_VERSION
, TLS1_2_VERSION
,
1396 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1397 SSL_HIGH
| SSL_FIPS
,
1398 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1404 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA
,
1405 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA
,
1406 TLS1_CK_PSK_WITH_AES_256_CBC_SHA
,
1411 SSL3_VERSION
, TLS1_2_VERSION
,
1412 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1413 SSL_HIGH
| SSL_FIPS
,
1414 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1418 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1421 TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA
,
1422 TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA
,
1423 TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA
,
1428 SSL3_VERSION
, TLS1_2_VERSION
,
1429 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1430 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1431 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1438 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA
,
1439 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA
,
1440 TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA
,
1445 SSL3_VERSION
, TLS1_2_VERSION
,
1446 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1447 SSL_HIGH
| SSL_FIPS
,
1448 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1454 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA
,
1455 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA
,
1456 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA
,
1461 SSL3_VERSION
, TLS1_2_VERSION
,
1462 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1463 SSL_HIGH
| SSL_FIPS
,
1464 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1468 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1471 TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA
,
1472 TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA
,
1473 TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA
,
1478 SSL3_VERSION
, TLS1_2_VERSION
,
1479 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1480 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1481 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1488 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA
,
1489 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA
,
1490 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA
,
1495 SSL3_VERSION
, TLS1_2_VERSION
,
1496 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1497 SSL_HIGH
| SSL_FIPS
,
1498 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1504 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA
,
1505 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA
,
1506 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA
,
1511 SSL3_VERSION
, TLS1_2_VERSION
,
1512 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1513 SSL_HIGH
| SSL_FIPS
,
1514 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1520 TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256
,
1521 TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256
,
1522 TLS1_CK_PSK_WITH_AES_128_GCM_SHA256
,
1527 TLS1_2_VERSION
, TLS1_2_VERSION
,
1528 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1529 SSL_HIGH
| SSL_FIPS
,
1530 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1536 TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384
,
1537 TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384
,
1538 TLS1_CK_PSK_WITH_AES_256_GCM_SHA384
,
1543 TLS1_2_VERSION
, TLS1_2_VERSION
,
1544 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1545 SSL_HIGH
| SSL_FIPS
,
1546 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1552 TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256
,
1553 TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256
,
1554 TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256
,
1559 TLS1_2_VERSION
, TLS1_2_VERSION
,
1560 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1561 SSL_HIGH
| SSL_FIPS
,
1562 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1568 TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384
,
1569 TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384
,
1570 TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384
,
1575 TLS1_2_VERSION
, TLS1_2_VERSION
,
1576 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1577 SSL_HIGH
| SSL_FIPS
,
1578 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1584 TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256
,
1585 TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256
,
1586 TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256
,
1591 TLS1_2_VERSION
, TLS1_2_VERSION
,
1592 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1593 SSL_HIGH
| SSL_FIPS
,
1594 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
1600 TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384
,
1601 TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384
,
1602 TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384
,
1607 TLS1_2_VERSION
, TLS1_2_VERSION
,
1608 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
1609 SSL_HIGH
| SSL_FIPS
,
1610 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1616 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256
,
1617 TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256
,
1618 TLS1_CK_PSK_WITH_AES_128_CBC_SHA256
,
1623 TLS1_VERSION
, TLS1_2_VERSION
,
1624 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1625 SSL_HIGH
| SSL_FIPS
,
1626 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1632 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384
,
1633 TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384
,
1634 TLS1_CK_PSK_WITH_AES_256_CBC_SHA384
,
1639 TLS1_VERSION
, TLS1_2_VERSION
,
1640 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1641 SSL_HIGH
| SSL_FIPS
,
1642 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1646 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1649 TLS1_TXT_PSK_WITH_NULL_SHA256
,
1650 TLS1_RFC_PSK_WITH_NULL_SHA256
,
1651 TLS1_CK_PSK_WITH_NULL_SHA256
,
1656 TLS1_VERSION
, TLS1_2_VERSION
,
1657 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1658 SSL_STRONG_NONE
| SSL_FIPS
,
1659 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1665 TLS1_TXT_PSK_WITH_NULL_SHA384
,
1666 TLS1_RFC_PSK_WITH_NULL_SHA384
,
1667 TLS1_CK_PSK_WITH_NULL_SHA384
,
1672 TLS1_VERSION
, TLS1_2_VERSION
,
1673 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1674 SSL_STRONG_NONE
| SSL_FIPS
,
1675 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1682 TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256
,
1683 TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256
,
1684 TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256
,
1689 TLS1_VERSION
, TLS1_2_VERSION
,
1690 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1691 SSL_HIGH
| SSL_FIPS
,
1692 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1698 TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384
,
1699 TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384
,
1700 TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384
,
1705 TLS1_VERSION
, TLS1_2_VERSION
,
1706 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1707 SSL_HIGH
| SSL_FIPS
,
1708 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1712 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1715 TLS1_TXT_DHE_PSK_WITH_NULL_SHA256
,
1716 TLS1_RFC_DHE_PSK_WITH_NULL_SHA256
,
1717 TLS1_CK_DHE_PSK_WITH_NULL_SHA256
,
1722 TLS1_VERSION
, TLS1_2_VERSION
,
1723 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1724 SSL_STRONG_NONE
| SSL_FIPS
,
1725 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1731 TLS1_TXT_DHE_PSK_WITH_NULL_SHA384
,
1732 TLS1_RFC_DHE_PSK_WITH_NULL_SHA384
,
1733 TLS1_CK_DHE_PSK_WITH_NULL_SHA384
,
1738 TLS1_VERSION
, TLS1_2_VERSION
,
1739 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1740 SSL_STRONG_NONE
| SSL_FIPS
,
1741 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1748 TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256
,
1749 TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256
,
1750 TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256
,
1755 TLS1_VERSION
, TLS1_2_VERSION
,
1756 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1757 SSL_HIGH
| SSL_FIPS
,
1758 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1764 TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384
,
1765 TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384
,
1766 TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384
,
1771 TLS1_VERSION
, TLS1_2_VERSION
,
1772 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1773 SSL_HIGH
| SSL_FIPS
,
1774 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1778 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1781 TLS1_TXT_RSA_PSK_WITH_NULL_SHA256
,
1782 TLS1_RFC_RSA_PSK_WITH_NULL_SHA256
,
1783 TLS1_CK_RSA_PSK_WITH_NULL_SHA256
,
1788 TLS1_VERSION
, TLS1_2_VERSION
,
1789 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1790 SSL_STRONG_NONE
| SSL_FIPS
,
1791 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1797 TLS1_TXT_RSA_PSK_WITH_NULL_SHA384
,
1798 TLS1_RFC_RSA_PSK_WITH_NULL_SHA384
,
1799 TLS1_CK_RSA_PSK_WITH_NULL_SHA384
,
1804 TLS1_VERSION
, TLS1_2_VERSION
,
1805 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1806 SSL_STRONG_NONE
| SSL_FIPS
,
1807 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1812 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1815 TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
,
1816 TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
,
1817 TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
,
1822 TLS1_VERSION
, TLS1_2_VERSION
,
1823 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1824 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1825 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1832 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA
,
1833 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA
,
1834 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA
,
1839 TLS1_VERSION
, TLS1_2_VERSION
,
1840 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1841 SSL_HIGH
| SSL_FIPS
,
1842 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1848 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA
,
1849 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA
,
1850 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA
,
1855 TLS1_VERSION
, TLS1_2_VERSION
,
1856 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1857 SSL_HIGH
| SSL_FIPS
,
1858 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1864 TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256
,
1865 TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256
,
1866 TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256
,
1871 TLS1_VERSION
, TLS1_2_VERSION
,
1872 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1873 SSL_HIGH
| SSL_FIPS
,
1874 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1880 TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384
,
1881 TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384
,
1882 TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384
,
1887 TLS1_VERSION
, TLS1_2_VERSION
,
1888 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1889 SSL_HIGH
| SSL_FIPS
,
1890 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1894 #ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
1897 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA
,
1898 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA
,
1899 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA
,
1904 TLS1_VERSION
, TLS1_2_VERSION
,
1905 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1906 SSL_STRONG_NONE
| SSL_FIPS
,
1907 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1913 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256
,
1914 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256
,
1915 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256
,
1920 TLS1_VERSION
, TLS1_2_VERSION
,
1921 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1922 SSL_STRONG_NONE
| SSL_FIPS
,
1923 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1929 TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384
,
1930 TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384
,
1931 TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384
,
1936 TLS1_VERSION
, TLS1_2_VERSION
,
1937 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1938 SSL_STRONG_NONE
| SSL_FIPS
,
1939 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
1944 # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
1947 TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA
,
1948 TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA
,
1949 TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA
,
1954 SSL3_VERSION
, TLS1_2_VERSION
,
1955 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1956 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1957 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1963 TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA
,
1964 TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA
,
1965 TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA
,
1970 SSL3_VERSION
, TLS1_2_VERSION
,
1971 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1972 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1973 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1979 TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA
,
1980 TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA
,
1981 TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA
,
1986 SSL3_VERSION
, TLS1_2_VERSION
,
1987 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
1988 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
1989 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
1996 TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA
,
1997 TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA
,
1998 TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA
,
2003 SSL3_VERSION
, TLS1_2_VERSION
,
2004 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2006 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2012 TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA
,
2013 TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA
,
2014 TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA
,
2019 SSL3_VERSION
, TLS1_2_VERSION
,
2020 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2022 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2028 TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA
,
2029 TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA
,
2030 TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA
,
2035 SSL3_VERSION
, TLS1_2_VERSION
,
2036 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2037 SSL_NOT_DEFAULT
| SSL_HIGH
,
2038 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2044 TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA
,
2045 TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA
,
2046 TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA
,
2051 SSL3_VERSION
, TLS1_2_VERSION
,
2052 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2054 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2060 TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA
,
2061 TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA
,
2062 TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA
,
2067 SSL3_VERSION
, TLS1_2_VERSION
,
2068 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2070 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2076 TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA
,
2077 TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA
,
2078 TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA
,
2083 SSL3_VERSION
, TLS1_2_VERSION
,
2084 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2085 SSL_NOT_DEFAULT
| SSL_HIGH
,
2086 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2093 TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305
,
2094 TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305
,
2095 TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305
,
2098 SSL_CHACHA20POLY1305
,
2100 TLS1_2_VERSION
, TLS1_2_VERSION
,
2101 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2103 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2109 TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305
,
2110 TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305
,
2111 TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305
,
2114 SSL_CHACHA20POLY1305
,
2116 TLS1_2_VERSION
, TLS1_2_VERSION
,
2117 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2119 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2125 TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
,
2126 TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
,
2127 TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
,
2130 SSL_CHACHA20POLY1305
,
2132 TLS1_2_VERSION
, TLS1_2_VERSION
,
2133 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2135 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2141 TLS1_TXT_PSK_WITH_CHACHA20_POLY1305
,
2142 TLS1_RFC_PSK_WITH_CHACHA20_POLY1305
,
2143 TLS1_CK_PSK_WITH_CHACHA20_POLY1305
,
2146 SSL_CHACHA20POLY1305
,
2148 TLS1_2_VERSION
, TLS1_2_VERSION
,
2149 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2151 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2157 TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305
,
2158 TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305
,
2159 TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305
,
2162 SSL_CHACHA20POLY1305
,
2164 TLS1_2_VERSION
, TLS1_2_VERSION
,
2165 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2167 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2173 TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305
,
2174 TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305
,
2175 TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305
,
2178 SSL_CHACHA20POLY1305
,
2180 TLS1_2_VERSION
, TLS1_2_VERSION
,
2181 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2183 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2189 TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305
,
2190 TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305
,
2191 TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305
,
2194 SSL_CHACHA20POLY1305
,
2196 TLS1_2_VERSION
, TLS1_2_VERSION
,
2197 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2199 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2206 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2207 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2208 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2213 TLS1_2_VERSION
, TLS1_2_VERSION
,
2214 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2215 SSL_NOT_DEFAULT
| SSL_HIGH
,
2216 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2222 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256
,
2223 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256
,
2224 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256
,
2229 TLS1_2_VERSION
, TLS1_2_VERSION
,
2230 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2231 SSL_NOT_DEFAULT
| SSL_HIGH
,
2232 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2238 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2239 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2240 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2245 TLS1_2_VERSION
, TLS1_2_VERSION
,
2246 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2247 SSL_NOT_DEFAULT
| SSL_HIGH
,
2248 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2254 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256
,
2255 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256
,
2256 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256
,
2261 TLS1_2_VERSION
, TLS1_2_VERSION
,
2262 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2263 SSL_NOT_DEFAULT
| SSL_HIGH
,
2264 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2270 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256
,
2271 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256
,
2272 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256
,
2277 TLS1_2_VERSION
, TLS1_2_VERSION
,
2278 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2279 SSL_NOT_DEFAULT
| SSL_HIGH
,
2280 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2286 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256
,
2287 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256
,
2288 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256
,
2293 TLS1_2_VERSION
, TLS1_2_VERSION
,
2294 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2295 SSL_NOT_DEFAULT
| SSL_HIGH
,
2296 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2302 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
,
2303 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
,
2304 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
,
2309 TLS1_2_VERSION
, TLS1_2_VERSION
,
2310 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2311 SSL_NOT_DEFAULT
| SSL_HIGH
,
2312 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2318 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256
,
2319 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256
,
2320 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256
,
2325 TLS1_2_VERSION
, TLS1_2_VERSION
,
2326 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2327 SSL_NOT_DEFAULT
| SSL_HIGH
,
2328 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2334 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA
,
2335 TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA
,
2336 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA
,
2341 SSL3_VERSION
, TLS1_2_VERSION
,
2342 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2343 SSL_NOT_DEFAULT
| SSL_HIGH
,
2344 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2350 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
,
2351 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
,
2352 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
,
2357 SSL3_VERSION
, TLS1_2_VERSION
,
2358 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2359 SSL_NOT_DEFAULT
| SSL_HIGH
,
2360 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2366 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
,
2367 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
,
2368 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
,
2373 SSL3_VERSION
, TLS1_2_VERSION
,
2374 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2375 SSL_NOT_DEFAULT
| SSL_HIGH
,
2376 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2382 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA
,
2383 TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA
,
2384 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA
,
2389 SSL3_VERSION
, TLS1_2_VERSION
,
2390 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2391 SSL_NOT_DEFAULT
| SSL_HIGH
,
2392 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2398 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA
,
2399 TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA
,
2400 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA
,
2405 SSL3_VERSION
, TLS1_2_VERSION
,
2406 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2407 SSL_NOT_DEFAULT
| SSL_HIGH
,
2408 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2414 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
,
2415 TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
,
2416 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
,
2421 SSL3_VERSION
, TLS1_2_VERSION
,
2422 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2423 SSL_NOT_DEFAULT
| SSL_HIGH
,
2424 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2430 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
,
2431 TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
,
2432 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
,
2437 SSL3_VERSION
, TLS1_2_VERSION
,
2438 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2439 SSL_NOT_DEFAULT
| SSL_HIGH
,
2440 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2446 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA
,
2447 TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA
,
2448 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA
,
2453 SSL3_VERSION
, TLS1_2_VERSION
,
2454 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2455 SSL_NOT_DEFAULT
| SSL_HIGH
,
2456 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2462 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
,
2463 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
,
2464 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
,
2469 TLS1_2_VERSION
, TLS1_2_VERSION
,
2470 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2471 SSL_NOT_DEFAULT
| SSL_HIGH
,
2472 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2478 TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
,
2479 TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
,
2480 TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
,
2485 TLS1_2_VERSION
, TLS1_2_VERSION
,
2486 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2487 SSL_NOT_DEFAULT
| SSL_HIGH
,
2488 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
2494 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2495 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2496 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
,
2501 TLS1_2_VERSION
, TLS1_2_VERSION
,
2502 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2503 SSL_NOT_DEFAULT
| SSL_HIGH
,
2504 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
2510 TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
,
2511 TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
,
2512 TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
,
2517 TLS1_2_VERSION
, TLS1_2_VERSION
,
2518 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
2519 SSL_NOT_DEFAULT
| SSL_HIGH
,
2520 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
2526 TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2527 TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2528 TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2533 TLS1_VERSION
, TLS1_2_VERSION
,
2534 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2535 SSL_NOT_DEFAULT
| SSL_HIGH
,
2536 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2542 TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2543 TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2544 TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2549 TLS1_VERSION
, TLS1_2_VERSION
,
2550 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2551 SSL_NOT_DEFAULT
| SSL_HIGH
,
2552 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
2558 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2559 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2560 TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2565 TLS1_VERSION
, TLS1_2_VERSION
,
2566 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2567 SSL_NOT_DEFAULT
| SSL_HIGH
,
2568 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2574 TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2575 TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2576 TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2581 TLS1_VERSION
, TLS1_2_VERSION
,
2582 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2583 SSL_NOT_DEFAULT
| SSL_HIGH
,
2584 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
2590 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2591 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2592 TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2597 TLS1_VERSION
, TLS1_2_VERSION
,
2598 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2599 SSL_NOT_DEFAULT
| SSL_HIGH
,
2600 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2606 TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2607 TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2608 TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2613 TLS1_VERSION
, TLS1_2_VERSION
,
2614 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2615 SSL_NOT_DEFAULT
| SSL_HIGH
,
2616 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
2622 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2623 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2624 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
,
2629 TLS1_VERSION
, TLS1_2_VERSION
,
2630 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2631 SSL_NOT_DEFAULT
| SSL_HIGH
,
2632 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2638 TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2639 TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2640 TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
,
2645 TLS1_VERSION
, TLS1_2_VERSION
,
2646 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2647 SSL_NOT_DEFAULT
| SSL_HIGH
,
2648 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
2653 #ifndef OPENSSL_NO_GOST
2656 "GOST2001-GOST89-GOST89",
2657 "TLS_GOSTR341001_WITH_28147_CNT_IMIT",
2661 SSL_eGOST2814789CNT
,
2663 TLS1_VERSION
, TLS1_2_VERSION
,
2666 SSL_HANDSHAKE_MAC_GOST94
| TLS1_PRF_GOST94
| TLS1_STREAM_MAC
,
2670 # ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
2673 "GOST2001-NULL-GOST94",
2674 "TLS_GOSTR341001_WITH_NULL_GOSTR3411",
2680 TLS1_VERSION
, TLS1_2_VERSION
,
2683 SSL_HANDSHAKE_MAC_GOST94
| TLS1_PRF_GOST94
,
2690 "IANA-GOST2012-GOST8912-GOST8912",
2694 SSL_aGOST12
| SSL_aGOST01
,
2695 SSL_eGOST2814789CNT12
,
2697 TLS1_VERSION
, TLS1_2_VERSION
,
2700 SSL_HANDSHAKE_MAC_GOST12_256
| TLS1_PRF_GOST12_256
| TLS1_STREAM_MAC
,
2706 "LEGACY-GOST2012-GOST8912-GOST8912",
2710 SSL_aGOST12
| SSL_aGOST01
,
2711 SSL_eGOST2814789CNT12
,
2713 TLS1_VERSION
, TLS1_2_VERSION
,
2716 SSL_HANDSHAKE_MAC_GOST12_256
| TLS1_PRF_GOST12_256
| TLS1_STREAM_MAC
,
2720 # ifndef OPENSSL_NO_INTEGRITY_ONLY_CIPHERS
2723 "GOST2012-NULL-GOST12",
2727 SSL_aGOST12
| SSL_aGOST01
,
2730 TLS1_VERSION
, TLS1_2_VERSION
,
2733 SSL_HANDSHAKE_MAC_GOST12_256
| TLS1_PRF_GOST12_256
| TLS1_STREAM_MAC
,
2740 "GOST2012-KUZNYECHIK-KUZNYECHIKOMAC",
2747 TLS1_2_VERSION
, TLS1_2_VERSION
,
2750 SSL_HANDSHAKE_MAC_GOST12_256
| TLS1_PRF_GOST12_256
| TLS1_TLSTREE
,
2756 "GOST2012-MAGMA-MAGMAOMAC",
2763 TLS1_2_VERSION
, TLS1_2_VERSION
,
2766 SSL_HANDSHAKE_MAC_GOST12_256
| TLS1_PRF_GOST12_256
| TLS1_TLSTREE
,
2770 #endif /* OPENSSL_NO_GOST */
2774 SSL3_TXT_RSA_IDEA_128_SHA
,
2775 SSL3_RFC_RSA_IDEA_128_SHA
,
2776 SSL3_CK_RSA_IDEA_128_SHA
,
2781 SSL3_VERSION
, TLS1_1_VERSION
,
2782 DTLS1_BAD_VER
, DTLS1_VERSION
,
2783 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2784 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2791 TLS1_TXT_RSA_WITH_SEED_SHA
,
2792 TLS1_RFC_RSA_WITH_SEED_SHA
,
2793 TLS1_CK_RSA_WITH_SEED_SHA
,
2798 SSL3_VERSION
, TLS1_2_VERSION
,
2799 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2800 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2801 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2807 TLS1_TXT_DHE_DSS_WITH_SEED_SHA
,
2808 TLS1_RFC_DHE_DSS_WITH_SEED_SHA
,
2809 TLS1_CK_DHE_DSS_WITH_SEED_SHA
,
2814 SSL3_VERSION
, TLS1_2_VERSION
,
2815 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2816 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2817 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2823 TLS1_TXT_DHE_RSA_WITH_SEED_SHA
,
2824 TLS1_RFC_DHE_RSA_WITH_SEED_SHA
,
2825 TLS1_CK_DHE_RSA_WITH_SEED_SHA
,
2830 SSL3_VERSION
, TLS1_2_VERSION
,
2831 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2832 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2833 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2839 TLS1_TXT_ADH_WITH_SEED_SHA
,
2840 TLS1_RFC_ADH_WITH_SEED_SHA
,
2841 TLS1_CK_ADH_WITH_SEED_SHA
,
2846 SSL3_VERSION
, TLS1_2_VERSION
,
2847 DTLS1_BAD_VER
, DTLS1_2_VERSION
,
2848 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2849 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2854 #ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
2857 SSL3_TXT_RSA_RC4_128_MD5
,
2858 SSL3_RFC_RSA_RC4_128_MD5
,
2859 SSL3_CK_RSA_RC4_128_MD5
,
2864 SSL3_VERSION
, TLS1_2_VERSION
,
2866 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2867 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2873 SSL3_TXT_RSA_RC4_128_SHA
,
2874 SSL3_RFC_RSA_RC4_128_SHA
,
2875 SSL3_CK_RSA_RC4_128_SHA
,
2880 SSL3_VERSION
, TLS1_2_VERSION
,
2882 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2883 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2889 SSL3_TXT_ADH_RC4_128_MD5
,
2890 SSL3_RFC_ADH_RC4_128_MD5
,
2891 SSL3_CK_ADH_RC4_128_MD5
,
2896 SSL3_VERSION
, TLS1_2_VERSION
,
2898 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2899 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2905 TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA
,
2906 TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA
,
2907 TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA
,
2912 TLS1_VERSION
, TLS1_2_VERSION
,
2914 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2915 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2921 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA
,
2922 TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA
,
2923 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA
,
2928 TLS1_VERSION
, TLS1_2_VERSION
,
2930 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2931 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2937 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA
,
2938 TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA
,
2939 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA
,
2944 TLS1_VERSION
, TLS1_2_VERSION
,
2946 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2947 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2953 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA
,
2954 TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA
,
2955 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA
,
2960 TLS1_VERSION
, TLS1_2_VERSION
,
2962 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2963 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2969 TLS1_TXT_PSK_WITH_RC4_128_SHA
,
2970 TLS1_RFC_PSK_WITH_RC4_128_SHA
,
2971 TLS1_CK_PSK_WITH_RC4_128_SHA
,
2976 SSL3_VERSION
, TLS1_2_VERSION
,
2978 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2979 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
2985 TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA
,
2986 TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA
,
2987 TLS1_CK_RSA_PSK_WITH_RC4_128_SHA
,
2992 SSL3_VERSION
, TLS1_2_VERSION
,
2994 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
2995 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
3001 TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA
,
3002 TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA
,
3003 TLS1_CK_DHE_PSK_WITH_RC4_128_SHA
,
3008 SSL3_VERSION
, TLS1_2_VERSION
,
3010 SSL_NOT_DEFAULT
| SSL_MEDIUM
,
3011 SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
,
3015 #endif /* OPENSSL_NO_WEAK_SSL_CIPHERS */
3019 TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256
,
3020 TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256
,
3021 TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256
,
3026 TLS1_2_VERSION
, TLS1_2_VERSION
,
3027 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3028 SSL_NOT_DEFAULT
| SSL_HIGH
,
3029 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3035 TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384
,
3036 TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384
,
3037 TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384
,
3042 TLS1_2_VERSION
, TLS1_2_VERSION
,
3043 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3044 SSL_NOT_DEFAULT
| SSL_HIGH
,
3045 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3051 TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256
,
3052 TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256
,
3053 TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256
,
3058 TLS1_2_VERSION
, TLS1_2_VERSION
,
3059 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3060 SSL_NOT_DEFAULT
| SSL_HIGH
,
3061 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3067 TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384
,
3068 TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384
,
3069 TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384
,
3074 TLS1_2_VERSION
, TLS1_2_VERSION
,
3075 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3076 SSL_NOT_DEFAULT
| SSL_HIGH
,
3077 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3083 TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256
,
3084 TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256
,
3085 TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256
,
3090 TLS1_2_VERSION
, TLS1_2_VERSION
,
3091 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3092 SSL_NOT_DEFAULT
| SSL_HIGH
,
3093 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3099 TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384
,
3100 TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384
,
3101 TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384
,
3106 TLS1_2_VERSION
, TLS1_2_VERSION
,
3107 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3108 SSL_NOT_DEFAULT
| SSL_HIGH
,
3109 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3115 TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256
,
3116 TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256
,
3117 TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256
,
3122 TLS1_2_VERSION
, TLS1_2_VERSION
,
3123 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3124 SSL_NOT_DEFAULT
| SSL_HIGH
,
3125 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3131 TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384
,
3132 TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384
,
3133 TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384
,
3138 TLS1_2_VERSION
, TLS1_2_VERSION
,
3139 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3140 SSL_NOT_DEFAULT
| SSL_HIGH
,
3141 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3147 TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256
,
3148 TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256
,
3149 TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256
,
3154 TLS1_2_VERSION
, TLS1_2_VERSION
,
3155 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3156 SSL_NOT_DEFAULT
| SSL_HIGH
,
3157 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3163 TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
,
3164 TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
,
3165 TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
,
3170 TLS1_2_VERSION
, TLS1_2_VERSION
,
3171 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3172 SSL_NOT_DEFAULT
| SSL_HIGH
,
3173 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3179 TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256
,
3180 TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256
,
3181 TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256
,
3186 TLS1_2_VERSION
, TLS1_2_VERSION
,
3187 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3188 SSL_NOT_DEFAULT
| SSL_HIGH
,
3189 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3195 TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384
,
3196 TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384
,
3197 TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384
,
3202 TLS1_2_VERSION
, TLS1_2_VERSION
,
3203 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3204 SSL_NOT_DEFAULT
| SSL_HIGH
,
3205 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3211 TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256
,
3212 TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256
,
3213 TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256
,
3218 TLS1_2_VERSION
, TLS1_2_VERSION
,
3219 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3220 SSL_NOT_DEFAULT
| SSL_HIGH
,
3221 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3227 TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384
,
3228 TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384
,
3229 TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384
,
3234 TLS1_2_VERSION
, TLS1_2_VERSION
,
3235 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3236 SSL_NOT_DEFAULT
| SSL_HIGH
,
3237 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3243 TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256
,
3244 TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256
,
3245 TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256
,
3250 TLS1_2_VERSION
, TLS1_2_VERSION
,
3251 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3252 SSL_NOT_DEFAULT
| SSL_HIGH
,
3253 SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
,
3259 TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384
,
3260 TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384
,
3261 TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384
,
3266 TLS1_2_VERSION
, TLS1_2_VERSION
,
3267 DTLS1_2_VERSION
, DTLS1_2_VERSION
,
3268 SSL_NOT_DEFAULT
| SSL_HIGH
,
3269 SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
,
3276 * The list of known Signalling Cipher-Suite Value "ciphers", non-valid
3277 * values stuffed into the ciphers field of the wire protocol for signalling
3280 static SSL_CIPHER ssl3_scsvs
[] = {
3283 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
3284 "TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
3286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3290 "TLS_FALLBACK_SCSV",
3291 "TLS_FALLBACK_SCSV",
3292 SSL3_CK_FALLBACK_SCSV
,
3293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3297 static int cipher_compare(const void *a
, const void *b
)
3299 const SSL_CIPHER
*ap
= (const SSL_CIPHER
*)a
;
3300 const SSL_CIPHER
*bp
= (const SSL_CIPHER
*)b
;
3302 if (ap
->id
== bp
->id
)
3304 return ap
->id
< bp
->id
? -1 : 1;
3307 void ssl_sort_cipher_list(void)
3309 qsort(tls13_ciphers
, TLS13_NUM_CIPHERS
, sizeof(tls13_ciphers
[0]),
3311 qsort(ssl3_ciphers
, SSL3_NUM_CIPHERS
, sizeof(ssl3_ciphers
[0]),
3313 qsort(ssl3_scsvs
, SSL3_NUM_SCSVS
, sizeof(ssl3_scsvs
[0]), cipher_compare
);
3316 static int sslcon_undefined_function_1(SSL_CONNECTION
*sc
, unsigned char *r
,
3317 size_t s
, const char *t
, size_t u
,
3318 const unsigned char *v
, size_t w
, int x
)
3327 return ssl_undefined_function(SSL_CONNECTION_GET_SSL(sc
));
3330 const SSL3_ENC_METHOD SSLv3_enc_data
= {
3331 ssl3_setup_key_block
,
3332 ssl3_generate_master_secret
,
3333 ssl3_change_cipher_state
,
3334 ssl3_final_finish_mac
,
3335 SSL3_MD_CLIENT_FINISHED_CONST
, 4,
3336 SSL3_MD_SERVER_FINISHED_CONST
, 4,
3338 sslcon_undefined_function_1
,
3340 ssl3_set_handshake_header
,
3341 tls_close_construct_packet
,
3342 ssl3_handshake_write
3345 OSSL_TIME
ssl3_default_timeout(void)
3348 * 2 hours, the 24 hours mentioned in the SSLv3 spec is way too long for
3349 * http, the cache would over fill
3351 return ossl_seconds2time(60 * 60 * 2);
3354 int ssl3_num_ciphers(void)
3356 return SSL3_NUM_CIPHERS
;
3359 const SSL_CIPHER
*ssl3_get_cipher(unsigned int u
)
3361 if (u
< SSL3_NUM_CIPHERS
)
3362 return &(ssl3_ciphers
[SSL3_NUM_CIPHERS
- 1 - u
]);
3367 int ssl3_set_handshake_header(SSL_CONNECTION
*s
, WPACKET
*pkt
, int htype
)
3369 /* No header in the event of a CCS */
3370 if (htype
== SSL3_MT_CHANGE_CIPHER_SPEC
)
3373 /* Set the content type and 3 bytes for the message len */
3374 if (!WPACKET_put_bytes_u8(pkt
, htype
)
3375 || !WPACKET_start_sub_packet_u24(pkt
))
3381 int ssl3_handshake_write(SSL_CONNECTION
*s
)
3383 return ssl3_do_write(s
, SSL3_RT_HANDSHAKE
);
3386 int ssl3_new(SSL
*s
)
3388 #ifndef OPENSSL_NO_SRP
3389 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
3394 if (!ssl_srp_ctx_init_intern(sc
))
3398 if (!s
->method
->ssl_clear(s
))
3404 void ssl3_free(SSL
*s
)
3406 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
3412 ssl3_cleanup_key_block(sc
);
3414 EVP_PKEY_free(sc
->s3
.peer_tmp
);
3415 sc
->s3
.peer_tmp
= NULL
;
3417 for (i
= 0; i
< sc
->s3
.tmp
.num_ks_pkey
; i
++)
3418 if (sc
->s3
.tmp
.ks_pkey
[i
] != NULL
) {
3419 if (sc
->s3
.tmp
.pkey
== sc
->s3
.tmp
.ks_pkey
[i
])
3420 sc
->s3
.tmp
.pkey
= NULL
;
3422 EVP_PKEY_free(sc
->s3
.tmp
.ks_pkey
[i
]);
3423 sc
->s3
.tmp
.ks_pkey
[i
] = NULL
;
3425 sc
->s3
.tmp
.num_ks_pkey
= 0;
3427 if (sc
->s3
.tmp
.pkey
!= NULL
) {
3428 EVP_PKEY_free(sc
->s3
.tmp
.pkey
);
3429 sc
->s3
.tmp
.pkey
= NULL
;
3432 ssl_evp_cipher_free(sc
->s3
.tmp
.new_sym_enc
);
3433 ssl_evp_md_free(sc
->s3
.tmp
.new_hash
);
3435 OPENSSL_free(sc
->s3
.tmp
.ctype
);
3436 sk_X509_NAME_pop_free(sc
->s3
.tmp
.peer_ca_names
, X509_NAME_free
);
3437 OPENSSL_free(sc
->s3
.tmp
.ciphers_raw
);
3438 OPENSSL_clear_free(sc
->s3
.tmp
.pms
, sc
->s3
.tmp
.pmslen
);
3439 OPENSSL_free(sc
->s3
.tmp
.peer_sigalgs
);
3440 OPENSSL_free(sc
->s3
.tmp
.peer_cert_sigalgs
);
3441 OPENSSL_free(sc
->s3
.tmp
.valid_flags
);
3442 ssl3_free_digest_list(sc
);
3443 OPENSSL_free(sc
->s3
.alpn_selected
);
3444 OPENSSL_free(sc
->s3
.alpn_proposed
);
3445 ossl_quic_tls_free(sc
->qtls
);
3447 #ifndef OPENSSL_NO_PSK
3448 OPENSSL_free(sc
->s3
.tmp
.psk
);
3451 #ifndef OPENSSL_NO_SRP
3452 ssl_srp_ctx_free_intern(sc
);
3454 memset(&sc
->s3
, 0, sizeof(sc
->s3
));
3457 int ssl3_clear(SSL
*s
)
3459 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
3466 ssl3_cleanup_key_block(sc
);
3467 OPENSSL_free(sc
->s3
.tmp
.ctype
);
3468 sk_X509_NAME_pop_free(sc
->s3
.tmp
.peer_ca_names
, X509_NAME_free
);
3469 OPENSSL_free(sc
->s3
.tmp
.ciphers_raw
);
3470 OPENSSL_clear_free(sc
->s3
.tmp
.pms
, sc
->s3
.tmp
.pmslen
);
3471 OPENSSL_free(sc
->s3
.tmp
.peer_sigalgs
);
3472 OPENSSL_free(sc
->s3
.tmp
.peer_cert_sigalgs
);
3473 OPENSSL_free(sc
->s3
.tmp
.valid_flags
);
3475 EVP_PKEY_free(sc
->s3
.peer_tmp
);
3477 for (i
= 0; i
< sc
->s3
.tmp
.num_ks_pkey
; i
++)
3478 if (sc
->s3
.tmp
.ks_pkey
[i
] != NULL
) {
3479 if (sc
->s3
.tmp
.pkey
== sc
->s3
.tmp
.ks_pkey
[i
])
3480 sc
->s3
.tmp
.pkey
= NULL
;
3482 EVP_PKEY_free(sc
->s3
.tmp
.ks_pkey
[i
]);
3483 sc
->s3
.tmp
.ks_pkey
[i
] = NULL
;
3485 sc
->s3
.tmp
.num_ks_pkey
= 0;
3487 if (sc
->s3
.tmp
.pkey
!= NULL
) {
3488 EVP_PKEY_free(sc
->s3
.tmp
.pkey
);
3489 sc
->s3
.tmp
.pkey
= NULL
;
3492 ssl3_free_digest_list(sc
);
3494 OPENSSL_free(sc
->s3
.alpn_selected
);
3495 OPENSSL_free(sc
->s3
.alpn_proposed
);
3498 * NULL/zero-out everything in the s3 struct, but remember if we are doing
3501 flags
= sc
->s3
.flags
& (TLS1_FLAGS_QUIC
| TLS1_FLAGS_QUIC_INTERNAL
);
3502 memset(&sc
->s3
, 0, sizeof(sc
->s3
));
3503 sc
->s3
.flags
|= flags
;
3505 if (!ssl_free_wbio_buffer(sc
))
3508 sc
->version
= SSL3_VERSION
;
3510 #if !defined(OPENSSL_NO_NEXTPROTONEG)
3511 OPENSSL_free(sc
->ext
.npn
);
3513 sc
->ext
.npn_len
= 0;
3519 #ifndef OPENSSL_NO_SRP
3520 static char *srp_password_from_info_cb(SSL
*s
, void *arg
)
3522 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
3527 return OPENSSL_strdup(sc
->srp_ctx
.info
);
3531 static int ssl3_set_req_cert_type(CERT
*c
, const unsigned char *p
, size_t len
);
3533 long ssl3_ctrl(SSL
*s
, int cmd
, long larg
, void *parg
)
3536 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
3542 case SSL_CTRL_GET_CLIENT_CERT_REQUEST
:
3544 case SSL_CTRL_GET_NUM_RENEGOTIATIONS
:
3545 ret
= sc
->s3
.num_renegotiations
;
3547 case SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS
:
3548 ret
= sc
->s3
.num_renegotiations
;
3549 sc
->s3
.num_renegotiations
= 0;
3551 case SSL_CTRL_GET_TOTAL_RENEGOTIATIONS
:
3552 ret
= sc
->s3
.total_renegotiations
;
3554 case SSL_CTRL_GET_FLAGS
:
3555 ret
= (int)(sc
->s3
.flags
);
3557 #if !defined(OPENSSL_NO_DEPRECATED_3_0)
3558 case SSL_CTRL_SET_TMP_DH
:
3560 EVP_PKEY
*pkdh
= NULL
;
3562 ERR_raise(ERR_LIB_SSL
, ERR_R_PASSED_NULL_PARAMETER
);
3565 pkdh
= ssl_dh_to_pkey(parg
);
3567 ERR_raise(ERR_LIB_SSL
, ERR_R_DH_LIB
);
3570 if (!SSL_set0_tmp_dh_pkey(s
, pkdh
)) {
3571 EVP_PKEY_free(pkdh
);
3577 case SSL_CTRL_SET_TMP_DH_CB
:
3579 ERR_raise(ERR_LIB_SSL
, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED
);
3583 case SSL_CTRL_SET_DH_AUTO
:
3584 sc
->cert
->dh_tmp_auto
= larg
;
3586 #if !defined(OPENSSL_NO_DEPRECATED_3_0)
3587 case SSL_CTRL_SET_TMP_ECDH
:
3590 ERR_raise(ERR_LIB_SSL
, ERR_R_PASSED_NULL_PARAMETER
);
3593 return ssl_set_tmp_ecdh_groups(&sc
->ext
.supportedgroups
,
3594 &sc
->ext
.supportedgroups_len
,
3596 &sc
->ext
.keyshares_len
,
3598 &sc
->ext
.tuples_len
,
3601 #endif /* !OPENSSL_NO_DEPRECATED_3_0 */
3602 case SSL_CTRL_SET_TLSEXT_HOSTNAME
:
3604 * This API is only used for a client to set what SNI it will request
3605 * from the server, but we currently allow it to be used on servers
3606 * as well, which is a programming error. Currently we just clear
3607 * the field in SSL_do_handshake() for server SSLs, but when we can
3608 * make ABI-breaking changes, we may want to make use of this API
3609 * an error on server SSLs.
3611 if (larg
== TLSEXT_NAMETYPE_host_name
) {
3614 OPENSSL_free(sc
->ext
.hostname
);
3615 sc
->ext
.hostname
= NULL
;
3620 len
= strlen((char *)parg
);
3621 if (len
== 0 || len
> TLSEXT_MAXLEN_host_name
) {
3622 ERR_raise(ERR_LIB_SSL
, SSL_R_SSL3_EXT_INVALID_SERVERNAME
);
3625 if ((sc
->ext
.hostname
= OPENSSL_strdup((char *)parg
)) == NULL
) {
3626 ERR_raise(ERR_LIB_SSL
, ERR_R_INTERNAL_ERROR
);
3630 ERR_raise(ERR_LIB_SSL
, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE
);
3634 case SSL_CTRL_SET_TLSEXT_DEBUG_ARG
:
3635 sc
->ext
.debug_arg
= parg
;
3639 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE
:
3640 ret
= sc
->ext
.status_type
;
3643 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE
:
3644 sc
->ext
.status_type
= larg
;
3648 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS
:
3649 *(STACK_OF(X509_EXTENSION
) **)parg
= sc
->ext
.ocsp
.exts
;
3653 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS
:
3654 sc
->ext
.ocsp
.exts
= parg
;
3658 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS
:
3659 *(STACK_OF(OCSP_RESPID
) **)parg
= sc
->ext
.ocsp
.ids
;
3663 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS
:
3664 sc
->ext
.ocsp
.ids
= parg
;
3668 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP
:
3669 *(unsigned char **)parg
= sc
->ext
.ocsp
.resp
;
3670 if (sc
->ext
.ocsp
.resp_len
== 0
3671 || sc
->ext
.ocsp
.resp_len
> LONG_MAX
)
3673 return (long)sc
->ext
.ocsp
.resp_len
;
3675 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP
:
3676 OPENSSL_free(sc
->ext
.ocsp
.resp
);
3677 sc
->ext
.ocsp
.resp
= parg
;
3678 sc
->ext
.ocsp
.resp_len
= larg
;
3682 case SSL_CTRL_CHAIN
:
3684 return ssl_cert_set1_chain(sc
, NULL
, (STACK_OF(X509
) *)parg
);
3686 return ssl_cert_set0_chain(sc
, NULL
, (STACK_OF(X509
) *)parg
);
3688 case SSL_CTRL_CHAIN_CERT
:
3690 return ssl_cert_add1_chain_cert(sc
, NULL
, (X509
*)parg
);
3692 return ssl_cert_add0_chain_cert(sc
, NULL
, (X509
*)parg
);
3694 case SSL_CTRL_GET_CHAIN_CERTS
:
3695 *(STACK_OF(X509
) **)parg
= sc
->cert
->key
->chain
;
3699 case SSL_CTRL_SELECT_CURRENT_CERT
:
3700 return ssl_cert_select_current(sc
->cert
, (X509
*)parg
);
3702 case SSL_CTRL_SET_CURRENT_CERT
:
3703 if (larg
== SSL_CERT_SET_SERVER
) {
3704 const SSL_CIPHER
*cipher
;
3707 cipher
= sc
->s3
.tmp
.new_cipher
;
3711 * No certificate for unauthenticated ciphersuites or using SRP
3714 if (cipher
->algorithm_auth
& (SSL_aNULL
| SSL_aSRP
))
3716 if (sc
->s3
.tmp
.cert
== NULL
)
3718 sc
->cert
->key
= sc
->s3
.tmp
.cert
;
3721 return ssl_cert_set_current(sc
->cert
, larg
);
3723 case SSL_CTRL_GET_GROUPS
:
3730 clist
= sc
->ext
.peer_supportedgroups
;
3731 clistlen
= sc
->ext
.peer_supportedgroups_len
;
3736 for (i
= 0; i
< clistlen
; i
++) {
3737 const TLS_GROUP_INFO
*cinf
3738 = tls1_group_id_lookup(s
->ctx
, clist
[i
]);
3741 cptr
[i
] = tls1_group_id2nid(cinf
->group_id
, 1);
3743 cptr
[i
] = TLSEXT_nid_unknown
| clist
[i
];
3746 return (int)clistlen
;
3749 case SSL_CTRL_SET_GROUPS
:
3750 return tls1_set_groups(&sc
->ext
.supportedgroups
,
3751 &sc
->ext
.supportedgroups_len
,
3753 &sc
->ext
.keyshares_len
,
3755 &sc
->ext
.tuples_len
,
3758 case SSL_CTRL_SET_GROUPS_LIST
:
3759 return tls1_set_groups_list(s
->ctx
,
3760 &sc
->ext
.supportedgroups
,
3761 &sc
->ext
.supportedgroups_len
,
3763 &sc
->ext
.keyshares_len
,
3765 &sc
->ext
.tuples_len
,
3768 case SSL_CTRL_GET_SHARED_GROUP
:
3770 uint16_t id
= tls1_shared_group(sc
, larg
);
3773 return tls1_group_id2nid(id
, 1);
3776 case SSL_CTRL_GET_NEGOTIATED_GROUP
:
3780 if (SSL_CONNECTION_IS_TLS13(sc
) && sc
->s3
.did_kex
)
3781 id
= sc
->s3
.group_id
;
3783 id
= (sc
->session
!= NULL
) ? sc
->session
->kex_group
: NID_undef
;
3784 ret
= tls1_group_id2nid(id
, 1);
3787 case SSL_CTRL_SET_SIGALGS
:
3788 return tls1_set_sigalgs(sc
->cert
, parg
, larg
, 0);
3790 case SSL_CTRL_SET_SIGALGS_LIST
:
3791 return tls1_set_sigalgs_list(s
->ctx
, sc
->cert
, parg
, 0);
3793 case SSL_CTRL_SET_CLIENT_SIGALGS
:
3794 return tls1_set_sigalgs(sc
->cert
, parg
, larg
, 1);
3796 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST
:
3797 return tls1_set_sigalgs_list(s
->ctx
, sc
->cert
, parg
, 1);
3799 case SSL_CTRL_GET_CLIENT_CERT_TYPES
:
3801 const unsigned char **pctype
= parg
;
3802 if (sc
->server
|| !sc
->s3
.tmp
.cert_req
)
3805 *pctype
= sc
->s3
.tmp
.ctype
;
3806 return (long)sc
->s3
.tmp
.ctype_len
;
3809 case SSL_CTRL_SET_CLIENT_CERT_TYPES
:
3812 return ssl3_set_req_cert_type(sc
->cert
, parg
, larg
);
3814 case SSL_CTRL_BUILD_CERT_CHAIN
:
3815 return ssl_build_cert_chain(sc
, NULL
, larg
);
3817 case SSL_CTRL_SET_VERIFY_CERT_STORE
:
3818 return ssl_cert_set_cert_store(sc
->cert
, parg
, 0, larg
);
3820 case SSL_CTRL_SET_CHAIN_CERT_STORE
:
3821 return ssl_cert_set_cert_store(sc
->cert
, parg
, 1, larg
);
3823 case SSL_CTRL_GET_VERIFY_CERT_STORE
:
3824 return ssl_cert_get_cert_store(sc
->cert
, parg
, 0);
3826 case SSL_CTRL_GET_CHAIN_CERT_STORE
:
3827 return ssl_cert_get_cert_store(sc
->cert
, parg
, 1);
3829 case SSL_CTRL_GET_PEER_SIGNATURE_NAME
:
3830 if (parg
== NULL
|| sc
->s3
.tmp
.peer_sigalg
== NULL
)
3832 *(const char **)parg
= sc
->s3
.tmp
.peer_sigalg
->name
;
3835 case SSL_CTRL_GET_PEER_SIGNATURE_NID
:
3836 if (sc
->s3
.tmp
.peer_sigalg
== NULL
)
3838 *(int *)parg
= sc
->s3
.tmp
.peer_sigalg
->hash
;
3841 case SSL_CTRL_GET_SIGNATURE_NAME
:
3842 if (parg
== NULL
|| sc
->s3
.tmp
.sigalg
== NULL
)
3844 *(const char **)parg
= sc
->s3
.tmp
.sigalg
->name
;
3847 case SSL_CTRL_GET_SIGNATURE_NID
:
3848 if (sc
->s3
.tmp
.sigalg
== NULL
)
3850 *(int *)parg
= sc
->s3
.tmp
.sigalg
->hash
;
3853 case SSL_CTRL_GET_PEER_TMP_KEY
:
3854 if (sc
->session
== NULL
|| sc
->s3
.peer_tmp
== NULL
) {
3857 if (!EVP_PKEY_up_ref(sc
->s3
.peer_tmp
))
3860 *(EVP_PKEY
**)parg
= sc
->s3
.peer_tmp
;
3864 case SSL_CTRL_GET_TMP_KEY
:
3865 if (sc
->session
== NULL
|| sc
->s3
.tmp
.pkey
== NULL
) {
3868 if (!EVP_PKEY_up_ref(sc
->s3
.tmp
.pkey
))
3871 *(EVP_PKEY
**)parg
= sc
->s3
.tmp
.pkey
;
3875 case SSL_CTRL_GET_EC_POINT_FORMATS
:
3877 const unsigned char **pformat
= parg
;
3879 if (sc
->ext
.peer_ecpointformats
== NULL
)
3881 *pformat
= sc
->ext
.peer_ecpointformats
;
3882 return (int)sc
->ext
.peer_ecpointformats_len
;
3885 case SSL_CTRL_GET_IANA_GROUPS
:
3888 *(uint16_t **)parg
= (uint16_t *)sc
->ext
.peer_supportedgroups
;
3890 return (int)sc
->ext
.peer_supportedgroups_len
;
3893 case SSL_CTRL_SET_MSG_CALLBACK_ARG
:
3894 sc
->msg_callback_arg
= parg
;
3903 long ssl3_callback_ctrl(SSL
*s
, int cmd
, void (*fp
) (void))
3906 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
3912 #if !defined(OPENSSL_NO_DEPRECATED_3_0)
3913 case SSL_CTRL_SET_TMP_DH_CB
:
3914 sc
->cert
->dh_tmp_cb
= (DH
*(*)(SSL
*, int, int))fp
;
3918 case SSL_CTRL_SET_TLSEXT_DEBUG_CB
:
3919 sc
->ext
.debug_cb
= (void (*)(SSL
*, int, int,
3920 const unsigned char *, int, void *))fp
;
3924 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB
:
3925 sc
->not_resumable_session_cb
= (int (*)(SSL
*, int))fp
;
3929 case SSL_CTRL_SET_MSG_CALLBACK
:
3930 sc
->msg_callback
= (ossl_msg_cb
)fp
;
3938 long ssl3_ctx_ctrl(SSL_CTX
*ctx
, int cmd
, long larg
, void *parg
)
3941 #if !defined(OPENSSL_NO_DEPRECATED_3_0)
3942 case SSL_CTRL_SET_TMP_DH
:
3944 EVP_PKEY
*pkdh
= NULL
;
3946 ERR_raise(ERR_LIB_SSL
, ERR_R_PASSED_NULL_PARAMETER
);
3949 pkdh
= ssl_dh_to_pkey(parg
);
3951 ERR_raise(ERR_LIB_SSL
, ERR_R_DH_LIB
);
3954 if (!SSL_CTX_set0_tmp_dh_pkey(ctx
, pkdh
)) {
3955 EVP_PKEY_free(pkdh
);
3960 case SSL_CTRL_SET_TMP_DH_CB
:
3962 ERR_raise(ERR_LIB_SSL
, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED
);
3966 case SSL_CTRL_SET_DH_AUTO
:
3967 ctx
->cert
->dh_tmp_auto
= larg
;
3969 #if !defined(OPENSSL_NO_DEPRECATED_3_0)
3970 case SSL_CTRL_SET_TMP_ECDH
:
3973 ERR_raise(ERR_LIB_SSL
, ERR_R_PASSED_NULL_PARAMETER
);
3976 return ssl_set_tmp_ecdh_groups(&ctx
->ext
.supportedgroups
,
3977 &ctx
->ext
.supportedgroups_len
,
3978 &ctx
->ext
.keyshares
,
3979 &ctx
->ext
.keyshares_len
,
3981 &ctx
->ext
.tuples_len
,
3984 #endif /* !OPENSSL_NO_DEPRECATED_3_0 */
3985 case SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
:
3986 ctx
->ext
.servername_arg
= parg
;
3988 case SSL_CTRL_SET_TLSEXT_TICKET_KEYS
:
3989 case SSL_CTRL_GET_TLSEXT_TICKET_KEYS
:
3991 unsigned char *keys
= parg
;
3992 long tick_keylen
= (sizeof(ctx
->ext
.tick_key_name
) +
3993 sizeof(ctx
->ext
.secure
->tick_hmac_key
) +
3994 sizeof(ctx
->ext
.secure
->tick_aes_key
));
3997 if (larg
!= tick_keylen
) {
3998 ERR_raise(ERR_LIB_SSL
, SSL_R_INVALID_TICKET_KEYS_LENGTH
);
4001 if (cmd
== SSL_CTRL_SET_TLSEXT_TICKET_KEYS
) {
4002 memcpy(ctx
->ext
.tick_key_name
, keys
,
4003 sizeof(ctx
->ext
.tick_key_name
));
4004 memcpy(ctx
->ext
.secure
->tick_hmac_key
,
4005 keys
+ sizeof(ctx
->ext
.tick_key_name
),
4006 sizeof(ctx
->ext
.secure
->tick_hmac_key
));
4007 memcpy(ctx
->ext
.secure
->tick_aes_key
,
4008 keys
+ sizeof(ctx
->ext
.tick_key_name
) +
4009 sizeof(ctx
->ext
.secure
->tick_hmac_key
),
4010 sizeof(ctx
->ext
.secure
->tick_aes_key
));
4012 memcpy(keys
, ctx
->ext
.tick_key_name
,
4013 sizeof(ctx
->ext
.tick_key_name
));
4014 memcpy(keys
+ sizeof(ctx
->ext
.tick_key_name
),
4015 ctx
->ext
.secure
->tick_hmac_key
,
4016 sizeof(ctx
->ext
.secure
->tick_hmac_key
));
4017 memcpy(keys
+ sizeof(ctx
->ext
.tick_key_name
) +
4018 sizeof(ctx
->ext
.secure
->tick_hmac_key
),
4019 ctx
->ext
.secure
->tick_aes_key
,
4020 sizeof(ctx
->ext
.secure
->tick_aes_key
));
4025 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE
:
4026 return ctx
->ext
.status_type
;
4028 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE
:
4029 ctx
->ext
.status_type
= larg
;
4032 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG
:
4033 ctx
->ext
.status_arg
= parg
;
4036 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG
:
4037 *(void**)parg
= ctx
->ext
.status_arg
;
4040 case SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB
:
4041 *(int (**)(SSL
*, void*))parg
= ctx
->ext
.status_cb
;
4044 #ifndef OPENSSL_NO_SRP
4045 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME
:
4046 ctx
->srp_ctx
.srp_Mask
|= SSL_kSRP
;
4047 OPENSSL_free(ctx
->srp_ctx
.login
);
4048 ctx
->srp_ctx
.login
= NULL
;
4051 if (strlen((const char *)parg
) > 255 || strlen((const char *)parg
) < 1) {
4052 ERR_raise(ERR_LIB_SSL
, SSL_R_INVALID_SRP_USERNAME
);
4055 if ((ctx
->srp_ctx
.login
= OPENSSL_strdup((char *)parg
)) == NULL
) {
4056 ERR_raise(ERR_LIB_SSL
, ERR_R_INTERNAL_ERROR
);
4060 case SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD
:
4061 ctx
->srp_ctx
.SRP_give_srp_client_pwd_callback
=
4062 srp_password_from_info_cb
;
4063 if (ctx
->srp_ctx
.info
!= NULL
)
4064 OPENSSL_free(ctx
->srp_ctx
.info
);
4065 if ((ctx
->srp_ctx
.info
= OPENSSL_strdup((char *)parg
)) == NULL
) {
4066 ERR_raise(ERR_LIB_SSL
, ERR_R_INTERNAL_ERROR
);
4070 case SSL_CTRL_SET_SRP_ARG
:
4071 ctx
->srp_ctx
.srp_Mask
|= SSL_kSRP
;
4072 ctx
->srp_ctx
.SRP_cb_arg
= parg
;
4075 case SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH
:
4076 ctx
->srp_ctx
.strength
= larg
;
4080 case SSL_CTRL_SET_GROUPS
:
4081 return tls1_set_groups(&ctx
->ext
.supportedgroups
,
4082 &ctx
->ext
.supportedgroups_len
,
4083 &ctx
->ext
.keyshares
,
4084 &ctx
->ext
.keyshares_len
,
4086 &ctx
->ext
.tuples_len
,
4089 case SSL_CTRL_SET_GROUPS_LIST
:
4090 return tls1_set_groups_list(ctx
,
4091 &ctx
->ext
.supportedgroups
,
4092 &ctx
->ext
.supportedgroups_len
,
4093 &ctx
->ext
.keyshares
,
4094 &ctx
->ext
.keyshares_len
,
4096 &ctx
->ext
.tuples_len
,
4099 case SSL_CTRL_GET0_IMPLEMENTED_GROUPS
:
4100 return tls1_get0_implemented_groups(ctx
->min_proto_version
,
4101 ctx
->max_proto_version
,
4103 ctx
->group_list_len
, larg
, parg
);
4105 case SSL_CTRL_SET_SIGALGS
:
4106 return tls1_set_sigalgs(ctx
->cert
, parg
, larg
, 0);
4108 case SSL_CTRL_SET_SIGALGS_LIST
:
4109 return tls1_set_sigalgs_list(ctx
, ctx
->cert
, parg
, 0);
4111 case SSL_CTRL_SET_CLIENT_SIGALGS
:
4112 return tls1_set_sigalgs(ctx
->cert
, parg
, larg
, 1);
4114 case SSL_CTRL_SET_CLIENT_SIGALGS_LIST
:
4115 return tls1_set_sigalgs_list(ctx
, ctx
->cert
, parg
, 1);
4117 case SSL_CTRL_SET_CLIENT_CERT_TYPES
:
4118 return ssl3_set_req_cert_type(ctx
->cert
, parg
, larg
);
4120 case SSL_CTRL_BUILD_CERT_CHAIN
:
4121 return ssl_build_cert_chain(NULL
, ctx
, larg
);
4123 case SSL_CTRL_SET_VERIFY_CERT_STORE
:
4124 return ssl_cert_set_cert_store(ctx
->cert
, parg
, 0, larg
);
4126 case SSL_CTRL_SET_CHAIN_CERT_STORE
:
4127 return ssl_cert_set_cert_store(ctx
->cert
, parg
, 1, larg
);
4129 case SSL_CTRL_GET_VERIFY_CERT_STORE
:
4130 return ssl_cert_get_cert_store(ctx
->cert
, parg
, 0);
4132 case SSL_CTRL_GET_CHAIN_CERT_STORE
:
4133 return ssl_cert_get_cert_store(ctx
->cert
, parg
, 1);
4135 /* A Thawte special :-) */
4136 case SSL_CTRL_EXTRA_CHAIN_CERT
:
4137 if (ctx
->extra_certs
== NULL
) {
4138 if ((ctx
->extra_certs
= sk_X509_new_null()) == NULL
) {
4139 ERR_raise(ERR_LIB_SSL
, ERR_R_CRYPTO_LIB
);
4143 if (!sk_X509_push(ctx
->extra_certs
, (X509
*)parg
)) {
4144 ERR_raise(ERR_LIB_SSL
, ERR_R_CRYPTO_LIB
);
4149 case SSL_CTRL_GET_EXTRA_CHAIN_CERTS
:
4150 if (ctx
->extra_certs
== NULL
&& larg
== 0)
4151 *(STACK_OF(X509
) **)parg
= ctx
->cert
->key
->chain
;
4153 *(STACK_OF(X509
) **)parg
= ctx
->extra_certs
;
4156 case SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS
:
4157 OSSL_STACK_OF_X509_free(ctx
->extra_certs
);
4158 ctx
->extra_certs
= NULL
;
4161 case SSL_CTRL_CHAIN
:
4163 return ssl_cert_set1_chain(NULL
, ctx
, (STACK_OF(X509
) *)parg
);
4165 return ssl_cert_set0_chain(NULL
, ctx
, (STACK_OF(X509
) *)parg
);
4167 case SSL_CTRL_CHAIN_CERT
:
4169 return ssl_cert_add1_chain_cert(NULL
, ctx
, (X509
*)parg
);
4171 return ssl_cert_add0_chain_cert(NULL
, ctx
, (X509
*)parg
);
4173 case SSL_CTRL_GET_CHAIN_CERTS
:
4174 *(STACK_OF(X509
) **)parg
= ctx
->cert
->key
->chain
;
4177 case SSL_CTRL_SELECT_CURRENT_CERT
:
4178 return ssl_cert_select_current(ctx
->cert
, (X509
*)parg
);
4180 case SSL_CTRL_SET_CURRENT_CERT
:
4181 return ssl_cert_set_current(ctx
->cert
, larg
);
4189 long ssl3_ctx_callback_ctrl(SSL_CTX
*ctx
, int cmd
, void (*fp
) (void))
4192 #if !defined(OPENSSL_NO_DEPRECATED_3_0)
4193 case SSL_CTRL_SET_TMP_DH_CB
:
4195 ctx
->cert
->dh_tmp_cb
= (DH
*(*)(SSL
*, int, int))fp
;
4199 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
:
4200 ctx
->ext
.servername_cb
= (int (*)(SSL
*, int *, void *))fp
;
4203 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB
:
4204 ctx
->ext
.status_cb
= (int (*)(SSL
*, void *))fp
;
4207 # ifndef OPENSSL_NO_DEPRECATED_3_0
4208 case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB
:
4209 ctx
->ext
.ticket_key_cb
= (int (*)(SSL
*, unsigned char *,
4212 HMAC_CTX
*, int))fp
;
4216 #ifndef OPENSSL_NO_SRP
4217 case SSL_CTRL_SET_SRP_VERIFY_PARAM_CB
:
4218 ctx
->srp_ctx
.srp_Mask
|= SSL_kSRP
;
4219 ctx
->srp_ctx
.SRP_verify_param_callback
= (int (*)(SSL
*, void *))fp
;
4221 case SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB
:
4222 ctx
->srp_ctx
.srp_Mask
|= SSL_kSRP
;
4223 ctx
->srp_ctx
.TLS_ext_srp_username_callback
=
4224 (int (*)(SSL
*, int *, void *))fp
;
4226 case SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB
:
4227 ctx
->srp_ctx
.srp_Mask
|= SSL_kSRP
;
4228 ctx
->srp_ctx
.SRP_give_srp_client_pwd_callback
=
4229 (char *(*)(SSL
*, void *))fp
;
4232 case SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB
:
4234 ctx
->not_resumable_session_cb
= (int (*)(SSL
*, int))fp
;
4243 int SSL_CTX_set_tlsext_ticket_key_evp_cb
4244 (SSL_CTX
*ctx
, int (*fp
)(SSL
*, unsigned char *, unsigned char *,
4245 EVP_CIPHER_CTX
*, EVP_MAC_CTX
*, int))
4247 ctx
->ext
.ticket_key_evp_cb
= fp
;
4251 const SSL_CIPHER
*ssl3_get_cipher_by_id(uint32_t id
)
4254 const SSL_CIPHER
*cp
;
4257 cp
= OBJ_bsearch_ssl_cipher_id(&c
, tls13_ciphers
, TLS13_NUM_CIPHERS
);
4260 cp
= OBJ_bsearch_ssl_cipher_id(&c
, ssl3_ciphers
, SSL3_NUM_CIPHERS
);
4263 return OBJ_bsearch_ssl_cipher_id(&c
, ssl3_scsvs
, SSL3_NUM_SCSVS
);
4266 const SSL_CIPHER
*ssl3_get_cipher_by_std_name(const char *stdname
)
4269 SSL_CIPHER
*alltabs
[] = {tls13_ciphers
, ssl3_ciphers
, ssl3_scsvs
};
4270 size_t i
, j
, tblsize
[] = {TLS13_NUM_CIPHERS
, SSL3_NUM_CIPHERS
,
4273 /* this is not efficient, necessary to optimize this? */
4274 for (j
= 0; j
< OSSL_NELEM(alltabs
); j
++) {
4275 for (i
= 0, tbl
= alltabs
[j
]; i
< tblsize
[j
]; i
++, tbl
++) {
4276 if (tbl
->stdname
== NULL
)
4278 if (strcmp(stdname
, tbl
->stdname
) == 0) {
4287 * This function needs to check if the ciphers required are actually
4290 const SSL_CIPHER
*ssl3_get_cipher_by_char(const unsigned char *p
)
4292 return ssl3_get_cipher_by_id(SSL3_CK_CIPHERSUITE_FLAG
4293 | ((uint32_t)p
[0] << 8L)
4297 int ssl3_put_cipher_by_char(const SSL_CIPHER
*c
, WPACKET
*pkt
, size_t *len
)
4299 if ((c
->id
& 0xff000000) != SSL3_CK_CIPHERSUITE_FLAG
) {
4304 if (!WPACKET_put_bytes_u16(pkt
, c
->id
& 0xffff))
4312 * ssl3_choose_cipher - choose a cipher from those offered by the client
4313 * @s: SSL connection
4314 * @clnt: ciphers offered by the client
4315 * @srvr: ciphers enabled on the server?
4317 * Returns the selected cipher or NULL when no common ciphers.
4319 const SSL_CIPHER
*ssl3_choose_cipher(SSL_CONNECTION
*s
, STACK_OF(SSL_CIPHER
) *clnt
,
4320 STACK_OF(SSL_CIPHER
) *srvr
)
4322 const SSL_CIPHER
*c
, *ret
= NULL
;
4323 STACK_OF(SSL_CIPHER
) *prio
, *allow
;
4324 int i
, ii
, ok
, prefer_sha256
= 0;
4325 unsigned long alg_k
= 0, alg_a
= 0, mask_k
= 0, mask_a
= 0;
4326 STACK_OF(SSL_CIPHER
) *prio_chacha
= NULL
;
4328 /* Let's see which ciphers we can support */
4331 * Do not set the compare functions, because this may lead to a
4332 * reordering by "id". We want to keep the original ordering. We may pay
4333 * a price in performance during sk_SSL_CIPHER_find(), but would have to
4334 * pay with the price of sk_SSL_CIPHER_dup().
4337 OSSL_TRACE_BEGIN(TLS_CIPHER
) {
4338 BIO_printf(trc_out
, "Server has %d from %p:\n",
4339 sk_SSL_CIPHER_num(srvr
), (void *)srvr
);
4340 for (i
= 0; i
< sk_SSL_CIPHER_num(srvr
); ++i
) {
4341 c
= sk_SSL_CIPHER_value(srvr
, i
);
4342 BIO_printf(trc_out
, "%p:%s\n", (void *)c
, c
->name
);
4344 BIO_printf(trc_out
, "Client sent %d from %p:\n",
4345 sk_SSL_CIPHER_num(clnt
), (void *)clnt
);
4346 for (i
= 0; i
< sk_SSL_CIPHER_num(clnt
); ++i
) {
4347 c
= sk_SSL_CIPHER_value(clnt
, i
);
4348 BIO_printf(trc_out
, "%p:%s\n", (void *)c
, c
->name
);
4350 } OSSL_TRACE_END(TLS_CIPHER
);
4352 /* SUITE-B takes precedence over server preference and ChaCha priortiy */
4353 if (tls1_suiteb(s
)) {
4356 } else if (s
->options
& SSL_OP_CIPHER_SERVER_PREFERENCE
) {
4360 /* If ChaCha20 is at the top of the client preference list,
4361 and there are ChaCha20 ciphers in the server list, then
4362 temporarily prioritize all ChaCha20 ciphers in the servers list. */
4363 if (s
->options
& SSL_OP_PRIORITIZE_CHACHA
&& sk_SSL_CIPHER_num(clnt
) > 0) {
4364 c
= sk_SSL_CIPHER_value(clnt
, 0);
4365 if (c
->algorithm_enc
== SSL_CHACHA20POLY1305
) {
4366 /* ChaCha20 is client preferred, check server... */
4367 int num
= sk_SSL_CIPHER_num(srvr
);
4369 for (i
= 0; i
< num
; i
++) {
4370 c
= sk_SSL_CIPHER_value(srvr
, i
);
4371 if (c
->algorithm_enc
== SSL_CHACHA20POLY1305
) {
4377 prio_chacha
= sk_SSL_CIPHER_new_reserve(NULL
, num
);
4378 /* if reserve fails, then there's likely a memory issue */
4379 if (prio_chacha
!= NULL
) {
4380 /* Put all ChaCha20 at the top, starting with the one we just found */
4381 sk_SSL_CIPHER_push(prio_chacha
, c
);
4382 for (i
++; i
< num
; i
++) {
4383 c
= sk_SSL_CIPHER_value(srvr
, i
);
4384 if (c
->algorithm_enc
== SSL_CHACHA20POLY1305
)
4385 sk_SSL_CIPHER_push(prio_chacha
, c
);
4387 /* Pull in the rest */
4388 for (i
= 0; i
< num
; i
++) {
4389 c
= sk_SSL_CIPHER_value(srvr
, i
);
4390 if (c
->algorithm_enc
!= SSL_CHACHA20POLY1305
)
4391 sk_SSL_CIPHER_push(prio_chacha
, c
);
4403 if (SSL_CONNECTION_IS_TLS13(s
)) {
4404 #ifndef OPENSSL_NO_PSK
4408 * If we allow "old" style PSK callbacks, and we have no certificate (so
4409 * we're not going to succeed without a PSK anyway), and we're in
4410 * TLSv1.3 then the default hash for a PSK is SHA-256 (as per the
4411 * TLSv1.3 spec). Therefore we should prioritise ciphersuites using
4414 if (s
->psk_server_callback
!= NULL
) {
4415 for (j
= 0; j
< s
->ssl_pkey_num
&& !ssl_has_cert(s
, (int)j
); j
++);
4416 if (j
== s
->ssl_pkey_num
) {
4417 /* There are no certificates */
4423 tls1_set_cert_validity(s
);
4427 for (i
= 0; i
< sk_SSL_CIPHER_num(prio
); i
++) {
4428 int minversion
, maxversion
;
4430 c
= sk_SSL_CIPHER_value(prio
, i
);
4431 minversion
= SSL_CONNECTION_IS_DTLS(s
) ? c
->min_dtls
: c
->min_tls
;
4432 maxversion
= SSL_CONNECTION_IS_DTLS(s
) ? c
->max_dtls
: c
->max_tls
;
4434 /* Skip ciphers not supported by the protocol version */
4435 if (ssl_version_cmp(s
, s
->version
, minversion
) < 0
4436 || ssl_version_cmp(s
, s
->version
, maxversion
) > 0)
4440 * Since TLS 1.3 ciphersuites can be used with any auth or
4441 * key exchange scheme skip tests.
4443 if (!SSL_CONNECTION_IS_TLS13(s
)) {
4444 mask_k
= s
->s3
.tmp
.mask_k
;
4445 mask_a
= s
->s3
.tmp
.mask_a
;
4446 #ifndef OPENSSL_NO_SRP
4447 if (s
->srp_ctx
.srp_Mask
& SSL_kSRP
) {
4453 alg_k
= c
->algorithm_mkey
;
4454 alg_a
= c
->algorithm_auth
;
4456 #ifndef OPENSSL_NO_PSK
4457 /* with PSK there must be server callback set */
4458 if ((alg_k
& SSL_PSK
) && s
->psk_server_callback
== NULL
)
4460 #endif /* OPENSSL_NO_PSK */
4462 ok
= (alg_k
& mask_k
) && (alg_a
& mask_a
);
4463 OSSL_TRACE7(TLS_CIPHER
,
4464 "%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n",
4465 ok
, alg_k
, alg_a
, mask_k
, mask_a
, (void *)c
, c
->name
);
4468 * if we are considering an ECC cipher suite that uses an ephemeral
4471 if (alg_k
& SSL_kECDHE
)
4472 ok
= ok
&& tls1_check_ec_tmp_key(s
, c
->id
);
4477 ii
= sk_SSL_CIPHER_find(allow
, c
);
4479 /* Check security callback permits this cipher */
4480 if (!ssl_security(s
, SSL_SECOP_CIPHER_SHARED
,
4481 c
->strength_bits
, 0, (void *)c
))
4484 if ((alg_k
& SSL_kECDHE
) && (alg_a
& SSL_aECDSA
)
4485 && s
->s3
.is_probably_safari
) {
4487 ret
= sk_SSL_CIPHER_value(allow
, ii
);
4491 if (prefer_sha256
) {
4492 const SSL_CIPHER
*tmp
= sk_SSL_CIPHER_value(allow
, ii
);
4493 const EVP_MD
*md
= ssl_md(SSL_CONNECTION_GET_CTX(s
),
4497 && EVP_MD_is_a(md
, OSSL_DIGEST_NAME_SHA2_256
)) {
4505 ret
= sk_SSL_CIPHER_value(allow
, ii
);
4510 sk_SSL_CIPHER_free(prio_chacha
);
4515 int ssl3_get_req_cert_type(SSL_CONNECTION
*s
, WPACKET
*pkt
)
4517 uint32_t alg_k
, alg_a
= 0;
4519 /* If we have custom certificate types set, use them */
4521 return WPACKET_memcpy(pkt
, s
->cert
->ctype
, s
->cert
->ctype_len
);
4522 /* Get mask of algorithms disabled by signature list */
4523 ssl_set_sig_mask(&alg_a
, s
, SSL_SECOP_SIGALG_MASK
);
4525 alg_k
= s
->s3
.tmp
.new_cipher
->algorithm_mkey
;
4527 #ifndef OPENSSL_NO_GOST
4528 if (s
->version
>= TLS1_VERSION
&& (alg_k
& SSL_kGOST
))
4529 if (!WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST01_SIGN
)
4530 || !WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST12_IANA_SIGN
)
4531 || !WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST12_IANA_512_SIGN
)
4532 || !WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST12_LEGACY_SIGN
)
4533 || !WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST12_LEGACY_512_SIGN
))
4536 if (s
->version
>= TLS1_2_VERSION
&& (alg_k
& SSL_kGOST18
))
4537 if (!WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST12_IANA_SIGN
)
4538 || !WPACKET_put_bytes_u8(pkt
, TLS_CT_GOST12_IANA_512_SIGN
))
4542 if ((s
->version
== SSL3_VERSION
) && (alg_k
& SSL_kDHE
)) {
4543 if (!WPACKET_put_bytes_u8(pkt
, SSL3_CT_RSA_EPHEMERAL_DH
))
4545 if (!(alg_a
& SSL_aDSS
)
4546 && !WPACKET_put_bytes_u8(pkt
, SSL3_CT_DSS_EPHEMERAL_DH
))
4549 if (!(alg_a
& SSL_aRSA
) && !WPACKET_put_bytes_u8(pkt
, SSL3_CT_RSA_SIGN
))
4551 if (!(alg_a
& SSL_aDSS
) && !WPACKET_put_bytes_u8(pkt
, SSL3_CT_DSS_SIGN
))
4555 * ECDSA certs can be used with RSA cipher suites too so we don't
4556 * need to check for SSL_kECDH or SSL_kECDHE
4558 if (s
->version
>= TLS1_VERSION
4559 && !(alg_a
& SSL_aECDSA
)
4560 && !WPACKET_put_bytes_u8(pkt
, TLS_CT_ECDSA_SIGN
))
4566 static int ssl3_set_req_cert_type(CERT
*c
, const unsigned char *p
, size_t len
)
4568 OPENSSL_free(c
->ctype
);
4571 if (p
== NULL
|| len
== 0)
4575 c
->ctype
= OPENSSL_memdup(p
, len
);
4576 if (c
->ctype
== NULL
)
4582 int ssl3_shutdown(SSL
*s
)
4585 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL_ONLY(s
);
4591 * Don't do anything much if we have not done the handshake or we don't
4592 * want to send messages :-)
4594 if (sc
->quiet_shutdown
|| SSL_in_before(s
)) {
4595 sc
->shutdown
= (SSL_SENT_SHUTDOWN
| SSL_RECEIVED_SHUTDOWN
);
4599 if (!(sc
->shutdown
& SSL_SENT_SHUTDOWN
)) {
4600 sc
->shutdown
|= SSL_SENT_SHUTDOWN
;
4601 ssl3_send_alert(sc
, SSL3_AL_WARNING
, SSL_AD_CLOSE_NOTIFY
);
4603 * our shutdown alert has been sent now, and if it still needs to be
4604 * written, s->s3.alert_dispatch will be > 0
4606 if (sc
->s3
.alert_dispatch
> 0)
4607 return -1; /* return WANT_WRITE */
4608 } else if (sc
->s3
.alert_dispatch
> 0) {
4609 /* resend it if not sent */
4610 ret
= s
->method
->ssl_dispatch_alert(s
);
4613 * we only get to return -1 here the 2nd/Nth invocation, we must
4614 * have already signalled return 0 upon a previous invocation,
4619 } else if (!(sc
->shutdown
& SSL_RECEIVED_SHUTDOWN
)) {
4622 * If we are waiting for a close from our peer, we are closed
4624 s
->method
->ssl_read_bytes(s
, 0, NULL
, NULL
, 0, 0, &readbytes
);
4625 if (!(sc
->shutdown
& SSL_RECEIVED_SHUTDOWN
)) {
4626 return -1; /* return WANT_READ */
4630 if ((sc
->shutdown
== (SSL_SENT_SHUTDOWN
| SSL_RECEIVED_SHUTDOWN
))
4631 && sc
->s3
.alert_dispatch
== SSL_ALERT_DISPATCH_NONE
)
4637 int ssl3_write(SSL
*s
, const void *buf
, size_t len
, size_t *written
)
4639 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL_ONLY(s
);
4645 if (sc
->s3
.renegotiate
)
4646 ssl3_renegotiate_check(s
, 0);
4648 return s
->method
->ssl_write_bytes(s
, SSL3_RT_APPLICATION_DATA
, buf
, len
,
4652 static int ssl3_read_internal(SSL
*s
, void *buf
, size_t len
, int peek
,
4656 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL_ONLY(s
);
4662 if (sc
->s3
.renegotiate
)
4663 ssl3_renegotiate_check(s
, 0);
4664 sc
->s3
.in_read_app_data
= 1;
4666 s
->method
->ssl_read_bytes(s
, SSL3_RT_APPLICATION_DATA
, NULL
, buf
, len
,
4668 if ((ret
== -1) && (sc
->s3
.in_read_app_data
== 2)) {
4670 * ssl3_read_bytes decided to call s->handshake_func, which called
4671 * ssl3_read_bytes to read handshake data. However, ssl3_read_bytes
4672 * actually found application data and thinks that application data
4673 * makes sense here; so disable handshake processing and try to read
4674 * application data again.
4676 ossl_statem_set_in_handshake(sc
, 1);
4678 s
->method
->ssl_read_bytes(s
, SSL3_RT_APPLICATION_DATA
, NULL
, buf
,
4679 len
, peek
, readbytes
);
4680 ossl_statem_set_in_handshake(sc
, 0);
4682 sc
->s3
.in_read_app_data
= 0;
4687 int ssl3_read(SSL
*s
, void *buf
, size_t len
, size_t *readbytes
)
4689 return ssl3_read_internal(s
, buf
, len
, 0, readbytes
);
4692 int ssl3_peek(SSL
*s
, void *buf
, size_t len
, size_t *readbytes
)
4694 return ssl3_read_internal(s
, buf
, len
, 1, readbytes
);
4697 int ssl3_renegotiate(SSL
*s
)
4699 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL_ONLY(s
);
4704 if (sc
->handshake_func
== NULL
)
4707 sc
->s3
.renegotiate
= 1;
4712 * Check if we are waiting to do a renegotiation and if so whether now is a
4713 * good time to do it. If |initok| is true then we are being called from inside
4714 * the state machine so ignore the result of SSL_in_init(s). Otherwise we
4715 * should not do a renegotiation if SSL_in_init(s) is true. Returns 1 if we
4716 * should do a renegotiation now and sets up the state machine for it. Otherwise
4719 int ssl3_renegotiate_check(SSL
*s
, int initok
)
4722 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL_ONLY(s
);
4727 if (sc
->s3
.renegotiate
) {
4728 if (!RECORD_LAYER_read_pending(&sc
->rlayer
)
4729 && !RECORD_LAYER_write_pending(&sc
->rlayer
)
4730 && (initok
|| !SSL_in_init(s
))) {
4732 * if we are the server, and we have sent a 'RENEGOTIATE'
4733 * message, we need to set the state machine into the renegotiate
4736 ossl_statem_set_renegotiate(sc
);
4737 sc
->s3
.renegotiate
= 0;
4738 sc
->s3
.num_renegotiations
++;
4739 sc
->s3
.total_renegotiations
++;
4747 * If we are using default SHA1+MD5 algorithms switch to new SHA256 PRF and
4748 * handshake macs if required.
4750 * If PSK and using SHA384 for TLS < 1.2 switch to default.
4752 long ssl_get_algorithm2(SSL_CONNECTION
*s
)
4755 SSL
*ssl
= SSL_CONNECTION_GET_SSL(s
);
4757 if (s
->s3
.tmp
.new_cipher
== NULL
)
4759 alg2
= s
->s3
.tmp
.new_cipher
->algorithm2
;
4760 if (ssl
->method
->ssl3_enc
->enc_flags
& SSL_ENC_FLAG_SHA256_PRF
) {
4761 if (alg2
== (SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
))
4762 return SSL_HANDSHAKE_MAC_SHA256
| TLS1_PRF_SHA256
;
4763 } else if (s
->s3
.tmp
.new_cipher
->algorithm_mkey
& SSL_PSK
) {
4764 if (alg2
== (SSL_HANDSHAKE_MAC_SHA384
| TLS1_PRF_SHA384
))
4765 return SSL_HANDSHAKE_MAC_DEFAULT
| TLS1_PRF
;
4771 * Fill a ClientRandom or ServerRandom field of length len. Returns <= 0 on
4772 * failure, 1 on success.
4774 int ssl_fill_hello_random(SSL_CONNECTION
*s
, int server
,
4775 unsigned char *result
, size_t len
,
4778 int send_time
= 0, ret
;
4783 send_time
= (s
->mode
& SSL_MODE_SEND_SERVERHELLO_TIME
) != 0;
4785 send_time
= (s
->mode
& SSL_MODE_SEND_CLIENTHELLO_TIME
) != 0;
4787 unsigned long Time
= (unsigned long)time(NULL
);
4788 unsigned char *p
= result
;
4791 ret
= RAND_bytes_ex(SSL_CONNECTION_GET_CTX(s
)->libctx
, p
, len
- 4, 0);
4793 ret
= RAND_bytes_ex(SSL_CONNECTION_GET_CTX(s
)->libctx
, result
, len
, 0);
4797 if (!ossl_assert(sizeof(tls11downgrade
) < len
)
4798 || !ossl_assert(sizeof(tls12downgrade
) < len
))
4800 if (dgrd
== DOWNGRADE_TO_1_2
)
4801 memcpy(result
+ len
- sizeof(tls12downgrade
), tls12downgrade
,
4802 sizeof(tls12downgrade
));
4803 else if (dgrd
== DOWNGRADE_TO_1_1
)
4804 memcpy(result
+ len
- sizeof(tls11downgrade
), tls11downgrade
,
4805 sizeof(tls11downgrade
));
4811 int ssl_generate_master_secret(SSL_CONNECTION
*s
, unsigned char *pms
,
4812 size_t pmslen
, int free_pms
)
4814 unsigned long alg_k
= s
->s3
.tmp
.new_cipher
->algorithm_mkey
;
4816 SSL
*ssl
= SSL_CONNECTION_GET_SSL(s
);
4818 if (alg_k
& SSL_PSK
) {
4819 #ifndef OPENSSL_NO_PSK
4820 unsigned char *pskpms
, *t
;
4821 size_t psklen
= s
->s3
.tmp
.psklen
;
4824 /* create PSK premaster_secret */
4826 /* For plain PSK "other_secret" is psklen zeroes */
4827 if (alg_k
& SSL_kPSK
)
4830 pskpmslen
= 4 + pmslen
+ psklen
;
4831 pskpms
= OPENSSL_malloc(pskpmslen
);
4836 if (alg_k
& SSL_kPSK
)
4837 memset(t
, 0, pmslen
);
4839 memcpy(t
, pms
, pmslen
);
4842 memcpy(t
, s
->s3
.tmp
.psk
, psklen
);
4844 OPENSSL_clear_free(s
->s3
.tmp
.psk
, psklen
);
4845 s
->s3
.tmp
.psk
= NULL
;
4846 s
->s3
.tmp
.psklen
= 0;
4847 if (!ssl
->method
->ssl3_enc
->generate_master_secret(s
,
4848 s
->session
->master_key
, pskpms
, pskpmslen
,
4849 &s
->session
->master_key_length
)) {
4850 OPENSSL_clear_free(pskpms
, pskpmslen
);
4851 /* SSLfatal() already called */
4854 OPENSSL_clear_free(pskpms
, pskpmslen
);
4856 /* Should never happen */
4860 if (!ssl
->method
->ssl3_enc
->generate_master_secret(s
,
4861 s
->session
->master_key
, pms
, pmslen
,
4862 &s
->session
->master_key_length
)) {
4863 /* SSLfatal() already called */
4872 OPENSSL_clear_free(pms
, pmslen
);
4874 OPENSSL_cleanse(pms
, pmslen
);
4876 if (s
->server
== 0) {
4877 s
->s3
.tmp
.pms
= NULL
;
4878 s
->s3
.tmp
.pmslen
= 0;
4883 /* Generate a private key from parameters */
4884 EVP_PKEY
*ssl_generate_pkey(SSL_CONNECTION
*s
, EVP_PKEY
*pm
)
4886 EVP_PKEY_CTX
*pctx
= NULL
;
4887 EVP_PKEY
*pkey
= NULL
;
4888 SSL_CTX
*sctx
= SSL_CONNECTION_GET_CTX(s
);
4892 pctx
= EVP_PKEY_CTX_new_from_pkey(sctx
->libctx
, pm
, sctx
->propq
);
4895 if (EVP_PKEY_keygen_init(pctx
) <= 0)
4897 if (EVP_PKEY_keygen(pctx
, &pkey
) <= 0) {
4898 EVP_PKEY_free(pkey
);
4903 EVP_PKEY_CTX_free(pctx
);
4907 /* Generate a private key from a group ID */
4908 EVP_PKEY
*ssl_generate_pkey_group(SSL_CONNECTION
*s
, uint16_t id
)
4910 SSL_CTX
*sctx
= SSL_CONNECTION_GET_CTX(s
);
4911 const TLS_GROUP_INFO
*ginf
= tls1_group_id_lookup(sctx
, id
);
4912 EVP_PKEY_CTX
*pctx
= NULL
;
4913 EVP_PKEY
*pkey
= NULL
;
4916 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
4920 pctx
= EVP_PKEY_CTX_new_from_name(sctx
->libctx
, ginf
->algorithm
,
4924 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_EVP_LIB
);
4927 if (EVP_PKEY_keygen_init(pctx
) <= 0) {
4928 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_EVP_LIB
);
4931 if (EVP_PKEY_CTX_set_group_name(pctx
, ginf
->realname
) <= 0) {
4932 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_EVP_LIB
);
4935 if (EVP_PKEY_keygen(pctx
, &pkey
) <= 0) {
4936 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_EVP_LIB
);
4937 EVP_PKEY_free(pkey
);
4942 EVP_PKEY_CTX_free(pctx
);
4947 * Generate parameters from a group ID
4949 EVP_PKEY
*ssl_generate_param_group(SSL_CONNECTION
*s
, uint16_t id
)
4951 SSL_CTX
*sctx
= SSL_CONNECTION_GET_CTX(s
);
4952 EVP_PKEY_CTX
*pctx
= NULL
;
4953 EVP_PKEY
*pkey
= NULL
;
4954 const TLS_GROUP_INFO
*ginf
= tls1_group_id_lookup(sctx
, id
);
4959 pctx
= EVP_PKEY_CTX_new_from_name(sctx
->libctx
, ginf
->algorithm
,
4964 if (EVP_PKEY_paramgen_init(pctx
) <= 0)
4966 if (EVP_PKEY_CTX_set_group_name(pctx
, ginf
->realname
) <= 0) {
4967 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_EVP_LIB
);
4970 if (EVP_PKEY_paramgen(pctx
, &pkey
) <= 0) {
4971 EVP_PKEY_free(pkey
);
4976 EVP_PKEY_CTX_free(pctx
);
4980 /* Generate secrets from pms */
4981 int ssl_gensecret(SSL_CONNECTION
*s
, unsigned char *pms
, size_t pmslen
)
4985 /* SSLfatal() called as appropriate in the below functions */
4986 if (SSL_CONNECTION_IS_TLS13(s
)) {
4988 * If we are resuming then we already generated the early secret
4989 * when we created the ClientHello, so don't recreate it.
4992 rv
= tls13_generate_secret(s
, ssl_handshake_md(s
), NULL
, NULL
,
4994 (unsigned char *)&s
->early_secret
);
4998 rv
= rv
&& tls13_generate_handshake_secret(s
, pms
, pmslen
);
5000 rv
= ssl_generate_master_secret(s
, pms
, pmslen
, 0);
5006 /* Derive secrets for ECDH/DH */
5007 int ssl_derive(SSL_CONNECTION
*s
, EVP_PKEY
*privkey
, EVP_PKEY
*pubkey
, int gensecret
)
5010 unsigned char *pms
= NULL
;
5013 SSL_CTX
*sctx
= SSL_CONNECTION_GET_CTX(s
);
5015 if (privkey
== NULL
|| pubkey
== NULL
) {
5016 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5020 pctx
= EVP_PKEY_CTX_new_from_pkey(sctx
->libctx
, privkey
, sctx
->propq
);
5022 if (EVP_PKEY_derive_init(pctx
) <= 0
5023 || EVP_PKEY_derive_set_peer(pctx
, pubkey
) <= 0
5024 || EVP_PKEY_derive(pctx
, NULL
, &pmslen
) <= 0) {
5025 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5029 if (SSL_CONNECTION_IS_TLS13(s
) && EVP_PKEY_is_a(privkey
, "DH"))
5030 EVP_PKEY_CTX_set_dh_pad(pctx
, 1);
5032 pms
= OPENSSL_malloc(pmslen
);
5034 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_CRYPTO_LIB
);
5038 if (EVP_PKEY_derive(pctx
, pms
, &pmslen
) <= 0) {
5040 * the public key was probably a weak key
5042 SSLfatal(s
, SSL_AD_ILLEGAL_PARAMETER
, SSL_R_BAD_KEY_SHARE
);
5047 /* SSLfatal() called as appropriate in the below functions */
5048 rv
= ssl_gensecret(s
, pms
, pmslen
);
5050 /* Save premaster secret */
5051 s
->s3
.tmp
.pms
= pms
;
5052 s
->s3
.tmp
.pmslen
= pmslen
;
5058 OPENSSL_clear_free(pms
, pmslen
);
5059 EVP_PKEY_CTX_free(pctx
);
5063 /* Decapsulate secrets for KEM */
5064 int ssl_decapsulate(SSL_CONNECTION
*s
, EVP_PKEY
*privkey
,
5065 const unsigned char *ct
, size_t ctlen
,
5069 unsigned char *pms
= NULL
;
5072 SSL_CTX
*sctx
= SSL_CONNECTION_GET_CTX(s
);
5074 if (privkey
== NULL
) {
5075 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5079 pctx
= EVP_PKEY_CTX_new_from_pkey(sctx
->libctx
, privkey
, sctx
->propq
);
5081 if (EVP_PKEY_decapsulate_init(pctx
, NULL
) <= 0
5082 || EVP_PKEY_decapsulate(pctx
, NULL
, &pmslen
, ct
, ctlen
) <= 0) {
5083 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5087 pms
= OPENSSL_malloc(pmslen
);
5089 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_CRYPTO_LIB
);
5093 if (EVP_PKEY_decapsulate(pctx
, pms
, &pmslen
, ct
, ctlen
) <= 0) {
5094 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5099 /* SSLfatal() called as appropriate in the below functions */
5100 rv
= ssl_gensecret(s
, pms
, pmslen
);
5102 /* Save premaster secret */
5103 s
->s3
.tmp
.pms
= pms
;
5104 s
->s3
.tmp
.pmslen
= pmslen
;
5110 OPENSSL_clear_free(pms
, pmslen
);
5111 EVP_PKEY_CTX_free(pctx
);
5115 int ssl_encapsulate(SSL_CONNECTION
*s
, EVP_PKEY
*pubkey
,
5116 unsigned char **ctp
, size_t *ctlenp
,
5120 unsigned char *pms
= NULL
, *ct
= NULL
;
5121 size_t pmslen
= 0, ctlen
= 0;
5123 SSL_CTX
*sctx
= SSL_CONNECTION_GET_CTX(s
);
5125 if (pubkey
== NULL
) {
5126 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5130 pctx
= EVP_PKEY_CTX_new_from_pkey(sctx
->libctx
, pubkey
, sctx
->propq
);
5132 if (EVP_PKEY_encapsulate_init(pctx
, NULL
) <= 0
5133 || EVP_PKEY_encapsulate(pctx
, NULL
, &ctlen
, NULL
, &pmslen
) <= 0
5134 || pmslen
== 0 || ctlen
== 0) {
5135 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_INTERNAL_ERROR
);
5139 pms
= OPENSSL_malloc(pmslen
);
5140 ct
= OPENSSL_malloc(ctlen
);
5141 if (pms
== NULL
|| ct
== NULL
) {
5142 SSLfatal(s
, SSL_AD_INTERNAL_ERROR
, ERR_R_CRYPTO_LIB
);
5146 if (EVP_PKEY_encapsulate(pctx
, ct
, &ctlen
, pms
, &pmslen
) <= 0) {
5147 SSLfatal(s
, SSL_AD_ILLEGAL_PARAMETER
, SSL_R_BAD_KEY_SHARE
);
5152 /* SSLfatal() called as appropriate in the below functions */
5153 rv
= ssl_gensecret(s
, pms
, pmslen
);
5155 /* Save premaster secret */
5156 s
->s3
.tmp
.pms
= pms
;
5157 s
->s3
.tmp
.pmslen
= pmslen
;
5163 /* Pass ownership of ct to caller */
5170 OPENSSL_clear_free(pms
, pmslen
);
5172 EVP_PKEY_CTX_free(pctx
);
5176 const char *SSL_get0_group_name(SSL
*s
)
5178 SSL_CONNECTION
*sc
= SSL_CONNECTION_FROM_SSL(s
);
5184 if (SSL_CONNECTION_IS_TLS13(sc
) && sc
->s3
.did_kex
)
5185 id
= sc
->s3
.group_id
;
5187 id
= sc
->session
->kex_group
;
5189 return tls1_group_id2name(s
->ctx
, id
);
5192 const char *SSL_group_to_name(SSL
*s
, int nid
) {
5194 const TLS_GROUP_INFO
*cinf
= NULL
;
5196 /* first convert to real group id for internal and external IDs */
5197 if (nid
& TLSEXT_nid_unknown
)
5198 group_id
= nid
& 0xFFFF;
5200 group_id
= tls1_nid2group_id(nid
);
5203 cinf
= tls1_group_id_lookup(s
->ctx
, group_id
);
5206 return cinf
->tlsname
;