• 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 /* Check the dependency of the configuration features. The check rules are as follows:
16  * Non-deterministic feature dependency needs to be checked.
17  * For example, feature a depends on feature b or c:
18  * if feature a is defined, at least one of feature b and c must be defined.
19  */
20 
21 #ifndef HITLS_CONFIG_CHECK_H
22 #define HITLS_CONFIG_CHECK_H
23 
24 #ifdef HITLS_TLS
25 #if defined(HITLS_TLS_FEATURE_PROVIDER) && !defined(HITLS_CRYPTO_PROVIDER)
26 #error "[HiTLS] The tls-provider must work with crypto-provider"
27 #endif
28 
29 #if (defined(HITLS_TLS_FEATURE_PHA) || defined(HITLS_TLS_FEATURE_KEY_UPDATE)) && !defined(HITLS_TLS_PROTO_TLS13)
30     #error "[HiTLS] Integrity check must work with TLS13"
31 #endif
32 
33 #if defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256)
34 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES)
35 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_128_GCM_SHA256 must work with sha256, gcm, aes"
36 #endif
37 #endif
38 #if defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384)
39 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES)
40 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_256_GCM_SHA384 must work with sha384, gcm, aes"
41 #endif
42 #endif
43 #if defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256)
44 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20)
45 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256 must work with sha256, chacha20poly1305, \
46         chacha20"
47 #endif
48 #endif
49 #if defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256)
50 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES)
51 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_128_CCM_SHA256 must work with sha256, ccm, aes"
52 #endif
53 #endif
54 #if defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256)
55 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES)
56 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_AES_128_CCM_8_SHA256 must work with sha256, ccm, aes"
57 #endif
58 #endif
59 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA)
60 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
61     !defined(HITLS_CRYPTO_RSA)
62 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa"
63 #endif
64 #endif
65 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA)
66 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
67     !defined(HITLS_CRYPTO_RSA)
68 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa"
69 #endif
70 #endif
71 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256)
72 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
73     !defined(HITLS_CRYPTO_RSA)
74 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa"
75 #endif
76 #endif
77 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256)
78 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
79     !defined(HITLS_CRYPTO_RSA)
80 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, rsa"
81 #endif
82 #endif
83 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256)
84 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
85     !defined(HITLS_CRYPTO_RSA)
86 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa"
87 #endif
88 #endif
89 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384)
90 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
91     !defined(HITLS_CRYPTO_RSA)
92 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa"
93 #endif
94 #endif
95 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256)
96 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
97     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
98 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa, dh"
99 #endif
100 #endif
101 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384)
102 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
103     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
104 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa, dh"
105 #endif
106 #endif
107 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA)
108 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
109     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
110 #error \
111     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, ecdh, ecdsa"
112 #endif
113 #endif
114 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA)
115 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
116     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
117 #error \
118     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, ecdh, ecdsa"
119 #endif
120 #endif
121 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256)
122 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
123     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
124 #error \
125     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, ecdh, \
126 ecdsa"
127 #endif
128 #endif
129 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384)
130 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
131     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
132 #error \
133     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, ecdh, \
134 ecdsa"
135 #endif
136 #endif
137 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
138 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
139     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
140 #error \
141     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, ecdh, \
142 ecdsa"
143 #endif
144 #endif
145 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384)
146 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
147     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
148 #error \
149     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, ecdh, \
150 ecdsa"
151 #endif
152 #endif
153 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA)
154 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
155     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
156 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa, ecdh"
157 #endif
158 #endif
159 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA)
160 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
161     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
162 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa, ecdh"
163 #endif
164 #endif
165 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256)
166 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
167     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
168 #error \
169     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa, ecdh"
170 #endif
171 #endif
172 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384)
173 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
174     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
175 #error \
176     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, rsa, ecdh"
177 #endif
178 #endif
179 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256)
180 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
181     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
182 #error \
183     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa, ecdh"
184 #endif
185 #endif
186 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384)
187 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
188     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
189 #error \
190     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa, ecdh"
191 #endif
192 #endif
193 #if defined(HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256)
194 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \
195     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_ECDH)
196 #error \
197     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \
198 chacha20poly1305, chacha20, rsa, ecdh"
199 #endif
200 #endif
201 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256)
202 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \
203     !defined(HITLS_CRYPTO_ECDH) || !defined(HITLS_CRYPTO_ECDSA)
204 #error \
205     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \
206 chacha20poly1305, chacha20, ecdh, ecdsa"
207 #endif
208 #endif
209 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256)
210 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \
211     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
212 #error \
213     "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \
214 chacha20poly1305, chacha20, rsa, dh"
215 #endif
216 #endif
217 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256)
218 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
219     !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH)
220 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, dsa, dh"
221 #endif
222 #endif
223 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384)
224 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
225     !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH)
226 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, dsa, dh"
227 #endif
228 #endif
229 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA)
230 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
231     !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH)
232 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dsa, dh"
233 #endif
234 #endif
235 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA)
236 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
237     !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH)
238 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dsa, dh"
239 #endif
240 #endif
241 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256)
242 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
243     !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH)
244 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, dsa, dh"
245 #endif
246 #endif
247 #if defined(HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256)
248 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
249     !defined(HITLS_CRYPTO_DSA) || !defined(HITLS_CRYPTO_DH)
250 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_DSS_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, dsa, dh"
251 #endif
252 #endif
253 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA)
254 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
255     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
256 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa, dh"
257 #endif
258 #endif
259 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA)
260 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
261     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
262 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa, dh"
263 #endif
264 #endif
265 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256)
266 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
267     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
268 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa, dh"
269 #endif
270 #endif
271 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256)
272 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
273     !defined(HITLS_CRYPTO_RSA) || !defined(HITLS_CRYPTO_DH)
274 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, rsa, dh"
275 #endif
276 #endif
277 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA)
278 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES)
279 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes"
280 #endif
281 #endif
282 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA)
283 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES)
284 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes"
285 #endif
286 #endif
287 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA)
288 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
289     !defined(HITLS_CRYPTO_DH)
290 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dh"
291 #endif
292 #endif
293 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA)
294 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
295     !defined(HITLS_CRYPTO_DH)
296 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dh"
297 #endif
298 #endif
299 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA)
300 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
301     !defined(HITLS_CRYPTO_RSA)
302 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, rsa"
303 #endif
304 #endif
305 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA)
306 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
307     !defined(HITLS_CRYPTO_RSA)
308 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, rsa"
309 #endif
310 #endif
311 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256)
312 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES)
313 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes"
314 #endif
315 #endif
316 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384)
317 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES)
318 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes"
319 #endif
320 #endif
321 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM)
322 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES)
323 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_CCM must work with ccm, aes"
324 #endif
325 #endif
326 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256)
327 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
328     !defined(HITLS_CRYPTO_DH)
329 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, dh"
330 #endif
331 #endif
332 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384)
333 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
334     !defined(HITLS_CRYPTO_DH)
335 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, dh"
336 #endif
337 #endif
338 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM)
339 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_DH)
340 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CCM must work with ccm, aes, dh"
341 #endif
342 #endif
343 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM)
344 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_DH)
345 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CCM must work with ccm, aes, dh"
346 #endif
347 #endif
348 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256)
349 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
350     !defined(HITLS_CRYPTO_RSA)
351 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, rsa"
352 #endif
353 #endif
354 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384)
355 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
356     !defined(HITLS_CRYPTO_RSA)
357 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, rsa"
358 #endif
359 #endif
360 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256)
361 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES)
362 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes"
363 #endif
364 #endif
365 #if defined(HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384)
366 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES)
367 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes"
368 #endif
369 #endif
370 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256)
371 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
372     !defined(HITLS_CRYPTO_DH)
373 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, dh"
374 #endif
375 #endif
376 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384)
377 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
378     !defined(HITLS_CRYPTO_DH)
379 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, dh"
380 #endif
381 #endif
382 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256)
383 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
384     !defined(HITLS_CRYPTO_RSA)
385 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, rsa"
386 #endif
387 #endif
388 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384)
389 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
390     !defined(HITLS_CRYPTO_RSA)
391 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, rsa"
392 #endif
393 #endif
394 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA)
395 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
396     !defined(HITLS_CRYPTO_ECDH)
397 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, ecdh"
398 #endif
399 #endif
400 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA)
401 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
402     !defined(HITLS_CRYPTO_ECDH)
403 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, ecdh"
404 #endif
405 #endif
406 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256)
407 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
408     !defined(HITLS_CRYPTO_ECDH)
409 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, ecdh"
410 #endif
411 #endif
412 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384)
413 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
414     !defined(HITLS_CRYPTO_ECDH)
415 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_CBC_SHA384 must work with sha384, cbc, aes, ecdh"
416 #endif
417 #endif
418 #if defined(HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256)
419 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20)
420 #error \
421     "[HiTLS] cipher suite HITLS_TLS_SUITE_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, chacha20poly1305, \
422 chacha20"
423 #endif
424 #endif
425 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256)
426 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \
427     !defined(HITLS_CRYPTO_ECDH)
428 #error \
429     "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \
430 chacha20poly1305, chacha20, ecdh"
431 #endif
432 #endif
433 #if defined(HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256)
434 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \
435     !defined(HITLS_CRYPTO_DH)
436 #error \
437     "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \
438 chacha20poly1305, chacha20, dh"
439 #endif
440 #endif
441 #if defined(HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256)
442 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CHACHA20POLY1305) || !defined(HITLS_CRYPTO_CHACHA20) || \
443     !defined(HITLS_CRYPTO_RSA)
444 #error \
445     "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 must work with sha256, \
446 chacha20poly1305, chacha20, rsa"
447 #endif
448 #endif
449 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256)
450 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || \
451     !defined(HITLS_CRYPTO_ECDH)
452 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_CCM_SHA256 must work with sha256, ccm, aes, ecdh"
453 #endif
454 #endif
455 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256)
456 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
457     !defined(HITLS_CRYPTO_ECDH)
458 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, ecdh"
459 #endif
460 #endif
461 #if defined(HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384)
462 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
463     !defined(HITLS_CRYPTO_ECDH)
464 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_PSK_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, ecdh"
465 #endif
466 #endif
467 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA)
468 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
469     !defined(HITLS_CRYPTO_DH)
470 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dh"
471 #endif
472 #endif
473 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA)
474 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
475     !defined(HITLS_CRYPTO_DH)
476 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dh"
477 #endif
478 #endif
479 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256)
480 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
481     !defined(HITLS_CRYPTO_DH)
482 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_CBC_SHA256 must work with sha256, cbc, aes, dh"
483 #endif
484 #endif
485 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256)
486 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
487     !defined(HITLS_CRYPTO_DH)
488 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_CBC_SHA256 must work with sha256, cbc, aes, dh"
489 #endif
490 #endif
491 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256)
492 #if !defined(HITLS_CRYPTO_SHA256) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
493     !defined(HITLS_CRYPTO_DH)
494 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_128_GCM_SHA256 must work with sha256, gcm, aes, dh"
495 #endif
496 #endif
497 #if defined(HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384)
498 #if !defined(HITLS_CRYPTO_SHA384) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_AES) || \
499     !defined(HITLS_CRYPTO_DH)
500 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DH_ANON_WITH_AES_256_GCM_SHA384 must work with sha384, gcm, aes, dh"
501 #endif
502 #endif
503 #if defined(HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA)
504 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
505     !defined(HITLS_CRYPTO_DH) || !defined(HITLS_CRYPTO_ECDH)
506 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_128_CBC_SHA must work with sha1, cbc, aes, dh, ecdh"
507 #endif
508 #endif
509 #if defined(HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA)
510 #if !defined(HITLS_CRYPTO_SHA1) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_AES) || \
511     !defined(HITLS_CRYPTO_DH) || !defined(HITLS_CRYPTO_ECDH)
512 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDH_ANON_WITH_AES_256_CBC_SHA must work with sha1, cbc, aes, dh, ecdh"
513 #endif
514 #endif
515 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM)
516 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_ECDH) || \
517     !defined(HITLS_CRYPTO_ECDSA)
518 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_128_CCM must work with ccm, aes, ecdh, ecdsa"
519 #endif
520 #endif
521 #if defined(HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM)
522 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_ECDH) || \
523     !defined(HITLS_CRYPTO_ECDSA)
524 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_ECDSA_WITH_AES_256_CCM must work with ccm, aes, ecdh, ecdsa"
525 #endif
526 #endif
527 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM)
528 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) || \
529     !defined(HITLS_CRYPTO_DH)
530 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_128_CCM must work with ccm, aes, rsa, dh"
531 #endif
532 #endif
533 #if defined(HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM)
534 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA) || \
535     !defined(HITLS_CRYPTO_DH)
536 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_DHE_RSA_WITH_AES_256_CCM must work with ccm, aes, rsa, dh"
537 #endif
538 #endif
539 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM)
540 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA)
541 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM must work with ccm, aes, rsa"
542 #endif
543 #endif
544 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8)
545 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA)
546 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_128_CCM_8 must work with ccm, aes, rsa"
547 #endif
548 #endif
549 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM)
550 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA)
551 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM must work with ccm, aes, rsa"
552 #endif
553 #endif
554 #if defined(HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8)
555 #if !defined(HITLS_CRYPTO_CCM) || !defined(HITLS_CRYPTO_AES) || !defined(HITLS_CRYPTO_RSA)
556 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_RSA_WITH_AES_256_CCM_8 must work with ccm, aes, rsa"
557 #endif
558 #endif
559 #if defined(HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3)
560 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_SM4) || \
561     !defined(HITLS_CRYPTO_SM2) || !defined(HITLS_CRYPTO_ECDH)
562 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_SM4_CBC_SM3 must work with sm3, cbc, sm4, sm2, ecdh"
563 #endif
564 #endif
565 #if defined(HITLS_TLS_SUITE_ECC_SM4_CBC_SM3)
566 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_CBC) || !defined(HITLS_CRYPTO_SM4) || \
567     !defined(HITLS_CRYPTO_SM2)
568 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECC_SM4_CBC_SM3 must work with sm3, cbc, sm4, sm2"
569 #endif
570 #endif
571 #if defined(HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3)
572 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_SM4) || \
573     !defined(HITLS_CRYPTO_SM2) || !defined(HITLS_CRYPTO_ECDH)
574 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECDHE_SM4_GCM_SM3 must work with sm3, gcm, sm4, sm2, ecdh"
575 #endif
576 #endif
577 #if defined(HITLS_TLS_SUITE_ECC_SM4_GCM_SM3)
578 #if !defined(HITLS_CRYPTO_SM3) || !defined(HITLS_CRYPTO_GCM) || !defined(HITLS_CRYPTO_SM4) || \
579     !defined(HITLS_CRYPTO_SM2)
580 #error "[HiTLS] cipher suite HITLS_TLS_SUITE_ECC_SM4_GCM_SM3 must work with sm3, gcm, sm4, sm2"
581 #endif
582 #endif
583 
584 #if defined(HITLS_TLS_SUITE_AES_128_GCM_SHA256) || defined(HITLS_TLS_SUITE_AES_256_GCM_SHA384) || \
585     defined(HITLS_TLS_SUITE_CHACHA20_POLY1305_SHA256) || defined(HITLS_TLS_SUITE_AES_128_CCM_SHA256) || \
586     defined(HITLS_TLS_SUITE_AES_128_CCM_8_SHA256)
587     #if (!defined(HITLS_TLS_SUITE_AUTH_RSA) && !defined(HITLS_TLS_SUITE_AUTH_ECDSA) && \
588         !defined(HITLS_TLS_SUITE_AUTH_PSK))
589     #error "[HiTLS] tls13 ciphersuite must work with suite_auth_rsa or suite_auth_ecdsa or suite_auth_psk"
590     #endif
591 #endif
592 #endif /* HITLS_TLS */
593 
594 #ifdef HITLS_CRYPTO
595 #if defined(HITLS_CRYPTO_HMAC) && !defined(HITLS_CRYPTO_MD)
596     #error "[HiTLS] The hmac must work with hash"
597 #endif
598 
599 #if defined(HITLS_CRYPTO_DRBG_HASH) && !defined(HITLS_CRYPTO_MD)
600     #error "[HiTLS] The drbg_hash must work with hash"
601 #endif
602 
603 #if defined(HITLS_CRYPTO_DRBG_CTR) && !defined(HITLS_CRYPTO_AES) && !defined(HITLS_CRYPTO_SM4)
604     #error "[HiTLS] AES or SM4 must be enabled for DRBG-CTR"
605 #endif
606 
607 #if defined(HITLS_CRYPTO_ENTROPY) && !defined(HITLS_CRYPTO_DRBG)
608 #error "[HiTLS] The entropy must work with at leaset one drbg algorithm."
609 #endif
610 
611 #if defined(HITLS_CRYPTO_DRBG_GM) && !defined(HITLS_CRYPTO_DRBG_CTR) && !defined(HITLS_CRYPTO_DRBG_HASH)
612     #error "[HiTLS]DRBG-HASH or DRBG-CTR must be enabled for DRBG-GM"
613 #endif
614 
615 #if defined(HITLS_CRYPTO_ENTROPY_HARDWARE) && !defined(HITLS_CRYPTO_EALINIT)
616     #error "[HiTLS] ealinit must be enabled when the hardware entropy source is enabled."
617 #endif
618 
619 #if defined(HITLS_CRYPTO_ENTROPY) && defined(HITLS_CRYPTO_DRBG_CTR) && !defined(HITLS_CRYPTO_DRBG_GM)
620     #if !defined(HITLS_CRYPTO_CMAC_AES)
621         #error "[HiTLS] Configure the conditioning function. Currently, CRYPT_MAC_CMAC_AES is supported. \
622             others may be supported in the future."
623     #endif
624 #endif
625 
626 #if defined(HITLS_CRYPTO_BN) && !(defined(HITLS_THIRTY_TWO_BITS) || defined(HITLS_SIXTY_FOUR_BITS))
627 #error "[HiTLS] To use bn, the number of system bits must be specified first."
628 #endif
629 
630 #if defined(HITLS_CRYPTO_HPKE)
631     #if !defined(HITLS_CRYPTO_AES) && !defined(HITLS_CRYPTO_CHACHA20POLY1305)
632     #error "[HiTLS] The hpke must work with aes or chacha20poly1305."
633     #endif
634 
635     #if !defined(HITLS_CRYPTO_CHACHA20POLY1305) && defined(HITLS_CRYPTO_AES) && !defined(HITLS_CRYPTO_GCM)
636     #error "[HiTLS] The hpke must work with aes-gcm."
637     #endif
638 
639     #if !defined(HITLS_CRYPTO_CURVE_NISTP256) && !defined(HITLS_CRYPTO_CURVE_NISTP384) && \
640         !defined(HITLS_CRYPTO_CURVE_NISTP521) && !defined(HITLS_CRYPTO_X25519)
641     #error "[HiTLS] The hpke must work with p256 or p384 or p521 or x25519."
642     #endif
643 #endif /* HITLS_CRYPTO_HPKE */
644 
645 #if defined(HITLS_CRYPTO_RSA_BLINDING) && !(defined(HITLS_CRYPTO_BN_RAND))
646     #error "[HiTLS] The blind must work with bn_rand"
647 #endif
648 
649 #if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_VERIFY)
650     #if !defined(HITLS_CRYPTO_RSA_EMSA_PSS) && !defined(HITLS_CRYPTO_RSA_EMSA_PKCSV15)
651     #error "[HiTLS] The rsa_sign/rsa_verify must work with rsa_emsa_pss/rsa_emsa_pkcsv15"
652     #endif
653 #endif
654 
655 #if defined(HITLS_CRYPTO_RSA_ENCRYPT) || defined(HITLS_CRYPTO_RSA_DECRYPT)
656     #if !defined(HITLS_CRYPTO_RSAES_OAEP) && !defined(HITLS_CRYPTO_RSAES_PKCSV15) && \
657         !defined(HITLS_CRYPTO_RSAES_PKCSV15_TLS) && !defined(HITLS_CRYPTO_RSA_NO_PAD)
658     #error "[HiTLS] The rsa_encrypt/rsa_decrypt must work with rsaes_oaep/rsaes_pkcsv15/rsaes_pkcsv15_tls/rsa_no_pad"
659     #endif
660 #endif
661 
662 #if defined(HITLS_CRYPTO_RSA_NO_PAD) || defined(HITLS_CRYPTO_RSAES_OAEP) || defined(HITLS_CRYPTO_RSAES_PKCSV15) || \
663     defined(HITLS_CRYPTO_RSAES_PKCSV15_TLS)
664     #if !defined(HITLS_CRYPTO_RSA_ENCRYPT) && !defined(HITLS_CRYPTO_RSA_DECRYPT)
665     #error "[HiTLS] The rsaes_oaep/rsaes_pkcsv15/rsaes_pkcsv15_tls/rsa_no_pad must work with rsa_encrypt/rsa_decrypt"
666     #endif
667 #endif
668 
669 #if defined(HITLS_CRYPTO_RSA_EMSA_PSS) || defined(HITLS_CRYPTO_RSA_EMSA_PKCSV15)
670     #if !defined(HITLS_CRYPTO_RSA_SIGN) && !defined(HITLS_CRYPTO_RSA_VERIFY)
671     #error "[HiTLS] The rsa_emsa_pss/rsa_emsa_pkcsv15 must work with rsa_sign/rsa_verify"
672     #endif
673 #endif
674 
675 #if defined(HITLS_CRYPTO_RSA_BLINDING) && !defined(HITLS_CRYPTO_RSA_SIGN) && !defined(HITLS_CRYPTO_RSA_DECRYPT)
676     #error "[HiTLS] The rsa_blinding must work with rsa_sign or rsa_decrypt"
677 #endif
678 
679 #if defined(HITLS_CRYPTO_RSA_ENCRYPT) && (defined(HITLS_CRYPTO_RSAES_OAEP) || defined(HITLS_CRYPTO_RSAES_PKCSV15))
680     #ifndef HITLS_CRYPTO_DRBG
681     #error "[HiTLS] The rsa_encrypt+rsaes_oaep/rsa_pkcsv15 must work with a drbg algorithm."
682     #endif
683 #endif
684 
685 #if defined(HITLS_CRYPTO_RSA_SIGN) && defined(HITLS_CRYPTO_RSA_EMSA_PSS) && !defined(HITLS_CRYPTO_DRBG)
686     #error "[HiTLS] The rsa_sign+rsa_emsa_pss must work with a drbg algorithm."
687 #endif
688 
689 #if defined(HITLS_CRYPTO_RSA_GEN) && !(defined(HITLS_CRYPTO_BN_RAND) && defined(HITLS_CRYPTO_BN_PRIME))
690     #error "[HiTLS] The rsa_gen must work with bn_rand and bn_prime"
691 #endif
692 
693 #if defined(HITLS_CRYPTO_ECDSA)
694     #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \
695         !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \
696         !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \
697         !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI)
698     #error "[HiTLS] Nist curves or brainpool curves or 192Wapi curve must be enabled for ECDSA."
699     #endif
700 #endif
701 
702 #if defined(HITLS_CRYPTO_ECDH)
703     #if !defined(HITLS_CRYPTO_CURVE_NISTP224) && !defined(HITLS_CRYPTO_CURVE_NISTP256) && \
704         !defined(HITLS_CRYPTO_CURVE_NISTP384) && !defined(HITLS_CRYPTO_CURVE_NISTP521) && \
705         !defined(HITLS_CRYPTO_CURVE_BP256R1) && !defined(HITLS_CRYPTO_CURVE_BP384R1) && \
706         !defined(HITLS_CRYPTO_CURVE_BP512R1) && !defined(HITLS_CRYPTO_CURVE_192WAPI)
707     #error "[HiTLS] Nist curves or brainpool curves must be enabled for ECDH."
708     #endif
709 #endif
710 
711 #if defined(HITLS_CRYPTO_CMVP_INTEGRITY) && !defined(HITLS_CRYPTO_CMVP)
712     #error "[HiTLS] Integrity check must work with CMVP"
713 #endif
714 
715 #if (defined(HITLS_CRYPTO_SHA1_ARMV8) || \
716      defined(HITLS_CRYPTO_SHA256_ARMV8) || defined(HITLS_CRYPTO_SHA224_ARMV8) || defined(HITLS_CRYPTO_SHA2_ARMV8) || \
717      defined(HITLS_CRYPTO_SM4_X8664)) && !defined(HITLS_CRYPTO_EALINIT)
718     #error "[HiTLS] ealinit must be enabled for sha1_armv8 or sha256_armv8 or sha224_armv8 or sm4_x8664."
719 #endif
720 
721 #if defined(HITLS_CRYPTO_HYBRIDKEM)
722     #if !defined(HITLS_CRYPTO_X25519) && !defined(HITLS_CRYPTO_ECDH)
723         #error "[HiTLS] The hybrid must work with x25519 or ecdh."
724     #endif
725 #endif
726 
727 #if defined(HITLS_CRYPTO_HMAC) && !defined(HITLS_CRYPTO_MD)
728 #error "[HiTLS] The hmac must work with hash."
729 #endif
730 
731 #if defined(HITLS_CRYPTO_DRBG_HASH) && !defined(HITLS_CRYPTO_MD)
732 #error "[HiTLS] The drbg_hash must work with hash."
733 #endif
734 
735 #if defined(HITLS_CRYPTO_ENTROPY) && !defined(HITLS_CRYPTO_DRBG)
736 #error "[HiTLS] The entropy must work with at leaset one drbg algorithm."
737 #endif
738 
739 #if defined(HITLS_CRYPTO_PKEY) && !defined(HITLS_CRYPTO_MD)
740 #error "[HiTLS] The pkey must work with hash."
741 #endif
742 
743 #if defined(HITLS_CRYPTO_BN) && !(defined(HITLS_THIRTY_TWO_BITS) || defined(HITLS_SIXTY_FOUR_BITS))
744 #error "[HiTLS] To use bn, the number of system bits must be specified first."
745 #endif
746 
747 #ifdef HITLS_CRYPTO_KEY_EPKI
748     #if !defined(HITLS_CRYPTO_KEY_ENCODE) && !defined(HITLS_CRYPTO_KEY_DECODE)
749         #error "[HiTLS] The key encrypt must work with key gen or key parse."
750     #endif
751     #if !defined(HITLS_CRYPTO_DRBG)
752         #error "[HiTLS] The key encrypt must work with a drbg algorithm."
753     #endif
754     #if !defined(HITLS_CRYPTO_CIPHER)
755         #error "[HiTLS] The key encrypt must work with a symmetric algorithm."
756     #endif
757 #endif
758 
759 #if defined(HITLS_CRYPTO_CODECSKEY) && (!defined(HITLS_CRYPTO_ECDSA) && !defined(HITLS_CRYPTO_SM2_SIGN) && \
760     !defined(HITLS_CRYPTO_SM2_CRYPT) && !defined(HITLS_CRYPTO_ED25519) && !defined(HITLS_CRYPTO_RSA_SIGN)) && \
761     !defined(HITLS_CRYPTO_RSA_VERIFY)
762     #error "[HiTLS] The encode must work with ecdsa or sm2_sign or sm2_crypt or ed25519 or rsa_sign or rsa_verify."
763 #endif
764 
765 #endif /* HITLS_CRYPTO */
766 
767 #ifdef HITLS_PKI
768 
769 #if defined(HITLS_PKI_INFO) && !defined(HITLS_PKI_X509_CRT)
770 #error "[HiTLS] The info must work with x509_crt_gen or x509_crt_parse."
771 #endif
772 
773 #endif /* HITLS_PKI */
774 
775 #if defined(HITLS_TLS_FEATURE_ETM) && !defined(HITLS_TLS_SUITE_CIPHER_CBC)
776 #error "[HiTLS] The etm must work with cbc"
777 #endif
778 
779 #endif /* HITLS_CONFIG_CHECK_H */
780