mbed TLS v2.28.2
config_psa.h
Go to the documentation of this file.
1 
13 /*
14  * Copyright The Mbed TLS Contributors
15  * SPDX-License-Identifier: Apache-2.0
16  *
17  * Licensed under the Apache License, Version 2.0 (the "License"); you may
18  * not use this file except in compliance with the License.
19  * You may obtain a copy of the License at
20  *
21  * http://www.apache.org/licenses/LICENSE-2.0
22  *
23  * Unless required by applicable law or agreed to in writing, software
24  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
25  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26  * See the License for the specific language governing permissions and
27  * limitations under the License.
28  */
29 
30 #ifndef MBEDTLS_CONFIG_PSA_H
31 #define MBEDTLS_CONFIG_PSA_H
32 
33 #if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
34 #if defined(MBEDTLS_PSA_CRYPTO_CONFIG_FILE)
35 #include MBEDTLS_PSA_CRYPTO_CONFIG_FILE
36 #else
37 #include "psa/crypto_config.h"
38 #endif
39 #endif /* defined(MBEDTLS_PSA_CRYPTO_CONFIG) */
40 
41 #if defined(MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE)
42 #include MBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE
43 #endif
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 
50 
51 /****************************************************************/
52 /* De facto synonyms */
53 /****************************************************************/
54 
55 #if defined(PSA_WANT_ALG_ECDSA_ANY) && !defined(PSA_WANT_ALG_ECDSA)
56 #define PSA_WANT_ALG_ECDSA PSA_WANT_ALG_ECDSA_ANY
57 #elif !defined(PSA_WANT_ALG_ECDSA_ANY) && defined(PSA_WANT_ALG_ECDSA)
58 #define PSA_WANT_ALG_ECDSA_ANY PSA_WANT_ALG_ECDSA
59 #endif
60 
61 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
62 #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW
63 #elif !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
64 #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW PSA_WANT_ALG_RSA_PKCS1V15_SIGN
65 #endif
66 
67 #if defined(PSA_WANT_ALG_RSA_PSS_ANY_SALT) && !defined(PSA_WANT_ALG_RSA_PSS)
68 #define PSA_WANT_ALG_RSA_PSS PSA_WANT_ALG_RSA_PSS_ANY_SALT
69 #elif !defined(PSA_WANT_ALG_RSA_PSS_ANY_SALT) && defined(PSA_WANT_ALG_RSA_PSS)
70 #define PSA_WANT_ALG_RSA_PSS_ANY_SALT PSA_WANT_ALG_RSA_PSS
71 #endif
72 
73 
74 
75 /****************************************************************/
76 /* Require built-in implementations based on PSA requirements */
77 /****************************************************************/
78 
79 #if defined(MBEDTLS_PSA_CRYPTO_CONFIG)
80 
81 #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)
82 #if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA)
83 #define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
84 #define MBEDTLS_ECDSA_DETERMINISTIC
85 #define MBEDTLS_ECDSA_C
86 #define MBEDTLS_HMAC_DRBG_C
87 #define MBEDTLS_MD_C
88 #endif /* !MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA */
89 #endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */
90 
91 #if defined(PSA_WANT_ALG_ECDH)
92 #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH)
93 #define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
94 #define MBEDTLS_ECDH_C
95 #define MBEDTLS_ECP_C
96 #define MBEDTLS_BIGNUM_C
97 #endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDH */
98 #endif /* PSA_WANT_ALG_ECDH */
99 
100 #if defined(PSA_WANT_ALG_ECDSA)
101 #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA)
102 #define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
103 #define MBEDTLS_ECDSA_C
104 #define MBEDTLS_ECP_C
105 #define MBEDTLS_BIGNUM_C
106 #define MBEDTLS_ASN1_PARSE_C
107 #define MBEDTLS_ASN1_WRITE_C
108 #endif /* !MBEDTLS_PSA_ACCEL_ALG_ECDSA */
109 #endif /* PSA_WANT_ALG_ECDSA */
110 
111 #if defined(PSA_WANT_ALG_HKDF)
112 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF)
113 #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
114 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
115 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */
116 #endif /* PSA_WANT_ALG_HKDF */
117 
118 #if defined(PSA_WANT_ALG_HMAC)
119 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC)
120 #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
121 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */
122 #endif /* PSA_WANT_ALG_HMAC */
123 
124 #if defined(PSA_WANT_ALG_MD2) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD2)
125 #define MBEDTLS_PSA_BUILTIN_ALG_MD2 1
126 #define MBEDTLS_MD2_C
127 #endif
128 
129 #if defined(PSA_WANT_ALG_MD4) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD4)
130 #define MBEDTLS_PSA_BUILTIN_ALG_MD4 1
131 #define MBEDTLS_MD4_C
132 #endif
133 
134 #if defined(PSA_WANT_ALG_MD5) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD5)
135 #define MBEDTLS_PSA_BUILTIN_ALG_MD5 1
136 #define MBEDTLS_MD5_C
137 #endif
138 
139 #if defined(PSA_WANT_ALG_RIPEMD160) && !defined(MBEDTLS_PSA_ACCEL_ALG_RIPEMD160)
140 #define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1
141 #define MBEDTLS_RIPEMD160_C
142 #endif
143 
144 #if defined(PSA_WANT_ALG_RSA_OAEP)
145 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP)
146 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
147 #define MBEDTLS_RSA_C
148 #define MBEDTLS_BIGNUM_C
149 #define MBEDTLS_OID_C
150 #define MBEDTLS_PKCS1_V21
151 #define MBEDTLS_MD_C
152 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */
153 #endif /* PSA_WANT_ALG_RSA_OAEP */
154 
155 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT)
156 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT)
157 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
158 #define MBEDTLS_RSA_C
159 #define MBEDTLS_BIGNUM_C
160 #define MBEDTLS_OID_C
161 #define MBEDTLS_PKCS1_V15
162 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */
163 #endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */
164 
165 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
166 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN)
167 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
168 #define MBEDTLS_RSA_C
169 #define MBEDTLS_BIGNUM_C
170 #define MBEDTLS_OID_C
171 #define MBEDTLS_PKCS1_V15
172 #define MBEDTLS_MD_C
173 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */
174 #endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */
175 
176 #if defined(PSA_WANT_ALG_RSA_PSS)
177 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
178 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
179 #define MBEDTLS_RSA_C
180 #define MBEDTLS_BIGNUM_C
181 #define MBEDTLS_OID_C
182 #define MBEDTLS_PKCS1_V21
183 #define MBEDTLS_MD_C
184 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */
185 #endif /* PSA_WANT_ALG_RSA_PSS */
186 
187 #if defined(PSA_WANT_ALG_SHA_1) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_1)
188 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1
189 #define MBEDTLS_SHA1_C
190 #endif
191 
192 #if defined(PSA_WANT_ALG_SHA_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_224)
193 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1
194 #define MBEDTLS_SHA256_C
195 #endif
196 
197 #if defined(PSA_WANT_ALG_SHA_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_256)
198 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1
199 #define MBEDTLS_SHA256_C
200 #endif
201 
202 #if defined(PSA_WANT_ALG_SHA_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_384)
203 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1
204 #define MBEDTLS_SHA512_C
205 #endif
206 
207 #if defined(PSA_WANT_ALG_SHA_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_512)
208 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1
209 #define MBEDTLS_SHA512_C
210 #endif
211 
212 #if defined(PSA_WANT_ALG_TLS12_PRF)
213 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF)
214 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
215 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF */
216 #endif /* PSA_WANT_ALG_TLS12_PRF */
217 
218 #if defined(PSA_WANT_ALG_TLS12_PSK_TO_MS)
219 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS)
220 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
221 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS */
222 #endif /* PSA_WANT_ALG_TLS12_PSK_TO_MS */
223 
224 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR)
225 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR)
226 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
227 #define MBEDTLS_ECP_C
228 #define MBEDTLS_BIGNUM_C
229 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR */
230 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */
231 
232 #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
233 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)
234 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
235 #define MBEDTLS_ECP_C
236 #define MBEDTLS_BIGNUM_C
237 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY */
238 #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
239 
240 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR)
241 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR)
242 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
243 #define MBEDTLS_RSA_C
244 #define MBEDTLS_BIGNUM_C
245 #define MBEDTLS_OID_C
246 #define MBEDTLS_GENPRIME
247 #define MBEDTLS_PK_PARSE_C
248 #define MBEDTLS_PK_WRITE_C
249 #define MBEDTLS_PK_C
250 #define MBEDTLS_ASN1_PARSE_C
251 #define MBEDTLS_ASN1_WRITE_C
252 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR */
253 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */
254 
255 #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
256 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
257 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
258 #define MBEDTLS_RSA_C
259 #define MBEDTLS_BIGNUM_C
260 #define MBEDTLS_OID_C
261 #define MBEDTLS_PK_PARSE_C
262 #define MBEDTLS_PK_WRITE_C
263 #define MBEDTLS_PK_C
264 #define MBEDTLS_ASN1_PARSE_C
265 #define MBEDTLS_ASN1_WRITE_C
266 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */
267 #endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */
268 
269 /* If any of the block modes are requested that don't have an
270  * associated HW assist, define PSA_HAVE_SOFT_BLOCK_MODE for checking
271  * in the block cipher key types. */
272 #if (defined(PSA_WANT_ALG_CTR) && !defined(MBEDTLS_PSA_ACCEL_ALG_CTR)) || \
273  (defined(PSA_WANT_ALG_CFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_CFB)) || \
274  (defined(PSA_WANT_ALG_OFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_OFB)) || \
275  defined(PSA_WANT_ALG_ECB_NO_PADDING) || \
276  (defined(PSA_WANT_ALG_CBC_NO_PADDING) && \
277  !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING)) || \
278  (defined(PSA_WANT_ALG_CBC_PKCS7) && \
279  !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7)) || \
280  (defined(PSA_WANT_ALG_CMAC) && !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC))
281 #define PSA_HAVE_SOFT_BLOCK_MODE 1
282 #endif
283 
284 #if (defined(PSA_WANT_ALG_GCM) && !defined(MBEDTLS_PSA_ACCEL_ALG_GCM)) || \
285  (defined(PSA_WANT_ALG_CCM) && !defined(MBEDTLS_PSA_ACCEL_ALG_CCM))
286 #define PSA_HAVE_SOFT_BLOCK_AEAD 1
287 #endif
288 
289 #if defined(PSA_WANT_KEY_TYPE_AES)
290 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_AES)
291 #define PSA_HAVE_SOFT_KEY_TYPE_AES 1
292 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_AES */
293 #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
294  defined(PSA_HAVE_SOFT_BLOCK_MODE) || \
295  defined(PSA_HAVE_SOFT_BLOCK_AEAD)
296 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1
297 #define MBEDTLS_AES_C
298 #endif /* PSA_HAVE_SOFT_KEY_TYPE_AES || PSA_HAVE_SOFT_BLOCK_MODE */
299 #endif /* PSA_WANT_KEY_TYPE_AES */
300 
301 #if defined(PSA_WANT_KEY_TYPE_ARC4)
302 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARC4)
303 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARC4 1
304 #define MBEDTLS_ARC4_C
305 #endif
306 #endif /* PSA_WANT_KEY_TYPE_ARC4 */
307 
308 #if defined(PSA_WANT_KEY_TYPE_ARIA)
309 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA)
310 #define PSA_HAVE_SOFT_KEY_TYPE_ARIA 1
311 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA */
312 #if defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
313  defined(PSA_HAVE_SOFT_BLOCK_MODE) || \
314  defined(PSA_HAVE_SOFT_BLOCK_AEAD)
315 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA 1
316 #define MBEDTLS_ARIA_C
317 #endif /* PSA_HAVE_SOFT_KEY_TYPE_ARIA || PSA_HAVE_SOFT_BLOCK_MODE */
318 #endif /* PSA_WANT_KEY_TYPE_ARIA */
319 
320 #if defined(PSA_WANT_KEY_TYPE_CAMELLIA)
321 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA)
322 #define PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA 1
323 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA */
324 #if defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) || \
325  defined(PSA_HAVE_SOFT_BLOCK_MODE) || \
326  defined(PSA_HAVE_SOFT_BLOCK_AEAD)
327 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1
328 #define MBEDTLS_CAMELLIA_C
329 #endif /* PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA || PSA_HAVE_SOFT_BLOCK_MODE */
330 #endif /* PSA_WANT_KEY_TYPE_CAMELLIA */
331 
332 #if defined(PSA_WANT_KEY_TYPE_DES)
333 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DES)
334 #define PSA_HAVE_SOFT_KEY_TYPE_DES 1
335 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DES */
336 #if defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
337  defined(PSA_HAVE_SOFT_BLOCK_MODE)
338 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1
339 #define MBEDTLS_DES_C
340 #endif /*PSA_HAVE_SOFT_KEY_TYPE_DES || PSA_HAVE_SOFT_BLOCK_MODE */
341 #endif /* PSA_WANT_KEY_TYPE_DES */
342 
343 #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
344 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20)
345 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1
346 #define MBEDTLS_CHACHA20_C
347 #endif
348 #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
349 
350 /* If any of the software block ciphers are selected, define
351  * PSA_HAVE_SOFT_BLOCK_CIPHER, which can be used in any of these
352  * situations. */
353 #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
354  defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
355  defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
356  defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
357 #define PSA_HAVE_SOFT_BLOCK_CIPHER 1
358 #endif
359 
360 #if defined(PSA_WANT_ALG_STREAM_CIPHER)
361 #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
362 #endif /* PSA_WANT_ALG_STREAM_CIPHER */
363 
364 #if defined(PSA_WANT_ALG_CBC_MAC)
365 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_MAC)
366 #error "CBC-MAC is not yet supported via the PSA API in Mbed TLS."
367 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_MAC 1
368 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CBC_MAC */
369 #endif /* PSA_WANT_ALG_CBC_MAC */
370 
371 #if defined(PSA_WANT_ALG_CMAC)
372 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC) || \
373  defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
374 #define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1
375 #define MBEDTLS_CMAC_C
376 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CMAC */
377 #endif /* PSA_WANT_ALG_CMAC */
378 
379 #if defined(PSA_WANT_ALG_CTR)
380 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CTR) || \
381  defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
382 #define MBEDTLS_PSA_BUILTIN_ALG_CTR 1
383 #define MBEDTLS_CIPHER_MODE_CTR
384 #endif
385 #endif /* PSA_WANT_ALG_CTR */
386 
387 #if defined(PSA_WANT_ALG_CFB)
388 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CFB) || \
389  defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
390 #define MBEDTLS_PSA_BUILTIN_ALG_CFB 1
391 #define MBEDTLS_CIPHER_MODE_CFB
392 #endif
393 #endif /* PSA_WANT_ALG_CFB */
394 
395 #if defined(PSA_WANT_ALG_OFB)
396 #if !defined(MBEDTLS_PSA_ACCEL_ALG_OFB) || \
397  defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
398 #define MBEDTLS_PSA_BUILTIN_ALG_OFB 1
399 #define MBEDTLS_CIPHER_MODE_OFB
400 #endif
401 #endif /* PSA_WANT_ALG_OFB */
402 
403 #if defined(PSA_WANT_ALG_ECB_NO_PADDING) && \
404  !defined(MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING)
405 #define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1
406 #endif
407 
408 #if defined(PSA_WANT_ALG_CBC_NO_PADDING)
409 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING) || \
410  defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
411 #define MBEDTLS_CIPHER_MODE_CBC
412 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1
413 #endif
414 #endif /* PSA_WANT_ALG_CBC_NO_PADDING */
415 
416 #if defined(PSA_WANT_ALG_CBC_PKCS7)
417 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7) || \
418  defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
419 #define MBEDTLS_CIPHER_MODE_CBC
420 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1
421 #define MBEDTLS_CIPHER_PADDING_PKCS7
422 #endif
423 #endif /* PSA_WANT_ALG_CBC_PKCS7 */
424 
425 #if defined(PSA_WANT_ALG_CCM)
426 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM) || \
427  defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
428  defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
429  defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
430 #define MBEDTLS_PSA_BUILTIN_ALG_CCM 1
431 #define MBEDTLS_CCM_C
432 #endif
433 #endif /* PSA_WANT_ALG_CCM */
434 
435 #if defined(PSA_WANT_ALG_GCM)
436 #if !defined(MBEDTLS_PSA_ACCEL_ALG_GCM) || \
437  defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
438  defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
439  defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
440 #define MBEDTLS_PSA_BUILTIN_ALG_GCM 1
441 #define MBEDTLS_GCM_C
442 #endif
443 #endif /* PSA_WANT_ALG_GCM */
444 
445 #if defined(PSA_WANT_ALG_CHACHA20_POLY1305)
446 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305)
447 #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
448 #define MBEDTLS_CHACHAPOLY_C
449 #define MBEDTLS_CHACHA20_C
450 #define MBEDTLS_POLY1305_C
451 #define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1
452 #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
453 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305 */
454 #endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */
455 
456 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256)
457 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256)
458 #define MBEDTLS_ECP_DP_BP256R1_ENABLED
459 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1
460 #endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256 */
461 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_256 */
462 
463 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384)
464 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384)
465 #define MBEDTLS_ECP_DP_BP384R1_ENABLED
466 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1
467 #endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384 */
468 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_384 */
469 
470 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512)
471 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512)
472 #define MBEDTLS_ECP_DP_BP512R1_ENABLED
473 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1
474 #endif /* !MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512 */
475 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_512 */
476 
477 #if defined(PSA_WANT_ECC_MONTGOMERY_255)
478 #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255)
479 #define MBEDTLS_ECP_DP_CURVE25519_ENABLED
480 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1
481 #endif /* !MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 */
482 #endif /* PSA_WANT_ECC_MONTGOMERY_255 */
483 
484 #if defined(PSA_WANT_ECC_MONTGOMERY_448)
485 #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448)
486 /*
487  * Curve448 is not yet supported via the PSA API in Mbed TLS
488  * (https://github.com/Mbed-TLS/mbedtls/issues/4249).
489  */
490 #error "Curve448 is not yet supported via the PSA API in Mbed TLS."
491 #define MBEDTLS_ECP_DP_CURVE448_ENABLED
492 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1
493 #endif /* !MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448 */
494 #endif /* PSA_WANT_ECC_MONTGOMERY_448 */
495 
496 #if defined(PSA_WANT_ECC_SECP_R1_192)
497 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192)
498 #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
499 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1
500 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192 */
501 #endif /* PSA_WANT_ECC_SECP_R1_192 */
502 
503 #if defined(PSA_WANT_ECC_SECP_R1_224)
504 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224)
505 #define MBEDTLS_ECP_DP_SECP224R1_ENABLED
506 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1
507 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224 */
508 #endif /* PSA_WANT_ECC_SECP_R1_224 */
509 
510 #if defined(PSA_WANT_ECC_SECP_R1_256)
511 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256)
512 #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
513 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1
514 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256 */
515 #endif /* PSA_WANT_ECC_SECP_R1_256 */
516 
517 #if defined(PSA_WANT_ECC_SECP_R1_384)
518 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384)
519 #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
520 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1
521 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384 */
522 #endif /* PSA_WANT_ECC_SECP_R1_384 */
523 
524 #if defined(PSA_WANT_ECC_SECP_R1_521)
525 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521)
526 #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
527 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1
528 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521 */
529 #endif /* PSA_WANT_ECC_SECP_R1_521 */
530 
531 #if defined(PSA_WANT_ECC_SECP_K1_192)
532 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192)
533 #define MBEDTLS_ECP_DP_SECP192K1_ENABLED
534 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1
535 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192 */
536 #endif /* PSA_WANT_ECC_SECP_K1_192 */
537 
538 #if defined(PSA_WANT_ECC_SECP_K1_224)
539 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224)
540 /*
541  * SECP224K1 is buggy via the PSA API in Mbed TLS
542  * (https://github.com/Mbed-TLS/mbedtls/issues/3541).
543  */
544 #error "SECP224K1 is buggy via the PSA API in Mbed TLS."
545 #define MBEDTLS_ECP_DP_SECP224K1_ENABLED
546 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1
547 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224 */
548 #endif /* PSA_WANT_ECC_SECP_K1_224 */
549 
550 #if defined(PSA_WANT_ECC_SECP_K1_256)
551 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256)
552 #define MBEDTLS_ECP_DP_SECP256K1_ENABLED
553 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1
554 #endif /* !MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256 */
555 #endif /* PSA_WANT_ECC_SECP_K1_256 */
556 
557 
558 
559 /****************************************************************/
560 /* Infer PSA requirements from Mbed TLS capabilities */
561 /****************************************************************/
562 
563 #else /* MBEDTLS_PSA_CRYPTO_CONFIG */
564 
565 /*
566  * Ensure PSA_WANT_* defines are setup properly if MBEDTLS_PSA_CRYPTO_CONFIG
567  * is not defined
568  */
569 
570 #if defined(MBEDTLS_CCM_C)
571 #define MBEDTLS_PSA_BUILTIN_ALG_CCM 1
572 #define PSA_WANT_ALG_CCM 1
573 #endif /* MBEDTLS_CCM_C */
574 
575 #if defined(MBEDTLS_CMAC_C)
576 #define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1
577 #define PSA_WANT_ALG_CMAC 1
578 #endif /* MBEDTLS_CMAC_C */
579 
580 #if defined(MBEDTLS_ECDH_C)
581 #define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
582 #define PSA_WANT_ALG_ECDH 1
583 #endif /* MBEDTLS_ECDH_C */
584 
585 #if defined(MBEDTLS_ECDSA_C)
586 #define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
587 #define PSA_WANT_ALG_ECDSA 1
588 #define PSA_WANT_ALG_ECDSA_ANY 1
589 
590 // Only add in DETERMINISTIC support if ECDSA is also enabled
591 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
592 #define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
593 #define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1
594 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
595 
596 #endif /* MBEDTLS_ECDSA_C */
597 
598 #if defined(MBEDTLS_ECP_C)
599 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1
600 #define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1
601 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
602 #define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1
603 #endif /* MBEDTLS_ECP_C */
604 
605 #if defined(MBEDTLS_GCM_C)
606 #define MBEDTLS_PSA_BUILTIN_ALG_GCM 1
607 #define PSA_WANT_ALG_GCM 1
608 #endif /* MBEDTLS_GCM_C */
609 
610 #if defined(MBEDTLS_HKDF_C)
611 #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
612 #define PSA_WANT_ALG_HMAC 1
613 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
614 #define PSA_WANT_ALG_HKDF 1
615 #endif /* MBEDTLS_HKDF_C */
616 
617 #if defined(MBEDTLS_MD_C)
618 #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
619 #define PSA_WANT_ALG_HMAC 1
620 #define PSA_WANT_KEY_TYPE_HMAC
621 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
622 #define PSA_WANT_ALG_TLS12_PRF 1
623 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
624 #define PSA_WANT_ALG_TLS12_PSK_TO_MS 1
625 #endif /* MBEDTLS_MD_C */
626 
627 #if defined(MBEDTLS_MD2_C)
628 #define MBEDTLS_PSA_BUILTIN_ALG_MD2 1
629 #define PSA_WANT_ALG_MD2 1
630 #endif
631 
632 #if defined(MBEDTLS_MD4_C)
633 #define MBEDTLS_PSA_BUILTIN_ALG_MD4 1
634 #define PSA_WANT_ALG_MD4 1
635 #endif
636 
637 #if defined(MBEDTLS_MD5_C)
638 #define MBEDTLS_PSA_BUILTIN_ALG_MD5 1
639 #define PSA_WANT_ALG_MD5 1
640 #endif
641 
642 #if defined(MBEDTLS_RIPEMD160_C)
643 #define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1
644 #define PSA_WANT_ALG_RIPEMD160 1
645 #endif
646 
647 #if defined(MBEDTLS_RSA_C)
648 #if defined(MBEDTLS_PKCS1_V15)
649 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
650 #define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1
651 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
652 #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1
653 #define PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW 1
654 #endif /* MBEDTLS_PKCS1_V15 */
655 #if defined(MBEDTLS_PKCS1_V21)
656 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
657 #define PSA_WANT_ALG_RSA_OAEP 1
658 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
659 #define PSA_WANT_ALG_RSA_PSS 1
660 #endif /* MBEDTLS_PKCS1_V21 */
661 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR 1
662 #define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1
663 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
664 #define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1
665 #endif /* MBEDTLS_RSA_C */
666 
667 #if defined(MBEDTLS_SHA1_C)
668 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1
669 #define PSA_WANT_ALG_SHA_1 1
670 #endif
671 
672 #if defined(MBEDTLS_SHA256_C)
673 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1
674 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1
675 #define PSA_WANT_ALG_SHA_224 1
676 #define PSA_WANT_ALG_SHA_256 1
677 #endif
678 
679 #if defined(MBEDTLS_SHA512_C)
680 #if !defined(MBEDTLS_SHA512_NO_SHA384)
681 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1
682 #define PSA_WANT_ALG_SHA_384 1
683 #endif
684 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1
685 #define PSA_WANT_ALG_SHA_512 1
686 #endif
687 
688 #if defined(MBEDTLS_AES_C)
689 #define PSA_WANT_KEY_TYPE_AES 1
690 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1
691 #endif
692 
693 #if defined(MBEDTLS_ARC4_C)
694 #define PSA_WANT_KEY_TYPE_ARC4 1
695 #define PSA_WANT_ALG_STREAM_CIPHER 1
696 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARC4 1
697 #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
698 #endif
699 
700 #if defined(MBEDTLS_ARIA_C)
701 #define PSA_WANT_KEY_TYPE_ARIA 1
702 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA 1
703 #endif
704 
705 #if defined(MBEDTLS_CAMELLIA_C)
706 #define PSA_WANT_KEY_TYPE_CAMELLIA 1
707 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1
708 #endif
709 
710 #if defined(MBEDTLS_DES_C)
711 #define PSA_WANT_KEY_TYPE_DES 1
712 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1
713 #endif
714 
715 #if defined(MBEDTLS_CHACHA20_C)
716 #define PSA_WANT_KEY_TYPE_CHACHA20 1
717 #define PSA_WANT_ALG_STREAM_CIPHER 1
718 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1
719 #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
720 #if defined(MBEDTLS_CHACHAPOLY_C)
721 #define PSA_WANT_ALG_CHACHA20_POLY1305 1
722 #define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1
723 #endif
724 #endif
725 
726 #if defined(MBEDTLS_CIPHER_MODE_CBC)
727 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1
728 #define PSA_WANT_ALG_CBC_NO_PADDING 1
729 #if defined(MBEDTLS_CIPHER_PADDING_PKCS7)
730 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1
731 #define PSA_WANT_ALG_CBC_PKCS7 1
732 #endif
733 #endif
734 
735 #if defined(MBEDTLS_AES_C) || defined(MBEDTLS_DES_C) || \
736  defined(MBEDTLS_ARIA_C) || defined(MBEDTLS_CAMELLIA_C)
737 #define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1
738 #define PSA_WANT_ALG_ECB_NO_PADDING 1
739 #endif
740 
741 #if defined(MBEDTLS_CIPHER_MODE_CFB)
742 #define MBEDTLS_PSA_BUILTIN_ALG_CFB 1
743 #define PSA_WANT_ALG_CFB 1
744 #endif
745 
746 #if defined(MBEDTLS_CIPHER_MODE_CTR)
747 #define MBEDTLS_PSA_BUILTIN_ALG_CTR 1
748 #define PSA_WANT_ALG_CTR 1
749 #endif
750 
751 #if defined(MBEDTLS_CIPHER_MODE_OFB)
752 #define MBEDTLS_PSA_BUILTIN_ALG_OFB 1
753 #define PSA_WANT_ALG_OFB 1
754 #endif
755 
756 #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)
757 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1
758 #define PSA_WANT_ECC_BRAINPOOL_P_R1_256
759 #endif
760 
761 #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)
762 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1
763 #define PSA_WANT_ECC_BRAINPOOL_P_R1_384
764 #endif
765 
766 #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)
767 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1
768 #define PSA_WANT_ECC_BRAINPOOL_P_R1_512
769 #endif
770 
771 #if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
772 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1
773 #define PSA_WANT_ECC_MONTGOMERY_255
774 #endif
775 
776 /* Curve448 is not yet supported via the PSA API (https://github.com/Mbed-TLS/mbedtls/issues/4249) */
777 #if 0 && defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)
778 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1
779 #define PSA_WANT_ECC_MONTGOMERY_448
780 #endif
781 
782 #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)
783 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1
784 #define PSA_WANT_ECC_SECP_R1_192
785 #endif
786 
787 #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)
788 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1
789 #define PSA_WANT_ECC_SECP_R1_224
790 #endif
791 
792 #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)
793 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1
794 #define PSA_WANT_ECC_SECP_R1_256
795 #endif
796 
797 #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)
798 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1
799 #define PSA_WANT_ECC_SECP_R1_384
800 #endif
801 
802 #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)
803 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1
804 #define PSA_WANT_ECC_SECP_R1_521
805 #endif
806 
807 #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)
808 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1
809 #define PSA_WANT_ECC_SECP_K1_192
810 #endif
811 
812 /* SECP224K1 is buggy via the PSA API (https://github.com/Mbed-TLS/mbedtls/issues/3541) */
813 #if 0 && defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)
814 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1
815 #define PSA_WANT_ECC_SECP_K1_224
816 #endif
817 
818 #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)
819 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1
820 #define PSA_WANT_ECC_SECP_K1_256
821 #endif
822 
823 #endif /* MBEDTLS_PSA_CRYPTO_CONFIG */
824 
825 /* These features are always enabled. */
826 #define PSA_WANT_KEY_TYPE_DERIVE 1
827 #define PSA_WANT_KEY_TYPE_RAW_DATA 1
828 
829 #ifdef __cplusplus
830 }
831 #endif
832 
833 #endif /* MBEDTLS_CONFIG_PSA_H */
PSA crypto configuration options (set of defines)