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