Coverage Report

Created: 2025-12-31 06:58

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