Coverage Report

Created: 2026-03-09 06:55

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