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