1/*
2 *  Version feature information
3 *
4 *  Copyright The Mbed TLS Contributors
5 *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6 */
7
8#include "common.h"
9
10#if defined(MBEDTLS_VERSION_C)
11
12#include "mbedtls/version.h"
13
14#include <string.h>
15
16static const char * const features[] = {
17#if defined(MBEDTLS_VERSION_FEATURES)
18    #if defined(MBEDTLS_HAVE_ASM)
19    "HAVE_ASM", //no-check-names
20#endif /* MBEDTLS_HAVE_ASM */
21#if defined(MBEDTLS_NO_UDBL_DIVISION)
22    "NO_UDBL_DIVISION", //no-check-names
23#endif /* MBEDTLS_NO_UDBL_DIVISION */
24#if defined(MBEDTLS_NO_64BIT_MULTIPLICATION)
25    "NO_64BIT_MULTIPLICATION", //no-check-names
26#endif /* MBEDTLS_NO_64BIT_MULTIPLICATION */
27#if defined(MBEDTLS_HAVE_SSE2)
28    "HAVE_SSE2", //no-check-names
29#endif /* MBEDTLS_HAVE_SSE2 */
30#if defined(MBEDTLS_HAVE_TIME)
31    "HAVE_TIME", //no-check-names
32#endif /* MBEDTLS_HAVE_TIME */
33#if defined(MBEDTLS_HAVE_TIME_DATE)
34    "HAVE_TIME_DATE", //no-check-names
35#endif /* MBEDTLS_HAVE_TIME_DATE */
36#if defined(MBEDTLS_PLATFORM_MEMORY)
37    "PLATFORM_MEMORY", //no-check-names
38#endif /* MBEDTLS_PLATFORM_MEMORY */
39#if defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
40    "PLATFORM_NO_STD_FUNCTIONS", //no-check-names
41#endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
42#if defined(MBEDTLS_PLATFORM_SETBUF_ALT)
43    "PLATFORM_SETBUF_ALT", //no-check-names
44#endif /* MBEDTLS_PLATFORM_SETBUF_ALT */
45#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
46    "PLATFORM_EXIT_ALT", //no-check-names
47#endif /* MBEDTLS_PLATFORM_EXIT_ALT */
48#if defined(MBEDTLS_PLATFORM_TIME_ALT)
49    "PLATFORM_TIME_ALT", //no-check-names
50#endif /* MBEDTLS_PLATFORM_TIME_ALT */
51#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
52    "PLATFORM_FPRINTF_ALT", //no-check-names
53#endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
54#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
55    "PLATFORM_PRINTF_ALT", //no-check-names
56#endif /* MBEDTLS_PLATFORM_PRINTF_ALT */
57#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
58    "PLATFORM_SNPRINTF_ALT", //no-check-names
59#endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
60#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
61    "PLATFORM_VSNPRINTF_ALT", //no-check-names
62#endif /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */
63#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT)
64    "PLATFORM_NV_SEED_ALT", //no-check-names
65#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
66#if defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT)
67    "PLATFORM_SETUP_TEARDOWN_ALT", //no-check-names
68#endif /* MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT */
69#if defined(MBEDTLS_PLATFORM_MS_TIME_ALT)
70    "PLATFORM_MS_TIME_ALT", //no-check-names
71#endif /* MBEDTLS_PLATFORM_MS_TIME_ALT */
72#if defined(MBEDTLS_PLATFORM_GMTIME_R_ALT)
73    "PLATFORM_GMTIME_R_ALT", //no-check-names
74#endif /* MBEDTLS_PLATFORM_GMTIME_R_ALT */
75#if defined(MBEDTLS_PLATFORM_ZEROIZE_ALT)
76    "PLATFORM_ZEROIZE_ALT", //no-check-names
77#endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */
78#if defined(MBEDTLS_DEPRECATED_WARNING)
79    "DEPRECATED_WARNING", //no-check-names
80#endif /* MBEDTLS_DEPRECATED_WARNING */
81#if defined(MBEDTLS_DEPRECATED_REMOVED)
82    "DEPRECATED_REMOVED", //no-check-names
83#endif /* MBEDTLS_DEPRECATED_REMOVED */
84#if defined(MBEDTLS_TIMING_ALT)
85    "TIMING_ALT", //no-check-names
86#endif /* MBEDTLS_TIMING_ALT */
87#if defined(MBEDTLS_AES_ALT)
88    "AES_ALT", //no-check-names
89#endif /* MBEDTLS_AES_ALT */
90#if defined(MBEDTLS_ARIA_ALT)
91    "ARIA_ALT", //no-check-names
92#endif /* MBEDTLS_ARIA_ALT */
93#if defined(MBEDTLS_CAMELLIA_ALT)
94    "CAMELLIA_ALT", //no-check-names
95#endif /* MBEDTLS_CAMELLIA_ALT */
96#if defined(MBEDTLS_CCM_ALT)
97    "CCM_ALT", //no-check-names
98#endif /* MBEDTLS_CCM_ALT */
99#if defined(MBEDTLS_CHACHA20_ALT)
100    "CHACHA20_ALT", //no-check-names
101#endif /* MBEDTLS_CHACHA20_ALT */
102#if defined(MBEDTLS_CHACHAPOLY_ALT)
103    "CHACHAPOLY_ALT", //no-check-names
104#endif /* MBEDTLS_CHACHAPOLY_ALT */
105#if defined(MBEDTLS_CMAC_ALT)
106    "CMAC_ALT", //no-check-names
107#endif /* MBEDTLS_CMAC_ALT */
108#if defined(MBEDTLS_DES_ALT)
109    "DES_ALT", //no-check-names
110#endif /* MBEDTLS_DES_ALT */
111#if defined(MBEDTLS_DHM_ALT)
112    "DHM_ALT", //no-check-names
113#endif /* MBEDTLS_DHM_ALT */
114#if defined(MBEDTLS_ECJPAKE_ALT)
115    "ECJPAKE_ALT", //no-check-names
116#endif /* MBEDTLS_ECJPAKE_ALT */
117#if defined(MBEDTLS_GCM_ALT)
118    "GCM_ALT", //no-check-names
119#endif /* MBEDTLS_GCM_ALT */
120#if defined(MBEDTLS_NIST_KW_ALT)
121    "NIST_KW_ALT", //no-check-names
122#endif /* MBEDTLS_NIST_KW_ALT */
123#if defined(MBEDTLS_MD5_ALT)
124    "MD5_ALT", //no-check-names
125#endif /* MBEDTLS_MD5_ALT */
126#if defined(MBEDTLS_POLY1305_ALT)
127    "POLY1305_ALT", //no-check-names
128#endif /* MBEDTLS_POLY1305_ALT */
129#if defined(MBEDTLS_RIPEMD160_ALT)
130    "RIPEMD160_ALT", //no-check-names
131#endif /* MBEDTLS_RIPEMD160_ALT */
132#if defined(MBEDTLS_RSA_ALT)
133    "RSA_ALT", //no-check-names
134#endif /* MBEDTLS_RSA_ALT */
135#if defined(MBEDTLS_SHA1_ALT)
136    "SHA1_ALT", //no-check-names
137#endif /* MBEDTLS_SHA1_ALT */
138#if defined(MBEDTLS_SHA256_ALT)
139    "SHA256_ALT", //no-check-names
140#endif /* MBEDTLS_SHA256_ALT */
141#if defined(MBEDTLS_SHA512_ALT)
142    "SHA512_ALT", //no-check-names
143#endif /* MBEDTLS_SHA512_ALT */
144#if defined(MBEDTLS_ECP_ALT)
145    "ECP_ALT", //no-check-names
146#endif /* MBEDTLS_ECP_ALT */
147#if defined(MBEDTLS_MD5_PROCESS_ALT)
148    "MD5_PROCESS_ALT", //no-check-names
149#endif /* MBEDTLS_MD5_PROCESS_ALT */
150#if defined(MBEDTLS_RIPEMD160_PROCESS_ALT)
151    "RIPEMD160_PROCESS_ALT", //no-check-names
152#endif /* MBEDTLS_RIPEMD160_PROCESS_ALT */
153#if defined(MBEDTLS_SHA1_PROCESS_ALT)
154    "SHA1_PROCESS_ALT", //no-check-names
155#endif /* MBEDTLS_SHA1_PROCESS_ALT */
156#if defined(MBEDTLS_SHA256_PROCESS_ALT)
157    "SHA256_PROCESS_ALT", //no-check-names
158#endif /* MBEDTLS_SHA256_PROCESS_ALT */
159#if defined(MBEDTLS_SHA512_PROCESS_ALT)
160    "SHA512_PROCESS_ALT", //no-check-names
161#endif /* MBEDTLS_SHA512_PROCESS_ALT */
162#if defined(MBEDTLS_DES_SETKEY_ALT)
163    "DES_SETKEY_ALT", //no-check-names
164#endif /* MBEDTLS_DES_SETKEY_ALT */
165#if defined(MBEDTLS_DES_CRYPT_ECB_ALT)
166    "DES_CRYPT_ECB_ALT", //no-check-names
167#endif /* MBEDTLS_DES_CRYPT_ECB_ALT */
168#if defined(MBEDTLS_DES3_CRYPT_ECB_ALT)
169    "DES3_CRYPT_ECB_ALT", //no-check-names
170#endif /* MBEDTLS_DES3_CRYPT_ECB_ALT */
171#if defined(MBEDTLS_AES_SETKEY_ENC_ALT)
172    "AES_SETKEY_ENC_ALT", //no-check-names
173#endif /* MBEDTLS_AES_SETKEY_ENC_ALT */
174#if defined(MBEDTLS_AES_SETKEY_DEC_ALT)
175    "AES_SETKEY_DEC_ALT", //no-check-names
176#endif /* MBEDTLS_AES_SETKEY_DEC_ALT */
177#if defined(MBEDTLS_AES_ENCRYPT_ALT)
178    "AES_ENCRYPT_ALT", //no-check-names
179#endif /* MBEDTLS_AES_ENCRYPT_ALT */
180#if defined(MBEDTLS_AES_DECRYPT_ALT)
181    "AES_DECRYPT_ALT", //no-check-names
182#endif /* MBEDTLS_AES_DECRYPT_ALT */
183#if defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT)
184    "ECDH_GEN_PUBLIC_ALT", //no-check-names
185#endif /* MBEDTLS_ECDH_GEN_PUBLIC_ALT */
186#if defined(MBEDTLS_ECDH_COMPUTE_SHARED_ALT)
187    "ECDH_COMPUTE_SHARED_ALT", //no-check-names
188#endif /* MBEDTLS_ECDH_COMPUTE_SHARED_ALT */
189#if defined(MBEDTLS_ECDSA_VERIFY_ALT)
190    "ECDSA_VERIFY_ALT", //no-check-names
191#endif /* MBEDTLS_ECDSA_VERIFY_ALT */
192#if defined(MBEDTLS_ECDSA_SIGN_ALT)
193    "ECDSA_SIGN_ALT", //no-check-names
194#endif /* MBEDTLS_ECDSA_SIGN_ALT */
195#if defined(MBEDTLS_ECDSA_GENKEY_ALT)
196    "ECDSA_GENKEY_ALT", //no-check-names
197#endif /* MBEDTLS_ECDSA_GENKEY_ALT */
198#if defined(MBEDTLS_ECP_INTERNAL_ALT)
199    "ECP_INTERNAL_ALT", //no-check-names
200#endif /* MBEDTLS_ECP_INTERNAL_ALT */
201#if defined(MBEDTLS_ECP_NO_FALLBACK)
202    "ECP_NO_FALLBACK", //no-check-names
203#endif /* MBEDTLS_ECP_NO_FALLBACK */
204#if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT)
205    "ECP_RANDOMIZE_JAC_ALT", //no-check-names
206#endif /* MBEDTLS_ECP_RANDOMIZE_JAC_ALT */
207#if defined(MBEDTLS_ECP_ADD_MIXED_ALT)
208    "ECP_ADD_MIXED_ALT", //no-check-names
209#endif /* MBEDTLS_ECP_ADD_MIXED_ALT */
210#if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT)
211    "ECP_DOUBLE_JAC_ALT", //no-check-names
212#endif /* MBEDTLS_ECP_DOUBLE_JAC_ALT */
213#if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT)
214    "ECP_NORMALIZE_JAC_MANY_ALT", //no-check-names
215#endif /* MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT */
216#if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT)
217    "ECP_NORMALIZE_JAC_ALT", //no-check-names
218#endif /* MBEDTLS_ECP_NORMALIZE_JAC_ALT */
219#if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT)
220    "ECP_DOUBLE_ADD_MXZ_ALT", //no-check-names
221#endif /* MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT */
222#if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT)
223    "ECP_RANDOMIZE_MXZ_ALT", //no-check-names
224#endif /* MBEDTLS_ECP_RANDOMIZE_MXZ_ALT */
225#if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT)
226    "ECP_NORMALIZE_MXZ_ALT", //no-check-names
227#endif /* MBEDTLS_ECP_NORMALIZE_MXZ_ALT */
228#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
229    "ENTROPY_HARDWARE_ALT", //no-check-names
230#endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */
231#if defined(MBEDTLS_AES_ROM_TABLES)
232    "AES_ROM_TABLES", //no-check-names
233#endif /* MBEDTLS_AES_ROM_TABLES */
234#if defined(MBEDTLS_AES_FEWER_TABLES)
235    "AES_FEWER_TABLES", //no-check-names
236#endif /* MBEDTLS_AES_FEWER_TABLES */
237#if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH)
238    "AES_ONLY_128_BIT_KEY_LENGTH", //no-check-names
239#endif /* MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH */
240#if defined(MBEDTLS_AES_USE_HARDWARE_ONLY)
241    "AES_USE_HARDWARE_ONLY", //no-check-names
242#endif /* MBEDTLS_AES_USE_HARDWARE_ONLY */
243#if defined(MBEDTLS_CAMELLIA_SMALL_MEMORY)
244    "CAMELLIA_SMALL_MEMORY", //no-check-names
245#endif /* MBEDTLS_CAMELLIA_SMALL_MEMORY */
246#if defined(MBEDTLS_CHECK_RETURN_WARNING)
247    "CHECK_RETURN_WARNING", //no-check-names
248#endif /* MBEDTLS_CHECK_RETURN_WARNING */
249#if defined(MBEDTLS_CIPHER_MODE_CBC)
250    "CIPHER_MODE_CBC", //no-check-names
251#endif /* MBEDTLS_CIPHER_MODE_CBC */
252#if defined(MBEDTLS_CIPHER_MODE_CFB)
253    "CIPHER_MODE_CFB", //no-check-names
254#endif /* MBEDTLS_CIPHER_MODE_CFB */
255#if defined(MBEDTLS_CIPHER_MODE_CTR)
256    "CIPHER_MODE_CTR", //no-check-names
257#endif /* MBEDTLS_CIPHER_MODE_CTR */
258#if defined(MBEDTLS_CIPHER_MODE_OFB)
259    "CIPHER_MODE_OFB", //no-check-names
260#endif /* MBEDTLS_CIPHER_MODE_OFB */
261#if defined(MBEDTLS_CIPHER_MODE_XTS)
262    "CIPHER_MODE_XTS", //no-check-names
263#endif /* MBEDTLS_CIPHER_MODE_XTS */
264#if defined(MBEDTLS_CIPHER_NULL_CIPHER)
265    "CIPHER_NULL_CIPHER", //no-check-names
266#endif /* MBEDTLS_CIPHER_NULL_CIPHER */
267#if defined(MBEDTLS_CIPHER_PADDING_PKCS7)
268    "CIPHER_PADDING_PKCS7", //no-check-names
269#endif /* MBEDTLS_CIPHER_PADDING_PKCS7 */
270#if defined(MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS)
271    "CIPHER_PADDING_ONE_AND_ZEROS", //no-check-names
272#endif /* MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS */
273#if defined(MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN)
274    "CIPHER_PADDING_ZEROS_AND_LEN", //no-check-names
275#endif /* MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN */
276#if defined(MBEDTLS_CIPHER_PADDING_ZEROS)
277    "CIPHER_PADDING_ZEROS", //no-check-names
278#endif /* MBEDTLS_CIPHER_PADDING_ZEROS */
279#if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY)
280    "CTR_DRBG_USE_128_BIT_KEY", //no-check-names
281#endif /* MBEDTLS_CTR_DRBG_USE_128_BIT_KEY */
282#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED)
283    "ECDH_VARIANT_EVEREST_ENABLED", //no-check-names
284#endif /* MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED */
285#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
286    "ECP_DP_SECP192R1_ENABLED", //no-check-names
287#endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
288#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
289    "ECP_DP_SECP224R1_ENABLED", //no-check-names
290#endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
291#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
292    "ECP_DP_SECP256R1_ENABLED", //no-check-names
293#endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
294#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
295    "ECP_DP_SECP384R1_ENABLED", //no-check-names
296#endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
297#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
298    "ECP_DP_SECP521R1_ENABLED", //no-check-names
299#endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
300#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
301    "ECP_DP_SECP192K1_ENABLED", //no-check-names
302#endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
303#if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
304    "ECP_DP_SECP224K1_ENABLED", //no-check-names
305#endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
306#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
307    "ECP_DP_SECP256K1_ENABLED", //no-check-names
308#endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
309#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
310    "ECP_DP_BP256R1_ENABLED", //no-check-names
311#endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
312#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
313    "ECP_DP_BP384R1_ENABLED", //no-check-names
314#endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
315#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
316    "ECP_DP_BP512R1_ENABLED", //no-check-names
317#endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
318#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
319    "ECP_DP_CURVE25519_ENABLED", //no-check-names
320#endif /* MBEDTLS_ECP_DP_CURVE25519_ENABLED */
321#if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
322    "ECP_DP_CURVE448_ENABLED", //no-check-names
323#endif /* MBEDTLS_ECP_DP_CURVE448_ENABLED */
324#if defined(MBEDTLS_ECP_NIST_OPTIM)
325    "ECP_NIST_OPTIM", //no-check-names
326#endif /* MBEDTLS_ECP_NIST_OPTIM */
327#if defined(MBEDTLS_ECP_RESTARTABLE)
328    "ECP_RESTARTABLE", //no-check-names
329#endif /* MBEDTLS_ECP_RESTARTABLE */
330#if defined(MBEDTLS_ECP_WITH_MPI_UINT)
331    "ECP_WITH_MPI_UINT", //no-check-names
332#endif /* MBEDTLS_ECP_WITH_MPI_UINT */
333#if defined(MBEDTLS_ECDSA_DETERMINISTIC)
334    "ECDSA_DETERMINISTIC", //no-check-names
335#endif /* MBEDTLS_ECDSA_DETERMINISTIC */
336#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED)
337    "KEY_EXCHANGE_PSK_ENABLED", //no-check-names
338#endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */
339#if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED)
340    "KEY_EXCHANGE_DHE_PSK_ENABLED", //no-check-names
341#endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */
342#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED)
343    "KEY_EXCHANGE_ECDHE_PSK_ENABLED", //no-check-names
344#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */
345#if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED)
346    "KEY_EXCHANGE_RSA_PSK_ENABLED", //no-check-names
347#endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */
348#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
349    "KEY_EXCHANGE_RSA_ENABLED", //no-check-names
350#endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */
351#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
352    "KEY_EXCHANGE_DHE_RSA_ENABLED", //no-check-names
353#endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */
354#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED)
355    "KEY_EXCHANGE_ECDHE_RSA_ENABLED", //no-check-names
356#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */
357#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
358    "KEY_EXCHANGE_ECDHE_ECDSA_ENABLED", //no-check-names
359#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */
360#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED)
361    "KEY_EXCHANGE_ECDH_ECDSA_ENABLED", //no-check-names
362#endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */
363#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED)
364    "KEY_EXCHANGE_ECDH_RSA_ENABLED", //no-check-names
365#endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */
366#if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
367    "KEY_EXCHANGE_ECJPAKE_ENABLED", //no-check-names
368#endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */
369#if defined(MBEDTLS_PK_PARSE_EC_EXTENDED)
370    "PK_PARSE_EC_EXTENDED", //no-check-names
371#endif /* MBEDTLS_PK_PARSE_EC_EXTENDED */
372#if defined(MBEDTLS_PK_PARSE_EC_COMPRESSED)
373    "PK_PARSE_EC_COMPRESSED", //no-check-names
374#endif /* MBEDTLS_PK_PARSE_EC_COMPRESSED */
375#if defined(MBEDTLS_ERROR_STRERROR_DUMMY)
376    "ERROR_STRERROR_DUMMY", //no-check-names
377#endif /* MBEDTLS_ERROR_STRERROR_DUMMY */
378#if defined(MBEDTLS_GENPRIME)
379    "GENPRIME", //no-check-names
380#endif /* MBEDTLS_GENPRIME */
381#if defined(MBEDTLS_FS_IO)
382    "FS_IO", //no-check-names
383#endif /* MBEDTLS_FS_IO */
384#if defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
385    "NO_DEFAULT_ENTROPY_SOURCES", //no-check-names
386#endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
387#if defined(MBEDTLS_NO_PLATFORM_ENTROPY)
388    "NO_PLATFORM_ENTROPY", //no-check-names
389#endif /* MBEDTLS_NO_PLATFORM_ENTROPY */
390#if defined(MBEDTLS_ENTROPY_FORCE_SHA256)
391    "ENTROPY_FORCE_SHA256", //no-check-names
392#endif /* MBEDTLS_ENTROPY_FORCE_SHA256 */
393#if defined(MBEDTLS_ENTROPY_NV_SEED)
394    "ENTROPY_NV_SEED", //no-check-names
395#endif /* MBEDTLS_ENTROPY_NV_SEED */
396#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER)
397    "PSA_CRYPTO_KEY_ID_ENCODES_OWNER", //no-check-names
398#endif /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */
399#if defined(MBEDTLS_MEMORY_DEBUG)
400    "MEMORY_DEBUG", //no-check-names
401#endif /* MBEDTLS_MEMORY_DEBUG */
402#if defined(MBEDTLS_MEMORY_BACKTRACE)
403    "MEMORY_BACKTRACE", //no-check-names
404#endif /* MBEDTLS_MEMORY_BACKTRACE */
405#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)
406    "PK_RSA_ALT_SUPPORT", //no-check-names
407#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */
408#if defined(MBEDTLS_PKCS1_V15)
409    "PKCS1_V15", //no-check-names
410#endif /* MBEDTLS_PKCS1_V15 */
411#if defined(MBEDTLS_PKCS1_V21)
412    "PKCS1_V21", //no-check-names
413#endif /* MBEDTLS_PKCS1_V21 */
414#if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
415    "PSA_CRYPTO_BUILTIN_KEYS", //no-check-names
416#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
417#if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
418    "PSA_CRYPTO_CLIENT", //no-check-names
419#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */
420#if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
421    "PSA_CRYPTO_EXTERNAL_RNG", //no-check-names
422#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
423#if defined(MBEDTLS_PSA_CRYPTO_SPM)
424    "PSA_CRYPTO_SPM", //no-check-names
425#endif /* MBEDTLS_PSA_CRYPTO_SPM */
426#if defined(MBEDTLS_PSA_P256M_DRIVER_ENABLED)
427    "PSA_P256M_DRIVER_ENABLED", //no-check-names
428#endif /* MBEDTLS_PSA_P256M_DRIVER_ENABLED */
429#if defined(MBEDTLS_PSA_INJECT_ENTROPY)
430    "PSA_INJECT_ENTROPY", //no-check-names
431#endif /* MBEDTLS_PSA_INJECT_ENTROPY */
432#if defined(MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS)
433    "PSA_ASSUME_EXCLUSIVE_BUFFERS", //no-check-names
434#endif /* MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS */
435#if defined(MBEDTLS_RSA_NO_CRT)
436    "RSA_NO_CRT", //no-check-names
437#endif /* MBEDTLS_RSA_NO_CRT */
438#if defined(MBEDTLS_SELF_TEST)
439    "SELF_TEST", //no-check-names
440#endif /* MBEDTLS_SELF_TEST */
441#if defined(MBEDTLS_SHA256_SMALLER)
442    "SHA256_SMALLER", //no-check-names
443#endif /* MBEDTLS_SHA256_SMALLER */
444#if defined(MBEDTLS_SHA512_SMALLER)
445    "SHA512_SMALLER", //no-check-names
446#endif /* MBEDTLS_SHA512_SMALLER */
447#if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES)
448    "SSL_ALL_ALERT_MESSAGES", //no-check-names
449#endif /* MBEDTLS_SSL_ALL_ALERT_MESSAGES */
450#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID)
451    "SSL_DTLS_CONNECTION_ID", //no-check-names
452#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID */
453#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT)
454    "SSL_DTLS_CONNECTION_ID_COMPAT", //no-check-names
455#endif /* MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT */
456#if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
457    "SSL_ASYNC_PRIVATE", //no-check-names
458#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */
459#if defined(MBEDTLS_SSL_CONTEXT_SERIALIZATION)
460    "SSL_CONTEXT_SERIALIZATION", //no-check-names
461#endif /* MBEDTLS_SSL_CONTEXT_SERIALIZATION */
462#if defined(MBEDTLS_SSL_DEBUG_ALL)
463    "SSL_DEBUG_ALL", //no-check-names
464#endif /* MBEDTLS_SSL_DEBUG_ALL */
465#if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC)
466    "SSL_ENCRYPT_THEN_MAC", //no-check-names
467#endif /* MBEDTLS_SSL_ENCRYPT_THEN_MAC */
468#if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET)
469    "SSL_EXTENDED_MASTER_SECRET", //no-check-names
470#endif /* MBEDTLS_SSL_EXTENDED_MASTER_SECRET */
471#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
472    "SSL_KEEP_PEER_CERTIFICATE", //no-check-names
473#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */
474#if defined(MBEDTLS_SSL_RENEGOTIATION)
475    "SSL_RENEGOTIATION", //no-check-names
476#endif /* MBEDTLS_SSL_RENEGOTIATION */
477#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH)
478    "SSL_MAX_FRAGMENT_LENGTH", //no-check-names
479#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
480#if defined(MBEDTLS_SSL_RECORD_SIZE_LIMIT)
481    "SSL_RECORD_SIZE_LIMIT", //no-check-names
482#endif /* MBEDTLS_SSL_RECORD_SIZE_LIMIT */
483#if defined(MBEDTLS_SSL_PROTO_TLS1_2)
484    "SSL_PROTO_TLS1_2", //no-check-names
485#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
486#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
487    "SSL_PROTO_TLS1_3", //no-check-names
488#endif /* MBEDTLS_SSL_PROTO_TLS1_3 */
489#if defined(MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE)
490    "SSL_TLS1_3_COMPATIBILITY_MODE", //no-check-names
491#endif /* MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE */
492#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED)
493    "SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED", //no-check-names
494#endif /* MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED */
495#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED)
496    "SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED", //no-check-names
497#endif /* MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED */
498#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED)
499    "SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED", //no-check-names
500#endif /* MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED */
501#if defined(MBEDTLS_SSL_EARLY_DATA)
502    "SSL_EARLY_DATA", //no-check-names
503#endif /* MBEDTLS_SSL_EARLY_DATA */
504#if defined(MBEDTLS_SSL_PROTO_DTLS)
505    "SSL_PROTO_DTLS", //no-check-names
506#endif /* MBEDTLS_SSL_PROTO_DTLS */
507#if defined(MBEDTLS_SSL_ALPN)
508    "SSL_ALPN", //no-check-names
509#endif /* MBEDTLS_SSL_ALPN */
510#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY)
511    "SSL_DTLS_ANTI_REPLAY", //no-check-names
512#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */
513#if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY)
514    "SSL_DTLS_HELLO_VERIFY", //no-check-names
515#endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY */
516#if defined(MBEDTLS_SSL_DTLS_SRTP)
517    "SSL_DTLS_SRTP", //no-check-names
518#endif /* MBEDTLS_SSL_DTLS_SRTP */
519#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE)
520    "SSL_DTLS_CLIENT_PORT_REUSE", //no-check-names
521#endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE */
522#if defined(MBEDTLS_SSL_SESSION_TICKETS)
523    "SSL_SESSION_TICKETS", //no-check-names
524#endif /* MBEDTLS_SSL_SESSION_TICKETS */
525#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
526    "SSL_SERVER_NAME_INDICATION", //no-check-names
527#endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */
528#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH)
529    "SSL_VARIABLE_BUFFER_LENGTH", //no-check-names
530#endif /* MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH */
531#if defined(MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN)
532    "TEST_CONSTANT_FLOW_MEMSAN", //no-check-names
533#endif /* MBEDTLS_TEST_CONSTANT_FLOW_MEMSAN */
534#if defined(MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND)
535    "TEST_CONSTANT_FLOW_VALGRIND", //no-check-names
536#endif /* MBEDTLS_TEST_CONSTANT_FLOW_VALGRIND */
537#if defined(MBEDTLS_TEST_HOOKS)
538    "TEST_HOOKS", //no-check-names
539#endif /* MBEDTLS_TEST_HOOKS */
540#if defined(MBEDTLS_THREADING_ALT)
541    "THREADING_ALT", //no-check-names
542#endif /* MBEDTLS_THREADING_ALT */
543#if defined(MBEDTLS_THREADING_PTHREAD)
544    "THREADING_PTHREAD", //no-check-names
545#endif /* MBEDTLS_THREADING_PTHREAD */
546#if defined(MBEDTLS_USE_PSA_CRYPTO)
547    "USE_PSA_CRYPTO", //no-check-names
548#endif /* MBEDTLS_USE_PSA_CRYPTO */
549#if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
550    "PSA_CRYPTO_CONFIG", //no-check-names
551#endif /* MBEDTLS_PSA_CRYPTO_CONFIG */
552#if defined(MBEDTLS_VERSION_FEATURES)
553    "VERSION_FEATURES", //no-check-names
554#endif /* MBEDTLS_VERSION_FEATURES */
555#if defined(MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK)
556    "X509_TRUSTED_CERTIFICATE_CALLBACK", //no-check-names
557#endif /* MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK */
558#if defined(MBEDTLS_X509_REMOVE_INFO)
559    "X509_REMOVE_INFO", //no-check-names
560#endif /* MBEDTLS_X509_REMOVE_INFO */
561#if defined(MBEDTLS_X509_RSASSA_PSS_SUPPORT)
562    "X509_RSASSA_PSS_SUPPORT", //no-check-names
563#endif /* MBEDTLS_X509_RSASSA_PSS_SUPPORT */
564#if defined(MBEDTLS_AESNI_C)
565    "AESNI_C", //no-check-names
566#endif /* MBEDTLS_AESNI_C */
567#if defined(MBEDTLS_AESCE_C)
568    "AESCE_C", //no-check-names
569#endif /* MBEDTLS_AESCE_C */
570#if defined(MBEDTLS_AES_C)
571    "AES_C", //no-check-names
572#endif /* MBEDTLS_AES_C */
573#if defined(MBEDTLS_ASN1_PARSE_C)
574    "ASN1_PARSE_C", //no-check-names
575#endif /* MBEDTLS_ASN1_PARSE_C */
576#if defined(MBEDTLS_ASN1_WRITE_C)
577    "ASN1_WRITE_C", //no-check-names
578#endif /* MBEDTLS_ASN1_WRITE_C */
579#if defined(MBEDTLS_BASE64_C)
580    "BASE64_C", //no-check-names
581#endif /* MBEDTLS_BASE64_C */
582#if defined(MBEDTLS_BLOCK_CIPHER_NO_DECRYPT)
583    "BLOCK_CIPHER_NO_DECRYPT", //no-check-names
584#endif /* MBEDTLS_BLOCK_CIPHER_NO_DECRYPT */
585#if defined(MBEDTLS_BIGNUM_C)
586    "BIGNUM_C", //no-check-names
587#endif /* MBEDTLS_BIGNUM_C */
588#if defined(MBEDTLS_CAMELLIA_C)
589    "CAMELLIA_C", //no-check-names
590#endif /* MBEDTLS_CAMELLIA_C */
591#if defined(MBEDTLS_ARIA_C)
592    "ARIA_C", //no-check-names
593#endif /* MBEDTLS_ARIA_C */
594#if defined(MBEDTLS_CCM_C)
595    "CCM_C", //no-check-names
596#endif /* MBEDTLS_CCM_C */
597#if defined(MBEDTLS_CHACHA20_C)
598    "CHACHA20_C", //no-check-names
599#endif /* MBEDTLS_CHACHA20_C */
600#if defined(MBEDTLS_CHACHAPOLY_C)
601    "CHACHAPOLY_C", //no-check-names
602#endif /* MBEDTLS_CHACHAPOLY_C */
603#if defined(MBEDTLS_CIPHER_C)
604    "CIPHER_C", //no-check-names
605#endif /* MBEDTLS_CIPHER_C */
606#if defined(MBEDTLS_CMAC_C)
607    "CMAC_C", //no-check-names
608#endif /* MBEDTLS_CMAC_C */
609#if defined(MBEDTLS_CTR_DRBG_C)
610    "CTR_DRBG_C", //no-check-names
611#endif /* MBEDTLS_CTR_DRBG_C */
612#if defined(MBEDTLS_DEBUG_C)
613    "DEBUG_C", //no-check-names
614#endif /* MBEDTLS_DEBUG_C */
615#if defined(MBEDTLS_DES_C)
616    "DES_C", //no-check-names
617#endif /* MBEDTLS_DES_C */
618#if defined(MBEDTLS_DHM_C)
619    "DHM_C", //no-check-names
620#endif /* MBEDTLS_DHM_C */
621#if defined(MBEDTLS_ECDH_C)
622    "ECDH_C", //no-check-names
623#endif /* MBEDTLS_ECDH_C */
624#if defined(MBEDTLS_ECDSA_C)
625    "ECDSA_C", //no-check-names
626#endif /* MBEDTLS_ECDSA_C */
627#if defined(MBEDTLS_ECJPAKE_C)
628    "ECJPAKE_C", //no-check-names
629#endif /* MBEDTLS_ECJPAKE_C */
630#if defined(MBEDTLS_ECP_C)
631    "ECP_C", //no-check-names
632#endif /* MBEDTLS_ECP_C */
633#if defined(MBEDTLS_ENTROPY_C)
634    "ENTROPY_C", //no-check-names
635#endif /* MBEDTLS_ENTROPY_C */
636#if defined(MBEDTLS_ERROR_C)
637    "ERROR_C", //no-check-names
638#endif /* MBEDTLS_ERROR_C */
639#if defined(MBEDTLS_GCM_C)
640    "GCM_C", //no-check-names
641#endif /* MBEDTLS_GCM_C */
642#if defined(MBEDTLS_GCM_LARGE_TABLE)
643    "GCM_LARGE_TABLE", //no-check-names
644#endif /* MBEDTLS_GCM_LARGE_TABLE */
645#if defined(MBEDTLS_HKDF_C)
646    "HKDF_C", //no-check-names
647#endif /* MBEDTLS_HKDF_C */
648#if defined(MBEDTLS_HMAC_DRBG_C)
649    "HMAC_DRBG_C", //no-check-names
650#endif /* MBEDTLS_HMAC_DRBG_C */
651#if defined(MBEDTLS_LMS_C)
652    "LMS_C", //no-check-names
653#endif /* MBEDTLS_LMS_C */
654#if defined(MBEDTLS_LMS_PRIVATE)
655    "LMS_PRIVATE", //no-check-names
656#endif /* MBEDTLS_LMS_PRIVATE */
657#if defined(MBEDTLS_NIST_KW_C)
658    "NIST_KW_C", //no-check-names
659#endif /* MBEDTLS_NIST_KW_C */
660#if defined(MBEDTLS_MD_C)
661    "MD_C", //no-check-names
662#endif /* MBEDTLS_MD_C */
663#if defined(MBEDTLS_MD5_C)
664    "MD5_C", //no-check-names
665#endif /* MBEDTLS_MD5_C */
666#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
667    "MEMORY_BUFFER_ALLOC_C", //no-check-names
668#endif /* MBEDTLS_MEMORY_BUFFER_ALLOC_C */
669#if defined(MBEDTLS_NET_C)
670    "NET_C", //no-check-names
671#endif /* MBEDTLS_NET_C */
672#if defined(MBEDTLS_OID_C)
673    "OID_C", //no-check-names
674#endif /* MBEDTLS_OID_C */
675#if defined(MBEDTLS_PADLOCK_C)
676    "PADLOCK_C", //no-check-names
677#endif /* MBEDTLS_PADLOCK_C */
678#if defined(MBEDTLS_PEM_PARSE_C)
679    "PEM_PARSE_C", //no-check-names
680#endif /* MBEDTLS_PEM_PARSE_C */
681#if defined(MBEDTLS_PEM_WRITE_C)
682    "PEM_WRITE_C", //no-check-names
683#endif /* MBEDTLS_PEM_WRITE_C */
684#if defined(MBEDTLS_PK_C)
685    "PK_C", //no-check-names
686#endif /* MBEDTLS_PK_C */
687#if defined(MBEDTLS_PK_PARSE_C)
688    "PK_PARSE_C", //no-check-names
689#endif /* MBEDTLS_PK_PARSE_C */
690#if defined(MBEDTLS_PK_WRITE_C)
691    "PK_WRITE_C", //no-check-names
692#endif /* MBEDTLS_PK_WRITE_C */
693#if defined(MBEDTLS_PKCS5_C)
694    "PKCS5_C", //no-check-names
695#endif /* MBEDTLS_PKCS5_C */
696#if defined(MBEDTLS_PKCS7_C)
697    "PKCS7_C", //no-check-names
698#endif /* MBEDTLS_PKCS7_C */
699#if defined(MBEDTLS_PKCS12_C)
700    "PKCS12_C", //no-check-names
701#endif /* MBEDTLS_PKCS12_C */
702#if defined(MBEDTLS_PLATFORM_C)
703    "PLATFORM_C", //no-check-names
704#endif /* MBEDTLS_PLATFORM_C */
705#if defined(MBEDTLS_POLY1305_C)
706    "POLY1305_C", //no-check-names
707#endif /* MBEDTLS_POLY1305_C */
708#if defined(MBEDTLS_PSA_CRYPTO_C)
709    "PSA_CRYPTO_C", //no-check-names
710#endif /* MBEDTLS_PSA_CRYPTO_C */
711#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
712    "PSA_CRYPTO_SE_C", //no-check-names
713#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
714#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C)
715    "PSA_CRYPTO_STORAGE_C", //no-check-names
716#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */
717#if defined(MBEDTLS_PSA_ITS_FILE_C)
718    "PSA_ITS_FILE_C", //no-check-names
719#endif /* MBEDTLS_PSA_ITS_FILE_C */
720#if defined(MBEDTLS_RIPEMD160_C)
721    "RIPEMD160_C", //no-check-names
722#endif /* MBEDTLS_RIPEMD160_C */
723#if defined(MBEDTLS_RSA_C)
724    "RSA_C", //no-check-names
725#endif /* MBEDTLS_RSA_C */
726#if defined(MBEDTLS_SHA1_C)
727    "SHA1_C", //no-check-names
728#endif /* MBEDTLS_SHA1_C */
729#if defined(MBEDTLS_SHA224_C)
730    "SHA224_C", //no-check-names
731#endif /* MBEDTLS_SHA224_C */
732#if defined(MBEDTLS_SHA256_C)
733    "SHA256_C", //no-check-names
734#endif /* MBEDTLS_SHA256_C */
735#if defined(MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT)
736    "SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT", //no-check-names
737#endif /* MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT */
738#if defined(MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT)
739    "SHA256_USE_A64_CRYPTO_IF_PRESENT", //no-check-names
740#endif /* MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT */
741#if defined(MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY)
742    "SHA256_USE_ARMV8_A_CRYPTO_ONLY", //no-check-names
743#endif /* MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY */
744#if defined(MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY)
745    "SHA256_USE_A64_CRYPTO_ONLY", //no-check-names
746#endif /* MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY */
747#if defined(MBEDTLS_SHA384_C)
748    "SHA384_C", //no-check-names
749#endif /* MBEDTLS_SHA384_C */
750#if defined(MBEDTLS_SHA512_C)
751    "SHA512_C", //no-check-names
752#endif /* MBEDTLS_SHA512_C */
753#if defined(MBEDTLS_SHA3_C)
754    "SHA3_C", //no-check-names
755#endif /* MBEDTLS_SHA3_C */
756#if defined(MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT)
757    "SHA512_USE_A64_CRYPTO_IF_PRESENT", //no-check-names
758#endif /* MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT */
759#if defined(MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY)
760    "SHA512_USE_A64_CRYPTO_ONLY", //no-check-names
761#endif /* MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY */
762#if defined(MBEDTLS_SSL_CACHE_C)
763    "SSL_CACHE_C", //no-check-names
764#endif /* MBEDTLS_SSL_CACHE_C */
765#if defined(MBEDTLS_SSL_COOKIE_C)
766    "SSL_COOKIE_C", //no-check-names
767#endif /* MBEDTLS_SSL_COOKIE_C */
768#if defined(MBEDTLS_SSL_TICKET_C)
769    "SSL_TICKET_C", //no-check-names
770#endif /* MBEDTLS_SSL_TICKET_C */
771#if defined(MBEDTLS_SSL_CLI_C)
772    "SSL_CLI_C", //no-check-names
773#endif /* MBEDTLS_SSL_CLI_C */
774#if defined(MBEDTLS_SSL_SRV_C)
775    "SSL_SRV_C", //no-check-names
776#endif /* MBEDTLS_SSL_SRV_C */
777#if defined(MBEDTLS_SSL_TLS_C)
778    "SSL_TLS_C", //no-check-names
779#endif /* MBEDTLS_SSL_TLS_C */
780#if defined(MBEDTLS_THREADING_C)
781    "THREADING_C", //no-check-names
782#endif /* MBEDTLS_THREADING_C */
783#if defined(MBEDTLS_TIMING_C)
784    "TIMING_C", //no-check-names
785#endif /* MBEDTLS_TIMING_C */
786#if defined(MBEDTLS_VERSION_C)
787    "VERSION_C", //no-check-names
788#endif /* MBEDTLS_VERSION_C */
789#if defined(MBEDTLS_X509_USE_C)
790    "X509_USE_C", //no-check-names
791#endif /* MBEDTLS_X509_USE_C */
792#if defined(MBEDTLS_X509_CRT_PARSE_C)
793    "X509_CRT_PARSE_C", //no-check-names
794#endif /* MBEDTLS_X509_CRT_PARSE_C */
795#if defined(MBEDTLS_X509_CRL_PARSE_C)
796    "X509_CRL_PARSE_C", //no-check-names
797#endif /* MBEDTLS_X509_CRL_PARSE_C */
798#if defined(MBEDTLS_X509_CSR_PARSE_C)
799    "X509_CSR_PARSE_C", //no-check-names
800#endif /* MBEDTLS_X509_CSR_PARSE_C */
801#if defined(MBEDTLS_X509_CREATE_C)
802    "X509_CREATE_C", //no-check-names
803#endif /* MBEDTLS_X509_CREATE_C */
804#if defined(MBEDTLS_X509_CRT_WRITE_C)
805    "X509_CRT_WRITE_C", //no-check-names
806#endif /* MBEDTLS_X509_CRT_WRITE_C */
807#if defined(MBEDTLS_X509_CSR_WRITE_C)
808    "X509_CSR_WRITE_C", //no-check-names
809#endif /* MBEDTLS_X509_CSR_WRITE_C */
810#endif /* MBEDTLS_VERSION_FEATURES */
811    NULL
812};
813
814int mbedtls_version_check_feature(const char *feature)
815{
816    const char * const *idx = features;
817
818    if (*idx == NULL) {
819        return -2;
820    }
821
822    if (feature == NULL) {
823        return -1;
824    }
825
826    if (strncmp(feature, "MBEDTLS_", 8)) {
827        return -1;
828    }
829
830    feature += 8;
831
832    while (*idx != NULL) {
833        if (!strcmp(*idx, feature)) {
834            return 0;
835        }
836        idx++;
837    }
838    return -1;
839}
840
841#endif /* MBEDTLS_VERSION_C */
842