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