Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:44:50

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