• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This file is part of the openHiTLS project.
3  *
4  * openHiTLS is licensed under the Mulan PSL v2.
5  * You can use this software according to the terms and conditions of the Mulan PSL v2.
6  * You may obtain a copy of Mulan PSL v2 at:
7  *
8  *     http://license.coscl.org.cn/MulanPSL2
9  *
10  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13  * See the Mulan PSL v2 for more details.
14  */
15 /* Derivation of configuration features.
16  * The derivation type (rule) and sequence are as follows:
17  * 1. Parent features derive child features.
18  * 2. Derive the features of dependencies.
19  *    For example, if feature a depends on features b and c, you need to derive features b and c.
20  * 3. Child features derive parent features.
21  *    The high-level interfaces of the crypto module is controlled by the parent feature macro,
22  *    if there is no parent feature, such interfaces will be unavailable.
23  */
24 
25 #ifndef HITLS_CONFIG_LAYER_TLS_H
26 #define HITLS_CONFIG_LAYER_TLS_H
27 
28 // version
29 #ifdef HITLS_TLS_PROTO_VERSION
30     #ifndef HITLS_TLS_PROTO_TLS12
31         #define HITLS_TLS_PROTO_TLS12
32     #endif
33     #ifndef HITLS_TLS_PROTO_TLS13
34         #define HITLS_TLS_PROTO_TLS13
35     #endif
36     #ifndef HITLS_TLS_PROTO_TLCP11
37         #define HITLS_TLS_PROTO_TLCP11
38     #endif
39     #ifndef HITLS_TLS_PROTO_DTLCP11
40         #define HITLS_TLS_PROTO_DTLCP11
41     #endif
42     #ifndef HITLS_TLS_PROTO_DTLS12
43         #define HITLS_TLS_PROTO_DTLS12
44     #endif
45 #endif
46 
47 #if defined(HITLS_TLS_PROTO_DTLCP11)
48     #ifndef HITLS_TLS_PROTO_DTLS12
49         #define HITLS_TLS_PROTO_DTLS12
50     #endif
51     #ifndef HITLS_TLS_PROTO_TLCP11
52         #define HITLS_TLS_PROTO_TLCP11
53     #endif
54 #endif
55 
56 #if defined(HITLS_TLS_PROTO_TLS12) || defined(HITLS_TLS_PROTO_TLS13) || defined(HITLS_TLS_PROTO_TLCP11)
57     #ifndef HITLS_TLS_PROTO_TLS
58         #define HITLS_TLS_PROTO_TLS
59     #endif
60 #endif
61 
62 #if defined(HITLS_TLS_PROTO_TLS12) || defined(HITLS_TLS_PROTO_TLCP11)
63     #ifndef HITLS_TLS_PROTO_TLS_BASIC
64         #define HITLS_TLS_PROTO_TLS_BASIC
65     #endif
66 #endif
67 
68 #if defined(HITLS_TLS_PROTO_DTLS12)
69     #ifndef HITLS_TLS_PROTO_DTLS
70         #define HITLS_TLS_PROTO_DTLS
71     #endif
72 #endif
73 
74 #if defined(HITLS_TLS_PROTO_TLS12) && defined(HITLS_TLS_PROTO_TLS13)
75     #ifndef HITLS_TLS_PROTO_ALL
76         #define HITLS_TLS_PROTO_ALL
77     #endif
78 #endif
79 
80 // host
81 #ifdef HITLS_TLS_HOST
82     #ifndef HITLS_TLS_HOST_SERVER
83         #define HITLS_TLS_HOST_SERVER
84     #endif
85     #ifndef HITLS_TLS_HOST_CLIENT
86         #define HITLS_TLS_HOST_CLIENT
87     #endif
88 #endif
89 
90 #if defined(HITLS_TLS_HOST_SERVER) || defined(HITLS_TLS_HOST_CLIENT)
91     #ifndef HITLS_TLS_HOST
92         #define HITLS_TLS_HOST
93     #endif
94 #endif
95 
96 // callback
97 #ifdef HITLS_TLS_CALLBACK
98     #ifndef HITLS_TLS_FEATURE_PROVIDER
99         #define HITLS_TLS_FEATURE_PROVIDER
100     #endif
101     #ifndef HITLS_TLS_CALLBACK_SAL
102         #define HITLS_TLS_CALLBACK_SAL
103     #endif
104     #ifndef HITLS_TLS_CALLBACK_CERT
105         #define HITLS_TLS_CALLBACK_CERT
106     #endif
107     #ifndef HITLS_TLS_CALLBACK_CRYPT
108         #define HITLS_TLS_CALLBACK_CRYPT
109     #endif
110 #endif
111 
112 #if defined(HITLS_TLS_FEATURE_PROVIDER)
113     #ifdef HITLS_TLS_CALLBACK_SAL
114         #undef HITLS_TLS_CALLBACK_SAL
115     #endif
116     #ifdef HITLS_TLS_CALLBACK_CERT
117         #undef HITLS_TLS_CALLBACK_CERT
118     #endif
119     #ifdef HITLS_TLS_CALLBACK_CRYPT
120         #undef HITLS_TLS_CALLBACK_CRYPT
121     #endif
122 #endif
123 
124 #if defined(HITLS_TLS_CALLBACK_CERT) || defined(HITLS_TLS_CALLBACK_CRYPT)
125     #ifndef HITLS_TLS_CALLBACK_SAL
126         #define HITLS_TLS_CALLBACK_SAL
127     #endif
128 #endif
129 
130 #ifdef HITLS_TLS_FEATURE_PROVIDER
131     #ifndef HITLS_BSL_HASH
132         #define HITLS_BSL_HASH
133     #endif
134 #endif
135 
136 #if !defined(HITLS_TLS_FEATURE_PROVIDER) && !defined(HITLS_TLS_CALLBACK_SAL)
137     #define HITLS_TLS_FEATURE_PROVIDER
138 #endif
139 
140 // feature
141 #ifdef HITLS_TLS_FEATURE
142     #ifndef HITLS_TLS_FEATURE_RENEGOTIATION
143         #define HITLS_TLS_FEATURE_RENEGOTIATION
144     #endif
145     #ifndef HITLS_TLS_FEATURE_ALPN
146         #define HITLS_TLS_FEATURE_ALPN
147     #endif
148     #ifndef HITLS_TLS_FEATURE_SNI
149         #define HITLS_TLS_FEATURE_SNI
150     #endif
151     #ifndef HITLS_TLS_FEATURE_PHA
152         #define HITLS_TLS_FEATURE_PHA
153     #endif
154     #ifndef HITLS_TLS_FEATURE_PSK
155         #define HITLS_TLS_FEATURE_PSK
156     #endif
157     #ifndef HITLS_TLS_FEATURE_SECURITY
158         #define HITLS_TLS_FEATURE_SECURITY
159     #endif
160     #ifndef HITLS_TLS_FEATURE_INDICATOR
161         #define HITLS_TLS_FEATURE_INDICATOR
162     #endif
163     #ifndef HITLS_TLS_FEATURE_SESSION
164         #define HITLS_TLS_FEATURE_SESSION
165     #endif
166     #ifndef HITLS_TLS_FEATURE_KEY_UPDATE
167         #define HITLS_TLS_FEATURE_KEY_UPDATE
168     #endif
169     #ifndef HITLS_TLS_FEATURE_FLIGHT
170         #define HITLS_TLS_FEATURE_FLIGHT
171     #endif
172     #ifndef HITLS_TLS_FEATURE_CERT_MODE
173         #define HITLS_TLS_FEATURE_CERT_MODE
174     #endif
175     #ifndef HITLS_TLS_FEATURE_MODE
176         #define HITLS_TLS_FEATURE_MODE
177     #endif
178     #ifndef HITLS_TLS_FEATURE_KEM
179         #define HITLS_TLS_FEATURE_KEM
180     #endif
181     #ifndef HITLS_TLS_FEATURE_CUSTOM_EXTENSION
182         #define HITLS_TLS_FEATURE_CUSTOM_EXTENSION
183     #endif
184 #endif /* HITLS_TLS_FEATURE */
185 
186 #ifdef HITLS_TLS_FEATURE_SESSION
187     #ifndef HITLS_TLS_FEATURE_SESSION_TICKET
188         #define HITLS_TLS_FEATURE_SESSION_TICKET
189     #endif
190     #ifndef HITLS_TLS_FEATURE_SESSION_ID
191         #define HITLS_TLS_FEATURE_SESSION_ID
192     #endif
193 #endif
194 
195 #ifdef HITLS_TLS_FEATURE_MODE
196     #ifndef HITLS_TLS_FEATURE_MODE_FALL_BACK_SCSV
197         #define HITLS_TLS_FEATURE_MODE_FALL_BACK_SCSV
198     #endif
199 #endif
200 
201 #if defined(HITLS_TLS_FEATURE_SESSION_TICKET) || defined(HITLS_TLS_FEATURE_SESSION_ID)
202     #ifndef HITLS_TLS_FEATURE_SESSION
203         #define HITLS_TLS_FEATURE_SESSION
204     #endif
205 #endif
206 
207 #ifdef HITLS_TLS_FEATURE_SECURITY
208     #ifndef HITLS_TLS_CONFIG_CIPHER_SUITE
209         #define HITLS_TLS_CONFIG_CIPHER_SUITE
210     #endif
211 #endif
212 
213 // proto
214 #ifdef HITLS_TLS_PROTO
215     #ifndef HITLS_BSL_TLV
216         #define HITLS_BSL_TLV
217     #endif
218     #ifndef HITLS_BSL_SAL
219         #define HITLS_BSL_SAL
220     #endif
221     #ifndef HITLS_CRYPTO_EAL
222         #define HITLS_CRYPTO_EAL
223     #endif
224 #endif
225 
226 // suite_cipher
227 #ifdef HITLS_TLS_SUITE_CIPHER
228     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
229         #define HITLS_TLS_SUITE_CIPHER_AEAD
230     #endif
231     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
232         #define HITLS_TLS_SUITE_CIPHER_CBC
233     #endif
234 #endif
235 
236 // KX
237 #ifdef HITLS_TLS_SUITE_KX
238     #ifndef HITLS_TLS_SUITE_KX_ECDHE
239         #define HITLS_TLS_SUITE_KX_ECDHE
240     #endif
241     #ifndef HITLS_TLS_SUITE_KX_DHE
242         #define HITLS_TLS_SUITE_KX_DHE
243     #endif
244     #ifndef HITLS_TLS_SUITE_KX_ECDH
245         #define HITLS_TLS_SUITE_KX_ECDH
246     #endif
247     #ifndef HITLS_TLS_SUITE_KX_DH
248         #define HITLS_TLS_SUITE_KX_DH
249     #endif
250     #ifndef HITLS_TLS_SUITE_KX_RSA
251         #define HITLS_TLS_SUITE_KX_RSA
252     #endif
253 #endif
254 
255 // AUTH
256 #ifdef HITLS_TLS_SUITE_AUTH
257     #ifndef HITLS_TLS_SUITE_AUTH_RSA
258         #define HITLS_TLS_SUITE_AUTH_RSA
259     #endif
260     #ifndef HITLS_TLS_SUITE_AUTH_ECDSA
261         #define HITLS_TLS_SUITE_AUTH_ECDSA
262     #endif
263     #ifndef HITLS_TLS_SUITE_AUTH_DSS
264         #define HITLS_TLS_SUITE_AUTH_DSS
265     #endif
266     #ifndef HITLS_TLS_SUITE_AUTH_PSK
267         #define HITLS_TLS_SUITE_AUTH_PSK
268     #endif
269     #ifndef HITLS_TLS_SUITE_AUTH_SM2
270         #define HITLS_TLS_SUITE_AUTH_SM2
271     #endif
272 #endif
273 
274 // MAINTAIN
275 #ifdef HITLS_TLS_MAINTAIN
276     #ifndef HITLS_TLS_MAINTAIN_KEYLOG
277         #define HITLS_TLS_MAINTAIN_KEYLOG
278     #endif
279 #endif
280 
281 #ifdef HITLS_TLS_CONFIG
282     #ifndef HITLS_TLS_CONFIG_MANUAL_DH
283         #define HITLS_TLS_CONFIG_MANUAL_DH
284     #endif
285     #ifndef HITLS_TLS_CONFIG_CERT
286         #define HITLS_TLS_CONFIG_CERT
287     #endif
288     #ifndef HITLS_TLS_CONFIG_KEY_USAGE
289         #define HITLS_TLS_CONFIG_KEY_USAGE
290     #endif
291     #ifndef HITLS_TLS_CONFIG_INFO
292         #define HITLS_TLS_CONFIG_INFO
293     #endif
294     #ifndef HITLS_TLS_CONFIG_STATE
295         #define HITLS_TLS_CONFIG_STATE
296     #endif
297     #ifndef HITLS_TLS_CONFIG_RECORD_PADDING
298         #define HITLS_TLS_CONFIG_RECORD_PADDING
299     #endif
300     #ifndef HITLS_TLS_CONFIG_USER_DATA
301         #define HITLS_TLS_CONFIG_USER_DATA
302     #endif
303     #ifndef HITLS_TLS_CONFIG_CIPHER_SUITE
304         #define HITLS_TLS_CONFIG_CIPHER_SUITE
305     #endif
306 #endif
307 
308 #ifdef HITLS_TLS_CONNECTION
309     #ifndef HITLS_TLS_CONNECTION_INFO_NEGOTIATION
310         #define HITLS_TLS_CONNECTION_INFO_NEGOTIATION
311     #endif
312 #endif
313 
314 #ifdef HITLS_TLS_CONNECTION_INFO_NEGOTIATION
315     #ifndef HITLS_TLS_CONNECTION
316         #define HITLS_TLS_CONNECTION
317     #endif
318 #endif
319 
320 #ifdef HITLS_TLS_CONFIG_CERT
321     #ifndef HITLS_TLS_CONFIG_CERT_LOAD_FILE
322         #define HITLS_TLS_CONFIG_CERT_LOAD_FILE
323     #endif
324     #ifndef HITLS_TLS_CONFIG_CERT_CALLBACK
325         #define HITLS_TLS_CONFIG_CERT_CALLBACK
326     #endif
327 #endif
328 
329 #if defined(HITLS_TLS_PROTO_TLS13)
330     #ifndef HITLS_TLS_EXTENSION_CERT_AUTH
331         #define HITLS_TLS_EXTENSION_CERT_AUTH
332     #endif
333 #endif
334 
335 #if defined(HITLS_TLS_PROTO_DTLS12) || defined(HITLS_TLS_PROTO_TLS13)
336     #ifndef HITLS_TLS_EXTENSION_COOKIE
337         #define HITLS_TLS_EXTENSION_COOKIE
338     #endif
339 #endif
340 
341 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_RSA)
342     #if !defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
343         #define HITLS_TLS_SUITE_AES_128_GCM_SHA256
344     #endif
345     #if !defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) && defined(HITLS_TLS_PROTO_TLS13)
346         #define HITLS_TLS_SUITE_AES_256_GCM_SHA384
347     #endif
348     #if !defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
349         #define HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256
350     #endif
351     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
352         #define HITLS_TLS_SUITE_AES_128_CCM_SHA256
353     #endif
354     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
355         #define HITLS_TLS_SUITE_AES_128_CCM_8_SHA256
356     #endif
357     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256
358         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256
359     #endif
360     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384
361         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384
362     #endif
363     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
364         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
365     #endif
366 #endif
367 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_ECDSA)
368     #if !defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
369         #define HITLS_TLS_SUITE_AES_128_GCM_SHA256
370     #endif
371     #if !defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) && defined(HITLS_TLS_PROTO_TLS13)
372         #define HITLS_TLS_SUITE_AES_256_GCM_SHA384
373     #endif
374     #if !defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
375         #define HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256
376     #endif
377     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
378         #define HITLS_TLS_SUITE_AES_128_CCM_SHA256
379     #endif
380     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
381         #define HITLS_TLS_SUITE_AES_128_CCM_8_SHA256
382     #endif
383     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
384         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
385     #endif
386     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
387         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
388     #endif
389     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
390         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
391     #endif
392     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM
393         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM
394     #endif
395     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM
396         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM
397     #endif
398 #endif
399 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_PSK)
400     #if !defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
401         #define HITLS_TLS_SUITE_AES_128_GCM_SHA256
402     #endif
403     #if !defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) && defined(HITLS_TLS_PROTO_TLS13)
404         #define HITLS_TLS_SUITE_AES_256_GCM_SHA384
405     #endif
406     #if !defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
407         #define HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256
408     #endif
409     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
410         #define HITLS_TLS_SUITE_AES_128_CCM_SHA256
411     #endif
412     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
413         #define HITLS_TLS_SUITE_AES_128_CCM_8_SHA256
414     #endif
415     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256
416         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256
417     #endif
418     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256
419         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256
420     #endif
421     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256
422         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256
423     #endif
424     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384
425         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384
426     #endif
427 #endif
428 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_DHE) && defined(HITLS_TLS_SUITE_AUTH_RSA)
429 
430     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256
431         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256
432     #endif
433     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384
434         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384
435     #endif
436     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
437         #define HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
438     #endif
439     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM
440         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM
441     #endif
442     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM
443         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM
444     #endif
445 #endif
446 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_DHE) && defined(HITLS_TLS_SUITE_AUTH_DSS)
447     #ifndef HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256
448         #define HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256
449     #endif
450     #ifndef HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384
451         #define HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384
452     #endif
453 #endif
454 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_DHE) && defined(HITLS_TLS_SUITE_AUTH_PSK)
455     #if !defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
456         #define HITLS_TLS_SUITE_AES_128_GCM_SHA256
457     #endif
458     #if !defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) && defined(HITLS_TLS_PROTO_TLS13)
459         #define HITLS_TLS_SUITE_AES_256_GCM_SHA384
460     #endif
461     #if !defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
462         #define HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256
463     #endif
464     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
465         #define HITLS_TLS_SUITE_AES_128_CCM_SHA256
466     #endif
467     #if !defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256) && defined(HITLS_TLS_PROTO_TLS13)
468         #define HITLS_TLS_SUITE_AES_128_CCM_8_SHA256
469     #endif
470     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256
471         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256
472     #endif
473     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384
474         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384
475     #endif
476     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM
477         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM
478     #endif
479     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM
480         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM
481     #endif
482     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256
483         #define HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256
484     #endif
485 #endif
486 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_RSA) && defined(HITLS_TLS_SUITE_AUTH_RSA)
487     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256
488         #define HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256
489     #endif
490     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384
491         #define HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384
492     #endif
493     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256
494         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256
495     #endif
496     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384
497         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384
498     #endif
499     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256
500         #define HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256
501     #endif
502     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM
503         #define HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM
504     #endif
505     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8
506         #define HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8
507     #endif
508     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM
509         #define HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM
510     #endif
511     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8
512         #define HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8
513     #endif
514 #endif
515 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_RSA) && defined(HITLS_TLS_SUITE_AUTH_PSK)
516     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256
517         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256
518     #endif
519     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384
520         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384
521     #endif
522     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256
523         #define HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256
524     #endif
525 #endif
526 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_SM2)
527     #ifndef HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3
528         #define HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3
529     #endif
530 #endif
531 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_RSA)
532     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA
533         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA
534     #endif
535     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA
536         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA
537     #endif
538     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256
539         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256
540     #endif
541     #ifndef HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384
542         #define HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384
543     #endif
544 #endif
545 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_ECDSA)
546     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
547         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
548     #endif
549     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
550         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
551     #endif
552     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
553         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
554     #endif
555     #ifndef HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
556         #define HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
557     #endif
558 #endif
559 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_PSK)
560     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA
561         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA
562     #endif
563     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA
564         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA
565     #endif
566     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256
567         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256
568     #endif
569     #ifndef HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384
570         #define HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384
571     #endif
572 #endif
573 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_ECDHE) && defined(HITLS_TLS_SUITE_AUTH_SM2)
574     #ifndef HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3
575         #define HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3
576     #endif
577 #endif
578 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_DHE) && defined(HITLS_TLS_SUITE_AUTH_RSA)
579     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA
580         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA
581     #endif
582     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA
583         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA
584     #endif
585     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256
586         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256
587     #endif
588     #ifndef HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256
589         #define HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256
590     #endif
591 #endif
592 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_DHE) && defined(HITLS_TLS_SUITE_AUTH_DSS)
593     #ifndef HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA
594         #define HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA
595     #endif
596     #ifndef HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA
597         #define HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA
598     #endif
599     #ifndef HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256
600         #define HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256
601     #endif
602     #ifndef HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256
603         #define HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256
604     #endif
605 #endif
606 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_DHE) && defined(HITLS_TLS_SUITE_AUTH_PSK)
607     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA
608         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA
609     #endif
610     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA
611         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA
612     #endif
613     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256
614         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256
615     #endif
616     #ifndef HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384
617         #define HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384
618     #endif
619 #endif
620 
621 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_RSA) && defined(HITLS_TLS_SUITE_AUTH_RSA)
622     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA
623         #define HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA
624     #endif
625     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA
626         #define HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA
627     #endif
628     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256
629         #define HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256
630     #endif
631     #ifndef HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256
632         #define HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256
633     #endif
634     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA
635         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA
636     #endif
637     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA
638         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA
639     #endif
640     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256
641         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256
642     #endif
643     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384
644         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384
645     #endif
646 #endif
647 
648 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_RSA) && defined(HITLS_TLS_SUITE_AUTH_PSK)
649     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA
650         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA
651     #endif
652     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA
653         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA
654     #endif
655     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256
656         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256
657     #endif
658     #ifndef HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384
659         #define HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384
660     #endif
661 #endif
662 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_KX_DHE)
663     #ifndef HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256
664         #define HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256
665     #endif
666     #ifndef HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384
667         #define HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384
668     #endif
669 #endif
670 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_ECDHE)
671     #ifndef HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA
672         #define HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA
673     #endif
674     #ifndef HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA
675         #define HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA
676     #endif
677 #endif
678 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_KX_DHE)
679     #ifndef HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA
680         #define HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA
681     #endif
682     #ifndef HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA
683         #define HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA
684     #endif
685     #ifndef HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256
686         #define HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256
687     #endif
688     #ifndef HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256
689         #define HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256
690     #endif
691 #endif
692 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_AUTH_PSK)
693     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256
694         #define HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256
695     #endif
696     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384
697         #define HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384
698     #endif
699     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM
700         #define HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM
701     #endif
702     #ifndef HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256
703         #define HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256
704     #endif
705 #endif
706 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_AUTH_PSK)
707     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA
708         #define HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA
709     #endif
710     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA
711         #define HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA
712     #endif
713     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256
714         #define HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256
715     #endif
716     #ifndef HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384
717         #define HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384
718     #endif
719 #endif
720 
721 #if defined(HITLS_TLS_SUITE_CIPHER_CBC) && defined(HITLS_TLS_SUITE_AUTH_SM2)
722     #ifndef HITLS_TLS_SUITE_ECC_SM4_CBC_SM3
723         #define HITLS_TLS_SUITE_ECC_SM4_CBC_SM3
724     #endif
725 #endif
726 
727 #if defined(HITLS_TLS_SUITE_CIPHER_AEAD) && defined(HITLS_TLS_SUITE_AUTH_SM2)
728     #ifndef HITLS_TLS_SUITE_ECC_SM4_GCM_SM3
729         #define HITLS_TLS_SUITE_ECC_SM4_GCM_SM3
730     #endif
731 #endif
732 
733 #if defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) || defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) || \
734     defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) || defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) || \
735     defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256)
736     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
737         #define HITLS_TLS_SUITE_CIPHER_AEAD
738     #endif
739     #ifndef HITLS_TLS_SUITE_KX_ECDHE
740         #define HITLS_TLS_SUITE_KX_ECDHE
741     #endif
742 #endif
743 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA) || defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA) || \
744     defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256) || defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256)
745     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
746         #define HITLS_TLS_SUITE_CIPHER_CBC
747     #endif
748     #ifndef HITLS_TLS_SUITE_KX_RSA
749         #define HITLS_TLS_SUITE_KX_RSA
750     #endif
751     #ifndef HITLS_TLS_SUITE_AUTH_RSA
752         #define HITLS_TLS_SUITE_AUTH_RSA
753     #endif
754 #endif
755 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256) || \
756     defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384) || \
757     defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM) || defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8) || \
758     defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM) || defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8)
759     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
760         #define HITLS_TLS_SUITE_CIPHER_AEAD
761     #endif
762     #ifndef HITLS_TLS_SUITE_KX_RSA
763         #define HITLS_TLS_SUITE_KX_RSA
764     #endif
765     #ifndef HITLS_TLS_SUITE_AUTH_RSA
766         #define HITLS_TLS_SUITE_AUTH_RSA
767     #endif
768 #endif
769 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256) || \
770     defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384) || \
771     defined(HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256) || \
772     defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM) || defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM)
773     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
774         #define HITLS_TLS_SUITE_CIPHER_AEAD
775     #endif
776     #ifndef HITLS_TLS_SUITE_KX_DHE
777         #define HITLS_TLS_SUITE_KX_DHE
778     #endif
779     #ifndef HITLS_TLS_SUITE_AUTH_RSA
780         #define HITLS_TLS_SUITE_AUTH_RSA
781     #endif
782 #endif
783 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA) || \
784     defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA) || \
785     defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256) || \
786     defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384)
787     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
788         #define HITLS_TLS_SUITE_CIPHER_CBC
789     #endif
790     #ifndef HITLS_TLS_SUITE_KX_ECDHE
791         #define HITLS_TLS_SUITE_KX_ECDHE
792     #endif
793     #ifndef HITLS_TLS_SUITE_AUTH_ECDSA
794         #define HITLS_TLS_SUITE_AUTH_ECDSA
795     #endif
796 #endif
797 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) || \
798     defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384) || \
799     defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256) || \
800     defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM) || defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM)
801     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
802         #define HITLS_TLS_SUITE_CIPHER_AEAD
803     #endif
804     #ifndef HITLS_TLS_SUITE_KX_ECDHE
805         #define HITLS_TLS_SUITE_KX_ECDHE
806     #endif
807     #ifndef HITLS_TLS_SUITE_AUTH_ECDSA
808         #define HITLS_TLS_SUITE_AUTH_ECDSA
809     #endif
810 #endif
811 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA) || \
812     defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA) || \
813     defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256) || \
814     defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384)
815     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
816         #define HITLS_TLS_SUITE_CIPHER_CBC
817     #endif
818     #ifndef HITLS_TLS_SUITE_KX_ECDHE
819         #define HITLS_TLS_SUITE_KX_ECDHE
820     #endif
821     #ifndef HITLS_TLS_SUITE_AUTH_RSA
822         #define HITLS_TLS_SUITE_AUTH_RSA
823     #endif
824 #endif
825 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256) || \
826     defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384) || \
827     defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256)
828     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
829         #define HITLS_TLS_SUITE_CIPHER_AEAD
830     #endif
831     #ifndef HITLS_TLS_SUITE_KX_ECDHE
832         #define HITLS_TLS_SUITE_KX_ECDHE
833     #endif
834     #ifndef HITLS_TLS_SUITE_AUTH_RSA
835         #define HITLS_TLS_SUITE_AUTH_RSA
836     #endif
837 #endif
838 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256) || \
839     defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384)
840     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
841         #define HITLS_TLS_SUITE_CIPHER_AEAD
842     #endif
843     #ifndef HITLS_TLS_SUITE_KX_DHE
844         #define HITLS_TLS_SUITE_KX_DHE
845     #endif
846     #ifndef HITLS_TLS_SUITE_AUTH_DSS
847         #define HITLS_TLS_SUITE_AUTH_DSS
848     #endif
849 #endif
850 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA) || \
851     defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA) || \
852     defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256) || \
853     defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256)
854     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
855         #define HITLS_TLS_SUITE_CIPHER_CBC
856     #endif
857     #ifndef HITLS_TLS_SUITE_KX_DHE
858         #define HITLS_TLS_SUITE_KX_DHE
859     #endif
860     #ifndef HITLS_TLS_SUITE_AUTH_DSS
861         #define HITLS_TLS_SUITE_AUTH_DSS
862     #endif
863 #endif
864 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA) || \
865     defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA) || \
866     defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256) || \
867     defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256)
868     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
869         #define HITLS_TLS_SUITE_CIPHER_CBC
870     #endif
871     #ifndef HITLS_TLS_SUITE_KX_DHE
872         #define HITLS_TLS_SUITE_KX_DHE
873     #endif
874     #ifndef HITLS_TLS_SUITE_AUTH_RSA
875         #define HITLS_TLS_SUITE_AUTH_RSA
876     #endif
877 #endif
878 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA) || defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA) || \
879     defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256) || defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384)
880     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
881         #define HITLS_TLS_SUITE_CIPHER_CBC
882     #endif
883     #ifndef HITLS_TLS_SUITE_AUTH_PSK
884         #define HITLS_TLS_SUITE_AUTH_PSK
885     #endif
886 #endif
887 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA) || \
888     defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA) || \
889     defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256) || \
890     defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384)
891     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
892         #define HITLS_TLS_SUITE_CIPHER_CBC
893     #endif
894     #ifndef HITLS_TLS_SUITE_KX_DHE
895         #define HITLS_TLS_SUITE_KX_DHE
896     #endif
897     #ifndef HITLS_TLS_SUITE_AUTH_PSK
898         #define HITLS_TLS_SUITE_AUTH_PSK
899     #endif
900 #endif
901 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA) || \
902     defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA) || \
903     defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256) || \
904     defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384)
905     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
906         #define HITLS_TLS_SUITE_CIPHER_CBC
907     #endif
908     #ifndef HITLS_TLS_SUITE_KX_RSA
909         #define HITLS_TLS_SUITE_KX_RSA
910     #endif
911     #ifndef HITLS_TLS_SUITE_AUTH_RSA
912         #define HITLS_TLS_SUITE_AUTH_RSA
913     #endif
914     #ifndef HITLS_TLS_SUITE_AUTH_PSK
915         #define HITLS_TLS_SUITE_AUTH_PSK
916     #endif
917 #endif
918 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256) || defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384) || \
919     defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM) || defined(HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256)
920     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
921         #define HITLS_TLS_SUITE_CIPHER_AEAD
922     #endif
923     #ifndef HITLS_TLS_SUITE_AUTH_PSK
924         #define HITLS_TLS_SUITE_AUTH_PSK
925     #endif
926 #endif
927 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256) || \
928     defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384) || defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM) || \
929     defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM) || defined(HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256)
930     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
931         #define HITLS_TLS_SUITE_CIPHER_AEAD
932     #endif
933     #ifndef HITLS_TLS_SUITE_KX_DHE
934         #define HITLS_TLS_SUITE_KX_DHE
935     #endif
936     #ifndef HITLS_TLS_SUITE_AUTH_PSK
937         #define HITLS_TLS_SUITE_AUTH_PSK
938     #endif
939 #endif
940 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256) || \
941     defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384) || \
942     defined(HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256)
943     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
944         #define HITLS_TLS_SUITE_CIPHER_AEAD
945     #endif
946     #ifndef HITLS_TLS_SUITE_KX_RSA
947         #define HITLS_TLS_SUITE_KX_RSA
948     #endif
949     #ifndef HITLS_TLS_SUITE_AUTH_RSA
950         #define HITLS_TLS_SUITE_AUTH_RSA
951     #endif
952     #ifndef HITLS_TLS_SUITE_AUTH_PSK
953         #define HITLS_TLS_SUITE_AUTH_PSK
954     #endif
955 #endif
956 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA) || \
957     defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA) || \
958     defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256) || \
959     defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384)
960     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
961         #define HITLS_TLS_SUITE_CIPHER_CBC
962     #endif
963     #ifndef HITLS_TLS_SUITE_KX_ECDHE
964         #define HITLS_TLS_SUITE_KX_ECDHE
965     #endif
966     #ifndef HITLS_TLS_SUITE_AUTH_PSK
967         #define HITLS_TLS_SUITE_AUTH_PSK
968     #endif
969 #endif
970 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256) || \
971     defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256) || \
972     defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256) || \
973     defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384)
974     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
975         #define HITLS_TLS_SUITE_CIPHER_AEAD
976     #endif
977     #ifndef HITLS_TLS_SUITE_KX_ECDHE
978         #define HITLS_TLS_SUITE_KX_ECDHE
979     #endif
980     #ifndef HITLS_TLS_SUITE_AUTH_PSK
981         #define HITLS_TLS_SUITE_AUTH_PSK
982     #endif
983 #endif
984 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA) || \
985     defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA) || \
986     defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256) || \
987     defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256)
988     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
989         #define HITLS_TLS_SUITE_CIPHER_CBC
990     #endif
991     #ifndef HITLS_TLS_SUITE_KX_DHE
992         #define HITLS_TLS_SUITE_KX_DHE
993     #endif
994 #endif
995 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256) || \
996     defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384)
997     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
998         #define HITLS_TLS_SUITE_CIPHER_AEAD
999     #endif
1000     #ifndef HITLS_TLS_SUITE_KX_DHE
1001         #define HITLS_TLS_SUITE_KX_DHE
1002     #endif
1003 #endif
1004 #if defined(HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA) || \
1005     defined(HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA)
1006     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
1007         #define HITLS_TLS_SUITE_CIPHER_CBC
1008     #endif
1009     #ifndef HITLS_TLS_SUITE_KX_ECDHE
1010         #define HITLS_TLS_SUITE_KX_ECDHE
1011     #endif
1012 #endif
1013 #if defined(HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3)
1014     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
1015         #define HITLS_TLS_SUITE_CIPHER_CBC
1016     #endif
1017     #ifndef HITLS_TLS_SUITE_KX_ECDHE
1018         #define HITLS_TLS_SUITE_KX_ECDHE
1019     #endif
1020     #ifndef HITLS_TLS_SUITE_AUTH_SM2
1021         #define HITLS_TLS_SUITE_AUTH_SM2
1022     #endif
1023 #endif
1024 #if defined(HITLS_TLS_SUITE_ECC_SM4_CBC_SM3)
1025     #ifndef HITLS_TLS_SUITE_CIPHER_CBC
1026         #define HITLS_TLS_SUITE_CIPHER_CBC
1027     #endif
1028     #ifndef HITLS_TLS_SUITE_AUTH_SM2
1029         #define HITLS_TLS_SUITE_AUTH_SM2
1030     #endif
1031 #endif
1032 #if defined(HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3)
1033     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
1034         #define HITLS_TLS_SUITE_CIPHER_AEAD
1035     #endif
1036     #ifndef HITLS_TLS_SUITE_KX_ECDHE
1037         #define HITLS_TLS_SUITE_KX_ECDHE
1038     #endif
1039     #ifndef HITLS_TLS_SUITE_AUTH_SM2
1040         #define HITLS_TLS_SUITE_AUTH_SM2
1041     #endif
1042 #endif
1043 #if defined(HITLS_TLS_SUITE_ECC_SM4_GCM_SM3)
1044     #ifndef HITLS_TLS_SUITE_CIPHER_AEAD
1045         #define HITLS_TLS_SUITE_CIPHER_AEAD
1046     #endif
1047     #ifndef HITLS_TLS_SUITE_AUTH_SM2
1048         #define HITLS_TLS_SUITE_AUTH_SM2
1049     #endif
1050 #endif
1051 
1052 #ifdef HITLS_TLS_SUITE_CIPHER_CBC
1053     #ifndef HITLS_TLS_CALLBACK_CRYPT_HMAC_PRIMITIVES
1054         #define HITLS_TLS_CALLBACK_CRYPT_HMAC_PRIMITIVES
1055     #endif
1056 #endif
1057 
1058 #ifdef HITLS_TLS_SUITE_CIPHER_CBC
1059     #ifndef HITLS_TLS_FEATURE_ETM
1060         #define HITLS_TLS_FEATURE_ETM
1061     #endif
1062 #endif
1063 
1064 #if defined(HITLS_TLS_SUITE_AUTH_ECDSA) || defined(HITLS_TLS_SUITE_AUTH_RSA) || defined(HITLS_TLS_SUITE_AUTH_DSS) || \
1065     defined(HITLS_TLS_SUITE_AUTH_PSK) || defined(HITLS_TLS_SUITE_AUTH_SM2)
1066     #ifndef HITLS_TLS_SUITE_AUTH
1067         #define HITLS_TLS_SUITE_AUTH
1068     #endif
1069 #endif
1070 
1071 #endif /* HITLS_CONFIG_LAYER_TLS_H */