1 /*
2  * Copyright (c) 2022, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 #ifndef __CRYPTO_CHECK_CONFIG_H__
8 #define __CRYPTO_CHECK_CONFIG_H__
9 
10 #include "config_tfm.h"
11 
12 /* RNG module config can't be adjusted on PSA_WANT_* requirements. */
13 
14 #if CRYPTO_KEY_MODULE_ENABLED && \
15     (!defined(PSA_WANT_KEY_TYPE_DERIVE) && \
16      !defined(PSA_WANT_KEY_TYPE_HMAC) && \
17      !defined(PSA_WANT_KEY_TYPE_RAW_DATA) && \
18      !defined(PSA_WANT_KEY_TYPE_PASSWORD) && \
19      !defined(PSA_WANT_KEY_TYPE_PASSWORD_HASH) && \
20      !defined(PSA_WANT_KEY_TYPE_PEPPER) && \
21      !defined(PSA_WANT_KEY_TYPE_AES) && \
22      !defined(PSA_WANT_KEY_TYPE_ARIA) && \
23      !defined(PSA_WANT_KEY_TYPE_DES) && \
24      !defined(PSA_WANT_KEY_TYPE_CAMELLIA) && \
25      !defined(PSA_WANT_KEY_TYPE_SM4) && \
26      !defined(PSA_WANT_KEY_TYPE_ARC4) && \
27      !defined(PSA_WANT_KEY_TYPE_CHACHA20) && \
28      !defined(PSA_WANT_KEY_TYPE_ECC_KEY_PAIR) && \
29      !defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY) && \
30      !defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR) && \
31      !defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) && \
32      !defined(PSA_WANT_KEY_TYPE_DH_KEY_PAIR) && \
33      !defined(PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY))
34 #error "CRYPTO_KEY_MODULE enabled, but not all prerequisites (missing key types)!"
35 #endif
36 
37 #if CRYPTO_AEAD_MODULE_ENABLED && \
38     (!defined(PSA_WANT_ALG_CCM) && \
39      !defined(PSA_WANT_ALG_GCM) && \
40      !defined(PSA_WANT_ALG_CHACHA20_POLY1305))
41 #error "CRYPTO_AEAD_MODULE_ENABLED enabled, but not all prerequisites (missing AEAD algorithms)!"
42 #endif
43 
44 #if CRYPTO_MAC_MODULE_ENABLED && \
45     (!defined(PSA_WANT_ALG_CMAC) && \
46      !defined(PSA_WANT_ALG_HMAC) && \
47      !defined(PSA_WANT_ALG_CBC_MAC))
48 #error "CRYPTO_MAC_MODULE_ENABLED enabled, but not all prerequisites (missing MAC algorithms)!"
49 #endif
50 
51 #if CRYPTO_CIPHER_MODULE_ENABLED && \
52     (!defined(PSA_WANT_ALG_ECB_NO_PADDING) && \
53      !defined(PSA_WANT_ALG_CBC_NO_PADDING) && \
54      !defined(PSA_WANT_ALG_CBC_PKCS7) && \
55      !defined(PSA_WANT_ALG_CCM_STAR_NO_TAG) && \
56      !defined(PSA_WANT_ALG_CFB) && \
57      !defined(PSA_WANT_ALG_CTR) && \
58      !defined(PSA_WANT_ALG_OFB) && \
59      !defined(PSA_WANT_ALG_XTS) && \
60      !defined(PSA_WANT_ALG_STREAM_CIPHER))
61 #error "CRYPTO_CIPHER_MODULE_ENABLED enabled, but not all prerequisites (missing CIPHER algorithms)!"
62 #endif
63 
64 #if CRYPTO_HASH_MODULE_ENABLED && \
65     (!defined(PSA_WANT_ALG_MD2) && \
66      !defined(PSA_WANT_ALG_MD4) && \
67      !defined(PSA_WANT_ALG_MD5) && \
68      !defined(PSA_WANT_ALG_RIPEMD160) && \
69      !defined(PSA_WANT_ALG_SHA_1) && \
70      !defined(PSA_WANT_ALG_SHA_224) && \
71      !defined(PSA_WANT_ALG_SHA_256) && \
72      !defined(PSA_WANT_ALG_SHA_384) && \
73      !defined(PSA_WANT_ALG_SHA_512) && \
74      !defined(PSA_WANT_ALG_SHA_512_224) && \
75      !defined(PSA_WANT_ALG_SHA_512_256) && \
76      !defined(PSA_WANT_ALG_SHA3_224) && \
77      !defined(PSA_WANT_ALG_SHA3_256) && \
78      !defined(PSA_WANT_ALG_SHA3_384) && \
79      !defined(PSA_WANT_ALG_SHA3_512) && \
80      !defined(PSA_WANT_ALG_SM3) && \
81      !defined(PSA_WANT_ALG_SHAKE256_512))
82 #error "CRYPTO_HASH_MODULE_ENABLED enabled, but not all prerequisites (missing HASH algorithms)!"
83 #endif
84 
85 #if CRYPTO_ASYM_SIGN_MODULE_ENABLED && \
86     (!defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN) && \
87      !defined(PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW) && \
88      !defined(PSA_WANT_ALG_RSA_PSS) && \
89      !defined(PSA_WANT_ALG_RSA_PSS_ANY_SALT) && \
90      !defined(PSA_WANT_ALG_ECDSA) && \
91      !defined(PSA_WANT_ALG_ECDSA_ANY) && \
92      !defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) && \
93      !defined(PSA_WANT_ALG_PURE_EDDSA) && \
94      !defined(PSA_WANT_ALG_ED25519PH) && \
95      !defined(PSA_WANT_ALG_ED448PH))
96 #error "CRYPTO_ASYM_SIGN_MODULE_ENABLED enabled, but not all prerequisites (missing asymmetric sign algorithms)!"
97 #endif
98 
99 #if CRYPTO_ASYM_ENCRYPT_MODULE_ENABLED && \
100     (!defined(PSA_WANT_ALG_RSA_PKCS1V15_CRYPT) && \
101      !defined(PSA_WANT_ALG_RSA_OAEP))
102 #error "CRYPTO_ASYM_ENCRYPT_MODULE_ENABLED enabled, but not all prerequisites (missing asymmetric encryption algorithms)!"
103 #endif
104 
105 #if CRYPTO_KEY_DERIVATION_MODULE_ENABLED && \
106     (/* Key agreement */ \
107      !defined(PSA_WANT_ALG_ECDH) && \
108      !defined(PSA_WANT_ALG_FFDH) && \
109      /* Key derivation */ \
110      !defined(PSA_WANT_ALG_HKDF) && \
111      !defined(PSA_WANT_ALG_HKDF_EXPAND) /* Not official PSA but exists in mbedtls */ && \
112      !defined(PSA_WANT_ALG_HKDF_EXTRACT) /* Not official PSA but exists in mbedtls */  && \
113      !defined(PSA_WANT_ALG_PBKDF2_HMAC) && \
114      !defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128) && \
115      !defined(PSA_WANT_ALG_TLS12_PRF) && \
116      !defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) && \
117      !defined(PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS) /* Not official PSA but exists in mbedtls */)
118 #error "CRYPTO_KEY_DERIVATION_MODULE_ENABLED enabled, but not all prerequisites (missing key derivation algorithms)!"
119 #endif
120 
121 #endif /* __CRYPTO_CHECK_CONFIG_H__ */
122