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 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); you may 11 * not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 18 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 */ 22 23 /* 24 * It is recommended to include this file from your crypto_config.h 25 * in order to catch dependency issues early. 26 */ 27 28 #ifndef MBEDTLS_CHECK_CRYPTO_CONFIG_H 29 #define MBEDTLS_CHECK_CRYPTO_CONFIG_H 30 31 #if defined(PSA_WANT_ALG_CCM) && \ 32 !( defined(PSA_WANT_KEY_TYPE_AES) || \ 33 defined(PSA_WANT_KEY_TYPE_CAMELLIA) ) 34 #error "PSA_WANT_ALG_CCM defined, but not all prerequisites" 35 #endif 36 37 #if defined(PSA_WANT_ALG_CMAC) && \ 38 !( defined(PSA_WANT_KEY_TYPE_AES) || \ 39 defined(PSA_WANT_KEY_TYPE_CAMELLIA) || \ 40 defined(PSA_WANT_KEY_TYPE_DES) ) 41 #error "PSA_WANT_ALG_CMAC defined, but not all prerequisites" 42 #endif 43 44 #if defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \ 45 !( defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) || \ 46 defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) ) 47 #error "PSA_WANT_ALG_DETERMINISTIC_ECDSA defined, but not all prerequisites" 48 #endif 49 50 #if defined(PSA_WANT_ALG_ECDSA) && \ 51 !( defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) || \ 52 defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) ) 53 #error "PSA_WANT_ALG_ECDSA defined, but not all prerequisites" 54 #endif 55 56 #if defined(PSA_WANT_ALG_GCM) && \ 57 !( defined(PSA_WANT_KEY_TYPE_AES) || \ 58 defined(PSA_WANT_KEY_TYPE_CAMELLIA) ) 59 #error "PSA_WANT_ALG_GCM defined, but not all prerequisites" 60 #endif 61 62 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT) && \ 63 !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ 64 defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) 65 #error "PSA_WANT_ALG_RSA_PKCS1V15_CRYPT defined, but not all prerequisites" 66 #endif 67 68 #if defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) && \ 69 !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ 70 defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) 71 #error "PSA_WANT_ALG_RSA_PKCS1V15_SIGN defined, but not all prerequisites" 72 #endif 73 74 #if defined(PSA_WANT_ALG_RSA_OAEP) && \ 75 !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ 76 defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) 77 #error "PSA_WANT_ALG_RSA_OAEP defined, but not all prerequisites" 78 #endif 79 80 #if defined(PSA_WANT_ALG_RSA_PSS) && \ 81 !( defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) || \ 82 defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) ) 83 #error "PSA_WANT_ALG_RSA_PSS defined, but not all prerequisites" 84 #endif 85 86 #if defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) && \ 87 !defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) 88 #error "PSA_WANT_KEY_TYPE_ECC_KEY_PAIR defined, but not all prerequisites" 89 #endif 90 91 #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && defined(MBEDTLS_USE_PSA_CRYPTO) && \ 92 !( defined(PSA_WANT_ALG_SHA_1) || defined(PSA_WANT_ALG_SHA_256) || defined(PSA_WANT_ALG_SHA_512) ) 93 #error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites" 94 #endif 95 96 #if defined(PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS) && \ 97 !defined(PSA_WANT_ALG_SHA_256) 98 #error "PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS defined, but not all prerequisites" 99 #endif 100 101 #endif /* MBEDTLS_CHECK_CRYPTO_CONFIG_H */ 102