Coverage Report

Created: 2026-10-16 07:31

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