Coverage Report

Created: 2025-12-31 06:58

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