xref: /aosp_15_r20/external/curl/lib/vtls/cipher_suite.c (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker /***************************************************************************
2*6236dae4SAndroid Build Coastguard Worker  *                                  _   _ ____  _
3*6236dae4SAndroid Build Coastguard Worker  *  Project                     ___| | | |  _ \| |
4*6236dae4SAndroid Build Coastguard Worker  *                             / __| | | | |_) | |
5*6236dae4SAndroid Build Coastguard Worker  *                            | (__| |_| |  _ <| |___
6*6236dae4SAndroid Build Coastguard Worker  *                             \___|\___/|_| \_\_____|
7*6236dae4SAndroid Build Coastguard Worker  *
8*6236dae4SAndroid Build Coastguard Worker  * Copyright (C) Jan Venekamp, <[email protected]>
9*6236dae4SAndroid Build Coastguard Worker  *
10*6236dae4SAndroid Build Coastguard Worker  * This software is licensed as described in the file COPYING, which
11*6236dae4SAndroid Build Coastguard Worker  * you should have received as part of this distribution. The terms
12*6236dae4SAndroid Build Coastguard Worker  * are also available at https://curl.se/docs/copyright.html.
13*6236dae4SAndroid Build Coastguard Worker  *
14*6236dae4SAndroid Build Coastguard Worker  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15*6236dae4SAndroid Build Coastguard Worker  * copies of the Software, and permit persons to whom the Software is
16*6236dae4SAndroid Build Coastguard Worker  * furnished to do so, under the terms of the COPYING file.
17*6236dae4SAndroid Build Coastguard Worker  *
18*6236dae4SAndroid Build Coastguard Worker  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19*6236dae4SAndroid Build Coastguard Worker  * KIND, either express or implied.
20*6236dae4SAndroid Build Coastguard Worker  *
21*6236dae4SAndroid Build Coastguard Worker  * SPDX-License-Identifier: curl
22*6236dae4SAndroid Build Coastguard Worker  *
23*6236dae4SAndroid Build Coastguard Worker  ***************************************************************************/
24*6236dae4SAndroid Build Coastguard Worker #include "curl_setup.h"
25*6236dae4SAndroid Build Coastguard Worker 
26*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP) || defined(USE_MBEDTLS) || \
27*6236dae4SAndroid Build Coastguard Worker     defined(USE_BEARSSL) || defined(USE_RUSTLS)
28*6236dae4SAndroid Build Coastguard Worker #include "cipher_suite.h"
29*6236dae4SAndroid Build Coastguard Worker #include "curl_printf.h"
30*6236dae4SAndroid Build Coastguard Worker #include "strcase.h"
31*6236dae4SAndroid Build Coastguard Worker #include <string.h>
32*6236dae4SAndroid Build Coastguard Worker 
33*6236dae4SAndroid Build Coastguard Worker /*
34*6236dae4SAndroid Build Coastguard Worker  * To support the CURLOPT_SSL_CIPHER_LIST option on SSL backends
35*6236dae4SAndroid Build Coastguard Worker  * that do not support it natively, but do support setting a list of
36*6236dae4SAndroid Build Coastguard Worker  * IANA ids, we need a list of all supported cipher suite names
37*6236dae4SAndroid Build Coastguard Worker  * (OpenSSL and IANA) to be able to look up the IANA ids.
38*6236dae4SAndroid Build Coastguard Worker  *
39*6236dae4SAndroid Build Coastguard Worker  * To keep the binary size of this list down we compress each entry
40*6236dae4SAndroid Build Coastguard Worker  * down to 2 + 6 bytes using the C preprocessor.
41*6236dae4SAndroid Build Coastguard Worker  */
42*6236dae4SAndroid Build Coastguard Worker 
43*6236dae4SAndroid Build Coastguard Worker /*
44*6236dae4SAndroid Build Coastguard Worker  * mbedTLS NOTE: mbedTLS has mbedtls_ssl_get_ciphersuite_id() to
45*6236dae4SAndroid Build Coastguard Worker  * convert a string representation to an IANA id, we do not use that
46*6236dae4SAndroid Build Coastguard Worker  * because it does not support "standard" OpenSSL cipher suite
47*6236dae4SAndroid Build Coastguard Worker  * names, nor IANA names.
48*6236dae4SAndroid Build Coastguard Worker  */
49*6236dae4SAndroid Build Coastguard Worker 
50*6236dae4SAndroid Build Coastguard Worker /* NOTE: also see tests/unit/unit3205.c */
51*6236dae4SAndroid Build Coastguard Worker 
52*6236dae4SAndroid Build Coastguard Worker /* Text for cipher suite parts (max 64 entries),
53*6236dae4SAndroid Build Coastguard Worker    keep indexes below in sync with this! */
54*6236dae4SAndroid Build Coastguard Worker static const char *cs_txt =
55*6236dae4SAndroid Build Coastguard Worker   "\0"
56*6236dae4SAndroid Build Coastguard Worker   "TLS" "\0"
57*6236dae4SAndroid Build Coastguard Worker   "WITH" "\0"
58*6236dae4SAndroid Build Coastguard Worker   "128" "\0"
59*6236dae4SAndroid Build Coastguard Worker   "256" "\0"
60*6236dae4SAndroid Build Coastguard Worker   "3DES" "\0"
61*6236dae4SAndroid Build Coastguard Worker   "8" "\0"
62*6236dae4SAndroid Build Coastguard Worker   "AES" "\0"
63*6236dae4SAndroid Build Coastguard Worker   "AES128" "\0"
64*6236dae4SAndroid Build Coastguard Worker   "AES256" "\0"
65*6236dae4SAndroid Build Coastguard Worker   "CBC" "\0"
66*6236dae4SAndroid Build Coastguard Worker   "CBC3" "\0"
67*6236dae4SAndroid Build Coastguard Worker   "CCM" "\0"
68*6236dae4SAndroid Build Coastguard Worker   "CCM8" "\0"
69*6236dae4SAndroid Build Coastguard Worker   "CHACHA20" "\0"
70*6236dae4SAndroid Build Coastguard Worker   "DES" "\0"
71*6236dae4SAndroid Build Coastguard Worker   "DHE" "\0"
72*6236dae4SAndroid Build Coastguard Worker   "ECDH" "\0"
73*6236dae4SAndroid Build Coastguard Worker   "ECDHE" "\0"
74*6236dae4SAndroid Build Coastguard Worker   "ECDSA" "\0"
75*6236dae4SAndroid Build Coastguard Worker   "EDE" "\0"
76*6236dae4SAndroid Build Coastguard Worker   "GCM" "\0"
77*6236dae4SAndroid Build Coastguard Worker   "MD5" "\0"
78*6236dae4SAndroid Build Coastguard Worker   "NULL" "\0"
79*6236dae4SAndroid Build Coastguard Worker   "POLY1305" "\0"
80*6236dae4SAndroid Build Coastguard Worker   "PSK" "\0"
81*6236dae4SAndroid Build Coastguard Worker   "RSA" "\0"
82*6236dae4SAndroid Build Coastguard Worker   "SHA" "\0"
83*6236dae4SAndroid Build Coastguard Worker   "SHA256" "\0"
84*6236dae4SAndroid Build Coastguard Worker   "SHA384" "\0"
85*6236dae4SAndroid Build Coastguard Worker #if defined(USE_MBEDTLS)
86*6236dae4SAndroid Build Coastguard Worker   "ARIA" "\0"
87*6236dae4SAndroid Build Coastguard Worker   "ARIA128" "\0"
88*6236dae4SAndroid Build Coastguard Worker   "ARIA256" "\0"
89*6236dae4SAndroid Build Coastguard Worker   "CAMELLIA" "\0"
90*6236dae4SAndroid Build Coastguard Worker   "CAMELLIA128" "\0"
91*6236dae4SAndroid Build Coastguard Worker   "CAMELLIA256" "\0"
92*6236dae4SAndroid Build Coastguard Worker #endif
93*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP)
94*6236dae4SAndroid Build Coastguard Worker   "40" "\0"
95*6236dae4SAndroid Build Coastguard Worker   "ADH" "\0"
96*6236dae4SAndroid Build Coastguard Worker   "AECDH" "\0"
97*6236dae4SAndroid Build Coastguard Worker   "anon" "\0"
98*6236dae4SAndroid Build Coastguard Worker   "DES40" "\0"
99*6236dae4SAndroid Build Coastguard Worker   "DH" "\0"
100*6236dae4SAndroid Build Coastguard Worker   "DSS" "\0"
101*6236dae4SAndroid Build Coastguard Worker   "EDH" "\0"
102*6236dae4SAndroid Build Coastguard Worker   "EXP" "\0"
103*6236dae4SAndroid Build Coastguard Worker   "EXPORT" "\0"
104*6236dae4SAndroid Build Coastguard Worker   "IDEA" "\0"
105*6236dae4SAndroid Build Coastguard Worker   "RC2" "\0"
106*6236dae4SAndroid Build Coastguard Worker   "RC4" "\0"
107*6236dae4SAndroid Build Coastguard Worker #endif
108*6236dae4SAndroid Build Coastguard Worker ;
109*6236dae4SAndroid Build Coastguard Worker /* Indexes of above cs_txt */
110*6236dae4SAndroid Build Coastguard Worker enum {
111*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_,
112*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_TLS,
113*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_WITH,
114*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_128,
115*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_256,
116*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_3DES,
117*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_8,
118*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_AES,
119*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_AES128,
120*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_AES256,
121*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CBC,
122*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CBC3,
123*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CCM,
124*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CCM8,
125*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CHACHA20,
126*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_DES,
127*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_DHE,
128*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ECDH,
129*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ECDHE,
130*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ECDSA,
131*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_EDE,
132*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_GCM,
133*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_MD5,
134*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_NULL,
135*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_POLY1305,
136*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_PSK,
137*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_RSA,
138*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_SHA,
139*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_SHA256,
140*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_SHA384,
141*6236dae4SAndroid Build Coastguard Worker #if defined(USE_MBEDTLS)
142*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ARIA,
143*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ARIA128,
144*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ARIA256,
145*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CAMELLIA,
146*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CAMELLIA128,
147*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_CAMELLIA256,
148*6236dae4SAndroid Build Coastguard Worker #endif
149*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP)
150*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_40,
151*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_ADH,
152*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_AECDH,
153*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_anon,
154*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_DES40,
155*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_DH,
156*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_DSS,
157*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_EDH,
158*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_EXP,
159*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_EXPORT,
160*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_IDEA,
161*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_RC2,
162*6236dae4SAndroid Build Coastguard Worker   CS_TXT_IDX_RC4,
163*6236dae4SAndroid Build Coastguard Worker #endif
164*6236dae4SAndroid Build Coastguard Worker   CS_TXT_LEN,
165*6236dae4SAndroid Build Coastguard Worker };
166*6236dae4SAndroid Build Coastguard Worker 
167*6236dae4SAndroid Build Coastguard Worker #define CS_ZIP_IDX(a, b, c, d, e, f, g, h)             \
168*6236dae4SAndroid Build Coastguard Worker {                                                      \
169*6236dae4SAndroid Build Coastguard Worker   (uint8_t) ((((a) << 2) & 0xFF) | ((b) & 0x3F) >> 4), \
170*6236dae4SAndroid Build Coastguard Worker   (uint8_t) ((((b) << 4) & 0xFF) | ((c) & 0x3F) >> 2), \
171*6236dae4SAndroid Build Coastguard Worker   (uint8_t) ((((c) << 6) & 0xFF) | ((d) & 0x3F)),      \
172*6236dae4SAndroid Build Coastguard Worker   (uint8_t) ((((e) << 2) & 0xFF) | ((f) & 0x3F) >> 4), \
173*6236dae4SAndroid Build Coastguard Worker   (uint8_t) ((((f) << 4) & 0xFF) | ((g) & 0x3F) >> 2), \
174*6236dae4SAndroid Build Coastguard Worker   (uint8_t) ((((g) << 6) & 0xFF) | ((h) & 0x3F))       \
175*6236dae4SAndroid Build Coastguard Worker }
176*6236dae4SAndroid Build Coastguard Worker #define CS_ENTRY(id, a, b, c, d, e, f, g, h)           \
177*6236dae4SAndroid Build Coastguard Worker {                                                      \
178*6236dae4SAndroid Build Coastguard Worker   id,                                                  \
179*6236dae4SAndroid Build Coastguard Worker   CS_ZIP_IDX(                                          \
180*6236dae4SAndroid Build Coastguard Worker     CS_TXT_IDX_ ## a, CS_TXT_IDX_ ## b,                \
181*6236dae4SAndroid Build Coastguard Worker     CS_TXT_IDX_ ## c, CS_TXT_IDX_ ## d,                \
182*6236dae4SAndroid Build Coastguard Worker     CS_TXT_IDX_ ## e, CS_TXT_IDX_ ## f,                \
183*6236dae4SAndroid Build Coastguard Worker     CS_TXT_IDX_ ## g, CS_TXT_IDX_ ## h                 \
184*6236dae4SAndroid Build Coastguard Worker   )                                                    \
185*6236dae4SAndroid Build Coastguard Worker }
186*6236dae4SAndroid Build Coastguard Worker 
187*6236dae4SAndroid Build Coastguard Worker struct cs_entry {
188*6236dae4SAndroid Build Coastguard Worker   uint16_t id;
189*6236dae4SAndroid Build Coastguard Worker   uint8_t zip[6];
190*6236dae4SAndroid Build Coastguard Worker };
191*6236dae4SAndroid Build Coastguard Worker 
192*6236dae4SAndroid Build Coastguard Worker /* !checksrc! disable COMMANOSPACE all */
193*6236dae4SAndroid Build Coastguard Worker static const struct cs_entry cs_list [] = {
194*6236dae4SAndroid Build Coastguard Worker   /* TLS 1.3 ciphers */
195*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP) || defined(USE_MBEDTLS) || defined(USE_RUSTLS)
196*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x1301, TLS,AES,128,GCM,SHA256,,,),
197*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x1302, TLS,AES,256,GCM,SHA384,,,),
198*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x1303, TLS,CHACHA20,POLY1305,SHA256,,,,),
199*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x1304, TLS,AES,128,CCM,SHA256,,,),
200*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x1305, TLS,AES,128,CCM,8,SHA256,,),
201*6236dae4SAndroid Build Coastguard Worker #endif
202*6236dae4SAndroid Build Coastguard Worker   /* TLS 1.2 ciphers */
203*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02B, TLS,ECDHE,ECDSA,WITH,AES,128,GCM,SHA256),
204*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02B, ECDHE,ECDSA,AES128,GCM,SHA256,,,),
205*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02C, TLS,ECDHE,ECDSA,WITH,AES,256,GCM,SHA384),
206*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02C, ECDHE,ECDSA,AES256,GCM,SHA384,,,),
207*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02F, TLS,ECDHE,RSA,WITH,AES,128,GCM,SHA256),
208*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02F, ECDHE,RSA,AES128,GCM,SHA256,,,),
209*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC030, TLS,ECDHE,RSA,WITH,AES,256,GCM,SHA384),
210*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC030, ECDHE,RSA,AES256,GCM,SHA384,,,),
211*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCA8, TLS,ECDHE,RSA,WITH,CHACHA20,POLY1305,SHA256,),
212*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCA8, ECDHE,RSA,CHACHA20,POLY1305,,,,),
213*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCA9, TLS,ECDHE,ECDSA,WITH,CHACHA20,POLY1305,SHA256,),
214*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCA9, ECDHE,ECDSA,CHACHA20,POLY1305,,,,),
215*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP) || defined(USE_MBEDTLS) || defined(USE_BEARSSL)
216*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002F, TLS,RSA,WITH,AES,128,CBC,SHA,),
217*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002F, AES128,SHA,,,,,,),
218*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0035, TLS,RSA,WITH,AES,256,CBC,SHA,),
219*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0035, AES256,SHA,,,,,,),
220*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003C, TLS,RSA,WITH,AES,128,CBC,SHA256,),
221*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003C, AES128,SHA256,,,,,,),
222*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003D, TLS,RSA,WITH,AES,256,CBC,SHA256,),
223*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003D, AES256,SHA256,,,,,,),
224*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009C, TLS,RSA,WITH,AES,128,GCM,SHA256,),
225*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009C, AES128,GCM,SHA256,,,,,),
226*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009D, TLS,RSA,WITH,AES,256,GCM,SHA384,),
227*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009D, AES256,GCM,SHA384,,,,,),
228*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC004, TLS,ECDH,ECDSA,WITH,AES,128,CBC,SHA),
229*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC004, ECDH,ECDSA,AES128,SHA,,,,),
230*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC005, TLS,ECDH,ECDSA,WITH,AES,256,CBC,SHA),
231*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC005, ECDH,ECDSA,AES256,SHA,,,,),
232*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC009, TLS,ECDHE,ECDSA,WITH,AES,128,CBC,SHA),
233*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC009, ECDHE,ECDSA,AES128,SHA,,,,),
234*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00A, TLS,ECDHE,ECDSA,WITH,AES,256,CBC,SHA),
235*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00A, ECDHE,ECDSA,AES256,SHA,,,,),
236*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00E, TLS,ECDH,RSA,WITH,AES,128,CBC,SHA),
237*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00E, ECDH,RSA,AES128,SHA,,,,),
238*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00F, TLS,ECDH,RSA,WITH,AES,256,CBC,SHA),
239*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00F, ECDH,RSA,AES256,SHA,,,,),
240*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC013, TLS,ECDHE,RSA,WITH,AES,128,CBC,SHA),
241*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC013, ECDHE,RSA,AES128,SHA,,,,),
242*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC014, TLS,ECDHE,RSA,WITH,AES,256,CBC,SHA),
243*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC014, ECDHE,RSA,AES256,SHA,,,,),
244*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC023, TLS,ECDHE,ECDSA,WITH,AES,128,CBC,SHA256),
245*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC023, ECDHE,ECDSA,AES128,SHA256,,,,),
246*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC024, TLS,ECDHE,ECDSA,WITH,AES,256,CBC,SHA384),
247*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC024, ECDHE,ECDSA,AES256,SHA384,,,,),
248*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC025, TLS,ECDH,ECDSA,WITH,AES,128,CBC,SHA256),
249*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC025, ECDH,ECDSA,AES128,SHA256,,,,),
250*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC026, TLS,ECDH,ECDSA,WITH,AES,256,CBC,SHA384),
251*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC026, ECDH,ECDSA,AES256,SHA384,,,,),
252*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC027, TLS,ECDHE,RSA,WITH,AES,128,CBC,SHA256),
253*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC027, ECDHE,RSA,AES128,SHA256,,,,),
254*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC028, TLS,ECDHE,RSA,WITH,AES,256,CBC,SHA384),
255*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC028, ECDHE,RSA,AES256,SHA384,,,,),
256*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC029, TLS,ECDH,RSA,WITH,AES,128,CBC,SHA256),
257*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC029, ECDH,RSA,AES128,SHA256,,,,),
258*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02A, TLS,ECDH,RSA,WITH,AES,256,CBC,SHA384),
259*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02A, ECDH,RSA,AES256,SHA384,,,,),
260*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02D, TLS,ECDH,ECDSA,WITH,AES,128,GCM,SHA256),
261*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02D, ECDH,ECDSA,AES128,GCM,SHA256,,,),
262*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02E, TLS,ECDH,ECDSA,WITH,AES,256,GCM,SHA384),
263*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC02E, ECDH,ECDSA,AES256,GCM,SHA384,,,),
264*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC031, TLS,ECDH,RSA,WITH,AES,128,GCM,SHA256),
265*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC031, ECDH,RSA,AES128,GCM,SHA256,,,),
266*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC032, TLS,ECDH,RSA,WITH,AES,256,GCM,SHA384),
267*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC032, ECDH,RSA,AES256,GCM,SHA384,,,),
268*6236dae4SAndroid Build Coastguard Worker #endif
269*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP) || defined(USE_MBEDTLS)
270*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0001, TLS,RSA,WITH,NULL,MD5,,,),
271*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0001, NULL,MD5,,,,,,),
272*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0002, TLS,RSA,WITH,NULL,SHA,,,),
273*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0002, NULL,SHA,,,,,,),
274*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002C, TLS,PSK,WITH,NULL,SHA,,,),
275*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002C, PSK,NULL,SHA,,,,,),
276*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002D, TLS,DHE,PSK,WITH,NULL,SHA,,),
277*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002D, DHE,PSK,NULL,SHA,,,,),
278*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002E, TLS,RSA,PSK,WITH,NULL,SHA,,),
279*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x002E, RSA,PSK,NULL,SHA,,,,),
280*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0033, TLS,DHE,RSA,WITH,AES,128,CBC,SHA),
281*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0033, DHE,RSA,AES128,SHA,,,,),
282*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0039, TLS,DHE,RSA,WITH,AES,256,CBC,SHA),
283*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0039, DHE,RSA,AES256,SHA,,,,),
284*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003B, TLS,RSA,WITH,NULL,SHA256,,,),
285*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003B, NULL,SHA256,,,,,,),
286*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0067, TLS,DHE,RSA,WITH,AES,128,CBC,SHA256),
287*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0067, DHE,RSA,AES128,SHA256,,,,),
288*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006B, TLS,DHE,RSA,WITH,AES,256,CBC,SHA256),
289*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006B, DHE,RSA,AES256,SHA256,,,,),
290*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008C, TLS,PSK,WITH,AES,128,CBC,SHA,),
291*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008C, PSK,AES128,CBC,SHA,,,,),
292*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008D, TLS,PSK,WITH,AES,256,CBC,SHA,),
293*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008D, PSK,AES256,CBC,SHA,,,,),
294*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0090, TLS,DHE,PSK,WITH,AES,128,CBC,SHA),
295*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0090, DHE,PSK,AES128,CBC,SHA,,,),
296*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0091, TLS,DHE,PSK,WITH,AES,256,CBC,SHA),
297*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0091, DHE,PSK,AES256,CBC,SHA,,,),
298*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0094, TLS,RSA,PSK,WITH,AES,128,CBC,SHA),
299*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0094, RSA,PSK,AES128,CBC,SHA,,,),
300*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0095, TLS,RSA,PSK,WITH,AES,256,CBC,SHA),
301*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0095, RSA,PSK,AES256,CBC,SHA,,,),
302*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009E, TLS,DHE,RSA,WITH,AES,128,GCM,SHA256),
303*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009E, DHE,RSA,AES128,GCM,SHA256,,,),
304*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009F, TLS,DHE,RSA,WITH,AES,256,GCM,SHA384),
305*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x009F, DHE,RSA,AES256,GCM,SHA384,,,),
306*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A8, TLS,PSK,WITH,AES,128,GCM,SHA256,),
307*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A8, PSK,AES128,GCM,SHA256,,,,),
308*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A9, TLS,PSK,WITH,AES,256,GCM,SHA384,),
309*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A9, PSK,AES256,GCM,SHA384,,,,),
310*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AA, TLS,DHE,PSK,WITH,AES,128,GCM,SHA256),
311*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AA, DHE,PSK,AES128,GCM,SHA256,,,),
312*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AB, TLS,DHE,PSK,WITH,AES,256,GCM,SHA384),
313*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AB, DHE,PSK,AES256,GCM,SHA384,,,),
314*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AC, TLS,RSA,PSK,WITH,AES,128,GCM,SHA256),
315*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AC, RSA,PSK,AES128,GCM,SHA256,,,),
316*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AD, TLS,RSA,PSK,WITH,AES,256,GCM,SHA384),
317*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AD, RSA,PSK,AES256,GCM,SHA384,,,),
318*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AE, TLS,PSK,WITH,AES,128,CBC,SHA256,),
319*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AE, PSK,AES128,CBC,SHA256,,,,),
320*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AF, TLS,PSK,WITH,AES,256,CBC,SHA384,),
321*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00AF, PSK,AES256,CBC,SHA384,,,,),
322*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B0, TLS,PSK,WITH,NULL,SHA256,,,),
323*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B0, PSK,NULL,SHA256,,,,,),
324*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B1, TLS,PSK,WITH,NULL,SHA384,,,),
325*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B1, PSK,NULL,SHA384,,,,,),
326*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B2, TLS,DHE,PSK,WITH,AES,128,CBC,SHA256),
327*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B2, DHE,PSK,AES128,CBC,SHA256,,,),
328*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B3, TLS,DHE,PSK,WITH,AES,256,CBC,SHA384),
329*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B3, DHE,PSK,AES256,CBC,SHA384,,,),
330*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B4, TLS,DHE,PSK,WITH,NULL,SHA256,,),
331*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B4, DHE,PSK,NULL,SHA256,,,,),
332*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B5, TLS,DHE,PSK,WITH,NULL,SHA384,,),
333*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B5, DHE,PSK,NULL,SHA384,,,,),
334*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B6, TLS,RSA,PSK,WITH,AES,128,CBC,SHA256),
335*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B6, RSA,PSK,AES128,CBC,SHA256,,,),
336*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B7, TLS,RSA,PSK,WITH,AES,256,CBC,SHA384),
337*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B7, RSA,PSK,AES256,CBC,SHA384,,,),
338*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B8, TLS,RSA,PSK,WITH,NULL,SHA256,,),
339*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B8, RSA,PSK,NULL,SHA256,,,,),
340*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B9, TLS,RSA,PSK,WITH,NULL,SHA384,,),
341*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00B9, RSA,PSK,NULL,SHA384,,,,),
342*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC001, TLS,ECDH,ECDSA,WITH,NULL,SHA,,),
343*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC001, ECDH,ECDSA,NULL,SHA,,,,),
344*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC006, TLS,ECDHE,ECDSA,WITH,NULL,SHA,,),
345*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC006, ECDHE,ECDSA,NULL,SHA,,,,),
346*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00B, TLS,ECDH,RSA,WITH,NULL,SHA,,),
347*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00B, ECDH,RSA,NULL,SHA,,,,),
348*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC010, TLS,ECDHE,RSA,WITH,NULL,SHA,,),
349*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC010, ECDHE,RSA,NULL,SHA,,,,),
350*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC035, TLS,ECDHE,PSK,WITH,AES,128,CBC,SHA),
351*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC035, ECDHE,PSK,AES128,CBC,SHA,,,),
352*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC036, TLS,ECDHE,PSK,WITH,AES,256,CBC,SHA),
353*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC036, ECDHE,PSK,AES256,CBC,SHA,,,),
354*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAB, TLS,PSK,WITH,CHACHA20,POLY1305,SHA256,,),
355*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAB, PSK,CHACHA20,POLY1305,,,,,),
356*6236dae4SAndroid Build Coastguard Worker #endif
357*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP) || defined(USE_BEARSSL)
358*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000A, TLS,RSA,WITH,3DES,EDE,CBC,SHA,),
359*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000A, DES,CBC3,SHA,,,,,),
360*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC003, TLS,ECDH,ECDSA,WITH,3DES,EDE,CBC,SHA),
361*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC003, ECDH,ECDSA,DES,CBC3,SHA,,,),
362*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC008, TLS,ECDHE,ECDSA,WITH,3DES,EDE,CBC,SHA),
363*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC008, ECDHE,ECDSA,DES,CBC3,SHA,,,),
364*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00D, TLS,ECDH,RSA,WITH,3DES,EDE,CBC,SHA),
365*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00D, ECDH,RSA,DES,CBC3,SHA,,,),
366*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC012, TLS,ECDHE,RSA,WITH,3DES,EDE,CBC,SHA),
367*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC012, ECDHE,RSA,DES,CBC3,SHA,,,),
368*6236dae4SAndroid Build Coastguard Worker #endif
369*6236dae4SAndroid Build Coastguard Worker #if defined(USE_MBEDTLS) || defined(USE_BEARSSL)
370*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09C, TLS,RSA,WITH,AES,128,CCM,,),
371*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09C, AES128,CCM,,,,,,),
372*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09D, TLS,RSA,WITH,AES,256,CCM,,),
373*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09D, AES256,CCM,,,,,,),
374*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A0, TLS,RSA,WITH,AES,128,CCM,8,),
375*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A0, AES128,CCM8,,,,,,),
376*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A1, TLS,RSA,WITH,AES,256,CCM,8,),
377*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A1, AES256,CCM8,,,,,,),
378*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AC, TLS,ECDHE,ECDSA,WITH,AES,128,CCM,),
379*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AC, ECDHE,ECDSA,AES128,CCM,,,,),
380*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AD, TLS,ECDHE,ECDSA,WITH,AES,256,CCM,),
381*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AD, ECDHE,ECDSA,AES256,CCM,,,,),
382*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AE, TLS,ECDHE,ECDSA,WITH,AES,128,CCM,8),
383*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AE, ECDHE,ECDSA,AES128,CCM8,,,,),
384*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AF, TLS,ECDHE,ECDSA,WITH,AES,256,CCM,8),
385*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AF, ECDHE,ECDSA,AES256,CCM8,,,,),
386*6236dae4SAndroid Build Coastguard Worker #endif
387*6236dae4SAndroid Build Coastguard Worker #if defined(USE_SECTRANSP)
388*6236dae4SAndroid Build Coastguard Worker   /* entries marked bc are backward compatible aliases for old OpenSSL names */
389*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0003, TLS,RSA,EXPORT,WITH,RC4,40,MD5,),
390*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0003, EXP,RC4,MD5,,,,,),
391*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0004, TLS,RSA,WITH,RC4,128,MD5,,),
392*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0004, RC4,MD5,,,,,,),
393*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0005, TLS,RSA,WITH,RC4,128,SHA,,),
394*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0005, RC4,SHA,,,,,,),
395*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0006, TLS,RSA,EXPORT,WITH,RC2,CBC,40,MD5),
396*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0006, EXP,RC2,CBC,MD5,,,,),
397*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0007, TLS,RSA,WITH,IDEA,CBC,SHA,,),
398*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0007, IDEA,CBC,SHA,,,,,),
399*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0008, TLS,RSA,EXPORT,WITH,DES40,CBC,SHA,),
400*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0008, EXP,DES,CBC,SHA,,,,),
401*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0009, TLS,RSA,WITH,DES,CBC,SHA,,),
402*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0009, DES,CBC,SHA,,,,,),
403*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000B, TLS,DH,DSS,EXPORT,WITH,DES40,CBC,SHA),
404*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000B, EXP,DH,DSS,DES,CBC,SHA,,),
405*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000C, TLS,DH,DSS,WITH,DES,CBC,SHA,),
406*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000C, DH,DSS,DES,CBC,SHA,,,),
407*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000D, TLS,DH,DSS,WITH,3DES,EDE,CBC,SHA),
408*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000D, DH,DSS,DES,CBC3,SHA,,,),
409*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000E, TLS,DH,RSA,EXPORT,WITH,DES40,CBC,SHA),
410*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000E, EXP,DH,RSA,DES,CBC,SHA,,),
411*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000F, TLS,DH,RSA,WITH,DES,CBC,SHA,),
412*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x000F, DH,RSA,DES,CBC,SHA,,,),
413*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0010, TLS,DH,RSA,WITH,3DES,EDE,CBC,SHA),
414*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0010, DH,RSA,DES,CBC3,SHA,,,),
415*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0011, TLS,DHE,DSS,EXPORT,WITH,DES40,CBC,SHA),
416*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0011, EXP,DHE,DSS,DES,CBC,SHA,,),
417*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0011, EXP,EDH,DSS,DES,CBC,SHA,,), /* bc */
418*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0012, TLS,DHE,DSS,WITH,DES,CBC,SHA,),
419*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0012, DHE,DSS,DES,CBC,SHA,,,),
420*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0012, EDH,DSS,DES,CBC,SHA,,,), /* bc */
421*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0013, TLS,DHE,DSS,WITH,3DES,EDE,CBC,SHA),
422*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0013, DHE,DSS,DES,CBC3,SHA,,,),
423*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0013, EDH,DSS,DES,CBC3,SHA,,,), /* bc */
424*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0014, TLS,DHE,RSA,EXPORT,WITH,DES40,CBC,SHA),
425*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0014, EXP,DHE,RSA,DES,CBC,SHA,,),
426*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0014, EXP,EDH,RSA,DES,CBC,SHA,,), /* bc */
427*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0015, TLS,DHE,RSA,WITH,DES,CBC,SHA,),
428*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0015, DHE,RSA,DES,CBC,SHA,,,),
429*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0015, EDH,RSA,DES,CBC,SHA,,,), /* bc */
430*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0016, TLS,DHE,RSA,WITH,3DES,EDE,CBC,SHA),
431*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0016, DHE,RSA,DES,CBC3,SHA,,,),
432*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0016, EDH,RSA,DES,CBC3,SHA,,,), /* bc */
433*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0017, TLS,DH,anon,EXPORT,WITH,RC4,40,MD5),
434*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0017, EXP,ADH,RC4,MD5,,,,),
435*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0018, TLS,DH,anon,WITH,RC4,128,MD5,),
436*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0018, ADH,RC4,MD5,,,,,),
437*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0019, TLS,DH,anon,EXPORT,WITH,DES40,CBC,SHA),
438*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0019, EXP,ADH,DES,CBC,SHA,,,),
439*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x001A, TLS,DH,anon,WITH,DES,CBC,SHA,),
440*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x001A, ADH,DES,CBC,SHA,,,,),
441*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x001B, TLS,DH,anon,WITH,3DES,EDE,CBC,SHA),
442*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x001B, ADH,DES,CBC3,SHA,,,,),
443*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0030, TLS,DH,DSS,WITH,AES,128,CBC,SHA),
444*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0030, DH,DSS,AES128,SHA,,,,),
445*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0031, TLS,DH,RSA,WITH,AES,128,CBC,SHA),
446*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0031, DH,RSA,AES128,SHA,,,,),
447*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0032, TLS,DHE,DSS,WITH,AES,128,CBC,SHA),
448*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0032, DHE,DSS,AES128,SHA,,,,),
449*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0034, TLS,DH,anon,WITH,AES,128,CBC,SHA),
450*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0034, ADH,AES128,SHA,,,,,),
451*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0036, TLS,DH,DSS,WITH,AES,256,CBC,SHA),
452*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0036, DH,DSS,AES256,SHA,,,,),
453*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0037, TLS,DH,RSA,WITH,AES,256,CBC,SHA),
454*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0037, DH,RSA,AES256,SHA,,,,),
455*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0038, TLS,DHE,DSS,WITH,AES,256,CBC,SHA),
456*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0038, DHE,DSS,AES256,SHA,,,,),
457*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003A, TLS,DH,anon,WITH,AES,256,CBC,SHA),
458*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003A, ADH,AES256,SHA,,,,,),
459*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003E, TLS,DH,DSS,WITH,AES,128,CBC,SHA256),
460*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003E, DH,DSS,AES128,SHA256,,,,),
461*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003F, TLS,DH,RSA,WITH,AES,128,CBC,SHA256),
462*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x003F, DH,RSA,AES128,SHA256,,,,),
463*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0040, TLS,DHE,DSS,WITH,AES,128,CBC,SHA256),
464*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0040, DHE,DSS,AES128,SHA256,,,,),
465*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0068, TLS,DH,DSS,WITH,AES,256,CBC,SHA256),
466*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0068, DH,DSS,AES256,SHA256,,,,),
467*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0069, TLS,DH,RSA,WITH,AES,256,CBC,SHA256),
468*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0069, DH,RSA,AES256,SHA256,,,,),
469*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006A, TLS,DHE,DSS,WITH,AES,256,CBC,SHA256),
470*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006A, DHE,DSS,AES256,SHA256,,,,),
471*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006C, TLS,DH,anon,WITH,AES,128,CBC,SHA256),
472*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006C, ADH,AES128,SHA256,,,,,),
473*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006D, TLS,DH,anon,WITH,AES,256,CBC,SHA256),
474*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x006D, ADH,AES256,SHA256,,,,,),
475*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008A, TLS,PSK,WITH,RC4,128,SHA,,),
476*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008A, PSK,RC4,SHA,,,,,),
477*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008B, TLS,PSK,WITH,3DES,EDE,CBC,SHA,),
478*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008B, PSK,3DES,EDE,CBC,SHA,,,),
479*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008E, TLS,DHE,PSK,WITH,RC4,128,SHA,),
480*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008E, DHE,PSK,RC4,SHA,,,,),
481*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008F, TLS,DHE,PSK,WITH,3DES,EDE,CBC,SHA),
482*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x008F, DHE,PSK,3DES,EDE,CBC,SHA,,),
483*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0092, TLS,RSA,PSK,WITH,RC4,128,SHA,),
484*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0092, RSA,PSK,RC4,SHA,,,,),
485*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0093, TLS,RSA,PSK,WITH,3DES,EDE,CBC,SHA),
486*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0093, RSA,PSK,3DES,EDE,CBC,SHA,,),
487*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A0, TLS,DH,RSA,WITH,AES,128,GCM,SHA256),
488*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A0, DH,RSA,AES128,GCM,SHA256,,,),
489*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A1, TLS,DH,RSA,WITH,AES,256,GCM,SHA384),
490*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A1, DH,RSA,AES256,GCM,SHA384,,,),
491*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A2, TLS,DHE,DSS,WITH,AES,128,GCM,SHA256),
492*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A2, DHE,DSS,AES128,GCM,SHA256,,,),
493*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A3, TLS,DHE,DSS,WITH,AES,256,GCM,SHA384),
494*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A3, DHE,DSS,AES256,GCM,SHA384,,,),
495*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A4, TLS,DH,DSS,WITH,AES,128,GCM,SHA256),
496*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A4, DH,DSS,AES128,GCM,SHA256,,,),
497*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A5, TLS,DH,DSS,WITH,AES,256,GCM,SHA384),
498*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A5, DH,DSS,AES256,GCM,SHA384,,,),
499*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A6, TLS,DH,anon,WITH,AES,128,GCM,SHA256),
500*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A6, ADH,AES128,GCM,SHA256,,,,),
501*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A7, TLS,DH,anon,WITH,AES,256,GCM,SHA384),
502*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00A7, ADH,AES256,GCM,SHA384,,,,),
503*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC002, TLS,ECDH,ECDSA,WITH,RC4,128,SHA,),
504*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC002, ECDH,ECDSA,RC4,SHA,,,,),
505*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC007, TLS,ECDHE,ECDSA,WITH,RC4,128,SHA,),
506*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC007, ECDHE,ECDSA,RC4,SHA,,,,),
507*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00C, TLS,ECDH,RSA,WITH,RC4,128,SHA,),
508*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC00C, ECDH,RSA,RC4,SHA,,,,),
509*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC011, TLS,ECDHE,RSA,WITH,RC4,128,SHA,),
510*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC011, ECDHE,RSA,RC4,SHA,,,,),
511*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC015, TLS,ECDH,anon,WITH,NULL,SHA,,),
512*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC015, AECDH,NULL,SHA,,,,,),
513*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC016, TLS,ECDH,anon,WITH,RC4,128,SHA,),
514*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC016, AECDH,RC4,SHA,,,,,),
515*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC017, TLS,ECDH,anon,WITH,3DES,EDE,CBC,SHA),
516*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC017, AECDH,DES,CBC3,SHA,,,,),
517*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC018, TLS,ECDH,anon,WITH,AES,128,CBC,SHA),
518*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC018, AECDH,AES128,SHA,,,,,),
519*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC019, TLS,ECDH,anon,WITH,AES,256,CBC,SHA),
520*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC019, AECDH,AES256,SHA,,,,,),
521*6236dae4SAndroid Build Coastguard Worker #endif
522*6236dae4SAndroid Build Coastguard Worker #if defined(USE_MBEDTLS)
523*6236dae4SAndroid Build Coastguard Worker   /* entries marked ns are "non-standard", they are not in OpenSSL */
524*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0041, TLS,RSA,WITH,CAMELLIA,128,CBC,SHA,),
525*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0041, CAMELLIA128,SHA,,,,,,),
526*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0045, TLS,DHE,RSA,WITH,CAMELLIA,128,CBC,SHA),
527*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0045, DHE,RSA,CAMELLIA128,SHA,,,,),
528*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0084, TLS,RSA,WITH,CAMELLIA,256,CBC,SHA,),
529*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0084, CAMELLIA256,SHA,,,,,,),
530*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0088, TLS,DHE,RSA,WITH,CAMELLIA,256,CBC,SHA),
531*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x0088, DHE,RSA,CAMELLIA256,SHA,,,,),
532*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00BA, TLS,RSA,WITH,CAMELLIA,128,CBC,SHA256,),
533*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00BA, CAMELLIA128,SHA256,,,,,,),
534*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00BE, TLS,DHE,RSA,WITH,CAMELLIA,128,CBC,SHA256),
535*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00BE, DHE,RSA,CAMELLIA128,SHA256,,,,),
536*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00C0, TLS,RSA,WITH,CAMELLIA,256,CBC,SHA256,),
537*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00C0, CAMELLIA256,SHA256,,,,,,),
538*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00C4, TLS,DHE,RSA,WITH,CAMELLIA,256,CBC,SHA256),
539*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0x00C4, DHE,RSA,CAMELLIA256,SHA256,,,,),
540*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC037, TLS,ECDHE,PSK,WITH,AES,128,CBC,SHA256),
541*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC037, ECDHE,PSK,AES128,CBC,SHA256,,,),
542*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC038, TLS,ECDHE,PSK,WITH,AES,256,CBC,SHA384),
543*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC038, ECDHE,PSK,AES256,CBC,SHA384,,,),
544*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC039, TLS,ECDHE,PSK,WITH,NULL,SHA,,),
545*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC039, ECDHE,PSK,NULL,SHA,,,,),
546*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03A, TLS,ECDHE,PSK,WITH,NULL,SHA256,,),
547*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03A, ECDHE,PSK,NULL,SHA256,,,,),
548*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03B, TLS,ECDHE,PSK,WITH,NULL,SHA384,,),
549*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03B, ECDHE,PSK,NULL,SHA384,,,,),
550*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03C, TLS,RSA,WITH,ARIA,128,CBC,SHA256,),
551*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03C, ARIA128,SHA256,,,,,,), /* ns */
552*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03D, TLS,RSA,WITH,ARIA,256,CBC,SHA384,),
553*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC03D, ARIA256,SHA384,,,,,,), /* ns */
554*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC044, TLS,DHE,RSA,WITH,ARIA,128,CBC,SHA256),
555*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC044, DHE,RSA,ARIA128,SHA256,,,,), /* ns */
556*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC045, TLS,DHE,RSA,WITH,ARIA,256,CBC,SHA384),
557*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC045, DHE,RSA,ARIA256,SHA384,,,,), /* ns */
558*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC048, TLS,ECDHE,ECDSA,WITH,ARIA,128,CBC,SHA256),
559*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC048, ECDHE,ECDSA,ARIA128,SHA256,,,,), /* ns */
560*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC049, TLS,ECDHE,ECDSA,WITH,ARIA,256,CBC,SHA384),
561*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC049, ECDHE,ECDSA,ARIA256,SHA384,,,,), /* ns */
562*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04A, TLS,ECDH,ECDSA,WITH,ARIA,128,CBC,SHA256),
563*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04A, ECDH,ECDSA,ARIA128,SHA256,,,,), /* ns */
564*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04B, TLS,ECDH,ECDSA,WITH,ARIA,256,CBC,SHA384),
565*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04B, ECDH,ECDSA,ARIA256,SHA384,,,,), /* ns */
566*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04C, TLS,ECDHE,RSA,WITH,ARIA,128,CBC,SHA256),
567*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04C, ECDHE,ARIA128,SHA256,,,,,), /* ns */
568*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04D, TLS,ECDHE,RSA,WITH,ARIA,256,CBC,SHA384),
569*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04D, ECDHE,ARIA256,SHA384,,,,,), /* ns */
570*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04E, TLS,ECDH,RSA,WITH,ARIA,128,CBC,SHA256),
571*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04E, ECDH,ARIA128,SHA256,,,,,), /* ns */
572*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04F, TLS,ECDH,RSA,WITH,ARIA,256,CBC,SHA384),
573*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC04F, ECDH,ARIA256,SHA384,,,,,), /* ns */
574*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC050, TLS,RSA,WITH,ARIA,128,GCM,SHA256,),
575*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC050, ARIA128,GCM,SHA256,,,,,),
576*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC051, TLS,RSA,WITH,ARIA,256,GCM,SHA384,),
577*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC051, ARIA256,GCM,SHA384,,,,,),
578*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC052, TLS,DHE,RSA,WITH,ARIA,128,GCM,SHA256),
579*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC052, DHE,RSA,ARIA128,GCM,SHA256,,,),
580*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC053, TLS,DHE,RSA,WITH,ARIA,256,GCM,SHA384),
581*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC053, DHE,RSA,ARIA256,GCM,SHA384,,,),
582*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05C, TLS,ECDHE,ECDSA,WITH,ARIA,128,GCM,SHA256),
583*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05C, ECDHE,ECDSA,ARIA128,GCM,SHA256,,,),
584*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05D, TLS,ECDHE,ECDSA,WITH,ARIA,256,GCM,SHA384),
585*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05D, ECDHE,ECDSA,ARIA256,GCM,SHA384,,,),
586*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05E, TLS,ECDH,ECDSA,WITH,ARIA,128,GCM,SHA256),
587*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05E, ECDH,ECDSA,ARIA128,GCM,SHA256,,,), /* ns */
588*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05F, TLS,ECDH,ECDSA,WITH,ARIA,256,GCM,SHA384),
589*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC05F, ECDH,ECDSA,ARIA256,GCM,SHA384,,,), /* ns */
590*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC060, TLS,ECDHE,RSA,WITH,ARIA,128,GCM,SHA256),
591*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC060, ECDHE,ARIA128,GCM,SHA256,,,,),
592*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC061, TLS,ECDHE,RSA,WITH,ARIA,256,GCM,SHA384),
593*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC061, ECDHE,ARIA256,GCM,SHA384,,,,),
594*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC062, TLS,ECDH,RSA,WITH,ARIA,128,GCM,SHA256),
595*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC062, ECDH,ARIA128,GCM,SHA256,,,,), /* ns */
596*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC063, TLS,ECDH,RSA,WITH,ARIA,256,GCM,SHA384),
597*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC063, ECDH,ARIA256,GCM,SHA384,,,,), /* ns */
598*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC064, TLS,PSK,WITH,ARIA,128,CBC,SHA256,),
599*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC064, PSK,ARIA128,SHA256,,,,,), /* ns */
600*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC065, TLS,PSK,WITH,ARIA,256,CBC,SHA384,),
601*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC065, PSK,ARIA256,SHA384,,,,,), /* ns */
602*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC066, TLS,DHE,PSK,WITH,ARIA,128,CBC,SHA256),
603*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC066, DHE,PSK,ARIA128,SHA256,,,,), /* ns */
604*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC067, TLS,DHE,PSK,WITH,ARIA,256,CBC,SHA384),
605*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC067, DHE,PSK,ARIA256,SHA384,,,,), /* ns */
606*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC068, TLS,RSA,PSK,WITH,ARIA,128,CBC,SHA256),
607*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC068, RSA,PSK,ARIA128,SHA256,,,,), /* ns */
608*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC069, TLS,RSA,PSK,WITH,ARIA,256,CBC,SHA384),
609*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC069, RSA,PSK,ARIA256,SHA384,,,,), /* ns */
610*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06A, TLS,PSK,WITH,ARIA,128,GCM,SHA256,),
611*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06A, PSK,ARIA128,GCM,SHA256,,,,),
612*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06B, TLS,PSK,WITH,ARIA,256,GCM,SHA384,),
613*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06B, PSK,ARIA256,GCM,SHA384,,,,),
614*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06C, TLS,DHE,PSK,WITH,ARIA,128,GCM,SHA256),
615*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06C, DHE,PSK,ARIA128,GCM,SHA256,,,),
616*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06D, TLS,DHE,PSK,WITH,ARIA,256,GCM,SHA384),
617*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06D, DHE,PSK,ARIA256,GCM,SHA384,,,),
618*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06E, TLS,RSA,PSK,WITH,ARIA,128,GCM,SHA256),
619*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06E, RSA,PSK,ARIA128,GCM,SHA256,,,),
620*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06F, TLS,RSA,PSK,WITH,ARIA,256,GCM,SHA384),
621*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC06F, RSA,PSK,ARIA256,GCM,SHA384,,,),
622*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC070, TLS,ECDHE,PSK,WITH,ARIA,128,CBC,SHA256),
623*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC070, ECDHE,PSK,ARIA128,SHA256,,,,), /* ns */
624*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC071, TLS,ECDHE,PSK,WITH,ARIA,256,CBC,SHA384),
625*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC071, ECDHE,PSK,ARIA256,SHA384,,,,), /* ns */
626*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC072, TLS,ECDHE,ECDSA,WITH,CAMELLIA,128,CBC,SHA256),
627*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC072, ECDHE,ECDSA,CAMELLIA128,SHA256,,,,),
628*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC073, TLS,ECDHE,ECDSA,WITH,CAMELLIA,256,CBC,SHA384),
629*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC073, ECDHE,ECDSA,CAMELLIA256,SHA384,,,,),
630*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC074, TLS,ECDH,ECDSA,WITH,CAMELLIA,128,CBC,SHA256),
631*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC074, ECDH,ECDSA,CAMELLIA128,SHA256,,,,), /* ns */
632*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC075, TLS,ECDH,ECDSA,WITH,CAMELLIA,256,CBC,SHA384),
633*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC075, ECDH,ECDSA,CAMELLIA256,SHA384,,,,), /* ns */
634*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC076, TLS,ECDHE,RSA,WITH,CAMELLIA,128,CBC,SHA256),
635*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC076, ECDHE,RSA,CAMELLIA128,SHA256,,,,),
636*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC077, TLS,ECDHE,RSA,WITH,CAMELLIA,256,CBC,SHA384),
637*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC077, ECDHE,RSA,CAMELLIA256,SHA384,,,,),
638*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC078, TLS,ECDH,RSA,WITH,CAMELLIA,128,CBC,SHA256),
639*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC078, ECDH,CAMELLIA128,SHA256,,,,,), /* ns */
640*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC079, TLS,ECDH,RSA,WITH,CAMELLIA,256,CBC,SHA384),
641*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC079, ECDH,CAMELLIA256,SHA384,,,,,), /* ns */
642*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07A, TLS,RSA,WITH,CAMELLIA,128,GCM,SHA256,),
643*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07A, CAMELLIA128,GCM,SHA256,,,,,), /* ns */
644*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07B, TLS,RSA,WITH,CAMELLIA,256,GCM,SHA384,),
645*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07B, CAMELLIA256,GCM,SHA384,,,,,), /* ns */
646*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07C, TLS,DHE,RSA,WITH,CAMELLIA,128,GCM,SHA256),
647*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07C, DHE,RSA,CAMELLIA128,GCM,SHA256,,,), /* ns */
648*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07D, TLS,DHE,RSA,WITH,CAMELLIA,256,GCM,SHA384),
649*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC07D, DHE,RSA,CAMELLIA256,GCM,SHA384,,,), /* ns */
650*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC086, TLS,ECDHE,ECDSA,WITH,CAMELLIA,128,GCM,SHA256),
651*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC086, ECDHE,ECDSA,CAMELLIA128,GCM,SHA256,,,), /* ns */
652*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC087, TLS,ECDHE,ECDSA,WITH,CAMELLIA,256,GCM,SHA384),
653*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC087, ECDHE,ECDSA,CAMELLIA256,GCM,SHA384,,,), /* ns */
654*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC088, TLS,ECDH,ECDSA,WITH,CAMELLIA,128,GCM,SHA256),
655*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC088, ECDH,ECDSA,CAMELLIA128,GCM,SHA256,,,), /* ns */
656*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC089, TLS,ECDH,ECDSA,WITH,CAMELLIA,256,GCM,SHA384),
657*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC089, ECDH,ECDSA,CAMELLIA256,GCM,SHA384,,,), /* ns */
658*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08A, TLS,ECDHE,RSA,WITH,CAMELLIA,128,GCM,SHA256),
659*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08A, ECDHE,CAMELLIA128,GCM,SHA256,,,,), /* ns */
660*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08B, TLS,ECDHE,RSA,WITH,CAMELLIA,256,GCM,SHA384),
661*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08B, ECDHE,CAMELLIA256,GCM,SHA384,,,,), /* ns */
662*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08C, TLS,ECDH,RSA,WITH,CAMELLIA,128,GCM,SHA256),
663*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08C, ECDH,CAMELLIA128,GCM,SHA256,,,,), /* ns */
664*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08D, TLS,ECDH,RSA,WITH,CAMELLIA,256,GCM,SHA384),
665*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08D, ECDH,CAMELLIA256,GCM,SHA384,,,,), /* ns */
666*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08E, TLS,PSK,WITH,CAMELLIA,128,GCM,SHA256,),
667*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08E, PSK,CAMELLIA128,GCM,SHA256,,,,), /* ns */
668*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08F, TLS,PSK,WITH,CAMELLIA,256,GCM,SHA384,),
669*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC08F, PSK,CAMELLIA256,GCM,SHA384,,,,), /* ns */
670*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC090, TLS,DHE,PSK,WITH,CAMELLIA,128,GCM,SHA256),
671*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC090, DHE,PSK,CAMELLIA128,GCM,SHA256,,,), /* ns */
672*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC091, TLS,DHE,PSK,WITH,CAMELLIA,256,GCM,SHA384),
673*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC091, DHE,PSK,CAMELLIA256,GCM,SHA384,,,), /* ns */
674*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC092, TLS,RSA,PSK,WITH,CAMELLIA,128,GCM,SHA256),
675*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC092, RSA,PSK,CAMELLIA128,GCM,SHA256,,,), /* ns */
676*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC093, TLS,RSA,PSK,WITH,CAMELLIA,256,GCM,SHA384),
677*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC093, RSA,PSK,CAMELLIA256,GCM,SHA384,,,), /* ns */
678*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC094, TLS,PSK,WITH,CAMELLIA,128,CBC,SHA256,),
679*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC094, PSK,CAMELLIA128,SHA256,,,,,),
680*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC095, TLS,PSK,WITH,CAMELLIA,256,CBC,SHA384,),
681*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC095, PSK,CAMELLIA256,SHA384,,,,,),
682*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC096, TLS,DHE,PSK,WITH,CAMELLIA,128,CBC,SHA256),
683*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC096, DHE,PSK,CAMELLIA128,SHA256,,,,),
684*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC097, TLS,DHE,PSK,WITH,CAMELLIA,256,CBC,SHA384),
685*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC097, DHE,PSK,CAMELLIA256,SHA384,,,,),
686*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC098, TLS,RSA,PSK,WITH,CAMELLIA,128,CBC,SHA256),
687*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC098, RSA,PSK,CAMELLIA128,SHA256,,,,),
688*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC099, TLS,RSA,PSK,WITH,CAMELLIA,256,CBC,SHA384),
689*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC099, RSA,PSK,CAMELLIA256,SHA384,,,,),
690*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09A, TLS,ECDHE,PSK,WITH,CAMELLIA,128,CBC,SHA256),
691*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09A, ECDHE,PSK,CAMELLIA128,SHA256,,,,),
692*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09B, TLS,ECDHE,PSK,WITH,CAMELLIA,256,CBC,SHA384),
693*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09B, ECDHE,PSK,CAMELLIA256,SHA384,,,,),
694*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09E, TLS,DHE,RSA,WITH,AES,128,CCM,),
695*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09E, DHE,RSA,AES128,CCM,,,,),
696*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09F, TLS,DHE,RSA,WITH,AES,256,CCM,),
697*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC09F, DHE,RSA,AES256,CCM,,,,),
698*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A2, TLS,DHE,RSA,WITH,AES,128,CCM,8),
699*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A2, DHE,RSA,AES128,CCM8,,,,),
700*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A3, TLS,DHE,RSA,WITH,AES,256,CCM,8),
701*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A3, DHE,RSA,AES256,CCM8,,,,),
702*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A4, TLS,PSK,WITH,AES,128,CCM,,),
703*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A4, PSK,AES128,CCM,,,,,),
704*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A5, TLS,PSK,WITH,AES,256,CCM,,),
705*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A5, PSK,AES256,CCM,,,,,),
706*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A6, TLS,DHE,PSK,WITH,AES,128,CCM,),
707*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A6, DHE,PSK,AES128,CCM,,,,),
708*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A7, TLS,DHE,PSK,WITH,AES,256,CCM,),
709*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A7, DHE,PSK,AES256,CCM,,,,),
710*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A8, TLS,PSK,WITH,AES,128,CCM,8,),
711*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A8, PSK,AES128,CCM8,,,,,),
712*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A9, TLS,PSK,WITH,AES,256,CCM,8,),
713*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0A9, PSK,AES256,CCM8,,,,,),
714*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AA, TLS,PSK,DHE,WITH,AES,128,CCM,8),
715*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AA, DHE,PSK,AES128,CCM8,,,,),
716*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AB, TLS,PSK,DHE,WITH,AES,256,CCM,8),
717*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xC0AB, DHE,PSK,AES256,CCM8,,,,),
718*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAA, TLS,DHE,RSA,WITH,CHACHA20,POLY1305,SHA256,),
719*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAA, DHE,RSA,CHACHA20,POLY1305,,,,),
720*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAC, TLS,ECDHE,PSK,WITH,CHACHA20,POLY1305,SHA256,),
721*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAC, ECDHE,PSK,CHACHA20,POLY1305,,,,),
722*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAD, TLS,DHE,PSK,WITH,CHACHA20,POLY1305,SHA256,),
723*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAD, DHE,PSK,CHACHA20,POLY1305,,,,),
724*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAE, TLS,RSA,PSK,WITH,CHACHA20,POLY1305,SHA256,),
725*6236dae4SAndroid Build Coastguard Worker   CS_ENTRY(0xCCAE, RSA,PSK,CHACHA20,POLY1305,,,,),
726*6236dae4SAndroid Build Coastguard Worker #endif
727*6236dae4SAndroid Build Coastguard Worker };
728*6236dae4SAndroid Build Coastguard Worker #define CS_LIST_LEN (sizeof(cs_list) / sizeof(cs_list[0]))
729*6236dae4SAndroid Build Coastguard Worker 
cs_str_to_zip(const char * cs_str,size_t cs_len,uint8_t zip[6])730*6236dae4SAndroid Build Coastguard Worker static int cs_str_to_zip(const char *cs_str, size_t cs_len,
731*6236dae4SAndroid Build Coastguard Worker                          uint8_t zip[6])
732*6236dae4SAndroid Build Coastguard Worker {
733*6236dae4SAndroid Build Coastguard Worker   uint8_t indexes[8] = {0};
734*6236dae4SAndroid Build Coastguard Worker   const char *entry, *cur;
735*6236dae4SAndroid Build Coastguard Worker   const char *nxt = cs_str;
736*6236dae4SAndroid Build Coastguard Worker   const char *end = cs_str + cs_len;
737*6236dae4SAndroid Build Coastguard Worker   char separator = '-';
738*6236dae4SAndroid Build Coastguard Worker   int idx, i = 0;
739*6236dae4SAndroid Build Coastguard Worker   size_t len;
740*6236dae4SAndroid Build Coastguard Worker 
741*6236dae4SAndroid Build Coastguard Worker   /* split the cipher string by '-' or '_' */
742*6236dae4SAndroid Build Coastguard Worker   if(strncasecompare(cs_str, "TLS", 3))
743*6236dae4SAndroid Build Coastguard Worker     separator = '_';
744*6236dae4SAndroid Build Coastguard Worker 
745*6236dae4SAndroid Build Coastguard Worker   do {
746*6236dae4SAndroid Build Coastguard Worker     if(i == 8)
747*6236dae4SAndroid Build Coastguard Worker       return -1;
748*6236dae4SAndroid Build Coastguard Worker 
749*6236dae4SAndroid Build Coastguard Worker     /* determine the length of the part */
750*6236dae4SAndroid Build Coastguard Worker     cur = nxt;
751*6236dae4SAndroid Build Coastguard Worker     for(; nxt < end && *nxt != '\0' && *nxt != separator; nxt++);
752*6236dae4SAndroid Build Coastguard Worker     len = nxt - cur;
753*6236dae4SAndroid Build Coastguard Worker 
754*6236dae4SAndroid Build Coastguard Worker     /* lookup index for the part (skip empty string at 0) */
755*6236dae4SAndroid Build Coastguard Worker     for(idx = 1, entry = cs_txt + 1; idx < CS_TXT_LEN; idx++) {
756*6236dae4SAndroid Build Coastguard Worker       size_t elen = strlen(entry);
757*6236dae4SAndroid Build Coastguard Worker       if(elen == len && strncasecompare(entry, cur, len))
758*6236dae4SAndroid Build Coastguard Worker         break;
759*6236dae4SAndroid Build Coastguard Worker       entry += elen + 1;
760*6236dae4SAndroid Build Coastguard Worker     }
761*6236dae4SAndroid Build Coastguard Worker     if(idx == CS_TXT_LEN)
762*6236dae4SAndroid Build Coastguard Worker       return -1;
763*6236dae4SAndroid Build Coastguard Worker 
764*6236dae4SAndroid Build Coastguard Worker     indexes[i++] = (uint8_t) idx;
765*6236dae4SAndroid Build Coastguard Worker   } while(nxt < end && *(nxt++) != '\0');
766*6236dae4SAndroid Build Coastguard Worker 
767*6236dae4SAndroid Build Coastguard Worker   /* zip the 8 indexes into 48 bits */
768*6236dae4SAndroid Build Coastguard Worker   zip[0] = (uint8_t) (indexes[0] << 2 | (indexes[1] & 0x3F) >> 4);
769*6236dae4SAndroid Build Coastguard Worker   zip[1] = (uint8_t) (indexes[1] << 4 | (indexes[2] & 0x3F) >> 2);
770*6236dae4SAndroid Build Coastguard Worker   zip[2] = (uint8_t) (indexes[2] << 6 | (indexes[3] & 0x3F));
771*6236dae4SAndroid Build Coastguard Worker   zip[3] = (uint8_t) (indexes[4] << 2 | (indexes[5] & 0x3F) >> 4);
772*6236dae4SAndroid Build Coastguard Worker   zip[4] = (uint8_t) (indexes[5] << 4 | (indexes[6] & 0x3F) >> 2);
773*6236dae4SAndroid Build Coastguard Worker   zip[5] = (uint8_t) (indexes[6] << 6 | (indexes[7] & 0x3F));
774*6236dae4SAndroid Build Coastguard Worker 
775*6236dae4SAndroid Build Coastguard Worker   return 0;
776*6236dae4SAndroid Build Coastguard Worker }
777*6236dae4SAndroid Build Coastguard Worker 
cs_zip_to_str(const uint8_t zip[6],char * buf,size_t buf_size)778*6236dae4SAndroid Build Coastguard Worker static int cs_zip_to_str(const uint8_t zip[6],
779*6236dae4SAndroid Build Coastguard Worker                          char *buf, size_t buf_size)
780*6236dae4SAndroid Build Coastguard Worker {
781*6236dae4SAndroid Build Coastguard Worker   uint8_t indexes[8] = {0};
782*6236dae4SAndroid Build Coastguard Worker   const char *entry;
783*6236dae4SAndroid Build Coastguard Worker   char separator = '-';
784*6236dae4SAndroid Build Coastguard Worker   int idx, i, r;
785*6236dae4SAndroid Build Coastguard Worker   size_t len = 0;
786*6236dae4SAndroid Build Coastguard Worker 
787*6236dae4SAndroid Build Coastguard Worker   /* unzip the 8 indexes */
788*6236dae4SAndroid Build Coastguard Worker   indexes[0] = zip[0] >> 2;
789*6236dae4SAndroid Build Coastguard Worker   indexes[1] = ((zip[0] << 4) & 0x3F) | zip[1] >> 4;
790*6236dae4SAndroid Build Coastguard Worker   indexes[2] = ((zip[1] << 2) & 0x3F) | zip[2] >> 6;
791*6236dae4SAndroid Build Coastguard Worker   indexes[3] = ((zip[2] << 0) & 0x3F);
792*6236dae4SAndroid Build Coastguard Worker   indexes[4] = zip[3] >> 2;
793*6236dae4SAndroid Build Coastguard Worker   indexes[5] = ((zip[3] << 4) & 0x3F) | zip[4] >> 4;
794*6236dae4SAndroid Build Coastguard Worker   indexes[6] = ((zip[4] << 2) & 0x3F) | zip[5] >> 6;
795*6236dae4SAndroid Build Coastguard Worker   indexes[7] = ((zip[5] << 0) & 0x3F);
796*6236dae4SAndroid Build Coastguard Worker 
797*6236dae4SAndroid Build Coastguard Worker   if(indexes[0] == CS_TXT_IDX_TLS)
798*6236dae4SAndroid Build Coastguard Worker     separator = '_';
799*6236dae4SAndroid Build Coastguard Worker 
800*6236dae4SAndroid Build Coastguard Worker   for(i = 0; i < 8 && indexes[i] != 0 && len < buf_size; i++) {
801*6236dae4SAndroid Build Coastguard Worker     if(indexes[i] >= CS_TXT_LEN)
802*6236dae4SAndroid Build Coastguard Worker       return -1;
803*6236dae4SAndroid Build Coastguard Worker 
804*6236dae4SAndroid Build Coastguard Worker     /* lookup the part string for the index (skip empty string at 0) */
805*6236dae4SAndroid Build Coastguard Worker     for(idx = 1, entry = cs_txt + 1; idx < indexes[i]; idx++) {
806*6236dae4SAndroid Build Coastguard Worker       size_t elen = strlen(entry);
807*6236dae4SAndroid Build Coastguard Worker       entry += elen + 1;
808*6236dae4SAndroid Build Coastguard Worker     }
809*6236dae4SAndroid Build Coastguard Worker 
810*6236dae4SAndroid Build Coastguard Worker     /* append the part string to the buffer */
811*6236dae4SAndroid Build Coastguard Worker     if(i > 0)
812*6236dae4SAndroid Build Coastguard Worker       r = msnprintf(&buf[len], buf_size - len, "%c%s", separator, entry);
813*6236dae4SAndroid Build Coastguard Worker     else
814*6236dae4SAndroid Build Coastguard Worker       r = msnprintf(&buf[len], buf_size - len, "%s", entry);
815*6236dae4SAndroid Build Coastguard Worker 
816*6236dae4SAndroid Build Coastguard Worker     if(r < 0)
817*6236dae4SAndroid Build Coastguard Worker       return -1;
818*6236dae4SAndroid Build Coastguard Worker     len += r;
819*6236dae4SAndroid Build Coastguard Worker   }
820*6236dae4SAndroid Build Coastguard Worker 
821*6236dae4SAndroid Build Coastguard Worker   return 0;
822*6236dae4SAndroid Build Coastguard Worker }
823*6236dae4SAndroid Build Coastguard Worker 
Curl_cipher_suite_lookup_id(const char * cs_str,size_t cs_len)824*6236dae4SAndroid Build Coastguard Worker uint16_t Curl_cipher_suite_lookup_id(const char *cs_str, size_t cs_len)
825*6236dae4SAndroid Build Coastguard Worker {
826*6236dae4SAndroid Build Coastguard Worker   size_t i;
827*6236dae4SAndroid Build Coastguard Worker   uint8_t zip[6];
828*6236dae4SAndroid Build Coastguard Worker 
829*6236dae4SAndroid Build Coastguard Worker   if(cs_len > 0 && cs_str_to_zip(cs_str, cs_len, zip) == 0) {
830*6236dae4SAndroid Build Coastguard Worker     for(i = 0; i < CS_LIST_LEN; i++) {
831*6236dae4SAndroid Build Coastguard Worker       if(memcmp(cs_list[i].zip, zip, sizeof(zip)) == 0)
832*6236dae4SAndroid Build Coastguard Worker         return cs_list[i].id;
833*6236dae4SAndroid Build Coastguard Worker     }
834*6236dae4SAndroid Build Coastguard Worker   }
835*6236dae4SAndroid Build Coastguard Worker 
836*6236dae4SAndroid Build Coastguard Worker   return 0;
837*6236dae4SAndroid Build Coastguard Worker }
838*6236dae4SAndroid Build Coastguard Worker 
cs_is_separator(char c)839*6236dae4SAndroid Build Coastguard Worker static bool cs_is_separator(char c)
840*6236dae4SAndroid Build Coastguard Worker {
841*6236dae4SAndroid Build Coastguard Worker   switch(c) {
842*6236dae4SAndroid Build Coastguard Worker     case ' ':
843*6236dae4SAndroid Build Coastguard Worker     case '\t':
844*6236dae4SAndroid Build Coastguard Worker     case ':':
845*6236dae4SAndroid Build Coastguard Worker     case ',':
846*6236dae4SAndroid Build Coastguard Worker     case ';':
847*6236dae4SAndroid Build Coastguard Worker       return TRUE;
848*6236dae4SAndroid Build Coastguard Worker     default:;
849*6236dae4SAndroid Build Coastguard Worker   }
850*6236dae4SAndroid Build Coastguard Worker   return FALSE;
851*6236dae4SAndroid Build Coastguard Worker }
852*6236dae4SAndroid Build Coastguard Worker 
Curl_cipher_suite_walk_str(const char ** str,const char ** end)853*6236dae4SAndroid Build Coastguard Worker uint16_t Curl_cipher_suite_walk_str(const char **str, const char **end)
854*6236dae4SAndroid Build Coastguard Worker {
855*6236dae4SAndroid Build Coastguard Worker   /* move string pointer to first non-separator or end of string */
856*6236dae4SAndroid Build Coastguard Worker   for(; cs_is_separator(*str[0]); (*str)++);
857*6236dae4SAndroid Build Coastguard Worker 
858*6236dae4SAndroid Build Coastguard Worker   /* move end pointer to next separator or end of string */
859*6236dae4SAndroid Build Coastguard Worker   for(*end = *str; *end[0] != '\0' && !cs_is_separator(*end[0]); (*end)++);
860*6236dae4SAndroid Build Coastguard Worker 
861*6236dae4SAndroid Build Coastguard Worker   return Curl_cipher_suite_lookup_id(*str, *end - *str);
862*6236dae4SAndroid Build Coastguard Worker }
863*6236dae4SAndroid Build Coastguard Worker 
Curl_cipher_suite_get_str(uint16_t id,char * buf,size_t buf_size,bool prefer_rfc)864*6236dae4SAndroid Build Coastguard Worker int Curl_cipher_suite_get_str(uint16_t id, char *buf, size_t buf_size,
865*6236dae4SAndroid Build Coastguard Worker                               bool prefer_rfc)
866*6236dae4SAndroid Build Coastguard Worker {
867*6236dae4SAndroid Build Coastguard Worker   size_t i, j = CS_LIST_LEN;
868*6236dae4SAndroid Build Coastguard Worker   int r = -1;
869*6236dae4SAndroid Build Coastguard Worker 
870*6236dae4SAndroid Build Coastguard Worker   for(i = 0; i < CS_LIST_LEN; i++) {
871*6236dae4SAndroid Build Coastguard Worker     if(cs_list[i].id != id)
872*6236dae4SAndroid Build Coastguard Worker       continue;
873*6236dae4SAndroid Build Coastguard Worker     if((cs_list[i].zip[0] >> 2 != CS_TXT_IDX_TLS) == !prefer_rfc) {
874*6236dae4SAndroid Build Coastguard Worker       j = i;
875*6236dae4SAndroid Build Coastguard Worker       break;
876*6236dae4SAndroid Build Coastguard Worker     }
877*6236dae4SAndroid Build Coastguard Worker     if(j == CS_LIST_LEN)
878*6236dae4SAndroid Build Coastguard Worker       j = i;
879*6236dae4SAndroid Build Coastguard Worker   }
880*6236dae4SAndroid Build Coastguard Worker 
881*6236dae4SAndroid Build Coastguard Worker   if(j < CS_LIST_LEN)
882*6236dae4SAndroid Build Coastguard Worker     r = cs_zip_to_str(cs_list[j].zip, buf, buf_size);
883*6236dae4SAndroid Build Coastguard Worker 
884*6236dae4SAndroid Build Coastguard Worker   if(r < 0)
885*6236dae4SAndroid Build Coastguard Worker     msnprintf(buf, buf_size, "TLS_UNKNOWN_0x%04x", id);
886*6236dae4SAndroid Build Coastguard Worker 
887*6236dae4SAndroid Build Coastguard Worker   return r;
888*6236dae4SAndroid Build Coastguard Worker }
889*6236dae4SAndroid Build Coastguard Worker 
890*6236dae4SAndroid Build Coastguard Worker #endif /* defined(USE_SECTRANSP) || defined(USE_MBEDTLS) || \
891*6236dae4SAndroid Build Coastguard Worker           defined(USE_BEARSSL) || defined(USE_RUSTLS) */
892