11 #include "../crypto_tests_common.h"
15 #ifdef TFM_CRYPTO_TEST_ALG_CBC
18 #ifdef TFM_CRYPTO_TEST_ALG_CFB
21 #ifdef TFM_CRYPTO_TEST_ALG_CTR
26 #ifdef TFM_CRYPTO_TEST_ALG_CFB
32 #ifdef TFM_CRYPTO_TEST_ALG_SHA_512
38 #ifdef TFM_CRYPTO_TEST_ALG_SHA_512
43 #ifdef TFM_CRYPTO_TEST_ALG_CCM
46 #ifdef TFM_CRYPTO_TEST_ALG_GCM
53 #ifdef TFM_CRYPTO_TEST_ALG_CCM
58 #ifdef TFM_CRYPTO_TEST_HKDF
62 static struct test_t crypto_tests[] = {
63 {&tfm_crypto_test_5001,
"TFM_CRYPTO_TEST_5001",
65 #ifdef TFM_CRYPTO_TEST_ALG_CBC
66 {&tfm_crypto_test_5002,
"TFM_CRYPTO_TEST_5002",
67 "Secure Symmetric encryption (AES-128-CBC) interface", {
TEST_PASSED} },
69 #ifdef TFM_CRYPTO_TEST_ALG_CFB
70 {&tfm_crypto_test_5003,
"TFM_CRYPTO_TEST_5003",
71 "Secure Symmetric encryption (AES-128-CFB) interface", {
TEST_PASSED} },
73 #ifdef TFM_CRYPTO_TEST_ALG_CTR
74 {&tfm_crypto_test_5005,
"TFM_CRYPTO_TEST_5005",
75 "Secure Symmetric encryption (AES-128-CTR) interface", {
TEST_PASSED} },
77 {&tfm_crypto_test_5007,
"TFM_CRYPTO_TEST_5007",
78 "Secure Symmetric encryption invalid cipher", {
TEST_PASSED} },
79 {&tfm_crypto_test_5008,
"TFM_CRYPTO_TEST_5008",
80 "Secure Symmetric encryption invalid cipher (AES-152)", {
TEST_PASSED} },
81 #ifdef TFM_CRYPTO_TEST_ALG_CFB
82 {&tfm_crypto_test_5009,
"TFM_CRYPTO_TEST_5009",
83 "Secure Symmetric encryption invalid cipher (HMAC-128-CFB)", {
TEST_PASSED} },
85 {&tfm_crypto_test_5010,
"TFM_CRYPTO_TEST_5010",
86 "Secure Unsupported Hash (SHA-1) interface", {
TEST_PASSED} },
87 {&tfm_crypto_test_5011,
"TFM_CRYPTO_TEST_5011",
89 {&tfm_crypto_test_5012,
"TFM_CRYPTO_TEST_5012",
91 #ifdef TFM_CRYPTO_TEST_ALG_SHA_512
92 {&tfm_crypto_test_5013,
"TFM_CRYPTO_TEST_5013",
94 {&tfm_crypto_test_5014,
"TFM_CRYPTO_TEST_5014",
97 {&tfm_crypto_test_5019,
"TFM_CRYPTO_TEST_5019",
98 "Secure Unsupported HMAC (SHA-1) interface", {
TEST_PASSED} },
99 {&tfm_crypto_test_5020,
"TFM_CRYPTO_TEST_5020",
100 "Secure HMAC (SHA-256) interface", {
TEST_PASSED} },
101 #ifdef TFM_CRYPTO_TEST_ALG_SHA_512
102 {&tfm_crypto_test_5021,
"TFM_CRYPTO_TEST_5021",
103 "Secure HMAC (SHA-384) interface", {
TEST_PASSED} },
104 {&tfm_crypto_test_5022,
"TFM_CRYPTO_TEST_5022",
105 "Secure HMAC (SHA-512) interface", {
TEST_PASSED} },
107 {&tfm_crypto_test_5024,
"TFM_CRYPTO_TEST_5024",
108 "Secure HMAC with long key (SHA-224) interface", {
TEST_PASSED} },
109 #ifdef TFM_CRYPTO_TEST_ALG_CCM
110 {&tfm_crypto_test_5030,
"TFM_CRYPTO_TEST_5030",
111 "Secure AEAD (AES-128-CCM) interface", {
TEST_PASSED} },
113 #ifdef TFM_CRYPTO_TEST_ALG_GCM
114 {&tfm_crypto_test_5031,
"TFM_CRYPTO_TEST_5031",
115 "Secure AEAD (AES-128-GCM) interface", {
TEST_PASSED} },
117 {&tfm_crypto_test_5032,
"TFM_CRYPTO_TEST_5032",
119 {&tfm_crypto_test_5033,
"TFM_CRYPTO_TEST_5033",
120 "Secure key policy check permissions", {
TEST_PASSED} },
121 {&tfm_crypto_test_5034,
"TFM_CRYPTO_TEST_5034",
122 "Secure persistent key interface", {
TEST_PASSED} },
123 {&tfm_crypto_test_5035,
"TFM_CRYPTO_TEST_5035",
125 #ifdef TFM_CRYPTO_TEST_ALG_CCM
126 {&tfm_crypto_test_5036,
"TFM_CRYPTO_TEST_6036",
127 "Secure AEAD interface with truncated auth tag (AES-128-CCM-8)",
130 {&tfm_crypto_test_5037,
"TFM_CRYPTO_TEST_5037",
131 "Secure TLS 1.2 PRF key derivation", {
TEST_PASSED} },
132 {&tfm_crypto_test_5038,
"TFM_CRYPTO_TEST_5038",
133 "Secure TLS-1.2 PSK-to-MasterSecret key derivation", {
TEST_PASSED} },
134 #ifdef TFM_CRYPTO_TEST_HKDF
135 {&tfm_crypto_test_5039,
"TFM_CRYPTO_TEST_5039",
142 uint32_t list_size = (
sizeof(crypto_tests) /
sizeof(crypto_tests[0]));
144 set_testsuite(
"Crypto secure interface tests (TFM_CRYPTO_TEST_5XXX)",
145 crypto_tests, list_size, p_test_suite);
162 #ifdef TFM_CRYPTO_TEST_ALG_CBC
169 #ifdef TFM_CRYPTO_TEST_ALG_CFB
176 #ifdef TFM_CRYPTO_TEST_ALG_CTR
194 #ifdef TFM_CRYPTO_TEST_ALG_CFB
217 #ifdef TFM_CRYPTO_TEST_ALG_SHA_512
240 #ifdef TFM_CRYPTO_TEST_ALG_SHA_512
257 #ifdef TFM_CRYPTO_TEST_ALG_CCM
264 #ifdef TFM_CRYPTO_TEST_ALG_GCM
295 const uint8_t data[] =
"THIS IS MY KEY1";
312 &key_handle,
sizeof(key_handle));
314 TEST_FAIL(
"Should not be able to destroy key from another partition");
326 #ifdef TFM_CRYPTO_TEST_ALG_CCM
346 #ifdef TFM_CRYPTO_TEST_HKDF
#define PSA_KEY_USAGE_EXPORT
void psa_unsupported_hash_test(const psa_algorithm_t alg, struct test_result_t *ret)
Tests setup of an unsupported hash algorithm.
void psa_key_interface_test(const psa_key_type_t key_type, struct test_result_t *ret)
Tests the key interfaces with different key types.
psa_status_t tfm_secure_client_2_call_test(int32_t id, const void *arg, size_t arg_len)
Calls the test function with the supplied ID within the execution context of the Secure Client 2 part...
void psa_invalid_cipher_test(const psa_key_type_t key_type, const psa_algorithm_t alg, const size_t key_size, struct test_result_t *ret)
Tests invalid key type and algorithm combinations for block ciphers.
#define TEST_FAIL(info_msg)
enum test_suite_err_t set_testsuite(const char *name, struct test_t *test_list, uint32_t size, struct test_suite_t *p_ts)
Sets test suite parameters.
#define PSA_ALG_HMAC(hash_alg)
void psa_mac_test(const psa_algorithm_t alg, uint8_t use_long_key, struct test_result_t *ret)
Tests different MAC algorithms.
void psa_invalid_key_length_test(struct test_result_t *ret)
Tests invalid key length.
void psa_persistent_key_test(psa_key_id_t key_id, struct test_result_t *ret)
Tests persistent keys.
void psa_policy_key_interface_test(struct test_result_t *ret)
Tests the policy key interface.
void psa_cipher_test(const psa_key_type_t key_type, const psa_algorithm_t alg, struct test_result_t *ret)
Run block ciphering tests with different algorithms and key types.
#define PSA_ALG_CBC_NO_PADDING
#define PSA_ALG_TLS12_PRF(hash_alg)
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
#define PSA_ERROR_NOT_PERMITTED
void psa_aead_test(const psa_key_type_t key_type, const psa_algorithm_t alg, struct test_result_t *ret)
Run AEAD tests with different algorithms and key types.
void psa_unsupported_mac_test(const psa_key_type_t key_type, const psa_algorithm_t alg, struct test_result_t *ret)
Tests setup of an unsupported MAC algorithm.
void psa_key_derivation_test(psa_algorithm_t deriv_alg, struct test_result_t *ret)
Key derivation test.
#define TFM_SECURE_CLIENT_2_ID_CRYPTO_ACCESS_CTRL
#define PSA_KEY_TYPE_HMAC
#define PSA_ALG_HKDF(hash_alg)
#define TRUNCATED_AUTH_TAG_LEN
The length of truncated authentication tag for AEAD algorithm.
void psa_hash_test(const psa_algorithm_t alg, struct test_result_t *ret)
Tests different hashing algorithms.
void register_testsuite_s_crypto_interface(struct test_suite_t *p_test_suite)
void psa_policy_invalid_policy_usage_test(struct test_result_t *ret)
Tests invalid policy usage.
int32_t psa_status_t
Function return status.
#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg)
#define PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, tag_length)