1*62c56f98SSadaf Ebrahimi /** 2*62c56f98SSadaf Ebrahimi * \file check_crypto_config.h 3*62c56f98SSadaf Ebrahimi * 4*62c56f98SSadaf Ebrahimi * \brief Consistency checks for PSA configuration options 5*62c56f98SSadaf Ebrahimi */ 6*62c56f98SSadaf Ebrahimi /* 7*62c56f98SSadaf Ebrahimi * Copyright The Mbed TLS Contributors 8*62c56f98SSadaf Ebrahimi * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 9*62c56f98SSadaf Ebrahimi */ 10*62c56f98SSadaf Ebrahimi 11*62c56f98SSadaf Ebrahimi /* 12*62c56f98SSadaf Ebrahimi * It is recommended to include this file from your crypto_config.h 13*62c56f98SSadaf Ebrahimi * in order to catch dependency issues early. 14*62c56f98SSadaf Ebrahimi */ 15*62c56f98SSadaf Ebrahimi 16*62c56f98SSadaf Ebrahimi #ifndef MBEDTLS_CHECK_CRYPTO_CONFIG_H 17*62c56f98SSadaf Ebrahimi #define MBEDTLS_CHECK_CRYPTO_CONFIG_H 18*62c56f98SSadaf Ebrahimi 19*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_CCM) && \ 20*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_AES) || \ 21*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_CAMELLIA)) 22*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_CCM defined, but not all prerequisites" 23*62c56f98SSadaf Ebrahimi #endif 24*62c56f98SSadaf Ebrahimi 25*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_CMAC) && \ 26*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_AES) || \ 27*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_CAMELLIA) || \ 28*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_DES)) 29*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_CMAC defined, but not all prerequisites" 30*62c56f98SSadaf Ebrahimi #endif 31*62c56f98SSadaf Ebrahimi 32*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \ 33*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \ 34*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)) 35*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_DETERMINISTIC_ECDSA defined, but not all prerequisites" 36*62c56f98SSadaf Ebrahimi #endif 37*62c56f98SSadaf Ebrahimi 38*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_ECDSA) && \ 39*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \ 40*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)) 41*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_ECDSA defined, but not all prerequisites" 42*62c56f98SSadaf Ebrahimi #endif 43*62c56f98SSadaf Ebrahimi 44*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_GCM) && \ 45*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_AES) || \ 46*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_CAMELLIA)) 47*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_GCM defined, but not all prerequisites" 48*62c56f98SSadaf Ebrahimi #endif 49*62c56f98SSadaf Ebrahimi 50*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT) && \ 51*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \ 52*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)) 53*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_RSA_PKCS1V15_CRYPT defined, but not all prerequisites" 54*62c56f98SSadaf Ebrahimi #endif 55*62c56f98SSadaf Ebrahimi 56*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) && \ 57*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \ 58*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)) 59*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_RSA_PKCS1V15_SIGN defined, but not all prerequisites" 60*62c56f98SSadaf Ebrahimi #endif 61*62c56f98SSadaf Ebrahimi 62*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_RSA_OAEP) && \ 63*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \ 64*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)) 65*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_RSA_OAEP defined, but not all prerequisites" 66*62c56f98SSadaf Ebrahimi #endif 67*62c56f98SSadaf Ebrahimi 68*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_RSA_PSS) && \ 69*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \ 70*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)) 71*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_RSA_PSS defined, but not all prerequisites" 72*62c56f98SSadaf Ebrahimi #endif 73*62c56f98SSadaf Ebrahimi 74*62c56f98SSadaf Ebrahimi #if (defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC) || \ 75*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT) || \ 76*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT) || \ 77*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE) || \ 78*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE)) && \ 79*62c56f98SSadaf Ebrahimi !defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) 80*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_xxx defined, but not all prerequisites" 81*62c56f98SSadaf Ebrahimi #endif 82*62c56f98SSadaf Ebrahimi 83*62c56f98SSadaf Ebrahimi #if (defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC) || \ 84*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT) || \ 85*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT) || \ 86*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE)) && \ 87*62c56f98SSadaf Ebrahimi !defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) 88*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_xxx defined, but not all prerequisites" 89*62c56f98SSadaf Ebrahimi #endif 90*62c56f98SSadaf Ebrahimi 91*62c56f98SSadaf Ebrahimi #if (defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC) || \ 92*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT) || \ 93*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT) || \ 94*62c56f98SSadaf Ebrahimi defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE)) && \ 95*62c56f98SSadaf Ebrahimi !defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY) 96*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_DH_KEY_PAIR_xxx defined, but not all prerequisites" 97*62c56f98SSadaf Ebrahimi #endif 98*62c56f98SSadaf Ebrahimi 99*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) 100*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_DEPRECATED_REMOVED) 101*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR is deprecated and will be removed in a \ 102*62c56f98SSadaf Ebrahimi future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_xxx \ 103*62c56f98SSadaf Ebrahimi symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE" 104*62c56f98SSadaf Ebrahimi #elif defined(MBEDTLS_DEPRECATED_WARNING) 105*62c56f98SSadaf Ebrahimi #warning "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR is deprecated and will be removed in a \ 106*62c56f98SSadaf Ebrahimi future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_xxx \ 107*62c56f98SSadaf Ebrahimi symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE" 108*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_DEPRECATED_WARNING */ 109*62c56f98SSadaf Ebrahimi #endif /* PSA_WANT_KEY_TYPE_ECC_KEY_PAIR */ 110*62c56f98SSadaf Ebrahimi 111*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) 112*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_DEPRECATED_REMOVED) 113*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR is deprecated and will be removed in a \ 114*62c56f98SSadaf Ebrahimi future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_xxx \ 115*62c56f98SSadaf Ebrahimi symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE" 116*62c56f98SSadaf Ebrahimi #elif defined(MBEDTLS_DEPRECATED_WARNING) 117*62c56f98SSadaf Ebrahimi #warning "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR is deprecated and will be removed in a \ 118*62c56f98SSadaf Ebrahimi future version of Mbed TLS. Please switch to new PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_xxx \ 119*62c56f98SSadaf Ebrahimi symbols, where xxx can be: USE, IMPORT, EXPORT, GENERATE, DERIVE" 120*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_DEPRECATED_WARNING */ 121*62c56f98SSadaf Ebrahimi #endif /* PSA_WANT_KEY_TYPE_RSA_KEY_PAIR */ 122*62c56f98SSadaf Ebrahimi 123*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE) 124*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE defined, but feature is not supported" 125*62c56f98SSadaf Ebrahimi #endif 126*62c56f98SSadaf Ebrahimi 127*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE) 128*62c56f98SSadaf Ebrahimi #error "PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE defined, but feature is not supported" 129*62c56f98SSadaf Ebrahimi #endif 130*62c56f98SSadaf Ebrahimi 131*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_USE_PSA_CRYPTO) && \ 132*62c56f98SSadaf Ebrahimi !(defined(PSA_WANT_ALG_SHA_1) || defined(PSA_WANT_ALG_SHA_256) || defined(PSA_WANT_ALG_SHA_512)) 133*62c56f98SSadaf Ebrahimi #error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites" 134*62c56f98SSadaf Ebrahimi #endif 135*62c56f98SSadaf Ebrahimi 136*62c56f98SSadaf Ebrahimi #if defined(PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS) && \ 137*62c56f98SSadaf Ebrahimi !defined(PSA_WANT_ALG_SHA_256) 138*62c56f98SSadaf Ebrahimi #error "PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS defined, but not all prerequisites" 139*62c56f98SSadaf Ebrahimi #endif 140*62c56f98SSadaf Ebrahimi 141*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_CHECK_CRYPTO_CONFIG_H */ 142