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