1 /**
2  * \file mbedtls/config_adjust_legacy_from_psa.h
3  * \brief Adjust PSA configuration: activate legacy implementations
4  *
5  * This is an internal header. Do not include it directly.
6  *
7  * When MBEDTLS_PSA_CRYPTO_CONFIG is enabled, activate legacy implementations
8  * of cryptographic mechanisms as needed to fulfill the needs of the PSA
9  * configuration. Generally speaking, we activate a legacy mechanism if
10  * it's needed for a requested PSA mechanism and there is no PSA driver
11  * for it.
12  */
13 /*
14  *  Copyright The Mbed TLS Contributors
15  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
16  */
17 
18 #ifndef MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H
19 #define MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H
20 
21 #if !defined(MBEDTLS_CONFIG_FILES_READ)
22 #error "Do not include mbedtls/config_adjust_*.h manually! This can lead to problems, " \
23     "up to and including runtime errors such as buffer overflows. " \
24     "If you're trying to fix a complaint from check_config.h, just remove " \
25     "it from your configuration file: since Mbed TLS 3.0, it is included " \
26     "automatically at the right point."
27 #endif /* */
28 
29 /* Define appropriate ACCEL macros for the p256-m driver.
30  * In the future, those should be generated from the drivers JSON description.
31  */
32 #if defined(MBEDTLS_PSA_P256M_DRIVER_ENABLED)
33 #define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256
34 #define MBEDTLS_PSA_ACCEL_ALG_ECDSA
35 #define MBEDTLS_PSA_ACCEL_ALG_ECDH
36 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY
37 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC
38 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT
39 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT
40 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE
41 #endif
42 
43 /*
44  * ECC: support for a feature is controlled by a triplet or a pair:
45  * (curve, key_type public/basic, alg) or (curve, key_type_<action>).
46  *
47  * A triplet/pair is accelerated if all of is components are accelerated;
48  * otherwise each component needs to be built in.
49  *
50  * We proceed in two passes:
51  * 1. Check if acceleration is complete for curves, key types, algs.
52  * 2. Then enable built-ins for each thing that's either not accelerated of
53  * doesn't have complete acceleration of the other triplet/pair components.
54  *
55  * Note: this needs psa/crypto_adjust_keypair_types.h to have been included
56  * already, so that we know the full set of key types that are requested.
57  */
58 
59 /* ECC: curves: is acceleration complete? */
60 #if (defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256) && \
61     !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256)) || \
62     (defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384) && \
63     !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384)) || \
64     (defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512) && \
65     !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512)) || \
66     (defined(PSA_WANT_ECC_SECP_R1_192) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192)) || \
67     (defined(PSA_WANT_ECC_SECP_R1_224) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224)) || \
68     (defined(PSA_WANT_ECC_SECP_R1_256) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256)) || \
69     (defined(PSA_WANT_ECC_SECP_R1_384) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384)) || \
70     (defined(PSA_WANT_ECC_SECP_R1_521) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521)) || \
71     (defined(PSA_WANT_ECC_SECP_K1_192) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192)) || \
72     (defined(PSA_WANT_ECC_SECP_K1_256) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256))
73 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
74 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES
75 #endif
76 
77 #if (defined(PSA_WANT_ECC_MONTGOMERY_255) && !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255)) || \
78     (defined(PSA_WANT_ECC_MONTGOMERY_448) && !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448))
79 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
80 #endif
81 
82 /* ECC: algs: is acceleration complete? */
83 #if (defined(PSA_WANT_ALG_ECDH) && !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH)) || \
84     (defined(PSA_WANT_ALG_ECDSA) && !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA)) || \
85     (defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \
86     !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA)) || \
87     (defined(PSA_WANT_ALG_JPAKE) && !defined(MBEDTLS_PSA_ACCEL_ALG_JPAKE))
88 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS
89 #endif
90 
91 /* ECC: key types: is acceleration complete? */
92 #if (defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \
93     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)) || \
94     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) && \
95     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC))
96 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC
97 #endif
98 
99 /* Special case: we don't support cooked key derivation in drivers yet */
100 #if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE)
101 #undef MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE
102 #endif
103 
104 /* Note: the condition about key derivation is always true as DERIVE can't be
105  * accelerated yet */
106 #if (defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \
107     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)) || \
108     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) && \
109     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC)) || \
110     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT) && \
111     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT)) || \
112     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT) && \
113     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT)) || \
114     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE) && \
115     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE)) || \
116     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE) && \
117     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE))
118 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES
119 #endif
120 
121 /* ECC: curves: enable built-ins as needed.
122  *
123  * We need the curve built-in:
124  * - if it's not accelerated, or
125  * - if there's a key type with missing acceleration, or
126  * - if there's a alg with missing acceleration.
127  */
128 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256)
129 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256) || \
130     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
131     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
132 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1
133 #define MBEDTLS_ECP_DP_BP256R1_ENABLED
134 #endif /* missing accel */
135 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_256 */
136 
137 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384)
138 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384) || \
139     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
140     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
141 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1
142 #define MBEDTLS_ECP_DP_BP384R1_ENABLED
143 #endif /* missing accel */
144 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_384 */
145 
146 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512)
147 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512) || \
148     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
149     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
150 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1
151 #define MBEDTLS_ECP_DP_BP512R1_ENABLED
152 #endif /* missing accel */
153 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_512 */
154 
155 #if defined(PSA_WANT_ECC_MONTGOMERY_255)
156 #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255) || \
157     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
158     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
159 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1
160 #define MBEDTLS_ECP_DP_CURVE25519_ENABLED
161 #endif /* missing accel */
162 #endif /* PSA_WANT_ECC_MONTGOMERY_255 */
163 
164 #if defined(PSA_WANT_ECC_MONTGOMERY_448)
165 #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448) || \
166     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
167     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
168 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1
169 #define MBEDTLS_ECP_DP_CURVE448_ENABLED
170 #endif /* missing accel */
171 #endif /* PSA_WANT_ECC_MONTGOMERY_448 */
172 
173 #if defined(PSA_WANT_ECC_SECP_R1_192)
174 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192) || \
175     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
176     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
177 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1
178 #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
179 #endif /* missing accel */
180 #endif /* PSA_WANT_ECC_SECP_R1_192 */
181 
182 #if defined(PSA_WANT_ECC_SECP_R1_224)
183 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224) || \
184     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
185     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
186 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1
187 #define MBEDTLS_ECP_DP_SECP224R1_ENABLED
188 #endif /* missing accel */
189 #endif /* PSA_WANT_ECC_SECP_R1_224 */
190 
191 #if defined(PSA_WANT_ECC_SECP_R1_256)
192 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256) || \
193     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
194     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
195 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1
196 #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
197 #endif /* missing accel */
198 #endif /* PSA_WANT_ECC_SECP_R1_256 */
199 
200 #if defined(PSA_WANT_ECC_SECP_R1_384)
201 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384) || \
202     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
203     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
204 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1
205 #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
206 #endif /* missing accel */
207 #endif /* PSA_WANT_ECC_SECP_R1_384 */
208 
209 #if defined(PSA_WANT_ECC_SECP_R1_521)
210 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521) || \
211     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
212     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
213 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1
214 #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
215 #endif /* missing accel */
216 #endif /* PSA_WANT_ECC_SECP_R1_521 */
217 
218 #if defined(PSA_WANT_ECC_SECP_K1_192)
219 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192) || \
220     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
221     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
222 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1
223 #define MBEDTLS_ECP_DP_SECP192K1_ENABLED
224 #endif /* missing accel */
225 #endif /* PSA_WANT_ECC_SECP_K1_192 */
226 
227 #if defined(PSA_WANT_ECC_SECP_K1_256)
228 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256) || \
229     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
230     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
231 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1
232 #define MBEDTLS_ECP_DP_SECP256K1_ENABLED
233 #endif /* missing accel */
234 #endif /* PSA_WANT_ECC_SECP_K1_256 */
235 
236 /* ECC: algs: enable built-ins as needed.
237  *
238  * We need the alg built-in:
239  * - if it's not accelerated, or
240  * - if there's a relevant curve (see below) with missing acceleration, or
241  * - if there's a key type among (public, basic) with missing acceleration.
242  *
243  * Relevant curves are:
244  * - all curves for ECDH
245  * - Weierstrass curves for (deterministic) ECDSA
246  * - secp256r1 for EC J-PAKE
247  */
248 #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)
249 #if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA) || \
250     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES) || \
251     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
252 #define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
253 #define MBEDTLS_ECDSA_DETERMINISTIC
254 #define MBEDTLS_HMAC_DRBG_C
255 #define MBEDTLS_MD_C
256 #define MBEDTLS_ECDSA_C
257 #define MBEDTLS_ECP_C
258 #define MBEDTLS_BIGNUM_C
259 #define MBEDTLS_ASN1_PARSE_C
260 #define MBEDTLS_ASN1_WRITE_C
261 #endif /* missing accel */
262 #endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */
263 
264 #if defined(PSA_WANT_ALG_ECDH)
265 #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH) || \
266     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES) || \
267     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
268 #define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
269 #define MBEDTLS_ECDH_C
270 #define MBEDTLS_ECP_C
271 #define MBEDTLS_BIGNUM_C
272 #endif /* missing accel */
273 #endif /* PSA_WANT_ALG_ECDH */
274 
275 #if defined(PSA_WANT_ALG_ECDSA)
276 #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA) || \
277     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES) || \
278     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
279 #define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
280 #define MBEDTLS_ECDSA_C
281 #define MBEDTLS_ECP_C
282 #define MBEDTLS_BIGNUM_C
283 #define MBEDTLS_ASN1_PARSE_C
284 #define MBEDTLS_ASN1_WRITE_C
285 #endif /* missing accel */
286 #endif /* PSA_WANT_ALG_ECDSA */
287 
288 #if defined(PSA_WANT_ALG_JPAKE)
289 #if !defined(MBEDTLS_PSA_ACCEL_ALG_JPAKE) || \
290     !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256) || \
291     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
292 #define MBEDTLS_PSA_BUILTIN_PAKE 1
293 #define MBEDTLS_PSA_BUILTIN_ALG_JPAKE 1
294 #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
295 #define MBEDTLS_BIGNUM_C
296 #define MBEDTLS_ECP_C
297 #define MBEDTLS_ECJPAKE_C
298 #endif /* missing accel */
299 #endif /* PSA_WANT_ALG_JPAKE */
300 
301 /* ECC: key types: enable built-ins as needed.
302  *
303  * We need the key type built-in:
304  * - if it's not accelerated, or
305  * - if there's a curve with missing acceleration, or
306  * - only for public/basic: if there's an alg with missing acceleration.
307  */
308 #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
309 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY) || \
310     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES) || \
311     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
312 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
313 #endif /* missing accel */
314 #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
315 
316 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC)
317 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
318     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES) || \
319     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
320 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_BASIC 1
321 #endif /* missing accel */
322 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC */
323 
324 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT)
325 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT) || \
326     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
327 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_IMPORT 1
328 #endif /* missing accel */
329 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT */
330 
331 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT)
332 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT) || \
333     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
334 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_EXPORT 1
335 #endif /* missing accel */
336 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT */
337 
338 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE)
339 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE) || \
340     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
341 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_GENERATE 1
342 #endif /* missing accel */
343 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE */
344 
345 /* Note: the condition is always true as DERIVE can't be accelerated yet */
346 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE)
347 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE) || \
348     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
349 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_DERIVE 1
350 #endif /* missing accel */
351 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE */
352 
353 #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || \
354     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
355     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_IMPORT) || \
356     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_DERIVE)
357 #define MBEDTLS_ECP_LIGHT
358 #define MBEDTLS_BIGNUM_C
359 #endif
360 
361 #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_EXPORT) || \
362     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_GENERATE)
363 #define MBEDTLS_ECP_C
364 #define MBEDTLS_BIGNUM_C
365 #endif
366 
367 /* End of ECC section */
368 
369 /*
370  * DH key types follow the same pattern used above for EC keys. They are defined
371  * by a triplet (group, key_type, alg). A triplet is accelerated if all its
372  * component are accelerated, otherwise each component needs to be builtin.
373  */
374 
375 /* DH: groups: is acceleration complete? */
376 #if (defined(PSA_WANT_DH_RFC7919_2048) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_2048)) || \
377     (defined(PSA_WANT_DH_RFC7919_3072) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_3072)) || \
378     (defined(PSA_WANT_DH_RFC7919_4096) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_4096)) || \
379     (defined(PSA_WANT_DH_RFC7919_6144) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_6144)) || \
380     (defined(PSA_WANT_DH_RFC7919_8192) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_8192))
381 #define MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS
382 #endif
383 
384 /* DH: algs: is acceleration complete? */
385 #if defined(PSA_WANT_ALG_FFDH) && !defined(MBEDTLS_PSA_ACCEL_ALG_FFDH)
386 #define MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS
387 #endif
388 
389 /* DH: key types: is acceleration complete? */
390 #if (defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY) && \
391     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY)) || \
392     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC) && \
393     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC)) || \
394     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT) && \
395     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT)) || \
396     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT) && \
397     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT)) || \
398     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE) && \
399     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE))
400 #define MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES
401 #endif
402 
403 #if defined(PSA_WANT_DH_RFC7919_2048)
404 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_2048) || \
405     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
406     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
407 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048 1
408 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048 */
409 #endif /* PSA_WANT_DH_RFC7919_2048 */
410 
411 #if defined(PSA_WANT_DH_RFC7919_3072)
412 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_3072) || \
413     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
414     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
415 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072 1
416 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072 */
417 #endif /* PSA_WANT_DH_RFC7919_3072 */
418 
419 #if defined(PSA_WANT_DH_RFC7919_4096)
420 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_4096) || \
421     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
422     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
423 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096 1
424 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096 */
425 #endif /* PSA_WANT_DH_RFC7919_4096 */
426 
427 #if defined(PSA_WANT_DH_RFC7919_6144)
428 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_6144) || \
429     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
430     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
431 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144 1
432 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144 */
433 #endif /* PSA_WANT_DH_RFC7919_6144 */
434 
435 #if defined(PSA_WANT_DH_RFC7919_8192)
436 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_8192) || \
437     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
438     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
439 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192 1
440 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192 */
441 #endif /* PSA_WANT_DH_RFC7919_8192 */
442 
443 #if defined(PSA_WANT_ALG_FFDH)
444 #if !defined(MBEDTLS_PSA_ACCEL_ALG_FFDH) || \
445     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
446     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
447 #define MBEDTLS_PSA_BUILTIN_ALG_FFDH 1
448 #define MBEDTLS_BIGNUM_C
449 #endif /* !MBEDTLS_PSA_ACCEL_ALG_FFDH */
450 #endif /* PSA_WANT_ALG_FFDH */
451 
452 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT)
453 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT) || \
454     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
455     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
456 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_IMPORT 1
457 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT */
458 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT */
459 
460 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT)
461 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT) || \
462     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
463     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
464 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT 1
465 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT */
466 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT */
467 
468 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE)
469 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE)
470 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE 1
471 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE */
472 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE */
473 
474 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC)
475 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC) || \
476     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
477     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
478 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_BASIC 1
479 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC */
480 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC */
481 
482 #if defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY)
483 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY) || \
484     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
485     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
486 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY 1
487 #define MBEDTLS_BIGNUM_C
488 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY */
489 #endif /* PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY */
490 
491 /* End of DH section */
492 
493 #if defined(PSA_WANT_ALG_HKDF)
494 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF)
495 /*
496  * The PSA implementation has its own implementation of HKDF, separate from
497  * hkdf.c. No need to enable MBEDTLS_HKDF_C here.
498  */
499 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
500 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */
501 #endif /* PSA_WANT_ALG_HKDF */
502 
503 #if defined(PSA_WANT_ALG_HKDF_EXTRACT)
504 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF_EXTRACT)
505 /*
506  * The PSA implementation has its own implementation of HKDF, separate from
507  * hkdf.c. No need to enable MBEDTLS_HKDF_C here.
508  */
509 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT 1
510 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF_EXTRACT */
511 #endif /* PSA_WANT_ALG_HKDF_EXTRACT */
512 
513 #if defined(PSA_WANT_ALG_HKDF_EXPAND)
514 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF_EXPAND)
515 /*
516  * The PSA implementation has its own implementation of HKDF, separate from
517  * hkdf.c. No need to enable MBEDTLS_HKDF_C here.
518  */
519 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND 1
520 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF_EXPAND */
521 #endif /* PSA_WANT_ALG_HKDF_EXPAND */
522 
523 #if defined(PSA_WANT_ALG_HMAC)
524 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC)
525 #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
526 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */
527 #endif /* PSA_WANT_ALG_HMAC */
528 
529 #if defined(PSA_WANT_ALG_MD5) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD5)
530 #define MBEDTLS_PSA_BUILTIN_ALG_MD5 1
531 #define MBEDTLS_MD5_C
532 #endif
533 
534 #if defined(PSA_WANT_ALG_RIPEMD160) && !defined(MBEDTLS_PSA_ACCEL_ALG_RIPEMD160)
535 #define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1
536 #define MBEDTLS_RIPEMD160_C
537 #endif
538 
539 #if defined(PSA_WANT_ALG_RSA_OAEP)
540 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP)
541 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
542 #define MBEDTLS_RSA_C
543 #define MBEDTLS_BIGNUM_C
544 #define MBEDTLS_OID_C
545 #define MBEDTLS_PKCS1_V21
546 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */
547 #endif /* PSA_WANT_ALG_RSA_OAEP */
548 
549 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT)
550 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT)
551 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
552 #define MBEDTLS_RSA_C
553 #define MBEDTLS_BIGNUM_C
554 #define MBEDTLS_OID_C
555 #define MBEDTLS_PKCS1_V15
556 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */
557 #endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */
558 
559 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
560 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN)
561 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
562 #define MBEDTLS_RSA_C
563 #define MBEDTLS_BIGNUM_C
564 #define MBEDTLS_OID_C
565 #define MBEDTLS_PKCS1_V15
566 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */
567 #endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */
568 
569 #if defined(PSA_WANT_ALG_RSA_PSS)
570 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
571 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
572 #define MBEDTLS_RSA_C
573 #define MBEDTLS_BIGNUM_C
574 #define MBEDTLS_OID_C
575 #define MBEDTLS_PKCS1_V21
576 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */
577 #endif /* PSA_WANT_ALG_RSA_PSS */
578 
579 #if defined(PSA_WANT_ALG_SHA_1) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_1)
580 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1
581 #define MBEDTLS_SHA1_C
582 #endif
583 
584 #if defined(PSA_WANT_ALG_SHA_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_224)
585 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1
586 #define MBEDTLS_SHA224_C
587 #endif
588 
589 #if defined(PSA_WANT_ALG_SHA_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_256)
590 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1
591 #define MBEDTLS_SHA256_C
592 #endif
593 
594 #if defined(PSA_WANT_ALG_SHA_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_384)
595 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1
596 #define MBEDTLS_SHA384_C
597 #endif
598 
599 #if defined(PSA_WANT_ALG_SHA_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_512)
600 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1
601 #define MBEDTLS_SHA512_C
602 #endif
603 
604 #if defined(PSA_WANT_ALG_SHA3_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_224)
605 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_224 1
606 #define MBEDTLS_SHA3_C
607 #endif
608 
609 #if defined(PSA_WANT_ALG_SHA3_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_256)
610 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_256 1
611 #define MBEDTLS_SHA3_C
612 #endif
613 
614 #if defined(PSA_WANT_ALG_SHA3_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_384)
615 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_384 1
616 #define MBEDTLS_SHA3_C
617 #endif
618 
619 #if defined(PSA_WANT_ALG_SHA3_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_512)
620 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_512 1
621 #define MBEDTLS_SHA3_C
622 #endif
623 
624 #if defined(PSA_WANT_ALG_PBKDF2_HMAC)
625 #if !defined(MBEDTLS_PSA_ACCEL_ALG_PBKDF2_HMAC)
626 #define MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_HMAC 1
627 #define PSA_HAVE_SOFT_PBKDF2_HMAC 1
628 #endif /* !MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_HMAC */
629 #endif /* PSA_WANT_ALG_PBKDF2_HMAC */
630 
631 #if defined(PSA_WANT_ALG_TLS12_PRF)
632 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF)
633 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
634 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF */
635 #endif /* PSA_WANT_ALG_TLS12_PRF */
636 
637 #if defined(PSA_WANT_ALG_TLS12_PSK_TO_MS)
638 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS)
639 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
640 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS */
641 #endif /* PSA_WANT_ALG_TLS12_PSK_TO_MS */
642 
643 #if defined(PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS)
644 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_ECJPAKE_TO_PMS)
645 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS 1
646 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_ECJPAKE_TO_PMS */
647 #endif /* PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS */
648 
649 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT)
650 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_IMPORT)
651 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_IMPORT 1
652 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_IMPORT */
653 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT */
654 
655 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT)
656 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_EXPORT)
657 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_EXPORT 1
658 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_EXPORT */
659 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT */
660 
661 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE)
662 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_GENERATE)
663 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_GENERATE 1
664 #define MBEDTLS_GENPRIME
665 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_GENERATE */
666 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE */
667 
668 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
669 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_BASIC)
670 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_BASIC 1
671 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_BASIC */
672 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC */
673 
674 #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
675 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
676 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
677 #define MBEDTLS_RSA_C
678 #define MBEDTLS_BIGNUM_C
679 #define MBEDTLS_OID_C
680 #define MBEDTLS_ASN1_PARSE_C
681 #define MBEDTLS_ASN1_WRITE_C
682 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */
683 #endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */
684 
685 /* If any of the block modes are requested that don't have an
686  * associated HW assist, define PSA_HAVE_SOFT_BLOCK_MODE for checking
687  * in the block cipher key types. */
688 #if (defined(PSA_WANT_ALG_CTR) && !defined(MBEDTLS_PSA_ACCEL_ALG_CTR)) || \
689     (defined(PSA_WANT_ALG_CFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_CFB)) || \
690     (defined(PSA_WANT_ALG_OFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_OFB)) || \
691     (defined(PSA_WANT_ALG_ECB_NO_PADDING) && !defined(MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING)) || \
692     (defined(PSA_WANT_ALG_CBC_NO_PADDING) && !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING)) || \
693     (defined(PSA_WANT_ALG_CBC_PKCS7) && !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7)) || \
694     (defined(PSA_WANT_ALG_CMAC) && !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC))
695 #define PSA_HAVE_SOFT_BLOCK_MODE 1
696 #endif
697 
698 #if defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128)
699 #if !defined(MBEDTLS_PSA_ACCEL_ALG_PBKDF2_AES_CMAC_PRF_128)
700 #define MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_AES_CMAC_PRF_128 1
701 #define PSA_HAVE_SOFT_PBKDF2_CMAC 1
702 #endif /* !MBEDTLS_PSA_ACCEL_ALG_PBKDF2_AES_CMAC_PRF_128 */
703 #endif /* PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128 */
704 
705 #if defined(PSA_WANT_KEY_TYPE_AES)
706 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_AES)
707 #define PSA_HAVE_SOFT_KEY_TYPE_AES 1
708 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_AES */
709 #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
710     defined(PSA_HAVE_SOFT_BLOCK_MODE)
711 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1
712 #define MBEDTLS_AES_C
713 #endif /* PSA_HAVE_SOFT_KEY_TYPE_AES || PSA_HAVE_SOFT_BLOCK_MODE */
714 #endif /* PSA_WANT_KEY_TYPE_AES */
715 
716 #if defined(PSA_WANT_KEY_TYPE_ARIA)
717 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA)
718 #define PSA_HAVE_SOFT_KEY_TYPE_ARIA 1
719 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA */
720 #if defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
721     defined(PSA_HAVE_SOFT_BLOCK_MODE)
722 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA 1
723 #define MBEDTLS_ARIA_C
724 #endif /* PSA_HAVE_SOFT_KEY_TYPE_ARIA || PSA_HAVE_SOFT_BLOCK_MODE */
725 #endif /* PSA_WANT_KEY_TYPE_ARIA */
726 
727 #if defined(PSA_WANT_KEY_TYPE_CAMELLIA)
728 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA)
729 #define PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA 1
730 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA */
731 #if defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) || \
732     defined(PSA_HAVE_SOFT_BLOCK_MODE)
733 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1
734 #define MBEDTLS_CAMELLIA_C
735 #endif /* PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA || PSA_HAVE_SOFT_BLOCK_MODE */
736 #endif /* PSA_WANT_KEY_TYPE_CAMELLIA */
737 
738 #if defined(PSA_WANT_KEY_TYPE_DES)
739 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DES)
740 #define PSA_HAVE_SOFT_KEY_TYPE_DES 1
741 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DES */
742 #if defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
743     defined(PSA_HAVE_SOFT_BLOCK_MODE)
744 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1
745 #define MBEDTLS_DES_C
746 #endif /*PSA_HAVE_SOFT_KEY_TYPE_DES || PSA_HAVE_SOFT_BLOCK_MODE */
747 #endif /* PSA_WANT_KEY_TYPE_DES */
748 
749 #if defined(PSA_WANT_ALG_STREAM_CIPHER)
750 #if !defined(MBEDTLS_PSA_ACCEL_ALG_STREAM_CIPHER)
751 #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
752 #endif /* MBEDTLS_PSA_ACCEL_ALG_STREAM_CIPHER */
753 #endif /* PSA_WANT_ALG_STREAM_CIPHER */
754 
755 #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
756 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20) || \
757     defined(MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER)
758 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1
759 #define MBEDTLS_CHACHA20_C
760 #endif /*!MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20 */
761 #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
762 
763 /* If any of the software block ciphers are selected, define
764  * PSA_HAVE_SOFT_BLOCK_CIPHER, which can be used in any of these
765  * situations. */
766 #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
767     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
768     defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
769     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
770 #define PSA_HAVE_SOFT_BLOCK_CIPHER 1
771 #endif
772 
773 #if defined(PSA_WANT_ALG_CMAC)
774 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC) || \
775     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
776 #define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1
777 #define MBEDTLS_CMAC_C
778 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CMAC */
779 #endif /* PSA_WANT_ALG_CMAC */
780 
781 #if defined(PSA_HAVE_SOFT_PBKDF2_HMAC) || \
782     defined(PSA_HAVE_SOFT_PBKDF2_CMAC)
783 #define PSA_HAVE_SOFT_PBKDF2 1
784 #endif /* PSA_HAVE_SOFT_PBKDF2_HMAC || PSA_HAVE_SOFT_PBKDF2_CMAC */
785 
786 #if defined(PSA_WANT_ALG_CTR)
787 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CTR) || \
788     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
789 #define MBEDTLS_PSA_BUILTIN_ALG_CTR 1
790 #define MBEDTLS_CIPHER_MODE_CTR
791 #endif
792 #endif /* PSA_WANT_ALG_CTR */
793 
794 #if defined(PSA_WANT_ALG_CFB)
795 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CFB) || \
796     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
797 #define MBEDTLS_PSA_BUILTIN_ALG_CFB 1
798 #define MBEDTLS_CIPHER_MODE_CFB
799 #endif
800 #endif /* PSA_WANT_ALG_CFB */
801 
802 #if defined(PSA_WANT_ALG_OFB)
803 #if !defined(MBEDTLS_PSA_ACCEL_ALG_OFB) || \
804     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
805 #define MBEDTLS_PSA_BUILTIN_ALG_OFB 1
806 #define MBEDTLS_CIPHER_MODE_OFB
807 #endif
808 #endif /* PSA_WANT_ALG_OFB */
809 
810 #if defined(PSA_WANT_ALG_ECB_NO_PADDING) &&     \
811     !defined(MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING)
812 #define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1
813 #endif
814 
815 #if defined(PSA_WANT_ALG_CBC_NO_PADDING)
816 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING) || \
817     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
818 #define MBEDTLS_CIPHER_MODE_CBC
819 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1
820 #endif
821 #endif /* PSA_WANT_ALG_CBC_NO_PADDING */
822 
823 #if defined(PSA_WANT_ALG_CBC_PKCS7)
824 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7) || \
825     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
826 #define MBEDTLS_CIPHER_MODE_CBC
827 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1
828 #define MBEDTLS_CIPHER_PADDING_PKCS7
829 #endif
830 #endif /* PSA_WANT_ALG_CBC_PKCS7 */
831 
832 #if defined(PSA_WANT_ALG_CCM)
833 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM) || \
834     defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
835     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
836     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
837 #define MBEDTLS_PSA_BUILTIN_ALG_CCM 1
838 #define MBEDTLS_CCM_C
839 #endif
840 #endif /* PSA_WANT_ALG_CCM */
841 
842 #if defined(PSA_WANT_ALG_CCM_STAR_NO_TAG)
843 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM_STAR_NO_TAG) || \
844     defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
845     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
846     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
847 #define MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG 1
848 #define MBEDTLS_CCM_C
849 #endif
850 #endif /* PSA_WANT_ALG_CCM_STAR_NO_TAG */
851 
852 #if defined(PSA_WANT_ALG_GCM)
853 #if !defined(MBEDTLS_PSA_ACCEL_ALG_GCM) || \
854     defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
855     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
856     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
857 #define MBEDTLS_PSA_BUILTIN_ALG_GCM 1
858 #define MBEDTLS_GCM_C
859 #endif
860 #endif /* PSA_WANT_ALG_GCM */
861 
862 #if defined(PSA_WANT_ALG_CHACHA20_POLY1305)
863 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305)
864 #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
865 #define MBEDTLS_CHACHAPOLY_C
866 #define MBEDTLS_CHACHA20_C
867 #define MBEDTLS_POLY1305_C
868 #define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1
869 #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
870 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305 */
871 #endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */
872 
873 #endif /* MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H */
874