Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-08-27 09:37:30

0001 /**
0002  * \file mbedtls/config_adjust_legacy_from_psa.h
0003  * \brief Adjust PSA configuration: activate legacy implementations
0004  *
0005  * This is an internal header. Do not include it directly.
0006  *
0007  * When MBEDTLS_PSA_CRYPTO_CONFIG is enabled, activate legacy implementations
0008  * of cryptographic mechanisms as needed to fulfill the needs of the PSA
0009  * configuration. Generally speaking, we activate a legacy mechanism if
0010  * it's needed for a requested PSA mechanism and there is no PSA driver
0011  * for it.
0012  */
0013 /*
0014  *  Copyright The Mbed TLS Contributors
0015  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
0016  */
0017 
0018 #ifndef MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H
0019 #define MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H
0020 
0021 #if !defined(MBEDTLS_CONFIG_FILES_READ)
0022 #error "Do not include mbedtls/config_adjust_*.h manually! This can lead to problems, " \
0023     "up to and including runtime errors such as buffer overflows. " \
0024     "If you're trying to fix a complaint from check_config.h, just remove " \
0025     "it from your configuration file: since Mbed TLS 3.0, it is included " \
0026     "automatically at the right point."
0027 #endif /* */
0028 
0029 /* Define appropriate ACCEL macros for the p256-m driver.
0030  * In the future, those should be generated from the drivers JSON description.
0031  */
0032 #if defined(MBEDTLS_PSA_P256M_DRIVER_ENABLED)
0033 #define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256
0034 #define MBEDTLS_PSA_ACCEL_ALG_ECDSA
0035 #define MBEDTLS_PSA_ACCEL_ALG_ECDH
0036 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY
0037 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC
0038 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT
0039 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT
0040 #define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE
0041 #endif
0042 
0043 /*
0044  * ECC: support for a feature is controlled by a triplet or a pair:
0045  * (curve, key_type public/basic, alg) or (curve, key_type_<action>).
0046  *
0047  * A triplet/pair is accelerated if all of is components are accelerated;
0048  * otherwise each component needs to be built in.
0049  *
0050  * We proceed in two passes:
0051  * 1. Check if acceleration is complete for curves, key types, algs.
0052  * 2. Then enable built-ins for each thing that's either not accelerated of
0053  * doesn't have complete acceleration of the other triplet/pair components.
0054  *
0055  * Note: this needs psa/crypto_adjust_keypair_types.h to have been included
0056  * already, so that we know the full set of key types that are requested.
0057  */
0058 
0059 /* ECC: curves: is acceleration complete? */
0060 #if (defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256) && \
0061     !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256)) || \
0062     (defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384) && \
0063     !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384)) || \
0064     (defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512) && \
0065     !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512)) || \
0066     (defined(PSA_WANT_ECC_SECP_R1_192) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192)) || \
0067     (defined(PSA_WANT_ECC_SECP_R1_224) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224)) || \
0068     (defined(PSA_WANT_ECC_SECP_R1_256) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256)) || \
0069     (defined(PSA_WANT_ECC_SECP_R1_384) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384)) || \
0070     (defined(PSA_WANT_ECC_SECP_R1_521) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521)) || \
0071     (defined(PSA_WANT_ECC_SECP_K1_192) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192)) || \
0072     (defined(PSA_WANT_ECC_SECP_K1_224) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224)) || \
0073     (defined(PSA_WANT_ECC_SECP_K1_256) && !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256))
0074 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
0075 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES
0076 #endif
0077 
0078 #if (defined(PSA_WANT_ECC_MONTGOMERY_255) && !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255)) || \
0079     (defined(PSA_WANT_ECC_MONTGOMERY_448) && !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448))
0080 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES
0081 #endif
0082 
0083 /* ECC: algs: is acceleration complete? */
0084 #if (defined(PSA_WANT_ALG_ECDH) && !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH)) || \
0085     (defined(PSA_WANT_ALG_ECDSA) && !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA)) || \
0086     (defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \
0087     !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA)) || \
0088     (defined(PSA_WANT_ALG_JPAKE) && !defined(MBEDTLS_PSA_ACCEL_ALG_JPAKE))
0089 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS
0090 #endif
0091 
0092 /* ECC: key types: is acceleration complete? */
0093 #if (defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \
0094     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)) || \
0095     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) && \
0096     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC))
0097 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC
0098 #endif
0099 
0100 /* Special case: we don't support cooked key derivation in drivers yet */
0101 #if defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE)
0102 #undef MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE
0103 #endif
0104 
0105 /* Note: the condition about key derivation is always true as DERIVE can't be
0106  * accelerated yet */
0107 #if (defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \
0108     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY)) || \
0109     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) && \
0110     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC)) || \
0111     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT) && \
0112     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT)) || \
0113     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT) && \
0114     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT)) || \
0115     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE) && \
0116     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE)) || \
0117     (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE) && \
0118     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE))
0119 #define MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES
0120 #endif
0121 
0122 /* ECC: curves: enable built-ins as needed.
0123  *
0124  * We need the curve built-in:
0125  * - if it's not accelerated, or
0126  * - if there's a key type with missing acceleration, or
0127  * - if there's a alg with missing acceleration.
0128  */
0129 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256)
0130 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_256) || \
0131     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0132     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0133 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_256 1
0134 #define MBEDTLS_ECP_DP_BP256R1_ENABLED
0135 #endif /* missing accel */
0136 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_256 */
0137 
0138 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384)
0139 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_384) || \
0140     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0141     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0142 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_384 1
0143 #define MBEDTLS_ECP_DP_BP384R1_ENABLED
0144 #endif /* missing accel */
0145 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_384 */
0146 
0147 #if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512)
0148 #if !defined(MBEDTLS_PSA_ACCEL_ECC_BRAINPOOL_P_R1_512) || \
0149     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0150     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0151 #define MBEDTLS_PSA_BUILTIN_ECC_BRAINPOOL_P_R1_512 1
0152 #define MBEDTLS_ECP_DP_BP512R1_ENABLED
0153 #endif /* missing accel */
0154 #endif /* PSA_WANT_ECC_BRAINPOOL_P_R1_512 */
0155 
0156 #if defined(PSA_WANT_ECC_MONTGOMERY_255)
0157 #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255) || \
0158     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0159     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0160 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 1
0161 #define MBEDTLS_ECP_DP_CURVE25519_ENABLED
0162 #endif /* missing accel */
0163 #endif /* PSA_WANT_ECC_MONTGOMERY_255 */
0164 
0165 #if defined(PSA_WANT_ECC_MONTGOMERY_448)
0166 #if !defined(MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448) || \
0167     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0168     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0169 #define MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_448 1
0170 #define MBEDTLS_ECP_DP_CURVE448_ENABLED
0171 #endif /* missing accel */
0172 #endif /* PSA_WANT_ECC_MONTGOMERY_448 */
0173 
0174 #if defined(PSA_WANT_ECC_SECP_R1_192)
0175 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192) || \
0176     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0177     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0178 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1
0179 #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
0180 #endif /* missing accel */
0181 #endif /* PSA_WANT_ECC_SECP_R1_192 */
0182 
0183 #if defined(PSA_WANT_ECC_SECP_R1_224)
0184 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224) || \
0185     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0186     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0187 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_224 1
0188 #define MBEDTLS_ECP_DP_SECP224R1_ENABLED
0189 #endif /* missing accel */
0190 #endif /* PSA_WANT_ECC_SECP_R1_224 */
0191 
0192 #if defined(PSA_WANT_ECC_SECP_R1_256)
0193 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256) || \
0194     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0195     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0196 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1
0197 #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
0198 #endif /* missing accel */
0199 #endif /* PSA_WANT_ECC_SECP_R1_256 */
0200 
0201 #if defined(PSA_WANT_ECC_SECP_R1_384)
0202 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384) || \
0203     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0204     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0205 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1
0206 #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
0207 #endif /* missing accel */
0208 #endif /* PSA_WANT_ECC_SECP_R1_384 */
0209 
0210 #if defined(PSA_WANT_ECC_SECP_R1_521)
0211 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521) || \
0212     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0213     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0214 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1
0215 #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
0216 #endif /* missing accel */
0217 #endif /* PSA_WANT_ECC_SECP_R1_521 */
0218 
0219 #if defined(PSA_WANT_ECC_SECP_K1_192)
0220 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_192) || \
0221     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0222     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0223 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_192 1
0224 #define MBEDTLS_ECP_DP_SECP192K1_ENABLED
0225 #endif /* missing accel */
0226 #endif /* PSA_WANT_ECC_SECP_K1_192 */
0227 
0228 #if defined(PSA_WANT_ECC_SECP_K1_224)
0229 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_224) || \
0230     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0231     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0232 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_224 1
0233 #define MBEDTLS_ECP_DP_SECP224K1_ENABLED
0234 /* https://github.com/Mbed-TLS/mbedtls/issues/3541 */
0235 #error "SECP224K1 is buggy via the PSA API in Mbed TLS."
0236 #endif /* missing accel */
0237 #endif /* PSA_WANT_ECC_SECP_K1_224 */
0238 
0239 #if defined(PSA_WANT_ECC_SECP_K1_256)
0240 #if !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_K1_256) || \
0241     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES) || \
0242     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0243 #define MBEDTLS_PSA_BUILTIN_ECC_SECP_K1_256 1
0244 #define MBEDTLS_ECP_DP_SECP256K1_ENABLED
0245 #endif /* missing accel */
0246 #endif /* PSA_WANT_ECC_SECP_K1_256 */
0247 
0248 /* ECC: algs: enable built-ins as needed.
0249  *
0250  * We need the alg built-in:
0251  * - if it's not accelerated, or
0252  * - if there's a relevant curve (see below) with missing acceleration, or
0253  * - if there's a key type among (public, basic) with missing acceleration.
0254  *
0255  * Relevant curves are:
0256  * - all curves for ECDH
0257  * - Weierstrass curves for (deterministic) ECDSA
0258  * - secp256r1 for EC J-PAKE
0259  */
0260 #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA)
0261 #if !defined(MBEDTLS_PSA_ACCEL_ALG_DETERMINISTIC_ECDSA) || \
0262     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES) || \
0263     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
0264 #define MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA 1
0265 #define MBEDTLS_ECDSA_DETERMINISTIC
0266 #define MBEDTLS_HMAC_DRBG_C
0267 #define MBEDTLS_MD_C
0268 #define MBEDTLS_ECDSA_C
0269 #define MBEDTLS_ECP_C
0270 #define MBEDTLS_BIGNUM_C
0271 #define MBEDTLS_ASN1_PARSE_C
0272 #define MBEDTLS_ASN1_WRITE_C
0273 #endif /* missing accel */
0274 #endif /* PSA_WANT_ALG_DETERMINISTIC_ECDSA */
0275 
0276 #if defined(PSA_WANT_ALG_ECDH)
0277 #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDH) || \
0278     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES) || \
0279     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
0280 #define MBEDTLS_PSA_BUILTIN_ALG_ECDH 1
0281 #define MBEDTLS_ECDH_C
0282 #define MBEDTLS_ECP_C
0283 #define MBEDTLS_BIGNUM_C
0284 #endif /* missing accel */
0285 #endif /* PSA_WANT_ALG_ECDH */
0286 
0287 #if defined(PSA_WANT_ALG_ECDSA)
0288 #if !defined(MBEDTLS_PSA_ACCEL_ALG_ECDSA) || \
0289     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_WEIERSTRASS_CURVES) || \
0290     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
0291 #define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1
0292 #define MBEDTLS_ECDSA_C
0293 #define MBEDTLS_ECP_C
0294 #define MBEDTLS_BIGNUM_C
0295 #define MBEDTLS_ASN1_PARSE_C
0296 #define MBEDTLS_ASN1_WRITE_C
0297 #endif /* missing accel */
0298 #endif /* PSA_WANT_ALG_ECDSA */
0299 
0300 #if defined(PSA_WANT_ALG_JPAKE)
0301 #if !defined(MBEDTLS_PSA_ACCEL_ALG_JPAKE) || \
0302     !defined(MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256) || \
0303     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_KEY_TYPES_BASIC)
0304 #define MBEDTLS_PSA_BUILTIN_PAKE 1
0305 #define MBEDTLS_PSA_BUILTIN_ALG_JPAKE 1
0306 #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
0307 #define MBEDTLS_BIGNUM_C
0308 #define MBEDTLS_ECP_C
0309 #define MBEDTLS_ECJPAKE_C
0310 #endif /* missing accel */
0311 #endif /* PSA_WANT_ALG_JPAKE */
0312 
0313 /* ECC: key types: enable built-ins as needed.
0314  *
0315  * We need the key type built-in:
0316  * - if it's not accelerated, or
0317  * - if there's a curve with missing acceleration, or
0318  * - only for public/basic: if there's an alg with missing acceleration.
0319  */
0320 #if defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
0321 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY) || \
0322     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES) || \
0323     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0324 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1
0325 #endif /* missing accel */
0326 #endif /* PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY */
0327 
0328 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC)
0329 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
0330     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES) || \
0331     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_ALGS)
0332 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_BASIC 1
0333 #endif /* missing accel */
0334 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC */
0335 
0336 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT)
0337 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_IMPORT) || \
0338     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
0339 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_IMPORT 1
0340 #endif /* missing accel */
0341 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT */
0342 
0343 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT)
0344 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_EXPORT) || \
0345     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
0346 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_EXPORT 1
0347 #endif /* missing accel */
0348 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT */
0349 
0350 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE)
0351 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_GENERATE) || \
0352     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
0353 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_GENERATE 1
0354 #endif /* missing accel */
0355 #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE */
0356 
0357 /* Note: the condition is always true as DERIVE can't be accelerated yet */
0358 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE)
0359 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE) || \
0360     defined(MBEDTLS_PSA_ECC_ACCEL_INCOMPLETE_CURVES)
0361 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_DERIVE 1
0362 #endif /* missing accel */
0363 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR_DERIVE */
0364 
0365 #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY) || \
0366     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \
0367     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_IMPORT) || \
0368     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_DERIVE)
0369 #define MBEDTLS_ECP_LIGHT
0370 #define MBEDTLS_BIGNUM_C
0371 #endif
0372 
0373 #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_EXPORT) || \
0374     defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR_GENERATE)
0375 #define MBEDTLS_ECP_C
0376 #define MBEDTLS_BIGNUM_C
0377 #endif
0378 
0379 /* End of ECC section */
0380 
0381 /*
0382  * DH key types follow the same pattern used above for EC keys. They are defined
0383  * by a triplet (group, key_type, alg). A triplet is accelerated if all its
0384  * component are accelerated, otherwise each component needs to be builtin.
0385  */
0386 
0387 /* DH: groups: is acceleration complete? */
0388 #if (defined(PSA_WANT_DH_RFC7919_2048) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_2048)) || \
0389     (defined(PSA_WANT_DH_RFC7919_3072) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_3072)) || \
0390     (defined(PSA_WANT_DH_RFC7919_4096) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_4096)) || \
0391     (defined(PSA_WANT_DH_RFC7919_6144) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_6144)) || \
0392     (defined(PSA_WANT_DH_RFC7919_8192) && !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_8192))
0393 #define MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS
0394 #endif
0395 
0396 /* DH: algs: is acceleration complete? */
0397 #if defined(PSA_WANT_ALG_FFDH) && !defined(MBEDTLS_PSA_ACCEL_ALG_FFDH)
0398 #define MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS
0399 #endif
0400 
0401 /* DH: key types: is acceleration complete? */
0402 #if (defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY) && \
0403     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY)) || \
0404     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC) && \
0405     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC)) || \
0406     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT) && \
0407     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT)) || \
0408     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT) && \
0409     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT)) || \
0410     (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE) && \
0411     !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE))
0412 #define MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES
0413 #endif
0414 
0415 #if defined(PSA_WANT_DH_RFC7919_2048)
0416 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_2048) || \
0417     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
0418     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
0419 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048 1
0420 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_2048 */
0421 #endif /* PSA_WANT_DH_RFC7919_2048 */
0422 
0423 #if defined(PSA_WANT_DH_RFC7919_3072)
0424 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_3072) || \
0425     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
0426     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
0427 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072 1
0428 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_3072 */
0429 #endif /* PSA_WANT_DH_RFC7919_3072 */
0430 
0431 #if defined(PSA_WANT_DH_RFC7919_4096)
0432 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_4096) || \
0433     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
0434     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
0435 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096 1
0436 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_4096 */
0437 #endif /* PSA_WANT_DH_RFC7919_4096 */
0438 
0439 #if defined(PSA_WANT_DH_RFC7919_6144)
0440 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_6144) || \
0441     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
0442     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
0443 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144 1
0444 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_6144 */
0445 #endif /* PSA_WANT_DH_RFC7919_6144 */
0446 
0447 #if defined(PSA_WANT_DH_RFC7919_8192)
0448 #if !defined(MBEDTLS_PSA_ACCEL_DH_RFC7919_8192) || \
0449     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS) || \
0450     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
0451 #define MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192 1
0452 #endif /* !MBEDTLS_PSA_BUILTIN_DH_RFC7919_8192 */
0453 #endif /* PSA_WANT_DH_RFC7919_8192 */
0454 
0455 #if defined(PSA_WANT_ALG_FFDH)
0456 #if !defined(MBEDTLS_PSA_ACCEL_ALG_FFDH) || \
0457     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
0458     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_KEY_TYPES)
0459 #define MBEDTLS_PSA_BUILTIN_ALG_FFDH 1
0460 #define MBEDTLS_BIGNUM_C
0461 #endif /* !MBEDTLS_PSA_ACCEL_ALG_FFDH */
0462 #endif /* PSA_WANT_ALG_FFDH */
0463 
0464 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT)
0465 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT) || \
0466     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
0467     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
0468 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_IMPORT 1
0469 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_IMPORT */
0470 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT */
0471 
0472 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT)
0473 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT) || \
0474     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
0475     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
0476 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_EXPORT 1
0477 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_EXPORT */
0478 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT */
0479 
0480 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE)
0481 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE)
0482 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_GENERATE 1
0483 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_GENERATE */
0484 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE */
0485 
0486 #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC)
0487 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC) || \
0488     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
0489     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
0490 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR_BASIC 1
0491 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_KEY_PAIR_BASIC */
0492 #endif /* PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC */
0493 
0494 #if defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY)
0495 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY) || \
0496     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_GROUPS) || \
0497     defined(MBEDTLS_PSA_DH_ACCEL_INCOMPLETE_ALGS)
0498 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY 1
0499 #define MBEDTLS_BIGNUM_C
0500 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DH_PUBLIC_KEY */
0501 #endif /* PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY */
0502 
0503 /* End of DH section */
0504 
0505 #if defined(PSA_WANT_ALG_HKDF)
0506 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF)
0507 /*
0508  * The PSA implementation has its own implementation of HKDF, separate from
0509  * hkdf.c. No need to enable MBEDTLS_HKDF_C here.
0510  */
0511 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF 1
0512 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF */
0513 #endif /* PSA_WANT_ALG_HKDF */
0514 
0515 #if defined(PSA_WANT_ALG_HKDF_EXTRACT)
0516 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF_EXTRACT)
0517 /*
0518  * The PSA implementation has its own implementation of HKDF, separate from
0519  * hkdf.c. No need to enable MBEDTLS_HKDF_C here.
0520  */
0521 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT 1
0522 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF_EXTRACT */
0523 #endif /* PSA_WANT_ALG_HKDF_EXTRACT */
0524 
0525 #if defined(PSA_WANT_ALG_HKDF_EXPAND)
0526 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HKDF_EXPAND)
0527 /*
0528  * The PSA implementation has its own implementation of HKDF, separate from
0529  * hkdf.c. No need to enable MBEDTLS_HKDF_C here.
0530  */
0531 #define MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND 1
0532 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HKDF_EXPAND */
0533 #endif /* PSA_WANT_ALG_HKDF_EXPAND */
0534 
0535 #if defined(PSA_WANT_ALG_HMAC)
0536 #if !defined(MBEDTLS_PSA_ACCEL_ALG_HMAC)
0537 #define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1
0538 #endif /* !MBEDTLS_PSA_ACCEL_ALG_HMAC */
0539 #endif /* PSA_WANT_ALG_HMAC */
0540 
0541 #if defined(PSA_WANT_ALG_MD5) && !defined(MBEDTLS_PSA_ACCEL_ALG_MD5)
0542 #define MBEDTLS_PSA_BUILTIN_ALG_MD5 1
0543 #define MBEDTLS_MD5_C
0544 #endif
0545 
0546 #if defined(PSA_WANT_ALG_RIPEMD160) && !defined(MBEDTLS_PSA_ACCEL_ALG_RIPEMD160)
0547 #define MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160 1
0548 #define MBEDTLS_RIPEMD160_C
0549 #endif
0550 
0551 #if defined(PSA_WANT_ALG_RSA_OAEP)
0552 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP)
0553 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_OAEP 1
0554 #define MBEDTLS_RSA_C
0555 #define MBEDTLS_BIGNUM_C
0556 #define MBEDTLS_OID_C
0557 #define MBEDTLS_PKCS1_V21
0558 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_OAEP */
0559 #endif /* PSA_WANT_ALG_RSA_OAEP */
0560 
0561 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT)
0562 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT)
0563 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_CRYPT 1
0564 #define MBEDTLS_RSA_C
0565 #define MBEDTLS_BIGNUM_C
0566 #define MBEDTLS_OID_C
0567 #define MBEDTLS_PKCS1_V15
0568 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_CRYPT */
0569 #endif /* PSA_WANT_ALG_RSA_PKCS1V15_CRYPT */
0570 
0571 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN)
0572 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN)
0573 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN 1
0574 #define MBEDTLS_RSA_C
0575 #define MBEDTLS_BIGNUM_C
0576 #define MBEDTLS_OID_C
0577 #define MBEDTLS_PKCS1_V15
0578 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN */
0579 #endif /* PSA_WANT_ALG_RSA_PKCS1V15_SIGN */
0580 
0581 #if defined(PSA_WANT_ALG_RSA_PSS)
0582 #if !defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
0583 #define MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS 1
0584 #define MBEDTLS_RSA_C
0585 #define MBEDTLS_BIGNUM_C
0586 #define MBEDTLS_OID_C
0587 #define MBEDTLS_PKCS1_V21
0588 #endif /* !MBEDTLS_PSA_ACCEL_ALG_RSA_PSS */
0589 #endif /* PSA_WANT_ALG_RSA_PSS */
0590 
0591 #if defined(PSA_WANT_ALG_SHA_1) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_1)
0592 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1
0593 #define MBEDTLS_SHA1_C
0594 #endif
0595 
0596 #if defined(PSA_WANT_ALG_SHA_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_224)
0597 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1
0598 #define MBEDTLS_SHA224_C
0599 #endif
0600 
0601 #if defined(PSA_WANT_ALG_SHA_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_256)
0602 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1
0603 #define MBEDTLS_SHA256_C
0604 #endif
0605 
0606 #if defined(PSA_WANT_ALG_SHA_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_384)
0607 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1
0608 #define MBEDTLS_SHA384_C
0609 #endif
0610 
0611 #if defined(PSA_WANT_ALG_SHA_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA_512)
0612 #define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1
0613 #define MBEDTLS_SHA512_C
0614 #endif
0615 
0616 #if defined(PSA_WANT_ALG_SHA3_224) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_224)
0617 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_224 1
0618 #define MBEDTLS_SHA3_C
0619 #endif
0620 
0621 #if defined(PSA_WANT_ALG_SHA3_256) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_256)
0622 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_256 1
0623 #define MBEDTLS_SHA3_C
0624 #endif
0625 
0626 #if defined(PSA_WANT_ALG_SHA3_384) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_384)
0627 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_384 1
0628 #define MBEDTLS_SHA3_C
0629 #endif
0630 
0631 #if defined(PSA_WANT_ALG_SHA3_512) && !defined(MBEDTLS_PSA_ACCEL_ALG_SHA3_512)
0632 #define MBEDTLS_PSA_BUILTIN_ALG_SHA3_512 1
0633 #define MBEDTLS_SHA3_C
0634 #endif
0635 
0636 #if defined(PSA_WANT_ALG_PBKDF2_HMAC)
0637 #if !defined(MBEDTLS_PSA_ACCEL_ALG_PBKDF2_HMAC)
0638 #define MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_HMAC 1
0639 #define PSA_HAVE_SOFT_PBKDF2_HMAC 1
0640 #endif /* !MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_HMAC */
0641 #endif /* PSA_WANT_ALG_PBKDF2_HMAC */
0642 
0643 #if defined(PSA_WANT_ALG_TLS12_PRF)
0644 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF)
0645 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF 1
0646 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PRF */
0647 #endif /* PSA_WANT_ALG_TLS12_PRF */
0648 
0649 #if defined(PSA_WANT_ALG_TLS12_PSK_TO_MS)
0650 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS)
0651 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS 1
0652 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_PSK_TO_MS */
0653 #endif /* PSA_WANT_ALG_TLS12_PSK_TO_MS */
0654 
0655 #if defined(PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS)
0656 #if !defined(MBEDTLS_PSA_ACCEL_ALG_TLS12_ECJPAKE_TO_PMS)
0657 #define MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS 1
0658 #endif /* !MBEDTLS_PSA_ACCEL_ALG_TLS12_ECJPAKE_TO_PMS */
0659 #endif /* PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS */
0660 
0661 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT)
0662 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_IMPORT)
0663 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_IMPORT 1
0664 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_IMPORT */
0665 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT */
0666 
0667 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT)
0668 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_EXPORT)
0669 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_EXPORT 1
0670 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_EXPORT */
0671 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT */
0672 
0673 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE)
0674 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_GENERATE)
0675 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_GENERATE 1
0676 #define MBEDTLS_GENPRIME
0677 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_GENERATE */
0678 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE */
0679 
0680 #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
0681 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_BASIC)
0682 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR_BASIC 1
0683 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_KEY_PAIR_BASIC */
0684 #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC */
0685 
0686 #if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
0687 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY)
0688 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY 1
0689 #define MBEDTLS_RSA_C
0690 #define MBEDTLS_BIGNUM_C
0691 #define MBEDTLS_OID_C
0692 #define MBEDTLS_ASN1_PARSE_C
0693 #define MBEDTLS_ASN1_WRITE_C
0694 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_RSA_PUBLIC_KEY */
0695 #endif /* PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY */
0696 
0697 /* If any of the block modes are requested that don't have an
0698  * associated HW assist, define PSA_HAVE_SOFT_BLOCK_MODE for checking
0699  * in the block cipher key types. */
0700 #if (defined(PSA_WANT_ALG_CTR) && !defined(MBEDTLS_PSA_ACCEL_ALG_CTR)) || \
0701     (defined(PSA_WANT_ALG_CFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_CFB)) || \
0702     (defined(PSA_WANT_ALG_OFB) && !defined(MBEDTLS_PSA_ACCEL_ALG_OFB)) || \
0703     (defined(PSA_WANT_ALG_ECB_NO_PADDING) && !defined(MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING)) || \
0704     (defined(PSA_WANT_ALG_CBC_NO_PADDING) && !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING)) || \
0705     (defined(PSA_WANT_ALG_CBC_PKCS7) && !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7)) || \
0706     (defined(PSA_WANT_ALG_CMAC) && !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC))
0707 #define PSA_HAVE_SOFT_BLOCK_MODE 1
0708 #endif
0709 
0710 #if defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128)
0711 #if !defined(MBEDTLS_PSA_ACCEL_ALG_PBKDF2_AES_CMAC_PRF_128)
0712 #define MBEDTLS_PSA_BUILTIN_ALG_PBKDF2_AES_CMAC_PRF_128 1
0713 #define PSA_HAVE_SOFT_PBKDF2_CMAC 1
0714 #endif /* !MBEDTLS_PSA_ACCEL_ALG_PBKDF2_AES_CMAC_PRF_128 */
0715 #endif /* PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128 */
0716 
0717 #if defined(PSA_WANT_KEY_TYPE_AES)
0718 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_AES)
0719 #define PSA_HAVE_SOFT_KEY_TYPE_AES 1
0720 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_AES */
0721 #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
0722     defined(PSA_HAVE_SOFT_BLOCK_MODE)
0723 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_AES 1
0724 #define MBEDTLS_AES_C
0725 #endif /* PSA_HAVE_SOFT_KEY_TYPE_AES || PSA_HAVE_SOFT_BLOCK_MODE */
0726 #endif /* PSA_WANT_KEY_TYPE_AES */
0727 
0728 #if defined(PSA_WANT_KEY_TYPE_ARIA)
0729 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA)
0730 #define PSA_HAVE_SOFT_KEY_TYPE_ARIA 1
0731 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_ARIA */
0732 #if defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
0733     defined(PSA_HAVE_SOFT_BLOCK_MODE)
0734 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ARIA 1
0735 #define MBEDTLS_ARIA_C
0736 #endif /* PSA_HAVE_SOFT_KEY_TYPE_ARIA || PSA_HAVE_SOFT_BLOCK_MODE */
0737 #endif /* PSA_WANT_KEY_TYPE_ARIA */
0738 
0739 #if defined(PSA_WANT_KEY_TYPE_CAMELLIA)
0740 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA)
0741 #define PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA 1
0742 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_CAMELLIA */
0743 #if defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA) || \
0744     defined(PSA_HAVE_SOFT_BLOCK_MODE)
0745 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CAMELLIA 1
0746 #define MBEDTLS_CAMELLIA_C
0747 #endif /* PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA || PSA_HAVE_SOFT_BLOCK_MODE */
0748 #endif /* PSA_WANT_KEY_TYPE_CAMELLIA */
0749 
0750 #if defined(PSA_WANT_KEY_TYPE_DES)
0751 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_DES)
0752 #define PSA_HAVE_SOFT_KEY_TYPE_DES 1
0753 #endif /* !MBEDTLS_PSA_ACCEL_KEY_TYPE_DES */
0754 #if defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
0755     defined(PSA_HAVE_SOFT_BLOCK_MODE)
0756 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_DES 1
0757 #define MBEDTLS_DES_C
0758 #endif /*PSA_HAVE_SOFT_KEY_TYPE_DES || PSA_HAVE_SOFT_BLOCK_MODE */
0759 #endif /* PSA_WANT_KEY_TYPE_DES */
0760 
0761 #if defined(PSA_WANT_ALG_STREAM_CIPHER)
0762 #if !defined(MBEDTLS_PSA_ACCEL_ALG_STREAM_CIPHER)
0763 #define MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER 1
0764 #endif /* MBEDTLS_PSA_ACCEL_ALG_STREAM_CIPHER */
0765 #endif /* PSA_WANT_ALG_STREAM_CIPHER */
0766 
0767 #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
0768 #if !defined(MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20) || \
0769     defined(MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER)
0770 #define MBEDTLS_PSA_BUILTIN_KEY_TYPE_CHACHA20 1
0771 #define MBEDTLS_CHACHA20_C
0772 #endif /*!MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20 */
0773 #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
0774 
0775 /* If any of the software block ciphers are selected, define
0776  * PSA_HAVE_SOFT_BLOCK_CIPHER, which can be used in any of these
0777  * situations. */
0778 #if defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
0779     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
0780     defined(PSA_HAVE_SOFT_KEY_TYPE_DES) || \
0781     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
0782 #define PSA_HAVE_SOFT_BLOCK_CIPHER 1
0783 #endif
0784 
0785 #if defined(PSA_WANT_ALG_CBC_MAC)
0786 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_MAC)
0787 #error "CBC-MAC is not yet supported via the PSA API in Mbed TLS."
0788 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_MAC 1
0789 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CBC_MAC */
0790 #endif /* PSA_WANT_ALG_CBC_MAC */
0791 
0792 #if defined(PSA_WANT_ALG_CMAC)
0793 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CMAC) || \
0794     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
0795 #define MBEDTLS_PSA_BUILTIN_ALG_CMAC 1
0796 #define MBEDTLS_CMAC_C
0797 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CMAC */
0798 #endif /* PSA_WANT_ALG_CMAC */
0799 
0800 #if defined(PSA_HAVE_SOFT_PBKDF2_HMAC) || \
0801     defined(PSA_HAVE_SOFT_PBKDF2_CMAC)
0802 #define PSA_HAVE_SOFT_PBKDF2 1
0803 #endif /* PSA_HAVE_SOFT_PBKDF2_HMAC || PSA_HAVE_SOFT_PBKDF2_CMAC */
0804 
0805 #if defined(PSA_WANT_ALG_CTR)
0806 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CTR) || \
0807     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
0808 #define MBEDTLS_PSA_BUILTIN_ALG_CTR 1
0809 #define MBEDTLS_CIPHER_MODE_CTR
0810 #endif
0811 #endif /* PSA_WANT_ALG_CTR */
0812 
0813 #if defined(PSA_WANT_ALG_CFB)
0814 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CFB) || \
0815     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
0816 #define MBEDTLS_PSA_BUILTIN_ALG_CFB 1
0817 #define MBEDTLS_CIPHER_MODE_CFB
0818 #endif
0819 #endif /* PSA_WANT_ALG_CFB */
0820 
0821 #if defined(PSA_WANT_ALG_OFB)
0822 #if !defined(MBEDTLS_PSA_ACCEL_ALG_OFB) || \
0823     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
0824 #define MBEDTLS_PSA_BUILTIN_ALG_OFB 1
0825 #define MBEDTLS_CIPHER_MODE_OFB
0826 #endif
0827 #endif /* PSA_WANT_ALG_OFB */
0828 
0829 #if defined(PSA_WANT_ALG_ECB_NO_PADDING) &&     \
0830     !defined(MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING)
0831 #define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1
0832 #endif
0833 
0834 #if defined(PSA_WANT_ALG_CBC_NO_PADDING)
0835 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING) || \
0836     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
0837 #define MBEDTLS_CIPHER_MODE_CBC
0838 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING 1
0839 #endif
0840 #endif /* PSA_WANT_ALG_CBC_NO_PADDING */
0841 
0842 #if defined(PSA_WANT_ALG_CBC_PKCS7)
0843 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7) || \
0844     defined(PSA_HAVE_SOFT_BLOCK_CIPHER)
0845 #define MBEDTLS_CIPHER_MODE_CBC
0846 #define MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7 1
0847 #define MBEDTLS_CIPHER_PADDING_PKCS7
0848 #endif
0849 #endif /* PSA_WANT_ALG_CBC_PKCS7 */
0850 
0851 #if defined(PSA_WANT_ALG_CCM)
0852 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM) || \
0853     defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
0854     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
0855     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
0856 #define MBEDTLS_PSA_BUILTIN_ALG_CCM 1
0857 #define MBEDTLS_CCM_C
0858 #endif
0859 #endif /* PSA_WANT_ALG_CCM */
0860 
0861 #if defined(PSA_WANT_ALG_CCM_STAR_NO_TAG)
0862 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CCM_STAR_NO_TAG) || \
0863     defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
0864     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
0865     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
0866 #define MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG 1
0867 #define MBEDTLS_CCM_C
0868 #endif
0869 #endif /* PSA_WANT_ALG_CCM_STAR_NO_TAG */
0870 
0871 #if defined(PSA_WANT_ALG_GCM)
0872 #if !defined(MBEDTLS_PSA_ACCEL_ALG_GCM) || \
0873     defined(PSA_HAVE_SOFT_KEY_TYPE_AES) || \
0874     defined(PSA_HAVE_SOFT_KEY_TYPE_ARIA) || \
0875     defined(PSA_HAVE_SOFT_KEY_TYPE_CAMELLIA)
0876 #define MBEDTLS_PSA_BUILTIN_ALG_GCM 1
0877 #define MBEDTLS_GCM_C
0878 #endif
0879 #endif /* PSA_WANT_ALG_GCM */
0880 
0881 #if defined(PSA_WANT_ALG_CHACHA20_POLY1305)
0882 #if !defined(MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305)
0883 #if defined(PSA_WANT_KEY_TYPE_CHACHA20)
0884 #define MBEDTLS_CHACHAPOLY_C
0885 #define MBEDTLS_CHACHA20_C
0886 #define MBEDTLS_POLY1305_C
0887 #define MBEDTLS_PSA_BUILTIN_ALG_CHACHA20_POLY1305 1
0888 #endif /* PSA_WANT_KEY_TYPE_CHACHA20 */
0889 #endif /* !MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305 */
0890 #endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */
0891 
0892 #endif /* MBEDTLS_CONFIG_ADJUST_LEGACY_FROM_PSA_H */