Crypto: Add config check

Add dependency configuration checks between tfm crypto service
switch and mbedcrypto switch.

Signed-off-by: Summer Qin <summer.qin@arm.com>
Change-Id: Ib7fd4857ba19fd839479c2e4e1fd3e0bf66da30f
diff --git a/test/secure_fw/suites/crypto/CMakeLists.txt b/test/secure_fw/suites/crypto/CMakeLists.txt
index 146e121..d79d1ba 100644
--- a/test/secure_fw/suites/crypto/CMakeLists.txt
+++ b/test/secure_fw/suites/crypto/CMakeLists.txt
@@ -55,6 +55,7 @@
             $<$<BOOL:${TFM_CRYPTO_TEST_CHACHA20}>:TFM_CRYPTO_TEST_CHACHA20>
             $<$<BOOL:${TFM_CRYPTO_TEST_ALG_CHACHA20_POLY1305}>:TFM_CRYPTO_TEST_ALG_CHACHA20_POLY1305>
             $<$<BOOL:${TFM_CRYPTO_TEST_SINGLE_PART_FUNCS}>:TFM_CRYPTO_TEST_SINGLE_PART_FUNCS>
+            $<$<BOOL:${TFM_MBEDCRYPTO_PSA_CRYPTO_CONFIG_PATH}>:MBEDTLS_PSA_CRYPTO_CONFIG_FILE="${TFM_MBEDCRYPTO_PSA_CRYPTO_CONFIG_PATH}">
         INTERFACE
             TEST_NS_CRYPTO
     )
@@ -103,6 +104,7 @@
             $<$<NOT:$<BOOL:${CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED}>>:TFM_CRYPTO_TEST_ASYM_ENCRYPT>
             $<$<BOOL:${TFM_CRYPTO_TEST_CHACHA20}>:TFM_CRYPTO_TEST_CHACHA20>
             $<$<BOOL:${TFM_CRYPTO_TEST_ALG_CHACHA20_POLY1305}>:TFM_CRYPTO_TEST_ALG_CHACHA20_POLY1305>
+            $<$<BOOL:${TFM_MBEDCRYPTO_PSA_CRYPTO_CONFIG_PATH}>:MBEDTLS_PSA_CRYPTO_CONFIG_FILE="${TFM_MBEDCRYPTO_PSA_CRYPTO_CONFIG_PATH}">
         INTERFACE
             TEST_S_CRYPTO
     )
diff --git a/test/secure_fw/suites/crypto/crypto_tests_check_config.h b/test/secure_fw/suites/crypto/crypto_tests_check_config.h
new file mode 100644
index 0000000..44ae7e0
--- /dev/null
+++ b/test/secure_fw/suites/crypto/crypto_tests_check_config.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __CRYPTO_TESTS_CHECK_CONFIG_H__
+#define __CRYPTO_TESTS_CHECK_CONFIG_H__
+
+#ifdef MBEDTLS_PSA_CRYPTO_CONFIG_FILE
+#include MBEDTLS_PSA_CRYPTO_CONFIG_FILE
+
+#if defined(TFM_CRYPTO_TEST_ALG_CBC) && \
+    (!defined(PSA_WANT_ALG_CBC_NO_PADDING) || !defined(PSA_WANT_ALG_CBC_PKCS7))
+#error "TFM_CRYPTO_TEST_ALG_CBC enables, but CBC mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_CCM) && !defined(PSA_WANT_ALG_CCM)
+#error "TFM_CRYPTO_TEST_ALG_CCM enables, but CCM mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_CFB) && !defined(PSA_WANT_ALG_CFB)
+#error "TFM_CRYPTO_TEST_ALG_CFB enables, but CFB mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_ECB) && !defined(PSA_WANT_ALG_ECB_NO_PADDING)
+#error "TFM_CRYPTO_TEST_ALG_ECB enables, but ECB mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_CTR) && !defined(PSA_WANT_ALG_CTR)
+#error "TFM_CRYPTO_TEST_ALG_CTR enables, but CTR mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_OFB) && !defined(PSA_WANT_ALG_OFB)
+#error "TFM_CRYPTO_TEST_ALG_OFB enables, but OFB mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_GCM) && !defined(PSA_WANT_ALG_GCM)
+#error "TFM_CRYPTO_TEST_ALG_GCM enables, but GCM mode is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_SHA_384) && !defined(PSA_WANT_ALG_SHA_384)
+#error "TFM_CRYPTO_TEST_ALG_SHA_384 enables, but SHA-384 algorithm is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_SHA_512) && !defined(PSA_WANT_ALG_SHA_512)
+#error "TFM_CRYPTO_TEST_ALG_SHA_512 enables, but SHA-512 algorithm is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_HKDF) && !defined(PSA_WANT_ALG_HKDF)
+#error "TFM_CRYPTO_TEST_ALG_HKDF enables, but HKDF key derivation algorithm is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ECDH) && !defined(PSA_WANT_ALG_ECDH)
+#error "TFM_CRYPTO_TEST_ALG_ECDH enables, but ECDH key agreement algorithm is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_CHACHA20) && !defined(PSA_WANT_KEY_TYPE_CHACHA20)
+#error "TFM_CRYPTO_TEST_ALG_CHACHA20 enables, but ChaCha20 stream cipher algorithm is not defined!"
+#endif
+
+#if defined(TFM_CRYPTO_TEST_ALG_CHACHA20_POLY1305) && \
+    !defined(PSA_WANT_ALG_CHACHA20_POLY1305)
+#error "TFM_CRYPTO_TEST_ALG_CHACHA20_POLY1305 enables, but ChaCha20-Poly1305 AEAD algorithm is not defined!"
+#endif
+
+#endif /* MBEDTLS_PSA_CRYPTO_CONFIG_FILE */
+
+#endif /* __CRYPTO_TESTS_CHECK_CONFIG_H__ */
diff --git a/test/secure_fw/suites/crypto/crypto_tests_common.h b/test/secure_fw/suites/crypto/crypto_tests_common.h
index 57e0e37..2d19ffe 100644
--- a/test/secure_fw/suites/crypto/crypto_tests_common.h
+++ b/test/secure_fw/suites/crypto/crypto_tests_common.h
@@ -14,6 +14,7 @@
 
 #include "psa/crypto.h"
 #include "test_framework_helpers.h"
+#include "crypto_tests_check_config.h"
 
 /**
  * \brief Size of the key to use in tests in bits
@@ -303,4 +304,4 @@
 }
 #endif
 
-#endif /* __CRYPTO_TESTS_COMMON__ */
+#endif /* __CRYPTO_TESTS_COMMON_H__ */