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