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