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