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