Coverage Report

Created: 2025-12-31 06:58

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