Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h
9904 views
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
875