Enhancements : Memory usage, clean up and new build option
        1. const qualifier added at appropriate places.
        2. Cleaned redundant code.
        3. New Storage build option introduced.
		-DSUITE=STORAGE to build ITS and PS as single archive
		-DSUITE=INTERNAL_TRUSTED_STORAGE to build ITS only
		-DSUITE=PROTECTED_STORAGE to build PS only

Signed-off-by: Vinay Kumar Kotegowder <vinaykumar.kotegowder@arm.com>
diff --git a/api-tests/CMakeLists.txt b/api-tests/CMakeLists.txt
index 202d0a3..e855d1e 100644
--- a/api-tests/CMakeLists.txt
+++ b/api-tests/CMakeLists.txt
@@ -39,6 +39,7 @@
 	"CRYPTO"
 	"PROTECTED_STORAGE"
 	"INTERNAL_TRUSTED_STORAGE"
+	"STORAGE"
 	"INITIAL_ATTESTATION"
 )
 
@@ -69,6 +70,12 @@
 	"psa/internal_trusted_storage.h"
 )
 
+# list of storage files required
+list(APPEND PSA_STORAGE_FILES
+	${PSA_INTERNAL_TRUSTED_STORAGE_FILES}
+	${PSA_PROTECTED_STORAGE_FILES}
+)
+
 # list of initial_attestation files required
 list(APPEND PSA_INITIAL_ATTESTATION_FILES
 	"psa/initial_attestation.h"
@@ -152,6 +159,9 @@
 if(${SUITE} STREQUAL "IPC")
 	set(PSA_SUITE_DIR		${PSA_ROOT_DIR}/ff/${SUITE_LOWER})
 	set(PSA_SUITE_OUT_DIR		${CMAKE_CURRENT_BINARY_DIR}/ff/${SUITE_LOWER})
+elseif((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "PROTECTED_STORAGE"))
+	set(PSA_SUITE_DIR		${PSA_ROOT_DIR}/dev_apis/storage)
+	set(PSA_SUITE_OUT_DIR		${CMAKE_CURRENT_BINARY_DIR}/dev_apis/storage)
 else()
 	set(PSA_SUITE_DIR		${PSA_ROOT_DIR}/dev_apis/${SUITE_LOWER})
 	set(PSA_SUITE_OUT_DIR		${CMAKE_CURRENT_BINARY_DIR}/dev_apis/${SUITE_LOWER})
@@ -163,9 +173,15 @@
 set(OUTPUT_HEADER			target_database.h)
 set(DATABASE_TABLE_NAME			target_database)
 set(DATABASE_TABLE_SECTION_NAME		"NOSECTION")
-set(TARGET_HEADER_GEN_INCLUDE_PATHS     "${PSA_ROOT_DIR}/val/nspe|${PSA_ROOT_DIR}/val/common|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto")
-set(TESTSUITE_DB			${PSA_SUITE_DIR}/testsuite.db)
-set(PSA_TESTLIST_FILE			${CMAKE_CURRENT_BINARY_DIR}/testlist.txt)
+set(TARGET_HEADER_GEN_INCLUDE_PATHS     "${PSA_ROOT_DIR}/val/nspe|${PSA_ROOT_DIR}/val/common|${PSA_ROOT_DIR}/platform/targets/common/nspe|${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto|${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe")
+if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+	set(TESTSUITE_DB			${PSA_SUITE_DIR}/its_testsuite.db)
+elseif((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
+	set(TESTSUITE_DB			${PSA_SUITE_DIR}/ps_testsuite.db)
+else()
+	set(TESTSUITE_DB			${PSA_SUITE_DIR}/testsuite.db)
+endif()
+set(PSA_TESTLIST_FILE			${CMAKE_CURRENT_BINARY_DIR}/${SUITE_LOWER}_testlist.txt)
 set(PSA_TEST_ENTRY_LIST_INC		${CMAKE_CURRENT_BINARY_DIR}/test_entry_list.inc)
 set(PSA_TEST_ENTRY_FUN_DECLARE_INC	${CMAKE_CURRENT_BINARY_DIR}/test_entry_fn_declare_list.inc)
 set(PSA_CLIENT_TEST_LIST_DELCARE_INC	${CMAKE_CURRENT_BINARY_DIR}/client_tests_list_declare.inc)
@@ -275,14 +291,6 @@
         message(STATUS "[PSA] : Defaulting SP_HEAP_MEM_SUPP to ${SP_HEAP_MEM_SUPP}")
 endif()
 
-if(NOT DEFINED TEST_COMBINE_ARCHIVE)
-	#Default option is to create archive
-	set(TEST_COMBINE_ARCHIVE 1 CACHE INTERNAL "Default TEST_COMBINE_ARCHIVE value" FORCE)
-        message(STATUS "[PSA] : Defaulting TEST_COMBINE_ARCHIVE to ${TEST_COMBINE_ARCHIVE}")
-else()
-    message(STATUS "[PSA] : TEST_COMBINE_ARCHIVE is set to ${TEST_COMBINE_ARCHIVE}")
-endif()
-
 if(NOT DEFINED SUITE_TEST_RANGE)
 	set(SUITE_TEST_RANGE_MIN None)
 	set(SUITE_TEST_RANGE_MAX None)
diff --git a/api-tests/dev_apis/README.md b/api-tests/dev_apis/README.md
index 9860734..d0b6f24 100644
--- a/api-tests/dev_apis/README.md
+++ b/api-tests/dev_apis/README.md
@@ -64,7 +64,7 @@
 -   -DTARGET=<platform_name> is the same as the name of the target-specific directory created in the **platform/targets/** directory. The current release has been tested on **tgt_dev_apis_tfm_an521**, **tgt_dev_apis_tfm_musca_b1** and **tgt_dev_apis_tfm_musca_a** platforms. Refer [Test_failure analysis](../docs/test_failure_analysis.md) document to know the reason for any known test fail.<br />
 -   -DTOOLCHAIN=<tool_chain> Compiler toolchain to be used for test suite compilation. Supported values are GNUARM (GNU Arm Embedded), ARMCLANG (ARM Compiler 6.x) and HOST_GCC. Default is GNUARM.<br />
 -   -DCPU_ARCH=<cpu_architecture_version> is the Arm Architecture version name for which the tests should be compiled. Supported CPU arch are armv8m_ml, armv8m_bl and armv7m. Default is empty. This option is unused when TOOLCHAIN type is HOST_GCC.<br />
--   -DSUITE=<suite_name> is the test suite name. Supported values are CRYPTO, INITIAL_ATTESTATION, PROTECTED_STORAGE and INTERNAL_TRUSTED_STORAGE.<br />
+-   -DSUITE=<suite_name> is the test suite name. Supported values are CRYPTO, INITIAL_ATTESTATION, STORAGE(INTERNAL_TRUSTED_STORAGE and PROTECTED_STORAGE), INTERNAL_TRUSTED_STORAGE and PROTECTED_STORAGE .<br />
 -   -DVERBOSE=<verbose_level>. Print verbosity level. Default is 3. Supported print levels are 1(INFO & above), 2(DEBUG & above), 3(TEST & above), 4(WARN & ERROR) and 5(ERROR).
 -   -DBUILD=<BUILD_DIR> : To select the build directory to keep output files. Default is BUILD/ inside current directory.
 -   -DWATCHDOG_AVAILABLE=<0|1>: Test harness may require to access watchdog timer to recover system hang. 0 means skip watchdog programming in the test suite and 1 means program the watchdog. Default is 1. Note, watchdog must be available for the tests which check the PSA API behaviour on the system reset.
diff --git a/api-tests/dev_apis/crypto/suite.cmake b/api-tests/dev_apis/crypto/suite.cmake
index ddb3128..6f1050f 100644
--- a/api-tests/dev_apis/crypto/suite.cmake
+++ b/api-tests/dev_apis/crypto/suite.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -51,6 +51,7 @@
 	${CMAKE_CURRENT_BINARY_DIR}
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
diff --git a/api-tests/dev_apis/crypto/test_c001/test_c001.c b/api-tests/dev_apis/crypto/test_c001/test_c001.c
index 4f32416..fec7371 100644
--- a/api-tests/dev_apis/crypto/test_c001/test_c001.c
+++ b/api-tests/dev_apis/crypto/test_c001/test_c001.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,7 @@
 #include "val_target.h"
 #include "test_c001.h"
 
-client_test_t test_c001_crypto_list[] = {
+const client_test_t test_c001_crypto_list[] = {
     NULL,
     psa_generate_random_without_init_test,
     psa_crypto_init_test,
diff --git a/api-tests/dev_apis/crypto/test_c001/test_c001.h b/api-tests/dev_apis/crypto/test_c001/test_c001.h
index 0c9c4c9..472ecbb 100644
--- a/api-tests/dev_apis/crypto/test_c001/test_c001.h
+++ b/api-tests/dev_apis/crypto/test_c001/test_c001.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c001_crypto_list[];
+extern const client_test_t test_c001_crypto_list[];
 
 int32_t psa_crypto_init_test(caller_security_t caller);
 int32_t multiple_psa_crypto_init_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c002/test_c002.c b/api-tests/dev_apis/crypto/test_c002/test_c002.c
index a23a797..bafc179 100644
--- a/api-tests/dev_apis/crypto/test_c002/test_c002.c
+++ b/api-tests/dev_apis/crypto/test_c002/test_c002.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c002_crypto_list[] = {
+const client_test_t test_c002_crypto_list[] = {
     NULL,
     psa_import_key_test,
     NULL,
@@ -40,6 +40,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t  get_attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -99,7 +100,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(3));
 
         /* If failure is expected, continue with the next data set */
@@ -107,7 +108,7 @@
             continue;
 
         /* Get the attributes of the imported key and check if it matches the given value */
-        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, key_handle,
                  &get_attributes);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
@@ -118,7 +119,7 @@
         TEST_ASSERT_EQUAL(get_key_bits, check1[i].expected_bit_length, TEST_CHECKPOINT_NUM(6));
 
         /* Export a key in binary format */
-        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, check1[i].key_handle, data,
+        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, key_handle, data,
                                       BUFFER_SIZE, &length);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
@@ -141,14 +142,14 @@
         /* Reset the key attributes and check if psa_import_key fails */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
-        val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_NOT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
-        TEST_ASSERT_EQUAL(check1[i].key_handle, 0, TEST_CHECKPOINT_NUM(13));
+        TEST_ASSERT_EQUAL(key_handle, 0, TEST_CHECKPOINT_NUM(13));
     }
 
     return VAL_STATUS_SUCCESS;
diff --git a/api-tests/dev_apis/crypto/test_c002/test_c002.h b/api-tests/dev_apis/crypto/test_c002/test_c002.h
index fecfedb..f6831e7 100644
--- a/api-tests/dev_apis/crypto/test_c002/test_c002.h
+++ b/api-tests/dev_apis/crypto/test_c002/test_c002.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c002_crypto_list[];
+extern const client_test_t test_c002_crypto_list[];
 
 int32_t psa_import_key_test(caller_security_t caller);
 #endif /* _TEST_C002_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c002/test_data.h b/api-tests/dev_apis/crypto/test_c002/test_data.h
index 38db0a5..116ccd3 100644
--- a/api-tests/dev_apis/crypto/test_c002/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c002/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[34];
     uint32_t                key_length;
@@ -161,11 +160,11 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_import_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_import_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -174,7 +173,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_import_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_import_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05},
  AES_24B_KEY_SIZE, BYTES_TO_BITS(AES_24B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -183,7 +182,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_import_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_import_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -194,13 +193,13 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_import_key 2048 RSA public key\n", 4, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_import_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  2048, 270, PSA_SUCCESS
 },
 
-{"Test psa_import_key with RSA 2048 keypair\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_import_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  2048, 1193, PSA_SUCCESS
@@ -210,7 +209,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_import_key with DES 64 bit key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_import_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, BYTES_TO_BITS(DES_8B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
  BYTES_TO_BITS(DES_8B_KEY_SIZE), DES_8B_KEY_SIZE, PSA_SUCCESS
@@ -218,7 +217,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_import_key with Triple DES 2-Key\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_import_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -227,7 +226,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_import_key with Triple DES 3-Key\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_import_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -239,7 +238,7 @@
 
 #ifdef ARCH_TEST_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_import_key with EC Public key\n", 9,
+{"Test psa_import_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
  {0},
  65, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_ECDSA_ANY,
@@ -248,7 +247,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_import_key with EC keypair\n", 10,
+{"Test psa_import_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  {0},
  28, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_ECDSA_ANY,
@@ -259,7 +258,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES
-{"Test psa_import_key with key data greater than the algorithm size\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_import_key with key data greater than the algorithm size\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -267,7 +266,7 @@
  BYTES_TO_BITS(AES_34B_KEY_SIZE), AES_34B_KEY_SIZE, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_import_key with incorrect key data size\n", 12, PSA_KEY_TYPE_AES,
+{"Test psa_import_key with incorrect key data size\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77},
 AES_18B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -275,7 +274,7 @@
 },
 #endif
 
-{"Test psa_import_key with incorrect key type\n", 13, PSA_KEY_TYPE_VENDOR_FLAG,
+{"Test psa_import_key with incorrect key type\n", PSA_KEY_TYPE_VENDOR_FLAG,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05},
 AES_24B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
diff --git a/api-tests/dev_apis/crypto/test_c003/test_c003.c b/api-tests/dev_apis/crypto/test_c003/test_c003.c
index 47607d8..4f9fa82 100644
--- a/api-tests/dev_apis/crypto/test_c003/test_c003.c
+++ b/api-tests/dev_apis/crypto/test_c003/test_c003.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c003.h"
 #include "test_data.h"
 
-client_test_t test_c003_crypto_list[] = {
+const client_test_t test_c003_crypto_list[] = {
     NULL,
     psa_export_key_test,
     NULL,
@@ -36,6 +36,7 @@
     const uint8_t        *key_data;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -97,11 +98,11 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Export a key in binary format */
-        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, check1[i].key_handle, data,
+        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, key_handle, data,
                                       check1[i].buffer_size, &length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
@@ -126,10 +127,10 @@
         }
 
         /* Destroy the key handle and check if export key fails */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
-        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, check1[i].key_handle, data,
+        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, key_handle, data,
                                       check1[i].buffer_size, &length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(9));
     }
diff --git a/api-tests/dev_apis/crypto/test_c003/test_c003.h b/api-tests/dev_apis/crypto/test_c003/test_c003.h
index 3bd4e53..a376b4f 100644
--- a/api-tests/dev_apis/crypto/test_c003/test_c003.h
+++ b/api-tests/dev_apis/crypto/test_c003/test_c003.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c003_crypto_list[];
+extern const client_test_t test_c003_crypto_list[];
 
 int32_t psa_export_key_test(caller_security_t caller);
 int32_t psa_export_key_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c003/test_data.h b/api-tests/dev_apis/crypto/test_c003/test_data.h
index 625cc17..2197f37 100644
--- a/api-tests/dev_apis/crypto/test_c003/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c003/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[34];
     uint32_t                key_length;
@@ -161,10 +160,10 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_export_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_export_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
@@ -173,7 +172,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_export_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_export_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05},
  AES_24B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
@@ -182,7 +181,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_export_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_export_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -194,13 +193,13 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_export_key 2048 RSA public key\n", 4, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_export_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, BUFFER_SIZE,
  2048, 270, PSA_SUCCESS
 },
 
-{"Test psa_export_key with RSA 2048 keypair\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_export_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, BUFFER_SIZE,
  2048, 1193, PSA_SUCCESS
@@ -210,7 +209,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_export_key with DES 64 bit key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_export_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
  BYTES_TO_BITS(DES_8B_KEY_SIZE), DES_8B_KEY_SIZE, PSA_SUCCESS
@@ -218,7 +217,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_export_key with Triple DES 2-Key\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_export_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
@@ -227,7 +226,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_export_key with Triple DES 3-Key\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_export_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -239,7 +238,7 @@
 
 #ifdef ARCH_TEST_ASYMMETRIC_ENCRYPTION
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_export_key with EC Public key\n", 9,
+{"Test psa_export_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
  {0},
  65, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, BUFFER_SIZE,
@@ -248,7 +247,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_export_key with EC keypair\n", 10,
+{"Test psa_export_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  {0},
  28, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, BUFFER_SIZE,
@@ -259,14 +258,14 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_export_key with key policy verify\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_export_key with key policy verify\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x05},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_VERIFY, PSA_ALG_CTR, BUFFER_SIZE,
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_ERROR_NOT_PERMITTED
 },
 
-{"Test psa_export_key with less buffer size\n", 12, PSA_KEY_TYPE_AES,
+{"Test psa_export_key with less buffer size\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x05},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, 14,
diff --git a/api-tests/dev_apis/crypto/test_c004/test_c004.c b/api-tests/dev_apis/crypto/test_c004/test_c004.c
index 00bdfd3..983ae54 100644
--- a/api-tests/dev_apis/crypto/test_c004/test_c004.c
+++ b/api-tests/dev_apis/crypto/test_c004/test_c004.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c004.h"
 #include "test_data.h"
 
-client_test_t test_c004_crypto_list[] = {
+const client_test_t test_c004_crypto_list[] = {
     NULL,
     test_psa_export_public_key,
     NULL,
@@ -36,6 +36,7 @@
     const uint8_t        *key_data;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -97,11 +98,11 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Export a key in binary format */
-        status = val->crypto_function(VAL_CRYPTO_EXPORT_PUBLIC_KEY, check1[i].key_handle, data,
+        status = val->crypto_function(VAL_CRYPTO_EXPORT_PUBLIC_KEY, key_handle, data,
                                       check1[i].buffer_size, &length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
@@ -132,10 +133,10 @@
         }
 
         /* Destroy the key handle and check if export key fails */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
-        status = val->crypto_function(VAL_CRYPTO_EXPORT_PUBLIC_KEY, check1[i].key_handle, data,
+        status = val->crypto_function(VAL_CRYPTO_EXPORT_PUBLIC_KEY, key_handle, data,
                                       check1[i].buffer_size, &length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(9));
     }
diff --git a/api-tests/dev_apis/crypto/test_c004/test_c004.h b/api-tests/dev_apis/crypto/test_c004/test_c004.h
index b8f27de..0ab1973 100644
--- a/api-tests/dev_apis/crypto/test_c004/test_c004.h
+++ b/api-tests/dev_apis/crypto/test_c004/test_c004.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c004_crypto_list[];
+extern const client_test_t test_c004_crypto_list[];
 
 int32_t test_psa_export_public_key(caller_security_t caller);
 #endif /* _TEST_C004_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c004/test_data.h b/api-tests/dev_apis/crypto/test_c004/test_data.h
index f389a0f..428a112 100644
--- a/api-tests/dev_apis/crypto/test_c004/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c004/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[34];
     uint32_t                key_length;
@@ -192,11 +191,11 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_export_public_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_export_public_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
@@ -205,7 +204,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_export_public_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_export_public_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9},
  AES_24B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
@@ -214,7 +213,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_export_public_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_export_public_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -226,13 +225,13 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_export_public_key 2048 RSA public key\n", 4, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_export_public_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, BUFFER_SIZE,
  2048, 270, PSA_SUCCESS
 },
 
-{"Test psa_export_public_key with RSA 2048 keypair\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_export_public_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, BUFFER_SIZE,
  2048, 270, PSA_SUCCESS
@@ -242,7 +241,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_export_public_key with DES 64 bit key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_export_public_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
  BYTES_TO_BITS(DES_8B_KEY_SIZE), DES_8B_KEY_SIZE, PSA_ERROR_INVALID_ARGUMENT
@@ -250,7 +249,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_export_public_key with Triple DES 2-Key\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_export_public_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BUFFER_SIZE,
@@ -259,7 +258,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_export_public_key with Triple DES 3-Key\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_export_public_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -271,7 +270,7 @@
 
 #ifdef ARCH_TEST_ASYMMETRIC_ENCRYPTION
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_export_public_key with EC Public key\n", 9,
+{"Test psa_export_public_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
  {0},
  65, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, BUFFER_SIZE,
@@ -280,7 +279,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_export_public_key with EC keypair\n", 10,
+{"Test psa_export_public_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  {0},
  28, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, BUFFER_SIZE,
@@ -291,7 +290,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA
-{"Test psa_export_public_key with less buffer size\n", 12, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_export_public_key with less buffer size\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0},
 270, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, 200,
 2048, 270, PSA_ERROR_BUFFER_TOO_SMALL
diff --git a/api-tests/dev_apis/crypto/test_c005/test_c005.c b/api-tests/dev_apis/crypto/test_c005/test_c005.c
index 0dabc9d..d66e9f7 100644
--- a/api-tests/dev_apis/crypto/test_c005/test_c005.c
+++ b/api-tests/dev_apis/crypto/test_c005/test_c005.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c005.h"
 #include "test_data.h"
 
-client_test_t test_c005_crypto_list[] = {
+const client_test_t test_c005_crypto_list[] = {
     NULL,
     psa_destroy_key_test,
     NULL,
@@ -41,6 +41,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t  set_attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -103,15 +104,15 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &set_attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Destroy the key handle */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Getting the attributes of the destroyed key should return error */
-        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, key_handle,
                  &attributes);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(5));
 
@@ -135,7 +136,7 @@
         TEST_ASSERT_EQUAL(get_key_bits,  0, TEST_CHECKPOINT_NUM(11));
 
         /* Destroying an empty key handle should return error */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(12));
 
     }
diff --git a/api-tests/dev_apis/crypto/test_c005/test_c005.h b/api-tests/dev_apis/crypto/test_c005/test_c005.h
index 95e228b..52b5a5e 100644
--- a/api-tests/dev_apis/crypto/test_c005/test_c005.h
+++ b/api-tests/dev_apis/crypto/test_c005/test_c005.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c005_crypto_list[];
+extern const client_test_t test_c005_crypto_list[];
 
 int32_t psa_destroy_key_test(caller_security_t caller);
 #endif /* _TEST_C005_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c005/test_data.h b/api-tests/dev_apis/crypto/test_c005/test_data.h
index 3b70b18..e693af9 100644
--- a/api-tests/dev_apis/crypto/test_c005/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c005/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[34];
     uint32_t                key_length;
@@ -161,11 +160,11 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_destroy_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_destroy_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -175,7 +174,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_destroy_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_destroy_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9},
  AES_24B_KEY_SIZE, BYTES_TO_BITS(AES_24B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -185,7 +184,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_destroy_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_destroy_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -198,14 +197,14 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_destroy_key 2048 RSA public key\n", 4, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_destroy_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270, 2048, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  0x78, PSA_KEY_LIFETIME_VOLATILE,
  2048, PSA_SUCCESS
 },
 
-{"Test psa_destroy_key with RSA 2048 keypair\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_destroy_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193, 2048, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  0x89, PSA_KEY_LIFETIME_VOLATILE,
@@ -216,7 +215,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_destroy_key with DES 64 bit key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_destroy_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, BYTES_TO_BITS(DES_8B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
  0xAB, PSA_KEY_LIFETIME_VOLATILE,
@@ -225,7 +224,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_destroy_key with Triple DES 2-Key\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_destroy_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, BYTES_TO_BITS(DES3_2KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -235,7 +234,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_destroy_key with Triple DES 3-Key\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_destroy_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -248,7 +247,7 @@
 
 #ifdef ARCH_TEST_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_destroy_key with EC Public key\n", 9,
+{"Test psa_destroy_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
  {0},
  65, 256, PSA_KEY_USAGE_EXPORT, PSA_ALG_ECDSA_ANY,
@@ -260,7 +259,7 @@
 
 #ifdef ARCH_TEST_ASYMMETRIC_ENCRYPTION
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_destroy_key with EC keypair\n", 10,
+{"Test psa_destroy_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  {0},
  28, 224, PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION,
diff --git a/api-tests/dev_apis/crypto/test_c006/test_c006.c b/api-tests/dev_apis/crypto/test_c006/test_c006.c
index d6b603f..fc418e5 100644
--- a/api-tests/dev_apis/crypto/test_c006/test_c006.c
+++ b/api-tests/dev_apis/crypto/test_c006/test_c006.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c006_crypto_list[] = {
+const client_test_t test_c006_crypto_list[] = {
     NULL,
     psa_hash_compute_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c006/test_c006.h b/api-tests/dev_apis/crypto/test_c006/test_c006.h
index 9a1a622..12dbbcd 100644
--- a/api-tests/dev_apis/crypto/test_c006/test_c006.h
+++ b/api-tests/dev_apis/crypto/test_c006/test_c006.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c006_crypto_list[];
+extern const client_test_t test_c006_crypto_list[];
 
 int32_t psa_hash_compute_test(caller_security_t caller);
 #endif /* _TEST_C006_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c006/test_data.h b/api-tests/dev_apis/crypto/test_c006/test_data.h
index 5aeee35..f238ef7 100644
--- a/api-tests/dev_apis/crypto/test_c006/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c006/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@
 0xcb, 0x7b, 0x00, 0xae, 0xa8, 0x91, 0x49, 0x9c, 0xf4, 0xef, 0x6a, 0x03, 0xc8, 0xa8, 0x3f, 0xe3,
 0x7c, 0x3f, 0x7b, 0xaf};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_compute with MD2 algorithm\n",
  PSA_ALG_MD2, 0xbd, 1,
diff --git a/api-tests/dev_apis/crypto/test_c007/test_c007.c b/api-tests/dev_apis/crypto/test_c007/test_c007.c
index 895242a..d3046c1 100644
--- a/api-tests/dev_apis/crypto/test_c007/test_c007.c
+++ b/api-tests/dev_apis/crypto/test_c007/test_c007.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c007_crypto_list[] = {
+const client_test_t test_c007_crypto_list[] = {
     NULL,
     psa_hash_compare_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c007/test_c007.h b/api-tests/dev_apis/crypto/test_c007/test_c007.h
index fb5c385..9e9c357 100644
--- a/api-tests/dev_apis/crypto/test_c007/test_c007.h
+++ b/api-tests/dev_apis/crypto/test_c007/test_c007.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c007_crypto_list[];
+extern const client_test_t test_c007_crypto_list[];
 
 int32_t psa_hash_compare_test(caller_security_t caller);
 #endif /* _TEST_C007_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c007/test_data.h b/api-tests/dev_apis/crypto/test_c007/test_data.h
index 5d6dc86..c2a04bc 100644
--- a/api-tests/dev_apis/crypto/test_c007/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c007/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@
 0xcb, 0x7b, 0x00, 0xae, 0xa8, 0x91, 0x49, 0x9c, 0xf4, 0xef, 0x6a, 0x03, 0xc8, 0xa8, 0x3f, 0xe3,
 0x7c, 0x3f, 0x7b, 0xaf};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_compare with MD2 algorithm\n",
  PSA_ALG_MD2, 0xbd, 1,
diff --git a/api-tests/dev_apis/crypto/test_c008/test_c008.c b/api-tests/dev_apis/crypto/test_c008/test_c008.c
index 5063c13..a4e8387 100644
--- a/api-tests/dev_apis/crypto/test_c008/test_c008.c
+++ b/api-tests/dev_apis/crypto/test_c008/test_c008.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c008_crypto_list[] = {
+const client_test_t test_c008_crypto_list[] = {
     NULL,
     psa_key_derivation_setup_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c008/test_c008.h b/api-tests/dev_apis/crypto/test_c008/test_c008.h
index c86acf8..c8b1cfb 100644
--- a/api-tests/dev_apis/crypto/test_c008/test_c008.h
+++ b/api-tests/dev_apis/crypto/test_c008/test_c008.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c008_crypto_list[];
+extern const client_test_t test_c008_crypto_list[];
 
 int32_t psa_key_derivation_setup_test(caller_security_t caller);
 #endif /* _TEST_C008_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c008/test_data.h b/api-tests/dev_apis/crypto/test_c008/test_data.h
index a350c16..f5e356f 100644
--- a/api-tests/dev_apis/crypto/test_c008/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c008/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,7 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 {"Test psa_key_derivation_setup - ECDH + HKDF-SHA-256\n",
  PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)),
  PSA_SUCCESS
diff --git a/api-tests/dev_apis/crypto/test_c009/test_c009.c b/api-tests/dev_apis/crypto/test_c009/test_c009.c
index 1288bf6..0dd6dc2 100644
--- a/api-tests/dev_apis/crypto/test_c009/test_c009.c
+++ b/api-tests/dev_apis/crypto/test_c009/test_c009.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c009_crypto_list[] = {
+const client_test_t test_c009_crypto_list[] = {
     NULL,
     psa_key_derivation_input_bytes_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c009/test_c009.h b/api-tests/dev_apis/crypto/test_c009/test_c009.h
index 356ad72..4730d6d 100644
--- a/api-tests/dev_apis/crypto/test_c009/test_c009.h
+++ b/api-tests/dev_apis/crypto/test_c009/test_c009.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c009_crypto_list[];
+extern const client_test_t test_c009_crypto_list[];
 
 int32_t psa_key_derivation_input_bytes_test(caller_security_t caller);
 #endif /* _TEST_C009_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c009/test_data.h b/api-tests/dev_apis/crypto/test_c009/test_data.h
index d485067..bf8e7b6 100644
--- a/api-tests/dev_apis/crypto/test_c009/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c009/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
     psa_status_t                expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 {"Test psa_key_derivation_input_bytes - Step as Info\n",
  PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)),
  "abcdefghijklmnop", 16,
diff --git a/api-tests/dev_apis/crypto/test_c010/test_c010.c b/api-tests/dev_apis/crypto/test_c010/test_c010.c
index 5455c0a..2e29adb 100644
--- a/api-tests/dev_apis/crypto/test_c010/test_c010.c
+++ b/api-tests/dev_apis/crypto/test_c010/test_c010.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c010_crypto_list[] = {
+const client_test_t test_c010_crypto_list[] = {
     NULL,
     psa_key_attributes_set_get_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c010/test_c010.h b/api-tests/dev_apis/crypto/test_c010/test_c010.h
index 7159b5a..94f0d37 100644
--- a/api-tests/dev_apis/crypto/test_c010/test_c010.h
+++ b/api-tests/dev_apis/crypto/test_c010/test_c010.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c010_crypto_list[];
+extern const client_test_t test_c010_crypto_list[];
 
 int32_t psa_key_attributes_set_get_test(caller_security_t caller);
 #endif /* _TEST_C010_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c010/test_data.h b/api-tests/dev_apis/crypto/test_c010/test_data.h
index d6dc65d..2854892 100644
--- a/api-tests/dev_apis/crypto/test_c010/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c010/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
     psa_key_lifetime_t      lifetime;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 {"Test set/get key attributes\n", PSA_KEY_TYPE_AES, BYTES_TO_BITS(AES_16B_KEY_SIZE),
  PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, 0x1234,
  PSA_KEY_LIFETIME_PERSISTENT
diff --git a/api-tests/dev_apis/crypto/test_c011/test_c011.c b/api-tests/dev_apis/crypto/test_c011/test_c011.c
index 4abab81..5f15b18 100644
--- a/api-tests/dev_apis/crypto/test_c011/test_c011.c
+++ b/api-tests/dev_apis/crypto/test_c011/test_c011.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c011_crypto_list[] = {
+const client_test_t test_c011_crypto_list[] = {
     NULL,
     psa_hash_setup_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c011/test_c011.h b/api-tests/dev_apis/crypto/test_c011/test_c011.h
index b16284b..d89176d 100644
--- a/api-tests/dev_apis/crypto/test_c011/test_c011.h
+++ b/api-tests/dev_apis/crypto/test_c011/test_c011.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c011_crypto_list[];
+extern const client_test_t test_c011_crypto_list[];
 
 int32_t psa_hash_setup_test(caller_security_t caller);
 int32_t psa_get_key_lifetime_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c011/test_data.h b/api-tests/dev_apis/crypto/test_c011/test_data.h
index 64b233b..b2300c9 100644
--- a/api-tests/dev_apis/crypto/test_c011/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c011/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,7 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_setup with MD2 algorithm\n",
  PSA_ALG_MD2, PSA_SUCCESS,
diff --git a/api-tests/dev_apis/crypto/test_c012/test_c012.c b/api-tests/dev_apis/crypto/test_c012/test_c012.c
index 3e3cc21..d290702 100644
--- a/api-tests/dev_apis/crypto/test_c012/test_c012.c
+++ b/api-tests/dev_apis/crypto/test_c012/test_c012.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c012_crypto_list[] = {
+const client_test_t test_c012_crypto_list[] = {
     NULL,
     psa_hash_update_test,
     psa_hash_update_invalid_handle,
diff --git a/api-tests/dev_apis/crypto/test_c012/test_c012.h b/api-tests/dev_apis/crypto/test_c012/test_c012.h
index acbf777..b541d99 100644
--- a/api-tests/dev_apis/crypto/test_c012/test_c012.h
+++ b/api-tests/dev_apis/crypto/test_c012/test_c012.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c012_crypto_list[];
+extern const client_test_t test_c012_crypto_list[];
 
 int32_t psa_hash_update_test(caller_security_t caller);
 int32_t psa_hash_update_invalid_handle(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c012/test_data.h b/api-tests/dev_apis/crypto/test_c012/test_data.h
index f5c4f52..fdbef81 100644
--- a/api-tests/dev_apis/crypto/test_c012/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c012/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_update with MD2 algorithm\n",
  PSA_ALG_MD2, "Hello World", 11, PSA_SUCCESS,
diff --git a/api-tests/dev_apis/crypto/test_c013/test_c013.c b/api-tests/dev_apis/crypto/test_c013/test_c013.c
index 772ea61..6477465 100644
--- a/api-tests/dev_apis/crypto/test_c013/test_c013.c
+++ b/api-tests/dev_apis/crypto/test_c013/test_c013.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c013_crypto_list[] = {
+const client_test_t test_c013_crypto_list[] = {
     NULL,
     psa_hash_verify_test,
     psa_hash_verify_inactive_operation_handle,
diff --git a/api-tests/dev_apis/crypto/test_c013/test_c013.h b/api-tests/dev_apis/crypto/test_c013/test_c013.h
index 2e72127..8dd0646 100644
--- a/api-tests/dev_apis/crypto/test_c013/test_c013.h
+++ b/api-tests/dev_apis/crypto/test_c013/test_c013.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c013_crypto_list[];
+extern const client_test_t test_c013_crypto_list[];
 
 int32_t psa_hash_verify_test(caller_security_t caller);
 int32_t psa_hash_verify_inactive_operation_handle(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c013/test_data.h b/api-tests/dev_apis/crypto/test_c013/test_data.h
index 520309a..463e4e3 100644
--- a/api-tests/dev_apis/crypto/test_c013/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c013/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@
 0xcb, 0x7b, 0x00, 0xae, 0xa8, 0x91, 0x49, 0x9c, 0xf4, 0xef, 0x6a, 0x03, 0xc8, 0xa8, 0x3f, 0xe3,
 0x7c, 0x3f, 0x7b, 0xaf};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_verify with MD2 algorithm\n",
  PSA_ALG_MD2, 0xbd, 1,
diff --git a/api-tests/dev_apis/crypto/test_c014/test_c014.c b/api-tests/dev_apis/crypto/test_c014/test_c014.c
index c1eda35..796072b 100644
--- a/api-tests/dev_apis/crypto/test_c014/test_c014.c
+++ b/api-tests/dev_apis/crypto/test_c014/test_c014.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c014_crypto_list[] = {
+const client_test_t test_c014_crypto_list[] = {
     NULL,
     psa_hash_finish_test,
     psa_hash_finish_inactive_operation_handle,
diff --git a/api-tests/dev_apis/crypto/test_c014/test_c014.h b/api-tests/dev_apis/crypto/test_c014/test_c014.h
index 81b92ee..412c0c2 100644
--- a/api-tests/dev_apis/crypto/test_c014/test_c014.h
+++ b/api-tests/dev_apis/crypto/test_c014/test_c014.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c014_crypto_list[];
+extern const client_test_t test_c014_crypto_list[];
 
 int32_t psa_hash_finish_test(caller_security_t caller);
 int32_t psa_hash_finish_inactive_operation_handle(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c014/test_data.h b/api-tests/dev_apis/crypto/test_c014/test_data.h
index fb0fdb4..b8d77f6 100644
--- a/api-tests/dev_apis/crypto/test_c014/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c014/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@
 0xcb, 0x7b, 0x00, 0xae, 0xa8, 0x91, 0x49, 0x9c, 0xf4, 0xef, 0x6a, 0x03, 0xc8, 0xa8, 0x3f, 0xe3,
 0x7c, 0x3f, 0x7b, 0xaf};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_finish with MD2 algorithm\n",
  PSA_ALG_MD2, 0xbd, 1,
diff --git a/api-tests/dev_apis/crypto/test_c015/test_c015.c b/api-tests/dev_apis/crypto/test_c015/test_c015.c
index cd5c96d..21f736b 100644
--- a/api-tests/dev_apis/crypto/test_c015/test_c015.c
+++ b/api-tests/dev_apis/crypto/test_c015/test_c015.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c015_crypto_list[] = {
+const client_test_t test_c015_crypto_list[] = {
     NULL,
     psa_hash_abort_test,
     psa_hash_abort_before_operation_finish,
diff --git a/api-tests/dev_apis/crypto/test_c015/test_c015.h b/api-tests/dev_apis/crypto/test_c015/test_c015.h
index b3edc26..28f4b62 100644
--- a/api-tests/dev_apis/crypto/test_c015/test_c015.h
+++ b/api-tests/dev_apis/crypto/test_c015/test_c015.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c015_crypto_list[];
+extern const client_test_t test_c015_crypto_list[];
 
 int32_t psa_hash_abort_test(caller_security_t caller);
 int32_t psa_hash_abort_before_operation_finish(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c015/test_data.h b/api-tests/dev_apis/crypto/test_c015/test_data.h
index 98ec64c..a9c20f8 100644
--- a/api-tests/dev_apis/crypto/test_c015/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c015/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,7 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_abort with MD2 algorithm\n",
  PSA_ALG_MD2, PSA_SUCCESS,
diff --git a/api-tests/dev_apis/crypto/test_c016/test_c016.c b/api-tests/dev_apis/crypto/test_c016/test_c016.c
index 58f847f..347990e 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_c016.c
+++ b/api-tests/dev_apis/crypto/test_c016/test_c016.c
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c016_crypto_list[] = {
+const client_test_t test_c016_crypto_list[] = {
     NULL,
     psa_generate_key_test,
     NULL,
@@ -41,6 +41,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t  get_attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -69,14 +70,14 @@
         val->crypto_function(VAL_CRYPTO_SET_KEY_ALGORITHM, &attributes, check1[i].key_alg);
 
         /* Generate the key */
-        status = val->crypto_function(VAL_CRYPTO_GENERATE_KEY, &attributes, &check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_GENERATE_KEY, &attributes, &key_handle);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(3));
 
         if (check1[i].expected_status != PSA_SUCCESS)
             continue;
 
         /* Get the attributes of the imported key and check if it matches the given value */
-        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, key_handle,
                  &get_attributes);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
@@ -93,7 +94,7 @@
         TEST_ASSERT_EQUAL(get_key_alg, check1[i].key_alg, TEST_CHECKPOINT_NUM(8));
 
         /* Export a key in binary format */
-        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, check1[i].key_handle, data,
+        status = val->crypto_function(VAL_CRYPTO_EXPORT_KEY, key_handle, data,
                                       BUFFER_SIZE, &length);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
@@ -105,7 +106,7 @@
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &get_attributes);
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
     }
 
diff --git a/api-tests/dev_apis/crypto/test_c016/test_c016.h b/api-tests/dev_apis/crypto/test_c016/test_c016.h
index 86ed985..7d894ae 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_c016.h
+++ b/api-tests/dev_apis/crypto/test_c016/test_c016.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c016_crypto_list[];
+extern const client_test_t test_c016_crypto_list[];
 
 int32_t psa_generate_key_test(caller_security_t caller);
 #endif /* _TEST_C016_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c016/test_data.h b/api-tests/dev_apis/crypto/test_c016/test_data.h
index 904ab4b..4f5b026 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c016/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     psa_key_usage_t         usage;
     psa_algorithm_t         key_alg;
@@ -29,45 +28,45 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_generate_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_generate_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
  BYTES_TO_BITS(AES_16B_KEY_SIZE), {AES_16B_KEY_SIZE, AES_16B_KEY_SIZE}, PSA_SUCCESS
 },
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_generate_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_generate_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(AES_24B_KEY_SIZE),
  BYTES_TO_BITS(AES_24B_KEY_SIZE), {AES_24B_KEY_SIZE, AES_24B_KEY_SIZE}, PSA_SUCCESS
 },
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_generate_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_generate_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(AES_32B_KEY_SIZE),
  BYTES_TO_BITS(AES_32B_KEY_SIZE), {AES_32B_KEY_SIZE, AES_32B_KEY_SIZE}, PSA_SUCCESS
 },
 #endif
 
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_generate_key with DES 64 bit key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_generate_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(DES_8B_KEY_SIZE),
  BYTES_TO_BITS(DES_8B_KEY_SIZE), {DES_8B_KEY_SIZE, DES_8B_KEY_SIZE}, PSA_SUCCESS
 },
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_generate_key with Triple DES 2-Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_generate_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(DES3_2KEY_SIZE),
  BYTES_TO_BITS(DES3_2KEY_SIZE), {DES3_2KEY_SIZE, DES3_2KEY_SIZE}, PSA_SUCCESS
 },
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_generate_key with Triple DES 3-Key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_generate_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(DES3_3KEY_SIZE),
  BYTES_TO_BITS(DES3_3KEY_SIZE), {DES3_3KEY_SIZE, DES3_3KEY_SIZE}, PSA_SUCCESS
 },
@@ -78,7 +77,7 @@
 #ifdef ARCH_TEST_RSA
 #ifdef ARCH_TEST_RSA_2048
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_generate_key with RSA 2048 Keypair\n", 7, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_generate_key with RSA 2048 Keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  2048, 2048, {1190, 1194}, PSA_SUCCESS
 },
@@ -88,7 +87,7 @@
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
 #ifdef ARCH_TEST_ASYMMETRIC_ENCRYPTION
-{"Test psa_generate_key with ECC KeyPair\n", 8,
+{"Test psa_generate_key with ECC KeyPair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, 224,
  224, {28, 28}, PSA_SUCCESS
@@ -98,19 +97,19 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_generate_key with RSA 2048 Public key\n", 9, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_generate_key with RSA 2048 Public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  2048, 2048, {1190, 1194}, PSA_ERROR_NOT_SUPPORTED
 },
 #endif
 #endif
 
-{"Test psa_generate_key with invalid key type\n", 10, 0,
+{"Test psa_generate_key with invalid key type\n", 0,
  PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
  BYTES_TO_BITS(AES_16B_KEY_SIZE), {AES_16B_KEY_SIZE, AES_16B_KEY_SIZE}, PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_generate_key with invalid usage flags\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_generate_key with invalid usage flags\n", PSA_KEY_TYPE_AES,
  PSA_KEY_USAGE_INVALID, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
  BYTES_TO_BITS(AES_16B_KEY_SIZE), {AES_16B_KEY_SIZE, AES_16B_KEY_SIZE}, PSA_ERROR_INVALID_ARGUMENT
 },
diff --git a/api-tests/dev_apis/crypto/test_c017/test_c017.c b/api-tests/dev_apis/crypto/test_c017/test_c017.c
index 9088ddf..6fdcb48 100644
--- a/api-tests/dev_apis/crypto/test_c017/test_c017.c
+++ b/api-tests/dev_apis/crypto/test_c017/test_c017.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c017_crypto_list[] = {
+const client_test_t test_c017_crypto_list[] = {
     NULL,
     psa_generate_random_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c017/test_c017.h b/api-tests/dev_apis/crypto/test_c017/test_c017.h
index aaf24a0..56f5aa2 100644
--- a/api-tests/dev_apis/crypto/test_c017/test_c017.h
+++ b/api-tests/dev_apis/crypto/test_c017/test_c017.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c017_crypto_list[];
+extern const client_test_t test_c017_crypto_list[];
 
 int32_t psa_generate_random_test(caller_security_t caller);
 #endif /* _TEST_C017_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c017/test_data.h b/api-tests/dev_apis/crypto/test_c017/test_data.h
index 53a7c24..49b7a5f 100644
--- a/api-tests/dev_apis/crypto/test_c017/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c017/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,7 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 {"Test psa_generate_random to get 0 Byte data\n", 0, PSA_SUCCESS
 },
 
diff --git a/api-tests/dev_apis/crypto/test_c018/test_c018.c b/api-tests/dev_apis/crypto/test_c018/test_c018.c
index 154d4d6..5754495 100644
--- a/api-tests/dev_apis/crypto/test_c018/test_c018.c
+++ b/api-tests/dev_apis/crypto/test_c018/test_c018.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c018_crypto_list[] = {
+const client_test_t test_c018_crypto_list[] = {
     NULL,
     psa_key_derivation_input_key_test,
     psa_key_derivation_input_key_negative_test,
@@ -37,6 +37,7 @@
     int                            num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT;
     psa_key_attributes_t           attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t               key_handle;
 
     if (num_checks == 0)
     {
@@ -97,7 +98,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (check1[i].expected_status == PSA_SUCCESS)
@@ -106,7 +107,7 @@
              * failure.
              */
             status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY, &operation,
-                     check1[i].step, check1[i].key_handle);
+                     check1[i].step, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(4));
         }
 
@@ -117,7 +118,7 @@
 
         /* Provide an input for key derivation or key agreement */
         status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY, &operation,
-                 check1[i].step, check1[i].key_handle);
+                 check1[i].step, key_handle);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
 
         if (check1[i].expected_status != PSA_SUCCESS)
@@ -129,12 +130,12 @@
             continue;
         }
 
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Provide an input for key derivation or key agreement */
         status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY, &operation,
-                 check1[i].step, check1[i].key_handle);
+                 check1[i].step, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(9));
 
         /* Abort the key derivation operation */
@@ -153,6 +154,7 @@
     int32_t                        i, status;
     int                            num_checks = sizeof(check2)/sizeof(check2[0]);
     psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT;
+    psa_key_handle_t               key_handle = 11;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -175,7 +177,7 @@
 
         /* Provide an input for key derivation or key agreement */
         status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY, &operation,
-                 check2[i].step, check2[i].key_handle);
+                 check2[i].step, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(4));
 
         /* Abort the key derivation operation */
diff --git a/api-tests/dev_apis/crypto/test_c018/test_c018.h b/api-tests/dev_apis/crypto/test_c018/test_c018.h
index 02555ba..429379a 100644
--- a/api-tests/dev_apis/crypto/test_c018/test_c018.h
+++ b/api-tests/dev_apis/crypto/test_c018/test_c018.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c018_crypto_list[];
+extern const client_test_t test_c018_crypto_list[];
 
 int32_t psa_key_derivation_input_key_test(caller_security_t caller);
 int32_t psa_key_derivation_input_key_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c018/test_data.h b/api-tests/dev_apis/crypto/test_c018/test_data.h
index 56d26fc..14d777b 100644
--- a/api-tests/dev_apis/crypto/test_c018/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c018/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                        test_desc[75];
-    psa_key_handle_t            key_handle;
     psa_key_type_t              key_type;
     uint8_t                     key_data[34];
     uint32_t                    key_length;
@@ -163,9 +162,9 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 
-{"Test psa_key_derivation_input_key 16 Byte Key\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key 16 Byte Key\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -173,7 +172,7 @@
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_input_key with invalid usage\n", 2, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key with invalid usage\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -181,7 +180,7 @@
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_ERROR_NOT_PERMITTED
 },
 
-{"Test psa_key_derivation_input_key with step as label\n", 3, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key with step as label\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -189,7 +188,7 @@
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_key_derivation_input_key with step as info\n", 4, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key with step as info\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -197,7 +196,7 @@
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_key_derivation_input_key with step as seed\n", 5, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key with step as seed\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -205,7 +204,7 @@
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_key_derivation_input_key with step as salt\n", 6, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key with step as salt\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -214,7 +213,7 @@
 },
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_key_derivation_input_key with key type as AES(not derive)\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_key_derivation_input_key with key type as AES(not derive)\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05},
  AES_24B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -223,7 +222,7 @@
 },
 #endif
 
-{"Test psa_key_derivation_input_key incorrect key algorithm\n", 8, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key incorrect key algorithm\n", PSA_KEY_TYPE_DERIVE,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -234,14 +233,14 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_key_derivation_input_key 2048 RSA public key\n", 9, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_key_derivation_input_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256), PSA_KEY_DERIVATION_INPUT_SECRET,
  PSA_ALG_HKDF(PSA_ALG_SHA_256),
  2048, 270, PSA_ERROR_INVALID_ARGUMENT,
 },
 
-{"Test psa_key_derivation_input_key with RSA 2048 keypair\n", 10, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_key_derivation_input_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256), PSA_KEY_DERIVATION_INPUT_SECRET,
  PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -250,7 +249,7 @@
 #endif
 #endif
 
-{"Test psa_key_derivation_input_key with zero as step\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key with zero as step\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
@@ -259,9 +258,9 @@
 },
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 
-{"Test psa_key_derivation_input_key invalid handle\n", 11, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_input_key invalid handle\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_DERIVE, PSA_ALG_HKDF(PSA_ALG_SHA_256),
diff --git a/api-tests/dev_apis/crypto/test_c019/test_c019.c b/api-tests/dev_apis/crypto/test_c019/test_c019.c
index 7593f8c..f2dc24b 100644
--- a/api-tests/dev_apis/crypto/test_c019/test_c019.c
+++ b/api-tests/dev_apis/crypto/test_c019/test_c019.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c019.h"
 #include "test_data.h"
 
-client_test_t test_c019_crypto_list[] = {
+const client_test_t test_c019_crypto_list[] = {
     NULL,
     psa_key_derivation_key_agreement_test,
     psa_key_derivation_key_agreement_negative_test,
@@ -35,6 +35,7 @@
     int32_t                         i, status;
     psa_key_attributes_t            attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_derivation_operation_t  operation = PSA_KEY_DERIVATION_OPERATION_INIT;
+    psa_key_handle_t                key_handle;
 
     if (num_checks == 0)
     {
@@ -62,7 +63,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set up a key agreement operation */
@@ -72,7 +73,7 @@
 
         /* Perform a key agreement */
         status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT, &operation,
-                 check1[i].step, check1[i].key_handle, check1[i].peer_key,
+                 check1[i].step, key_handle, check1[i].peer_key,
                  check1[i].peer_key_length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(5));
 
@@ -87,7 +88,7 @@
             continue;
 
         /* Destroy a key and restore the slot to its default state */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
     }
 
@@ -98,7 +99,8 @@
 {
     int32_t                         i, status;
     int                             num_checks = sizeof(check2)/sizeof(check2[0]);
-    psa_key_derivation_operation_t  operation = PSA_KEY_DERIVATION_OPERATION_INIT;
+    psa_key_derivation_operation_t  operation  = PSA_KEY_DERIVATION_OPERATION_INIT;
+    psa_key_handle_t                key_handle = 8;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -119,7 +121,7 @@
 
         /* Set up a key agreement operation */
         status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT, &operation,
-                 check2[i].step, check2[i].key_handle, check2[i].peer_key,
+                 check2[i].step, key_handle, check2[i].peer_key,
                  check2[i].peer_key_length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(4));
 
diff --git a/api-tests/dev_apis/crypto/test_c019/test_c019.h b/api-tests/dev_apis/crypto/test_c019/test_c019.h
index 40f2a36..33e9fdb 100644
--- a/api-tests/dev_apis/crypto/test_c019/test_c019.h
+++ b/api-tests/dev_apis/crypto/test_c019/test_c019.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c019_crypto_list[];
+extern const client_test_t test_c019_crypto_list[];
 
 int32_t psa_key_derivation_key_agreement_test(caller_security_t caller);
 int32_t psa_key_derivation_key_agreement_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c019/test_data.h b/api-tests/dev_apis/crypto/test_c019/test_data.h
index 4ce7bd7..0e6f24b 100644
--- a/api-tests/dev_apis/crypto/test_c019/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c019/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                        test_desc[85];
-    psa_key_handle_t            key_handle;
     psa_key_type_t              key_type;
     uint8_t                     key_data[91];
     uint32_t                    key_length;
@@ -32,10 +31,10 @@
 } test_data;
 
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_ECDH
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_key_derivation_key_agreement - ECDH SECP256R1\n", 1,
+{"Test psa_key_derivation_key_agreement - ECDH SECP256R1\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -50,7 +49,7 @@
  65, PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_key_agreement - Invalid step\n", 2,
+{"Test psa_key_derivation_key_agreement - Invalid step\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -68,7 +67,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP384R1
-{"Test psa_key_derivation_key_agreement - ECDH SECP384R1\n", 3,
+{"Test psa_key_derivation_key_agreement - ECDH SECP384R1\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP384R1),
 {0x09, 0x9f, 0x3c, 0x70, 0x34, 0xd4, 0xa2, 0xc6, 0x99, 0x88, 0x4d, 0x73, 0xa3,
  0x75, 0xa6, 0x7f, 0x76, 0x24, 0xef, 0x7c, 0x6b, 0x3c, 0x0f, 0x16, 0x06, 0x47,
@@ -90,7 +89,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_key_derivation_key_agreement - Invalid usage\n", 4,
+{"Test psa_key_derivation_key_agreement - Invalid usage\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -111,7 +110,7 @@
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_HKDF
-{"Test psa_key_derivation_key_agreement - KDF instead of a key agreement algorithm\n", 5,
+{"Test psa_key_derivation_key_agreement - KDF instead of a key agreement algorithm\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -129,7 +128,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECDH
-{"Test psa_key_derivation_key_agreement - Public key on different curve\n", 6,
+{"Test psa_key_derivation_key_agreement - Public key on different curve\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -148,7 +147,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_key_derivation_key_agreement - Public key instead of private key\n", 7,
+{"Test psa_key_derivation_key_agreement - Public key instead of private key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
 {0x04, 0xd1, 0x2d, 0xfb, 0x52, 0x89, 0xc8, 0xd4, 0xf8, 0x12, 0x08, 0xb7, 0x02,
  0x70, 0x39, 0x8c, 0x34, 0x22, 0x96, 0x97, 0x0a, 0x0b, 0xcc, 0xb7, 0x4c, 0x73,
@@ -169,10 +168,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_ECDH
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_key_derivation_key_agreement - Negative case\n", 8,
+{"Test psa_key_derivation_key_agreement - Negative case\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
diff --git a/api-tests/dev_apis/crypto/test_c020/test_c020.c b/api-tests/dev_apis/crypto/test_c020/test_c020.c
index b4f4037..b954fdb 100644
--- a/api-tests/dev_apis/crypto/test_c020/test_c020.c
+++ b/api-tests/dev_apis/crypto/test_c020/test_c020.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c020_crypto_list[] = {
+const client_test_t test_c020_crypto_list[] = {
     NULL,
     psa_key_derivation_output_bytes_test,
     NULL,
@@ -36,6 +36,7 @@
     int                             num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t            attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_derivation_operation_t  operation = PSA_KEY_DERIVATION_OPERATION_INIT;
+    psa_key_handle_t                key_handle;
 
     if (num_checks == 0)
     {
@@ -66,7 +67,7 @@
 
             /* Import the key data into the key slot */
             status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                     check1[i].key_length, &check1[i].key_handle);
+                     check1[i].key_length, &key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
         }
 
@@ -85,7 +86,7 @@
         {
             /* Provide an input for key derivation or key agreement */
             status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY, &operation,
-                     check1[i].step, check1[i].key_handle);
+                     check1[i].step, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
         }
         else
@@ -102,7 +103,7 @@
 
         if (check1[i].step == PSA_KEY_DERIVATION_INPUT_SECRET)
         {
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
             /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c020/test_c020.h b/api-tests/dev_apis/crypto/test_c020/test_c020.h
index 3e3cdb3..ce60af6 100644
--- a/api-tests/dev_apis/crypto/test_c020/test_c020.h
+++ b/api-tests/dev_apis/crypto/test_c020/test_c020.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c020_crypto_list[];
+extern const client_test_t test_c020_crypto_list[];
 
 int32_t psa_key_derivation_output_bytes_test(caller_security_t caller);
 #endif /* _TEST_C020_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c020/test_data.h b/api-tests/dev_apis/crypto/test_c020/test_data.h
index e1c6bbf..de8ec52 100644
--- a/api-tests/dev_apis/crypto/test_c020/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c020/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                        test_desc[75];
-    psa_key_handle_t            key_handle;
     psa_key_type_t              key_type;
     uint8_t                     key_data[34];
     uint32_t                    key_length;
@@ -33,8 +32,8 @@
     psa_status_t                expected_status;
 } test_data;
 
-static test_data check1[] = {
-{"Test psa_key_derivation_output_bytes - Key\n", 1, PSA_KEY_TYPE_DERIVE,
+static const test_data check1[] = {
+{"Test psa_key_derivation_output_bytes - Key\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 42, PSA_KEY_USAGE_DERIVE,
@@ -43,31 +42,31 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_bytes - Info\n", 2, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_bytes - Info\n", PSA_KEY_TYPE_DERIVE,
 {0}, 0, 42, 0, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)),
  PSA_KEY_DERIVATION_INPUT_INFO, 42, "This is the info", 16,
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_bytes - Salt\n", 3, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_bytes - Salt\n", PSA_KEY_TYPE_DERIVE,
 {0}, 0, 42, 0, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)),
  PSA_KEY_DERIVATION_INPUT_SALT, 42, "This is the info", 16,
  PSA_ERROR_BAD_STATE
 },
 
-{"Test psa_key_derivation_output_bytes - Label\n", 4, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_bytes - Label\n", PSA_KEY_TYPE_DERIVE,
 {0}, 0, 42, 0, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)),
  PSA_KEY_DERIVATION_INPUT_LABEL, 42, "This is the info", 16,
  PSA_ERROR_BAD_STATE
 },
 
-{"Test psa_key_derivation_output_bytes - Seed\n", 5, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_bytes - Seed\n", PSA_KEY_TYPE_DERIVE,
 {0}, 0, 42, 0, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)),
  PSA_KEY_DERIVATION_INPUT_SEED, 42, "This is the info", 16,
  PSA_ERROR_BAD_STATE
 },
 
-{"Test psa_key_derivation_output_bytes - Greater Capacity than available\n", 6, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_bytes - Greater Capacity than available\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, BUFFER_SIZE, PSA_KEY_USAGE_DERIVE,
diff --git a/api-tests/dev_apis/crypto/test_c021/test_c021.c b/api-tests/dev_apis/crypto/test_c021/test_c021.c
index 78a3571..6d3ff4e 100644
--- a/api-tests/dev_apis/crypto/test_c021/test_c021.c
+++ b/api-tests/dev_apis/crypto/test_c021/test_c021.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 #define     SLOT_1      1
 #define     SLOT_2      2
 
-client_test_t test_c021_crypto_list[] = {
+const client_test_t test_c021_crypto_list[] = {
     NULL,
     psa_key_derivation_output_key_test,
     NULL,
@@ -40,6 +40,7 @@
     psa_key_attributes_t            attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t            derv_attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_derivation_operation_t  operation = PSA_KEY_DERIVATION_OPERATION_INIT;
+    psa_key_handle_t                tdata_key_handle;
 
     if (num_checks == 0)
     {
@@ -70,7 +71,7 @@
         {
             /* Import the key data into the key slot */
             status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                     check1[i].key_length, &check1[i].key_handle);
+                     check1[i].key_length, &tdata_key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
         }
 
@@ -89,7 +90,7 @@
         {
             /* Provide an input for key derivation or key agreement */
             status = val->crypto_function(VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY, &operation,
-                     check1[i].step, check1[i].key_handle);
+                     check1[i].step, tdata_key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
         }
         else
@@ -114,7 +115,7 @@
 
         if (check1[i].step == PSA_KEY_DERIVATION_INPUT_SECRET)
         {
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, tdata_key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
         }
diff --git a/api-tests/dev_apis/crypto/test_c021/test_c021.h b/api-tests/dev_apis/crypto/test_c021/test_c021.h
index 787fa99..90daec8 100644
--- a/api-tests/dev_apis/crypto/test_c021/test_c021.h
+++ b/api-tests/dev_apis/crypto/test_c021/test_c021.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c021_crypto_list[];
+extern const client_test_t test_c021_crypto_list[];
 
 int32_t psa_key_derivation_output_key_test(caller_security_t caller);
 #endif /* _TEST_C021_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c021/test_data.h b/api-tests/dev_apis/crypto/test_c021/test_data.h
index 6a31c78..2b89b63 100644
--- a/api-tests/dev_apis/crypto/test_c021/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c021/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                        test_desc[75];
-    psa_key_handle_t            key_handle;
     psa_key_type_t              key_type;
     uint8_t                     key_data[34];
     uint32_t                    key_length;
@@ -36,8 +35,8 @@
     psa_status_t                expected_status;
 } test_data;
 
-static test_data check1[] = {
-{"Test psa_key_derivation_output_key - Key\n", 1, PSA_KEY_TYPE_DERIVE,
+static const test_data check1[] = {
+{"Test psa_key_derivation_output_key - Key\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -48,7 +47,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - Info\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - Info\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -59,7 +58,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - Label\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - Label\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -70,7 +69,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - Seed\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - Seed\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -81,7 +80,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - Salt\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - Salt\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -92,7 +91,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - DES key export\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - DES key export\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -103,7 +102,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - Greater Capacity than available\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - Greater Capacity than available\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -114,7 +113,7 @@
  PSA_ERROR_INSUFFICIENT_DATA
 },
 
-{"Test psa_key_derivation_output_key - ECC Public key\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - ECC Public key\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -124,7 +123,7 @@
  PSA_ERROR_NOT_SUPPORTED,
 },
 
-{"Test psa_key_derivation_output_key -  ECC keypair\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key -  ECC keypair\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -135,7 +134,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key -  RSA Public Key", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key -  RSA Public Key", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -146,7 +145,7 @@
  PSA_ERROR_NOT_SUPPORTED,
 },
 
-{"Test psa_key_derivation_output_key -  RSA keypair\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key -  RSA keypair\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
@@ -157,7 +156,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_key_derivation_output_key - Invalid key size\n", 1, PSA_KEY_TYPE_DERIVE,
+{"Test psa_key_derivation_output_key - Invalid key size\n", PSA_KEY_TYPE_DERIVE,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE,
diff --git a/api-tests/dev_apis/crypto/test_c022/test_c022.c b/api-tests/dev_apis/crypto/test_c022/test_c022.c
index 1949c73..3c96266 100644
--- a/api-tests/dev_apis/crypto/test_c022/test_c022.c
+++ b/api-tests/dev_apis/crypto/test_c022/test_c022.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,7 @@
 #include "val_crypto.h"
 
 
-client_test_t test_c022_crypto_list[] = {
+const client_test_t test_c022_crypto_list[] = {
     NULL,
     psa_key_derivation_abort_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c022/test_c022.h b/api-tests/dev_apis/crypto/test_c022/test_c022.h
index 7823370..12377a2 100644
--- a/api-tests/dev_apis/crypto/test_c022/test_c022.h
+++ b/api-tests/dev_apis/crypto/test_c022/test_c022.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c022_crypto_list[];
+extern const client_test_t test_c022_crypto_list[];
 
 int32_t psa_key_derivation_abort_test(caller_security_t caller);
 #endif /* _TEST_C022_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c023/test_c023.c b/api-tests/dev_apis/crypto/test_c023/test_c023.c
index 5f019a4..5fee88e 100644
--- a/api-tests/dev_apis/crypto/test_c023/test_c023.c
+++ b/api-tests/dev_apis/crypto/test_c023/test_c023.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c023_crypto_list[] = {
+const client_test_t test_c023_crypto_list[] = {
     NULL,
     psa_key_derivation_set_get_capacity_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c023/test_c023.h b/api-tests/dev_apis/crypto/test_c023/test_c023.h
index 1fc9fbf..1e422d4 100644
--- a/api-tests/dev_apis/crypto/test_c023/test_c023.h
+++ b/api-tests/dev_apis/crypto/test_c023/test_c023.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c023_crypto_list[];
+extern const client_test_t test_c023_crypto_list[];
 
 int32_t psa_key_derivation_set_get_capacity_test(caller_security_t caller);
 #endif /* _TEST_C023_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c023/test_data.h b/api-tests/dev_apis/crypto/test_c023/test_data.h
index 1bc6455..86be318 100644
--- a/api-tests/dev_apis/crypto/test_c023/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c023/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 {"Test psa_key_derivation_set_get_capacity - Less than operation's capacity\n",
  PSA_ALG_HKDF(PSA_ALG_SHA_256), 42, PSA_SUCCESS
 },
diff --git a/api-tests/dev_apis/crypto/test_c024/test_c024.c b/api-tests/dev_apis/crypto/test_c024/test_c024.c
index ae709d6..a487b4a 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_c024.c
+++ b/api-tests/dev_apis/crypto/test_c024/test_c024.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c024.h"
 #include "test_data.h"
 
-client_test_t test_c024_crypto_list[] = {
+const client_test_t test_c024_crypto_list[] = {
     NULL,
     psa_aead_encrypt_test,
     NULL,
@@ -49,6 +49,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     uint8_t              *nonce, *additional_data;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -76,7 +77,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (is_buffer_empty(check1[i].nonce, check1[i].nonce_length) == TRUE)
@@ -96,7 +97,7 @@
             additional_data = check1[i].additional_data;
 
         /* Process an authenticated encryption operation */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT, key_handle,
                     check1[i].key_alg, nonce, check1[i].nonce_length, additional_data,
                     check1[i].additional_data_length, check1[i].plaintext,
                     check1[i].plaintext_length, ciphertext, check1[i].ciphertext_size,
@@ -106,7 +107,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
             continue;
@@ -122,14 +123,14 @@
                            TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
         /* Process an authenticated encryption operation on a destroyed key*/
-        status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT, key_handle,
                     check1[i].key_alg, nonce, check1[i].nonce_length, additional_data,
                     check1[i].additional_data_length, check1[i].plaintext,
                     check1[i].plaintext_length, ciphertext, check1[i].ciphertext_size,
diff --git a/api-tests/dev_apis/crypto/test_c024/test_c024.h b/api-tests/dev_apis/crypto/test_c024/test_c024.h
index 3b61390..7d39841 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_c024.h
+++ b/api-tests/dev_apis/crypto/test_c024/test_c024.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c024_crypto_list[];
+extern const client_test_t test_c024_crypto_list[];
 
 int32_t psa_aead_encrypt_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c024/test_data.h b/api-tests/dev_apis/crypto/test_c024/test_data.h
index dfe2f1f..6a493b2 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c024/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -40,7 +39,7 @@
 static test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_encrypt - CCM - 16B AES - 13B nounce & 8B addi data\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt - CCM - 16B AES - 13B nounce & 8B addi data\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
@@ -55,7 +54,7 @@
  BUFFER_SIZE, 39, PSA_SUCCESS
 },
 
-{"Test psa_aead_encrypt - AES-CCM\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
@@ -71,7 +70,7 @@
  0xe9}, BUFFER_SIZE, 40, PSA_SUCCESS
 },
 
-{"Test psa_aead_encrypt - AES-CCM 24 bytes Tag length = 4\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -93,7 +92,7 @@
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
 {"Test psa_aead_encrypt - GCM - 16B AES - 12B Nounce & 12B addi data\n",
-4, PSA_KEY_TYPE_AES,
+PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM,
 {0x57, 0x69, 0x0e, 0x43, 0x4e, 0x28, 0x00, 0x00, 0xa2, 0xfc, 0xa1, 0xa3}, 12,
@@ -112,7 +111,7 @@
 
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_aead_encrypt - DES Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_aead_encrypt - DES Key\n", PSA_KEY_TYPE_DES,
 {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B}, 12,
@@ -126,7 +125,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CIPER_MODE_CFB
-{"Test psa_aead_encrypt - Unsupported Algorithm\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt - Unsupported Algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CFB,
 {0}, 13, {0}, 0, "hello world", 11,
@@ -138,7 +137,7 @@
 #endif
 
 #ifdef ARCH_TEST_GCM
-{"Test psa_aead_encrypt - Invalid key usage\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt - Invalid key usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM,
 {0}, 13, {0}, 0, "hello world", 11,
@@ -148,7 +147,7 @@
  BUFFER_SIZE, 27, PSA_ERROR_NOT_PERMITTED
 },
 
-{"Test psa_aead_encrypt - Small output buffer size\n", 8, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt - Small output buffer size\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM,
 {0}, 13, {0}, 0, "hello world", 11,
diff --git a/api-tests/dev_apis/crypto/test_c025/test_c025.c b/api-tests/dev_apis/crypto/test_c025/test_c025.c
index 51e6f72..8049b08 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_c025.c
+++ b/api-tests/dev_apis/crypto/test_c025/test_c025.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c025.h"
 #include "test_data.h"
 
-client_test_t test_c025_crypto_list[] = {
+const client_test_t test_c025_crypto_list[] = {
     NULL,
     psa_aead_decrypt_test,
     NULL,
@@ -49,6 +49,7 @@
     int              num_checks = sizeof(check1)/sizeof(check1[0]);
     uint8_t          *nonce, *additional_data;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -76,7 +77,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (is_buffer_empty(check1[i].nonce, check1[i].nonce_length) == TRUE)
@@ -96,7 +97,7 @@
             additional_data = check1[i].additional_data;
 
         /* Process an authenticated decryption operation */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT, key_handle,
                   check1[i].key_alg, nonce, check1[i].nonce_length, additional_data,
                   check1[i].additional_data_length, check1[i].ciphertext, check1[i].ciphertext_size,
                   plaintext, check1[i].plaintext_size, &plaintext_length);
@@ -105,7 +106,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
             continue;
@@ -120,14 +121,14 @@
                            TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
         /* Process an authenticated decryption operation on a destroyed key handle */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT, key_handle,
                   check1[i].key_alg, nonce, check1[i].nonce_length, additional_data,
                   check1[i].additional_data_length, check1[i].ciphertext, check1[i].ciphertext_size,
                   plaintext, check1[i].plaintext_size, &plaintext_length);
diff --git a/api-tests/dev_apis/crypto/test_c025/test_c025.h b/api-tests/dev_apis/crypto/test_c025/test_c025.h
index 1955edd..0c83c93 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_c025.h
+++ b/api-tests/dev_apis/crypto/test_c025/test_c025.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c025_crypto_list[];
+extern const client_test_t test_c025_crypto_list[];
 
 int32_t psa_aead_decrypt_test(caller_security_t caller);
 int32_t psa_aead_decrypt_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c025/test_data.h b/api-tests/dev_apis/crypto/test_c025/test_data.h
index 82977ed..7aed327 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c025/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -40,7 +39,7 @@
 static test_data check1[] = {
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CCM
-{"Test psa_aead_decrypt - CCM - 16B AES - 13B nounce & 8B addi data\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - CCM - 16B AES - 13B nounce & 8B addi data\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
@@ -55,7 +54,7 @@
  39, 23, PSA_SUCCESS
 },
 
-{"Test psa_aead_decrypt - AES-CCM\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
@@ -71,7 +70,7 @@
  0xe9}, 40, 24, PSA_SUCCESS
 },
 
-{"Test psa_aead_decrypt - AES-CCM 24 bytes Tag length = 4\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -90,7 +89,7 @@
 #endif
 
 #ifdef ARCH_TEST_GCM
-{"Test psa_aead_decrypt - GCM - 16B AES - 12B Nounce & 12B addi data\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM,
 {0x57, 0x69, 0x0e, 0x43, 0x4e, 0x28, 0x00, 0x00, 0xa2, 0xfc, 0xa1, 0xa3}, 12,
@@ -109,7 +108,7 @@
 
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_aead_decrypt - DES Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_aead_decrypt - DES Key\n", PSA_KEY_TYPE_DES,
 {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B}, 12,
@@ -123,7 +122,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CIPER_MODE_CFB
-{"Test psa_aead_decrypt - Unsupported Algorithm\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - Unsupported Algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CFB,
 {0}, 13, {0}, 0, "hello world", BUFFER_SIZE,
@@ -135,7 +134,7 @@
 #endif
 
 #ifdef ARCH_TEST_GCM
-{"Test psa_aead_decrypt - Invalid key usage\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decypt - Invalid key usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM,
 {0}, 13, {0}, 0, "hello world", BUFFER_SIZE,
@@ -145,7 +144,7 @@
  27, 11, PSA_ERROR_NOT_PERMITTED
 },
 
-{"Test psa_aead_decrypt - Small output buffer size\n", 8, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - Small output buffer size\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM,
 {0}, 13, {0}, 0, "hello world", 10,
@@ -157,7 +156,7 @@
 #endif
 
 #ifdef ARCH_TEST_CCM
-{"Test psa_aead_decrypt - Invalid cipher text\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - Invalid cipher text\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
@@ -172,7 +171,7 @@
  39, 23, PSA_ERROR_INVALID_SIGNATURE
 },
 
-{"Test psa_aead_decrypt - Invalid cipher text size\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - Invalid cipher text size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
@@ -187,7 +186,7 @@
  38, 23, PSA_ERROR_INVALID_SIGNATURE
 },
 
-{"Test psa_aead_decrypt - Invalid tag length 0\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt - Invalid tag length 0\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 0),
diff --git a/api-tests/dev_apis/crypto/test_c026/test_c026.c b/api-tests/dev_apis/crypto/test_c026/test_c026.c
index 1de9cae..fd77f1b 100644
--- a/api-tests/dev_apis/crypto/test_c026/test_c026.c
+++ b/api-tests/dev_apis/crypto/test_c026/test_c026.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c026.h"
 #include "test_data.h"
 
-client_test_t test_c026_crypto_list[] = {
+const client_test_t test_c026_crypto_list[] = {
     NULL,
     psa_mac_sign_setup_test,
     psa_mac_sign_setup_negative_test,
@@ -36,6 +35,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -64,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Start a multipart MAC calculation operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_SIGN_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Whether setup succeeded or failed, abort must succeed.
@@ -84,12 +84,12 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             status = val->crypto_function(VAL_CRYPTO_MAC_SIGN_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
         }
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
         /* Reset the key attributes and check if psa_import_key fails */
@@ -103,6 +103,7 @@
 {
     int                 num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t             i, status;
+    psa_key_handle_t    key_handle = 11;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -118,7 +119,7 @@
                                                                                  g_test_count++);
         /* Start a multipart MAC verification operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_SIGN_SETUP, &operation,
-                    check2[i].key_handle, check2[i].key_alg);
+                    key_handle, check2[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
 
         val->print(PRINT_TEST, "[Check %d] Test psa_mac_sign_setup zero as key handle\n",
diff --git a/api-tests/dev_apis/crypto/test_c026/test_c026.h b/api-tests/dev_apis/crypto/test_c026/test_c026.h
index fab5a56..29e2cca 100644
--- a/api-tests/dev_apis/crypto/test_c026/test_c026.h
+++ b/api-tests/dev_apis/crypto/test_c026/test_c026.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c026_crypto_list[];
+extern const client_test_t test_c026_crypto_list[];
 
 int32_t psa_mac_sign_setup_test(caller_security_t caller);
 int32_t psa_mac_sign_setup_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c026/test_data.h b/api-tests/dev_apis/crypto/test_c026/test_data.h
index 02fc148..306522a 100644
--- a/api-tests/dev_apis/crypto/test_c026/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c026/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -28,10 +27,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_sign_setup 64 Byte HMAC\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_setup 64 Byte HMAC\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -45,7 +44,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_sign_setup 16 Byte AES - CMAC\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_setup 16 Byte AES - CMAC\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN, PSA_ALG_CMAC,
@@ -54,7 +53,7 @@
 #endif
 
 #ifdef ARCH_TEST_GMAC
-{"Test psa_mac_sign_setup 16 Byte AES - GMAC\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_setup 16 Byte AES - GMAC\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN, PSA_ALG_GMAC,
@@ -64,7 +63,7 @@
 
 #ifdef ARCH_TEST_CMAC
 #ifdef ARCH_TEST_HMAC
-{"Test psa_mac_sign_setup incompactible HMAC for CMAC\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_setup incompactible HMAC for CMAC\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
  0x0D, 0x0E, 0x0F},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN, PSA_ALG_CMAC,
@@ -72,7 +71,7 @@
 },
 #endif
 
-{"Test psa_mac_sign_setup invalid usage\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_setup invalid usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_EXPORT, PSA_ALG_CMAC,
@@ -82,7 +81,7 @@
 
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_sign_setup invalid key type\n", 7, PSA_KEY_TYPE_RAW_DATA,
+{"Test psa_mac_sign_setup invalid key type\n", PSA_KEY_TYPE_RAW_DATA,
 {0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
  0x0B, 0x0B, 0x0B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN, PSA_ALG_HMAC(PSA_ALG_SHA_256),
@@ -95,7 +94,7 @@
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_TRUNCATED_MAC
-{"Test psa_mac_sign_setup truncated MAC too large\n", 8, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_setup truncated MAC too large\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -105,7 +104,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_mac_sign_setup truncated MAC too small\n", 9, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_setup truncated MAC too small\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -118,7 +117,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_128
-{"Test psa_mac_sign_setup bad algorithm (unknown MAC algorithm)\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_setup bad algorithm (unknown MAC algorithm)\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN, PSA_ALG_HMAC(0),
@@ -129,7 +128,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_mac_sign_setup bad algorithm (not a MAC algorithm)\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_setup bad algorithm (not a MAC algorithm)\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN, PSA_ALG_CBC_NO_PADDING,
@@ -139,10 +138,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_sign_setup 64 negative case\n", 11, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_setup 64 negative case\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
diff --git a/api-tests/dev_apis/crypto/test_c027/test_c027.c b/api-tests/dev_apis/crypto/test_c027/test_c027.c
index 89bcbf2..923ef59 100644
--- a/api-tests/dev_apis/crypto/test_c027/test_c027.c
+++ b/api-tests/dev_apis/crypto/test_c027/test_c027.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c027.h"
 #include "test_data.h"
 
-client_test_t test_c027_crypto_list[] = {
+const client_test_t test_c027_crypto_list[] = {
     NULL,
     psa_mac_update_test,
     psa_mac_update_invalid_operator_test,
@@ -38,6 +37,7 @@
     size_t                length;
     psa_mac_operation_t   operation;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -51,7 +51,7 @@
 
     for (i = 0; i < num_checks; i++)
     {
-        val->print(PRINT_TEST, "[Check %d] ", g_test_count++);
+	val->print(PRINT_TEST, "[Check %d] ", g_test_count++);
         val->print(PRINT_TEST, check1[i].test_desc, 0);
         memset(&operation, 0, sizeof(operation));
         memset(data, 0, sizeof(data));
@@ -67,12 +67,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Start a multipart MAC calculation operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_SIGN_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Add a message fragment to a multipart MAC operation */
@@ -87,7 +87,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             continue;
@@ -108,7 +108,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
     }
 
diff --git a/api-tests/dev_apis/crypto/test_c027/test_c027.h b/api-tests/dev_apis/crypto/test_c027/test_c027.h
index 69f72f1..71d3e9c 100644
--- a/api-tests/dev_apis/crypto/test_c027/test_c027.h
+++ b/api-tests/dev_apis/crypto/test_c027/test_c027.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c027_crypto_list[];
+extern const client_test_t test_c027_crypto_list[];
 
 int32_t psa_mac_update_test(caller_security_t caller);
 int32_t psa_mac_update_invalid_operator_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c027/test_data.h b/api-tests/dev_apis/crypto/test_c027/test_data.h
index 6537c7e..35eebf6 100644
--- a/api-tests/dev_apis/crypto/test_c027/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c027/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -30,10 +29,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_update 64 Byte HMAC SHA256\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_update 64 Byte HMAC SHA256\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -47,7 +46,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_update 16 Byte AES - CMAC\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_mac_update 16 Byte AES - CMAC\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, "hello world", 11, PSA_KEY_USAGE_SIGN, PSA_ALG_CMAC,
@@ -58,7 +57,7 @@
 
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA512
-{"Test psa_mac_update 32 Byte HMAC SHA512\n", 3, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_update 32 Byte HMAC SHA512\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b},
diff --git a/api-tests/dev_apis/crypto/test_c028/test_c028.c b/api-tests/dev_apis/crypto/test_c028/test_c028.c
index 540af72..83963c0 100644
--- a/api-tests/dev_apis/crypto/test_c028/test_c028.c
+++ b/api-tests/dev_apis/crypto/test_c028/test_c028.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c028.h"
 #include "test_data.h"
 
-client_test_t test_c028_crypto_list[] = {
+const client_test_t test_c028_crypto_list[] = {
     NULL,
     psa_mac_sign_finish_test,
     NULL,
@@ -37,6 +36,7 @@
     size_t                length;
     psa_mac_operation_t   operation;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -66,12 +66,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Start a multipart MAC calculation operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_SIGN_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Add a message fragment to a multipart MAC operation */
@@ -91,7 +91,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
             continue;
@@ -118,7 +118,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(14));
     }
 
diff --git a/api-tests/dev_apis/crypto/test_c028/test_c028.h b/api-tests/dev_apis/crypto/test_c028/test_c028.h
index 792a1a9..dc400ac 100644
--- a/api-tests/dev_apis/crypto/test_c028/test_c028.h
+++ b/api-tests/dev_apis/crypto/test_c028/test_c028.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c028_crypto_list[];
+extern const client_test_t test_c028_crypto_list[];
 
 int32_t psa_mac_sign_finish_test(caller_security_t caller);
 #endif /* _TEST_C028_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c028/test_data.h b/api-tests/dev_apis/crypto/test_c028/test_data.h
index 2153071..bd4e96a 100644
--- a/api-tests/dev_apis/crypto/test_c028/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c028/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -33,10 +32,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_sign_finish HMAC SHA 224\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_finish HMAC SHA 224\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -49,7 +48,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_sign_finish HMAC SHA 256\n", 2, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_finish HMAC SHA 256\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -62,7 +61,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA512
-{"Test psa_mac_sign_finish HMAC SHA 512\n", 3, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_finish HMAC SHA 512\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -77,7 +76,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_sign_finish HMAC SHA 224 (truncated to 8 Byte)\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_sign_finish HMAC SHA 224 (truncated to 8 Byte)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -90,7 +89,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_sign_finish CMAC AES 128\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_finish CMAC AES 128\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -100,7 +99,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_mac_sign_finish small size buffer\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_mac_sign_finish small size buffer\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
diff --git a/api-tests/dev_apis/crypto/test_c029/test_c029.c b/api-tests/dev_apis/crypto/test_c029/test_c029.c
index ee9b7f5..ce2e857 100644
--- a/api-tests/dev_apis/crypto/test_c029/test_c029.c
+++ b/api-tests/dev_apis/crypto/test_c029/test_c029.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c029.h"
 #include "test_data.h"
 
-client_test_t test_c029_crypto_list[] = {
+const client_test_t test_c029_crypto_list[] = {
     NULL,
     psa_mac_verify_setup_test,
     psa_mac_verify_setup_negative_test,
@@ -36,6 +35,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -64,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Start a multipart MAC verification operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Whether setup succeeded or failed, abort must succeed.
@@ -84,12 +84,12 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
         }
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
     }
 
@@ -100,6 +100,7 @@
 {
     int                 num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t             i, status;
+    psa_key_handle_t    key_handle = 11;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -115,7 +116,7 @@
                                                                                  g_test_count++);
         /* Start a multipart MAC verification operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY_SETUP, &operation,
-                    check2[i].key_handle, check2[i].key_alg);
+                    key_handle, check2[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
 
         val->print(PRINT_TEST, "[Check %d] Test psa_mac_verify_setup zero as key handle\n",
diff --git a/api-tests/dev_apis/crypto/test_c029/test_c029.h b/api-tests/dev_apis/crypto/test_c029/test_c029.h
index 81234fa..113cb04 100644
--- a/api-tests/dev_apis/crypto/test_c029/test_c029.h
+++ b/api-tests/dev_apis/crypto/test_c029/test_c029.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c029_crypto_list[];
+extern const client_test_t test_c029_crypto_list[];
 
 int32_t psa_mac_verify_setup_test(caller_security_t caller);
 int32_t psa_mac_verify_setup_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c029/test_data.h b/api-tests/dev_apis/crypto/test_c029/test_data.h
index 1a55b00..3b4b121 100644
--- a/api-tests/dev_apis/crypto/test_c029/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c029/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -28,10 +27,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify_setup 64 Byte HMAC\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_setup 64 Byte HMAC\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -45,7 +44,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_verify_setup 16 Byte AES - CMAC\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify_setup 16 Byte AES - CMAC\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY, PSA_ALG_CMAC,
@@ -54,7 +53,7 @@
 #endif
 
 #ifdef ARCH_TEST_GMAC
-{"Test psa_mac_verify_setup 16 Byte AES - GMAC\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify_setup 16 Byte AES - GMAC\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY, PSA_ALG_GMAC,
@@ -65,7 +64,7 @@
 
 #ifdef ARCH_TEST_CMAC
 #ifdef ARCH_TEST_HMAC
-{"Test psa_mac_verify_setup incompactible HMAC for CMAC\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_setup incompactible HMAC for CMAC\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
  0x0D, 0x0E, 0x0F},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY, PSA_ALG_CMAC,
@@ -74,7 +73,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_128
-{"Test psa_mac_verify_setup invalid usage\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify_setup invalid usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_EXPORT, PSA_ALG_CMAC,
@@ -85,7 +84,7 @@
 
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify_setup invalid key type\n", 6, PSA_KEY_TYPE_RAW_DATA,
+{"Test psa_mac_verify_setup invalid key type\n", PSA_KEY_TYPE_RAW_DATA,
 {0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
  0x0B, 0x0B, 0x0B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY, PSA_ALG_HMAC(PSA_ALG_SHA_256),
@@ -96,7 +95,7 @@
 
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify_setup truncated MAC too large\n", 7, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_setup truncated MAC too large\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -106,7 +105,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_mac_verify_setup truncated MAC too small\n", 8, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_setup truncated MAC too small\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
@@ -118,7 +117,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_128
-{"Test psa_mac_verify_setup bad algorithm (unknown MAC algorithm)\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify_setup bad algorithm (unknown MAC algorithm)\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY, PSA_ALG_HMAC(0),
@@ -129,7 +128,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_mac_verify_setup bad algorithm (not a MAC algorithm)\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify_setup bad algorithm (not a MAC algorithm)\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x00},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY, PSA_ALG_CBC_NO_PADDING,
@@ -139,10 +138,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify_setup 64 negative case\n", 11, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_setup 64 negative case\n", PSA_KEY_TYPE_HMAC,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
  0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
  0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26,
diff --git a/api-tests/dev_apis/crypto/test_c030/test_c030.c b/api-tests/dev_apis/crypto/test_c030/test_c030.c
index 6643c34..723b9bf 100644
--- a/api-tests/dev_apis/crypto/test_c030/test_c030.c
+++ b/api-tests/dev_apis/crypto/test_c030/test_c030.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c030.h"
 #include "test_data.h"
 
-client_test_t test_c030_crypto_list[] = {
+const client_test_t test_c030_crypto_list[] = {
     NULL,
     psa_mac_verify_finish_test,
     NULL,
@@ -35,6 +34,7 @@
     int32_t               i, status;
     psa_mac_operation_t   operation;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -63,12 +63,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Start a multipart MAC calculation operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Add a message fragment to a multipart MAC operation */
@@ -90,7 +90,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
             continue;
         }
@@ -108,7 +108,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
     }
 
diff --git a/api-tests/dev_apis/crypto/test_c030/test_c030.h b/api-tests/dev_apis/crypto/test_c030/test_c030.h
index defd603..2ffcf12 100644
--- a/api-tests/dev_apis/crypto/test_c030/test_c030.h
+++ b/api-tests/dev_apis/crypto/test_c030/test_c030.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c030_crypto_list[];
+extern const client_test_t test_c030_crypto_list[];
 
 int32_t psa_mac_verify_finish_test(caller_security_t caller);
 #endif /* _TEST_C030_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c030/test_data.h b/api-tests/dev_apis/crypto/test_c030/test_data.h
index eb9f250..e4c8cc3 100644
--- a/api-tests/dev_apis/crypto/test_c030/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c030/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -32,10 +31,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_verify_finish HMAC SHA 224\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_finish HMAC SHA 224\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -48,7 +47,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify_finish HMAC SHA 256\n", 2, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_finish HMAC SHA 256\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -61,7 +60,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA512
-{"Test psa_mac_verify_finish HMAC SHA 512\n", 3, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_finish HMAC SHA 512\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -76,7 +75,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_verify_finish HMAC SHA 224 (truncated to 8 Byte)\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_finish HMAC SHA 224 (truncated to 8 Byte)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -89,7 +88,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_verify_finish CMAC AES 128\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify_finish CMAC AES 128\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -103,7 +102,7 @@
 
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify_finish small size buffer\n", 6, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_finish small size buffer\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -116,7 +115,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_verify_finish incorrect expected MAC\n", 7, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify_finish incorrect expected MAC\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
diff --git a/api-tests/dev_apis/crypto/test_c031/test_c031.c b/api-tests/dev_apis/crypto/test_c031/test_c031.c
index 3e8c94e..8cd6a1d 100644
--- a/api-tests/dev_apis/crypto/test_c031/test_c031.c
+++ b/api-tests/dev_apis/crypto/test_c031/test_c031.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c031.h"
 #include "test_data.h"
 
-client_test_t test_c031_crypto_list[] = {
+const client_test_t test_c031_crypto_list[] = {
     NULL,
     psa_mac_abort_test,
     psa_mac_abort_before_finish_test,
@@ -37,6 +36,7 @@
     int32_t               i, status;
     psa_mac_operation_t   operation;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -65,12 +65,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Start a multipart MAC calculation operation */
         status = val->crypto_function(VAL_CRYPTO_MAC_SIGN_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Abort a MAC operation */
@@ -82,7 +82,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
     }
 
diff --git a/api-tests/dev_apis/crypto/test_c031/test_c031.h b/api-tests/dev_apis/crypto/test_c031/test_c031.h
index ba716fa..0ea5c9b 100644
--- a/api-tests/dev_apis/crypto/test_c031/test_c031.h
+++ b/api-tests/dev_apis/crypto/test_c031/test_c031.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c031_crypto_list[];
+extern const client_test_t test_c031_crypto_list[];
 
 int32_t psa_mac_abort_test(caller_security_t caller);
 int32_t psa_mac_abort_before_finish_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c031/test_data.h b/api-tests/dev_apis/crypto/test_c031/test_data.h
index e816f81..50590eb 100644
--- a/api-tests/dev_apis/crypto/test_c031/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c031/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -28,10 +27,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_abort HMAC SHA 224\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_abort HMAC SHA 224\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
  PSA_KEY_USAGE_SIGN, PSA_ALG_HMAC(PSA_ALG_SHA_224),
@@ -40,7 +39,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_abort HMAC SHA 256\n", 2, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_abort HMAC SHA 256\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
  PSA_KEY_USAGE_SIGN, PSA_ALG_HMAC(PSA_ALG_SHA_256),
@@ -49,7 +48,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA512
-{"Test psa_mac_abort HMAC SHA 512\n", 3, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_abort HMAC SHA 512\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
  PSA_KEY_USAGE_SIGN, PSA_ALG_HMAC(PSA_ALG_SHA_512),
@@ -58,7 +57,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_abort HMAC SHA 224 (truncated to 8 Byte)\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_abort HMAC SHA 224 (truncated to 8 Byte)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
  PSA_KEY_USAGE_SIGN, PSA_ALG_TRUNCATED_MAC(PSA_ALG_HMAC(PSA_ALG_SHA_224), 8),
@@ -69,7 +68,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_abort CMAC AES 128\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_mac_abort CMAC AES 128\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
  PSA_KEY_USAGE_SIGN, PSA_ALG_CMAC,
diff --git a/api-tests/dev_apis/crypto/test_c032/test_c032.c b/api-tests/dev_apis/crypto/test_c032/test_c032.c
index aa35e30..d1093fc 100644
--- a/api-tests/dev_apis/crypto/test_c032/test_c032.c
+++ b/api-tests/dev_apis/crypto/test_c032/test_c032.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c032.h"
 #include "test_data.h"
 
-client_test_t test_c032_crypto_list[] = {
+const client_test_t test_c032_crypto_list[] = {
     NULL,
     psa_cipher_encrypt_setup_test,
     psa_cipher_encrypt_setup_negative_test,
@@ -37,6 +36,7 @@
     int32_t                 i, status;
     const uint8_t          *key_data;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -97,12 +97,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart symmetric encryption operation */
         status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Whether setup succeeded or failed, abort must succeed.
@@ -114,7 +114,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
 
             status = val->crypto_function(VAL_CRYPTO_CIPHER_ABORT, &operation);
@@ -122,7 +122,7 @@
         }
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
@@ -136,6 +136,7 @@
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
+    psa_key_handle_t        key_handle = 16;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -151,7 +152,7 @@
                                                                                    g_test_count++);
         /* Set the key for a multipart symmetric encryption operation */
         status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                    check2[i].key_handle, check2[i].key_alg);
+                    key_handle, check2[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
 
         val->print(PRINT_TEST, "[Check %d] Test psa_cipher_encrypt_setup - Zero as key handle\n",
diff --git a/api-tests/dev_apis/crypto/test_c032/test_c032.h b/api-tests/dev_apis/crypto/test_c032/test_c032.h
index f9887a2..362f3a3 100644
--- a/api-tests/dev_apis/crypto/test_c032/test_c032.h
+++ b/api-tests/dev_apis/crypto/test_c032/test_c032.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c032_crypto_list[];
+extern const client_test_t test_c032_crypto_list[];
 
 int32_t psa_cipher_encrypt_setup_test(caller_security_t caller);
 int32_t psa_cipher_encrypt_setup_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c032/test_data.h b/api-tests/dev_apis/crypto/test_c032/test_data.h
index 763afde..c512c01 100644
--- a/api-tests/dev_apis/crypto/test_c032/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c032/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -160,10 +159,10 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_encrypt_setup 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, BYTES_TO_BITS(AES_16B_KEY_SIZE),
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -172,7 +171,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_cipher_encrypt_setup 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9}, AES_24B_KEY_SIZE, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_24B_KEY_SIZE),
@@ -181,7 +180,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_cipher_encrypt_setup 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE}, AES_32B_KEY_SIZE, 0,
@@ -193,7 +192,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_encrypt_setup DES 64 bit key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_encrypt_setup DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, 0, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING, BYTES_TO_BITS(DES_8B_KEY_SIZE),
  PSA_SUCCESS
@@ -201,7 +200,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_encrypt_setup Triple DES 2-Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_encrypt_setup Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, 0, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING, BYTES_TO_BITS(DES3_2KEY_SIZE),
@@ -210,7 +209,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_encrypt_setup Triple DES 3-Key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_encrypt_setup Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -221,7 +220,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_encrypt_setup 16 Byte raw data\n", 7, PSA_KEY_TYPE_RAW_DATA,
+{"Test psa_cipher_encrypt_setup 16 Byte raw data\n", PSA_KEY_TYPE_RAW_DATA,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -231,7 +230,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_cipher_encrypt_setup - not a cipher algorithm\n", 8, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup - not a cipher algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CMAC, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -240,7 +239,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER
-{"Test psa_cipher_encrypt_setup - unknown cipher algorithm\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup - unknown cipher algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CATEGORY_CIPHER, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -250,7 +249,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_ARC4
-{"Test psa_cipher_encrypt_setup - incompatible key ARC4\n", 10, PSA_KEY_TYPE_ARC4,
+{"Test psa_cipher_encrypt_setup - incompatible key ARC4\n", PSA_KEY_TYPE_ARC4,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -258,7 +257,7 @@
 },
 #endif
 
-{"Test psa_cipher_encrypt_setup - incorrect usage\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup - incorrect usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, 0,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -269,13 +268,13 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_cipher_encrypt_setup - RSA public key\n", 12, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_cipher_encrypt_setup - RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 270, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, 2048,
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_cipher_encrypt_setup - RSA keypair\n", 13, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_cipher_encrypt_setup - RSA keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 1193, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, 2048,
  PSA_ERROR_INVALID_ARGUMENT
@@ -285,7 +284,7 @@
 
 #ifdef ARCH_TEST_ASYMMETRIC_ENCRYPTION
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_cipher_encrypt_setup - EC Public key\n", 14,
+{"Test psa_cipher_encrypt_setup - EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1), {0}, 65, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, 256,
  PSA_ERROR_INVALID_ARGUMENT
@@ -293,7 +292,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_cipher_encrypt_setup - EC keypair\n", 15,
+{"Test psa_cipher_encrypt_setup - EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1), {0}, 28, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION, 224,
  PSA_ERROR_INVALID_ARGUMENT
@@ -302,10 +301,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_encrypt_setup negative cases\n", 16, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt_setup negative cases\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE, 0,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
diff --git a/api-tests/dev_apis/crypto/test_c033/test_c033.c b/api-tests/dev_apis/crypto/test_c033/test_c033.c
index 4899f10..2ec5d43 100644
--- a/api-tests/dev_apis/crypto/test_c033/test_c033.c
+++ b/api-tests/dev_apis/crypto/test_c033/test_c033.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c033.h"
 #include "test_data.h"
 
-client_test_t test_c033_crypto_list[] = {
+const client_test_t test_c033_crypto_list[] = {
     NULL,
     psa_cipher_decrypt_setup_test,
     psa_cipher_decrypt_setup_negative_test,
@@ -37,6 +36,7 @@
     int32_t                 i, status;
     const uint8_t          *key_data;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -96,12 +96,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart symmetric decryption operation */
         status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Whether setup succeeded or failed, abort must succeed.
@@ -113,7 +113,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
 
             /* Abort a cipher operation */
@@ -122,7 +122,7 @@
         }
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
          /* Reset the key attributes and check if psa_import_key fails */
@@ -136,6 +136,7 @@
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
+    psa_key_handle_t        key_handle = 16;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -151,7 +152,7 @@
                                                                                    g_test_count++);
         /* Set the key for a multipart symmetric decryption operation */
         status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT_SETUP, &operation,
-                    check2[i].key_handle, check2[i].key_alg);
+                    key_handle, check2[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
 
         val->print(PRINT_TEST, "[Check %d] Test psa_cipher_decrypt_setup - Zero as key handle\n",
diff --git a/api-tests/dev_apis/crypto/test_c033/test_c033.h b/api-tests/dev_apis/crypto/test_c033/test_c033.h
index ea045b4..c30d05c 100644
--- a/api-tests/dev_apis/crypto/test_c033/test_c033.h
+++ b/api-tests/dev_apis/crypto/test_c033/test_c033.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c033_crypto_list[];
+extern const client_test_t test_c033_crypto_list[];
 
 int32_t psa_cipher_decrypt_setup_test(caller_security_t caller);
 int32_t psa_cipher_decrypt_setup_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c033/test_data.h b/api-tests/dev_apis/crypto/test_c033/test_data.h
index c44e8ed..c847a08 100644
--- a/api-tests/dev_apis/crypto/test_c033/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c033/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -159,10 +158,10 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_decrypt_setup 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -171,7 +170,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_cipher_decrypt_setup 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9}, AES_24B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_24B_KEY_SIZE),
@@ -180,7 +179,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_cipher_decrypt_setup 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE}, AES_32B_KEY_SIZE,
@@ -192,7 +191,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_decrypt_setup DES 64 bit key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_decrypt_setup DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING, BYTES_TO_BITS(DES_8B_KEY_SIZE),
  PSA_SUCCESS
@@ -200,7 +199,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_decrypt_setup Triple DES 2-Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_decrypt_setup Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING, BYTES_TO_BITS(DES3_2KEY_SIZE),
@@ -209,7 +208,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_decrypt_setup Triple DES 3-Key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_decrypt_setup Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -221,7 +220,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_decrypt_setup 16 Byte raw data\n", 7, PSA_KEY_TYPE_RAW_DATA,
+{"Test psa_cipher_decrypt_setup 16 Byte raw data\n", PSA_KEY_TYPE_RAW_DATA,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -230,7 +229,7 @@
 #endif
 
 #ifdef ARCH_TEST_CMAC
-{"Test psa_cipher_decrypt_setup - not a cipher algorithm\n", 8, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup - not a cipher algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CMAC, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -239,7 +238,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER
-{"Test psa_cipher_decrypt_setup - unknown cipher algorithm\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup - unknown cipher algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CATEGORY_CIPHER, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -249,7 +248,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_ARC4
-{"Test psa_cipher_decrypt_setup - incompatible key ARC4\n", 10, PSA_KEY_TYPE_ARC4,
+{"Test psa_cipher_decrypt_setup - incompatible key ARC4\n", PSA_KEY_TYPE_ARC4,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -257,7 +256,7 @@
 },
 #endif
 
-{"Test psa_cipher_decrypt_setup - incorrect usage\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup - incorrect usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
@@ -268,13 +267,13 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_cipher_decrypt_setup - RSA public key\n", 12, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_cipher_decrypt_setup - RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 270,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, 2048,
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_cipher_decrypt_setup - RSA keypair\n", 13, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_cipher_decrypt_setup - RSA keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 1193,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, 2048,
  PSA_ERROR_INVALID_ARGUMENT
@@ -284,7 +283,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_cipher_decrypt_setup - EC Public key\n", 14,
+{"Test psa_cipher_decrypt_setup - EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1), {0}, 65,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT, 192,
  PSA_ERROR_INVALID_ARGUMENT
@@ -292,7 +291,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_cipher_decrypt_setup - EC keypair\n", 15,
+{"Test psa_cipher_decrypt_setup - EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1), {0}, 28,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT, 224,
  PSA_ERROR_INVALID_ARGUMENT
@@ -301,10 +300,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_decrypt_setup - negative test\n", 16, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt_setup - negative test\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR, BYTES_TO_BITS(AES_16B_KEY_SIZE),
diff --git a/api-tests/dev_apis/crypto/test_c034/test_c034.c b/api-tests/dev_apis/crypto/test_c034/test_c034.c
index 0017ce0..6a77a21 100644
--- a/api-tests/dev_apis/crypto/test_c034/test_c034.c
+++ b/api-tests/dev_apis/crypto/test_c034/test_c034.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +21,7 @@
 #include "test_data.h"
 
 
-client_test_t test_c034_crypto_list[] = {
+const client_test_t test_c034_crypto_list[] = {
     NULL,
     psa_cipher_generate_iv_test,
     NULL,
@@ -39,6 +38,7 @@
     psa_cipher_operation_t  operation;
     int32_t                 status;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -67,12 +67,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart symmetric encryption operation */
         status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Generate an IV for a symmetric encryption operation */
@@ -87,7 +87,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             continue;
@@ -117,7 +117,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c034/test_c034.h b/api-tests/dev_apis/crypto/test_c034/test_c034.h
index 67273ab..399ec13 100644
--- a/api-tests/dev_apis/crypto/test_c034/test_c034.h
+++ b/api-tests/dev_apis/crypto/test_c034/test_c034.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c034_crypto_list[];
+extern const client_test_t test_c034_crypto_list[];
 
 int32_t psa_cipher_generate_iv_test(caller_security_t caller);
 #endif /* _TEST_C034_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c034/test_data.h b/api-tests/dev_apis/crypto/test_c034/test_data.h
index 7bc7eab..d03dae9 100644
--- a/api-tests/dev_apis/crypto/test_c034/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c034/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -30,10 +29,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_generate_iv 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_generate_iv 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, 16, 16,
@@ -42,7 +41,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_cipher_generate_iv 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_generate_iv 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9}, AES_24B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, 16, 16,
@@ -51,7 +50,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_cipher_generate_iv 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_generate_iv 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE}, AES_32B_KEY_SIZE,
@@ -63,7 +62,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_generate_iv DES 64 bit key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_generate_iv DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
  8, 8,
@@ -72,7 +71,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_generate_iv Triple DES 2-Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_generate_iv Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -82,7 +81,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_generate_iv Triple DES 3-Key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_generate_iv Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -95,7 +94,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_generate_iv AES - small iv buffer\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_generate_iv AES - small iv buffer\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, 8, 16,
@@ -106,7 +105,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_generate_iv DES - small iv buffer\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_generate_iv DES - small iv buffer\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
  4, 8,
@@ -117,7 +116,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_generate_iv AES - large iv buffer\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_generate_iv AES - large iv buffer\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR, 32, 16,
@@ -128,7 +127,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_generate_iv DES - large iv buffer\n", 10, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_generate_iv DES - large iv buffer\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
  16, 8,
diff --git a/api-tests/dev_apis/crypto/test_c035/test_c035.c b/api-tests/dev_apis/crypto/test_c035/test_c035.c
index 8d19a10..887ca14 100644
--- a/api-tests/dev_apis/crypto/test_c035/test_c035.c
+++ b/api-tests/dev_apis/crypto/test_c035/test_c035.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +21,7 @@
 #include "test_data.h"
 
 
-client_test_t test_c035_crypto_list[] = {
+const client_test_t test_c035_crypto_list[] = {
     NULL,
     psa_cipher_set_iv_test,
     NULL,
@@ -36,6 +35,7 @@
     int32_t                 i, status;
     psa_cipher_operation_t  operation;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -64,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart symmetric encryption operation */
         status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                    check1[i].key_handle, check1[i].key_alg);
+                    key_handle, check1[i].key_alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set an IV for a symmetric encryption operation */
@@ -89,7 +89,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c035/test_c035.h b/api-tests/dev_apis/crypto/test_c035/test_c035.h
index b5a6a49..d66774b 100644
--- a/api-tests/dev_apis/crypto/test_c035/test_c035.h
+++ b/api-tests/dev_apis/crypto/test_c035/test_c035.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c035_crypto_list[];
+extern const client_test_t test_c035_crypto_list[];
 
 int32_t psa_cipher_set_iv_test(caller_security_t caller);
 #endif /* _TEST_C035_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c035/test_data.h b/api-tests/dev_apis/crypto/test_c035/test_data.h
index af43a3b..9f4d653 100644
--- a/api-tests/dev_apis/crypto/test_c035/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c035/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -30,10 +29,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_set_iv 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_set_iv 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -44,7 +43,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_cipher_set_iv 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_set_iv 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9}, AES_24B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -55,7 +54,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_cipher_set_iv 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_set_iv 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE}, AES_32B_KEY_SIZE,
@@ -69,7 +68,7 @@
 
 #ifdef ARCH_TEST_CBC_AES_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_set_iv DES 64 bit key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_set_iv DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
  {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}, 8,
@@ -79,7 +78,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_set_iv Triple DES 2-Key\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_set_iv Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -89,7 +88,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_set_iv Triple DES 3-Key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_set_iv Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -102,7 +101,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_set_iv AES - small iv buffer\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_set_iv AES - small iv buffer\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -114,7 +113,7 @@
 
 #ifdef ARCH_TEST_CBC_AES_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_set_iv DES - small iv buffer\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_set_iv DES - small iv buffer\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x00, 0x01, 0x02, 0x03,}, 4,
@@ -125,7 +124,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_set_iv AES - large iv buffer\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_set_iv AES - large iv buffer\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0xD0}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -139,7 +138,7 @@
 
 #ifdef ARCH_TEST_CBC_AES_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_set_iv DES - large iv buffer\n", 10, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_set_iv DES - large iv buffer\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
diff --git a/api-tests/dev_apis/crypto/test_c036/test_c036.c b/api-tests/dev_apis/crypto/test_c036/test_c036.c
index 64fea25..0744ed1 100644
--- a/api-tests/dev_apis/crypto/test_c036/test_c036.c
+++ b/api-tests/dev_apis/crypto/test_c036/test_c036.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +21,7 @@
 #include "test_data.h"
 
 
-client_test_t test_c036_crypto_list[] = {
+const client_test_t test_c036_crypto_list[] = {
     NULL,
     psa_cipher_update_test,
     psa_cipher_update_negative_test,
@@ -40,6 +39,7 @@
     size_t                  length;
     psa_cipher_operation_t  operation;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -68,20 +68,20 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (check1[i].usage == PSA_KEY_USAGE_ENCRYPT)
         {
             /* Set the key for a multipart symmetric encryption operation */
             status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
         }
         else if (check1[i].usage == PSA_KEY_USAGE_DECRYPT)
         {
             status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
         }
 
@@ -102,7 +102,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
             continue;
         }
@@ -118,7 +118,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(13));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c036/test_c036.h b/api-tests/dev_apis/crypto/test_c036/test_c036.h
index 2056762..6547630 100644
--- a/api-tests/dev_apis/crypto/test_c036/test_c036.h
+++ b/api-tests/dev_apis/crypto/test_c036/test_c036.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c036_crypto_list[];
+extern const client_test_t test_c036_crypto_list[];
 
 int32_t psa_cipher_update_test(caller_security_t caller);
 int32_t psa_cipher_update_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c036/test_data.h b/api-tests/dev_apis/crypto/test_c036/test_data.h
index c5e4fbe..9d1db05 100644
--- a/api-tests/dev_apis/crypto/test_c036/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c036/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -35,10 +34,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_update - Encrypt - AES CBC_NO_PADDING\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Encrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -50,7 +49,7 @@
  0x20, 0x74, 0x3B}, 16, PSA_SUCCESS
 },
 
-{"Test psa_cipher_update - Encrypt - AES CBC_NO_PADDING (Short input)\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Encrypt - AES CBC_NO_PADDING (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -62,7 +61,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_update - Encrypt - AES CBC_PKCS7\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Encrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -74,7 +73,7 @@
  0x20, 0x74, 0x3b}, 16, PSA_SUCCESS
 },
 
-{"Test psa_cipher_update - Encrypt - AES CBC_PKCS7 (Short input)\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Encrypt - AES CBC_PKCS7 (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -87,7 +86,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_update - Encrypt - AES CTR\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Encrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -102,7 +101,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_update - Encrypt - DES CBC (nopad)\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_update - Encrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a}, 8,
@@ -115,7 +114,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_update - Encrypt - 2-key 3DE -CBC (nopad)\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_update - Encrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -126,7 +125,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_update - Encrypt - 3-key 3DE -CBC (nopad)\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_update - Encrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -137,7 +136,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_128
-{"Test psa_cipher_update - small output buffer size\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - small output buffer size\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -149,7 +148,7 @@
  0x20, 0x74, 0x3B}, 16, PSA_ERROR_BUFFER_TOO_SMALL
 },
 
-{"Test psa_cipher_update - Decrypt - AES CBC_NO_PADDING\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Decrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -161,7 +160,7 @@
  0x93, 0x17, 0x2a}, 16, PSA_SUCCESS
 },
 
-{"Test psa_cipher_update - Decrypt - AES CBC_NO_PADDING (Short input)\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Decrypt - AES CBC_NO_PADDING (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -175,7 +174,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_update - Decrypt - AES CBC_PKCS7\n", 12, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Decrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -187,7 +186,7 @@
  0x93, 0x17, 0x2a}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_update - Decrypt - AES CBC_PKCS7 (Short input)\n", 13, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Decrypt - AES CBC_PKCS7 (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -202,7 +201,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_update - Decrypt - AES CTR\n", 14, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_update - Decrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR,
@@ -218,7 +217,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_update - Decrypt - DES CBC (nopad)\n", 15, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_update - Decrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a}, 8,
@@ -228,7 +227,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_update - Decrypt - 2-key 3DE -CBC (nopad)\n", 16, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_update - Decrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -239,7 +238,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_update - Decrypt - 3-key 3DE -CBC (nopad)\n", 17, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_update - Decrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
diff --git a/api-tests/dev_apis/crypto/test_c037/test_c037.c b/api-tests/dev_apis/crypto/test_c037/test_c037.c
index 86c2931..665047f 100644
--- a/api-tests/dev_apis/crypto/test_c037/test_c037.c
+++ b/api-tests/dev_apis/crypto/test_c037/test_c037.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +23,7 @@
 #define SLOT_1      0
 #define SLOT_2      1
 
-client_test_t test_c037_crypto_list[] = {
+const client_test_t test_c037_crypto_list[] = {
     NULL,
     psa_cipher_finish_test,
     NULL,
@@ -40,6 +39,7 @@
     size_t                  update_length, finish_length;
     psa_cipher_operation_t  operation, invalid_operation;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -69,21 +69,21 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (check1[i].usage == PSA_KEY_USAGE_ENCRYPT)
         {
             /* Set the key for a multipart symmetric encryption operation */
             status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
         }
         else if (check1[i].usage == PSA_KEY_USAGE_DECRYPT)
         {
             /* Set the key for a multipart symmetric decryption operation */
             status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
         }
 
@@ -109,7 +109,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
             continue;
         }
@@ -136,7 +136,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(15));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(16));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c037/test_c037.h b/api-tests/dev_apis/crypto/test_c037/test_c037.h
index cf57c40..14b6ac7 100644
--- a/api-tests/dev_apis/crypto/test_c037/test_c037.h
+++ b/api-tests/dev_apis/crypto/test_c037/test_c037.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c037_crypto_list[];
+extern const client_test_t test_c037_crypto_list[];
 
 int32_t psa_cipher_finish_test(caller_security_t caller);
 #endif /* _TEST_C037_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c037/test_data.h b/api-tests/dev_apis/crypto/test_c037/test_data.h
index 013eec1..8e3c901 100644
--- a/api-tests/dev_apis/crypto/test_c037/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c037/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -35,10 +34,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_finish - Encrypt - AES CBC_NO_PADDING\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Encrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -50,7 +49,7 @@
  0x20, 0x74, 0x3B}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_finish - Encrypt - AES CBC_NO_PADDING (Short input)\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Encrypt - AES CBC_NO_PADDING (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -62,7 +61,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_finish - Encrypt - AES CBC_PKCS7\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Encrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -75,7 +74,7 @@
  0x42, 0x93, 0x03, 0x1c, 0xd4, 0xf3}, 16, PSA_SUCCESS
 },
 
-{"Test psa_cipher_finish - Encrypt - AES CBC_PKCS7 (Short input)\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Encrypt - AES CBC_PKCS7 (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -89,7 +88,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_finish - Encrypt - AES CTR\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Encrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -101,7 +100,7 @@
  0xb2, 0xbd, 0x32}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_finish - Encrypt - AES CTR (short input)\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Encrypt - AES CTR (short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -117,7 +116,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_finish - Encrypt - DES CBC (nopad)\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_finish - Encrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a}, 8,
@@ -127,7 +126,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_finish - Encrypt - 2-key 3DE -CBC (nopad)\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_finish - Encrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -138,7 +137,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_finish - Encrypt - 3-key 3DE -CBC (nopad)\n", 9, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_finish - Encrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -151,7 +150,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_finish - small output buffer size\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - small output buffer size\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -166,7 +165,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_finish - Decrypt - AES CBC_NO_PADDING\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Decrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -179,7 +178,7 @@
  0x93, 0x17, 0x2a}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_finish - Decrypt - AES CBC_NO_PADDING (Short input)\n", 12, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Decrypt - AES CBC_NO_PADDING (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -191,7 +190,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_finish - Decrypt - AES CBC_PKCS7\n", 13, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Decrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -204,7 +203,7 @@
  0x93, 0x17, 0x2a}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_finish - Decrypt - AES CBC_PKCS7 (Short input)\n", 14, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Decrypt - AES CBC_PKCS7 (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -218,7 +217,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_finish - Decrypt - AES CTR\n", 15, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Decrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR,
@@ -231,7 +230,7 @@
  0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_finish - Decrypt - AES CTR (short input)\n", 16, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_finish - Decrypt - AES CTR (short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR,
@@ -247,7 +246,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_finish - Decrypt - DES CBC (nopad)\n", 17, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_finish - Decrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a}, 8,
@@ -257,7 +256,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_finish - Decrypt - 2-key 3DE -CBC (nopad)\n", 18, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_finish - Decrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -268,7 +267,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_finish - 3-key 3DE -CBC (nopad)\n", 19, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_finish - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
diff --git a/api-tests/dev_apis/crypto/test_c038/test_c038.c b/api-tests/dev_apis/crypto/test_c038/test_c038.c
index 8cf69cd..7f80eda 100644
--- a/api-tests/dev_apis/crypto/test_c038/test_c038.c
+++ b/api-tests/dev_apis/crypto/test_c038/test_c038.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c038.h"
 #include "test_data.h"
 
-client_test_t test_c038_crypto_list[] = {
+const client_test_t test_c038_crypto_list[] = {
     NULL,
     psa_cipher_abort_test,
     psa_cipher_abort_before_update_test,
@@ -37,6 +36,7 @@
     int32_t                 i, status;
     psa_cipher_operation_t  operation;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -65,21 +65,21 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (check1[i].usage == PSA_KEY_USAGE_ENCRYPT)
         {
             /* Set the key for a multipart symmetric encryption operation */
             status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
         }
         else if (check1[i].usage == PSA_KEY_USAGE_DECRYPT)
         {
             /* Set the key for a multipart symmetric decryption operation */
             status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT_SETUP, &operation,
-                        check1[i].key_handle, check1[i].key_alg);
+                        key_handle, check1[i].key_alg);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
         }
 
@@ -92,7 +92,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c038/test_c038.h b/api-tests/dev_apis/crypto/test_c038/test_c038.h
index 3568e65..f304d98 100644
--- a/api-tests/dev_apis/crypto/test_c038/test_c038.h
+++ b/api-tests/dev_apis/crypto/test_c038/test_c038.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c038_crypto_list[];
+extern const client_test_t test_c038_crypto_list[];
 
 int32_t psa_cipher_abort_test(caller_security_t caller);
 int32_t psa_cipher_abort_before_update_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c038/test_data.h b/api-tests/dev_apis/crypto/test_c038/test_data.h
index 1dedbec..f3b6788 100644
--- a/api-tests/dev_apis/crypto/test_c038/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c038/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -28,10 +27,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_abort - Encrypt - AES CBC_NO_PADDING\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_abort - Encrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -40,7 +39,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_abort - Encrypt - AES CBC_PKCS7\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_abort - Encrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -49,7 +48,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_abort - Encrypt - AES CTR\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_abort - Encrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -60,7 +59,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_abort - Encrypt - DES CBC (nopad)\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_abort - Encrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
  PSA_SUCCESS
@@ -68,7 +67,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_abort - Encrypt - 2-key 3DE -CBC (nopad)\n", 5, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_abort - Encrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -77,7 +76,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_abort - Encrypt - 3-key 3DE -CBC (nopad)\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_abort - Encrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -88,7 +87,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_abort - Decrypt - AES CBC_NO_PADDING\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_abort - Decrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -97,7 +96,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_abort - Decrypt - AES CBC_PKCS7\n", 8, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_abort - Decrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -106,7 +105,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_abort - Decrypt - AES CTR\n", 9, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_abort - Decrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR,
@@ -117,7 +116,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_abort - Decrypt - DES CBC (nopad)\n", 10, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_abort - Decrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
  PSA_SUCCESS
@@ -125,7 +124,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_abort - Decrypt - 2-key 3DE -CBC (nopad)\n", 11, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_abort - Decrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -134,7 +133,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_abort - Decrypt - 3-key 3DE -CBC (nopad)\n", 12, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_abort - Decrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
diff --git a/api-tests/dev_apis/crypto/test_c039/test_c039.c b/api-tests/dev_apis/crypto/test_c039/test_c039.c
index 72648bc..1df1f76 100644
--- a/api-tests/dev_apis/crypto/test_c039/test_c039.c
+++ b/api-tests/dev_apis/crypto/test_c039/test_c039.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c039.h"
 #include "test_data.h"
 
-client_test_t test_c039_crypto_list[] = {
+const client_test_t test_c039_crypto_list[] = {
     NULL,
     psa_asymmetric_encrypt_test,
     psa_asymmetric_encrypt_negative_test,
@@ -52,6 +51,7 @@
     uint8_t                *salt;
     size_t                  length;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -117,7 +117,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (is_buffer_empty(check1[i].salt, check1[i].salt_length) == TRUE)
@@ -129,7 +129,7 @@
             salt = check1[i].salt;
 
         /* Encrypt a short message with a public key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_ENCRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_ENCRYPT, key_handle,
                     check1[i].key_alg, check1[i].input, check1[i].input_length, salt,
                     check1[i].salt_length, output, check1[i].output_size, &length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
@@ -137,7 +137,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
             continue;
@@ -152,7 +152,7 @@
         if ((check1[i].usage & PSA_KEY_USAGE_DECRYPT) == PSA_KEY_USAGE_DECRYPT)
         {
             status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_DECRYPT,
-                        check1[i].key_handle, check1[i].key_alg, output, length, salt,
+                        key_handle, check1[i].key_alg, output, length, salt,
                         check1[i].salt_length, output, check1[i].output_size, &length);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
@@ -164,7 +164,7 @@
         }
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Reset the key attributes and check if psa_import_key fails */
@@ -180,6 +180,7 @@
     int32_t                 i, status;
     uint8_t                 *salt = NULL;
     size_t                  length;
+    psa_key_handle_t        key_handle = 11;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -202,7 +203,7 @@
         val->print(PRINT_TEST, "[Check %d] Test psa_asymmetric_encrypt - Invalid key handle\n",
                                                                                  g_test_count++);
         /* Encrypt a short message with a public key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_ENCRYPT, check2[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_ENCRYPT, key_handle,
                     check2[i].key_alg, check2[i].input, check2[i].input_length, salt,
                     check2[i].salt_length, output, check2[i].output_size, &length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
diff --git a/api-tests/dev_apis/crypto/test_c039/test_c039.h b/api-tests/dev_apis/crypto/test_c039/test_c039.h
index dd431d3..b31e141 100644
--- a/api-tests/dev_apis/crypto/test_c039/test_c039.h
+++ b/api-tests/dev_apis/crypto/test_c039/test_c039.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c039_crypto_list[];
+extern const client_test_t test_c039_crypto_list[];
 
 int32_t psa_asymmetric_encrypt_test(caller_security_t caller);
 int32_t psa_asymmetric_encrypt_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c039/test_data.h b/api-tests/dev_apis/crypto/test_c039/test_data.h
index e947fd0..93e59a6 100644
--- a/api-tests/dev_apis/crypto/test_c039/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c039/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[16];
     uint32_t                key_length;
@@ -123,7 +122,7 @@
 static test_data check1[] = {
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
-{"Test psa_asymmetric_encrypt - RSA PKCS1V15\n", 1, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_asymmetric_encrypt - RSA PKCS1V15\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -135,7 +134,7 @@
 
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_RSA_OAEP
-{"Test psa_asymmetric_encrypt - RSA OAEP SHA256\n", 2, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_asymmetric_encrypt - RSA OAEP SHA256\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256),
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -144,7 +143,7 @@
  128, 1024, PSA_SUCCESS
 },
 
-{"Test psa_asymmetric_encrypt - RSA OAEP SHA256 with label\n", 3, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_asymmetric_encrypt - RSA OAEP SHA256 with label\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256),
 {0x74, 0x68, 0x69, 0x73, 0x00, 0x69, 0x73, 0x00, 0x61, 0x00, 0x6c, 0x61, 0x62,
  0x65, 0x6c, 0x00}, 16,
@@ -157,7 +156,7 @@
 #endif
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
-{"Test psa_asymmetric_encrypt - RSA KEY_PAIR PKCS1V15\n", 4, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_encrypt - RSA KEY_PAIR PKCS1V15\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -166,7 +165,7 @@
  128, 1024, PSA_SUCCESS
 },
 
-{"Test psa_asymmetric_encrypt - Small output buffer\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_encrypt - Small output buffer\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -177,7 +176,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_asymmetric_encrypt - Invalid algorithm\n", 6, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_asymmetric_encrypt - Invalid algorithm\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_SHA_256,
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -190,7 +189,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
 #ifdef ARCH_TEST_AES_128
-{"Test psa_asymmetric_encrypt - Invalid key type\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_asymmetric_encrypt - Invalid key type\n", PSA_KEY_TYPE_AES,
 {0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05,
  0x7d, 0x39, 0x6e}, 16,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
@@ -203,7 +202,7 @@
 #endif
 
 #ifdef ARCH_TEST_RSA_1024
-{"Test psa_asymmetric_encrypt - Invalid usage\n", 8, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_asymmetric_encrypt - Invalid usage\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -217,7 +216,7 @@
 #ifdef ARCH_TEST_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
 #ifdef ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
-{"Test psa_asymmetric_encrypt - ECC public key\n", 9,
+{"Test psa_asymmetric_encrypt - ECC public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
 {0}, 65, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION,
 {0}, 0,
@@ -227,7 +226,7 @@
  128, 256, PSA_SUCCESS
 },
 
-{"Test psa_asymmetric_encrypt - ECC keypair\n", 10,
+{"Test psa_asymmetric_encrypt - ECC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0}, 97, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256),
 {0}, 0,
@@ -244,7 +243,7 @@
 static test_data check2[] = {
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
 #ifdef ARCH_TEST_RSA_1024
-{"Test psa_asymmetric_encrypt - Negative case\n", 11, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_asymmetric_encrypt - Negative case\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
diff --git a/api-tests/dev_apis/crypto/test_c040/test_c040.c b/api-tests/dev_apis/crypto/test_c040/test_c040.c
index e769c1a..93d242e 100644
--- a/api-tests/dev_apis/crypto/test_c040/test_c040.c
+++ b/api-tests/dev_apis/crypto/test_c040/test_c040.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c040.h"
 #include "test_data.h"
 
-client_test_t test_c040_crypto_list[] = {
+const client_test_t test_c040_crypto_list[] = {
     NULL,
     psa_asymmetric_decrypt_test,
     psa_asymmetric_decrypt_negative_test,
@@ -52,6 +51,7 @@
     uint8_t                 *salt;
     size_t                  length;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -117,7 +117,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         if (is_buffer_empty(check1[i].salt, check1[i].salt_length) == TRUE)
@@ -129,7 +129,7 @@
             salt = check1[i].salt;
 
         /* Decrypt a short message with a private key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_DECRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_DECRYPT, key_handle,
                     check1[i].key_alg, check1[i].input, check1[i].input_length, salt,
                     check1[i].salt_length, output, check1[i].output_size, &length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
@@ -137,7 +137,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
             continue;
@@ -150,7 +150,7 @@
         TEST_ASSERT_MEMCMP(output, check1[i].expected_output, length, TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
@@ -166,6 +166,7 @@
     int32_t                 i, status;
     uint8_t                 *salt;
     size_t                  length;
+    psa_key_handle_t        key_handle = 1;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -189,7 +190,7 @@
         val->print(PRINT_TEST, "[Check %d] Test psa_asymmetric_decrypt - Invalid key handle\n",
                                                                                  g_test_count++);
         /* Encrypt a short message with a public key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_DECRYPT, check2[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_DECRYPT, key_handle,
                     check2[i].key_alg, check2[i].input, check2[i].input_length, salt,
                     check2[i].salt_length, output, check2[i].output_size, &length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
diff --git a/api-tests/dev_apis/crypto/test_c040/test_c040.h b/api-tests/dev_apis/crypto/test_c040/test_c040.h
index 80e95f9..8758446 100644
--- a/api-tests/dev_apis/crypto/test_c040/test_c040.h
+++ b/api-tests/dev_apis/crypto/test_c040/test_c040.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c040_crypto_list[];
+extern const client_test_t test_c040_crypto_list[];
 
 int32_t psa_asymmetric_decrypt_test(caller_security_t caller);
 int32_t psa_asymmetric_decrypt_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c040/test_data.h b/api-tests/dev_apis/crypto/test_c040/test_data.h
index 371d230..348065c 100644
--- a/api-tests/dev_apis/crypto/test_c040/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c040/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[16];
     uint32_t                key_length;
@@ -125,7 +124,7 @@
 static test_data check1[] = {
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
-{"Test psa_asymmetric_decrypt - RSA KEY_PAIR PKCS1V15\n", 1, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_decrypt - RSA KEY_PAIR PKCS1V15\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0x99, 0xff, 0xde, 0x2f, 0xcc, 0x00, 0xc9, 0xcc, 0x01, 0x97, 0x2e, 0xbf, 0xa7,
@@ -148,7 +147,7 @@
 
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_RSA_OAEP
-{"Test psa_asymmetric_decrypt - RSA KEY_PAIR OAEP SHA256\n", 2, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_decrypt - RSA KEY_PAIR OAEP SHA256\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256),
 {0}, 0,
 {0x3d, 0x31, 0x46, 0xb1, 0xc9, 0x82, 0x00, 0x42, 0x73, 0xa9, 0xeb, 0xb9, 0xb0,
@@ -166,7 +165,7 @@
  0, 1024, PSA_SUCCESS
 },
 
-{"Test psa_asymmetric_decrypt - RSA KEY_PAIR OAEP SHA256 with label\n", 3,
+{"Test psa_asymmetric_decrypt - RSA KEY_PAIR OAEP SHA256 with label\n",
  PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_OAEP(PSA_ALG_SHA_256),
 {0x74, 0x68, 0x69, 0x73, 0x00, 0x69, 0x73, 0x00, 0x61, 0x00, 0x6c, 0x61, 0x62,
@@ -191,7 +190,7 @@
 #endif
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
-{"Test psa_asymmetric_decrypt - Invalid key type (RSA public key)\n", 4,
+{"Test psa_asymmetric_decrypt - Invalid key type (RSA public key)\n",
 PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
@@ -210,7 +209,7 @@
  0, 1024, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_asymmetric_decrypt - Small output buffer\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_decrypt - Small output buffer\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0x99, 0xff, 0xde, 0x2f, 0xcc, 0x00, 0xc9, 0xcc, 0x01, 0x97, 0x2e, 0xbf, 0xa7,
@@ -232,7 +231,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_asymmetric_decrypt - Invalid algorithm\n", 6, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_decrypt - Invalid algorithm\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_DECRYPT, PSA_ALG_SHA_256,
 {0}, 0,
 {0x99, 0xff, 0xde, 0x2f, 0xcc, 0x00, 0xc9, 0xcc, 0x01, 0x97, 0x2e, 0xbf, 0xa7,
@@ -256,7 +255,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
 #ifdef ARCH_TEST_AES_128
-{"Test psa_asymmetric_decrypt - Invalid key type (AES Key)\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_asymmetric_decrypt - Invalid key type (AES Key)\n", PSA_KEY_TYPE_AES,
 {0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05,
  0x7d, 0x39, 0x6e}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
@@ -279,7 +278,7 @@
 #endif
 
 #ifdef ARCH_TEST_RSA_1024
-{"Test psa_asymmetric_decrypt - Invalid usage\n", 8, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_decrypt - Invalid usage\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0x99, 0xff, 0xde, 0x2f, 0xcc, 0x00, 0xc9, 0xcc, 0x01, 0x97, 0x2e, 0xbf, 0xa7,
@@ -305,7 +304,7 @@
 static test_data check2[] = {
 #ifdef ARCH_TEST_RSA_PKCS1V15_CRYPT
 #ifdef ARCH_TEST_RSA_1024
-{"Test psa_asymmetric_decrypt - Negative case\n", 1, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_decrypt - Negative case\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_DECRYPT, PSA_ALG_RSA_PKCS1V15_CRYPT,
 {0}, 0,
 {0x99, 0xff, 0xde, 0x2f, 0xcc, 0x00, 0xc9, 0xcc, 0x01, 0x97, 0x2e, 0xbf, 0xa7,
diff --git a/api-tests/dev_apis/crypto/test_c041/test_c041.c b/api-tests/dev_apis/crypto/test_c041/test_c041.c
index 8221728..c7cf836 100644
--- a/api-tests/dev_apis/crypto/test_c041/test_c041.c
+++ b/api-tests/dev_apis/crypto/test_c041/test_c041.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c041.h"
 #include "test_data.h"
 
-client_test_t test_c041_crypto_list[] = {
+const client_test_t test_c041_crypto_list[] = {
     NULL,
     psa_asymmetric_sign_test,
     psa_asymmetric_sign_negative_test,
@@ -38,6 +37,7 @@
     const uint8_t           *key_data;
     size_t                  length;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -102,11 +102,11 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Sign a hash or short message with a private key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_SIGN, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_SIGN, key_handle,
                     check1[i].key_alg, check1[i].input, check1[i].input_length,
                     signature, check1[i].signature_size, &length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
@@ -114,7 +114,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
             continue;
@@ -127,7 +127,7 @@
         TEST_ASSERT_MEMCMP(signature, check1[i].expected_signature, length, TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
     }
 
@@ -139,6 +139,7 @@
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
     size_t                  length;
+    psa_key_handle_t        key_handle = 10;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -153,7 +154,7 @@
         val->print(PRINT_TEST, "[Check %d] Test psa_asymmetric_sign - Invalid key handle\n",
                                                                                 g_test_count++);
         /* Sign a hash or short message with a private key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_SIGN, check2[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_SIGN, key_handle,
                     check2[i].key_alg, check2[i].input, check2[i].input_length,
                     signature, check2[i].signature_size, &length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
diff --git a/api-tests/dev_apis/crypto/test_c041/test_c041.h b/api-tests/dev_apis/crypto/test_c041/test_c041.h
index f761ec6..7bb26cb 100644
--- a/api-tests/dev_apis/crypto/test_c041/test_c041.h
+++ b/api-tests/dev_apis/crypto/test_c041/test_c041.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c041_crypto_list[];
+extern const client_test_t test_c041_crypto_list[];
 
 int32_t psa_asymmetric_sign_test(caller_security_t caller);
 int32_t psa_asymmetric_sign_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c041/test_data.h b/api-tests/dev_apis/crypto/test_c041/test_data.h
index 8c596e1..cbd1dd1 100644
--- a/api-tests/dev_apis/crypto/test_c041/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c041/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[16];
     uint32_t                key_length;
@@ -109,10 +108,10 @@
 0x5e, 0x71, 0x78, 0x4e, 0x25, 0xac, 0xa4, 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a,
 0xae, 0x59, 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, 0x2b, 0x24};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_asymmetric_sign - RSA KEY_PAIR PKCS1V15 RAW\n", 1, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - RSA KEY_PAIR PKCS1V15 RAW\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_SIGN, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
 {0x61, 0x62, 0x63}, 3, 128,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
@@ -131,7 +130,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
 #ifdef ARCH_TEST_SHA256
-{"Test psa_asymmetric_sign - RSA KEY_PAIR PKCS1V15 SHA-256\n", 2, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - RSA KEY_PAIR PKCS1V15 SHA-256\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_SIGN, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
  0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10,
@@ -155,7 +154,7 @@
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_DETERMINISTIC_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_asymmetric_sign - ECDSA SECP256R1 SHA-256\n", 3,
+{"Test psa_asymmetric_sign - ECDSA SECP256R1 SHA-256\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1), {0}, 32,
  PSA_KEY_USAGE_SIGN, PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256),
 {0x9a, 0xc4, 0x33, 0x5b, 0x46, 0x9b, 0xbd, 0x79, 0x14, 0x39, 0x24, 0x85, 0x04,
@@ -173,7 +172,7 @@
 
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
-{"Test psa_asymmetric_sign - Invalid key type (RSA public key)\n", 4,
+{"Test psa_asymmetric_sign - Invalid key type (RSA public key)\n",
 PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_SIGN, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -192,7 +191,7 @@
  128, 1024, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_asymmetric_sign - Small output buffer\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - Small output buffer\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_SIGN, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
  0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10,
@@ -211,7 +210,7 @@
 },
 #endif
 
-{"Test psa_asymmetric_sign - Invalid algorithm\n", 6, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - Invalid algorithm\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_SIGN, PSA_ALG_SHA_256,
 {0x61, 0x62, 0x63}, 3, 128,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
@@ -230,7 +229,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
 #ifdef ARCH_TEST_AES_128
-{"Test psa_asymmetric_sign - Invalid key type (AES Key)\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_asymmetric_sign - Invalid key type (AES Key)\n", PSA_KEY_TYPE_AES,
 {0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05,
  0x7d, 0x39, 0x6e}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_SIGN,
  PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
@@ -253,7 +252,7 @@
 
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_asymmetric_sign - Invalid usage\n", 8, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - Invalid usage\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
 {0x61, 0x62, 0x63}, 3, 128,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
@@ -272,7 +271,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
 #ifdef ARCH_TEST_SHA256
-{"Test psa_asymmetric_sign - Wrong hash size\n", 9, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - Wrong hash size\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_SIGN, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
  0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10,
@@ -294,10 +293,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_asymmetric_sign - Negative case\n", 10, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_sign - Negative case\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_SIGN, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
 {0x61, 0x62, 0x63}, 3, 128,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
diff --git a/api-tests/dev_apis/crypto/test_c042/test_c042.c b/api-tests/dev_apis/crypto/test_c042/test_c042.c
index 996577d..f257c82 100644
--- a/api-tests/dev_apis/crypto/test_c042/test_c042.c
+++ b/api-tests/dev_apis/crypto/test_c042/test_c042.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c042.h"
 #include "test_data.h"
 
-client_test_t test_c042_crypto_list[] = {
+const client_test_t test_c042_crypto_list[] = {
     NULL,
     psa_asymmetric_verify_test,
     psa_asymmetric_verify_negative_test,
@@ -36,6 +35,7 @@
     int32_t                 i, status;
     const uint8_t           *key_data;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -99,17 +99,17 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Verify the signature a hash or short message using a public key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_VERIFY, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_VERIFY, key_handle,
                     check1[i].key_alg, check1[i].input, check1[i].input_length,
                     check1[i].signature, check1[i].signature_size);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy a key and restore the slot to its default state */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
     }
 
@@ -120,6 +120,7 @@
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
+    psa_key_handle_t        key_handle = 13;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -135,7 +136,7 @@
         TEST_ASSERT_EQUAL(status, VAL_STATUS_SUCCESS, TEST_CHECKPOINT_NUM(2));
 
         /* Verify the signature a hash or short message using a public key */
-        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_VERIFY, check2[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_ASYMMTERIC_VERIFY, key_handle,
                     check2[i].key_alg, check2[i].input, check2[i].input_length,
                     check2[i].signature, check2[i].signature_size);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
diff --git a/api-tests/dev_apis/crypto/test_c042/test_c042.h b/api-tests/dev_apis/crypto/test_c042/test_c042.h
index ffa2eaf..9fcdee8 100644
--- a/api-tests/dev_apis/crypto/test_c042/test_c042.h
+++ b/api-tests/dev_apis/crypto/test_c042/test_c042.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c042_crypto_list[];
+extern const client_test_t test_c042_crypto_list[];
 
 int32_t psa_asymmetric_verify_test(caller_security_t caller);
 int32_t psa_asymmetric_verify_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c042/test_data.h b/api-tests/dev_apis/crypto/test_c042/test_data.h
index 95a1c72..7ac5096 100644
--- a/api-tests/dev_apis/crypto/test_c042/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c042/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[16];
     uint32_t                key_length;
@@ -114,10 +113,10 @@
 0x5e, 0x71, 0x78, 0x4e, 0x25, 0xac, 0xa4, 0xba, 0xf2, 0x5b, 0xe5, 0x73, 0x8a,
 0xae, 0x59, 0xbb, 0xfe, 0x1c, 0x99, 0x77, 0x81, 0x44, 0x7a, 0x2b, 0x24};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_asymmetric_verify - RSA KEY_PAIR PKCS1V15 RAW\n", 1, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - RSA KEY_PAIR PKCS1V15 RAW\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
 {0x61, 0x62, 0x63}, 3,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
@@ -136,7 +135,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
 #ifdef ARCH_TEST_SHA256
-{"Test psa_asymmetric_verify - RSA KEY_PAIR PKCS1V15 SHA-256\n", 2, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - RSA KEY_PAIR PKCS1V15 SHA-256\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
  0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10,
@@ -160,7 +159,7 @@
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_DETERMINISTIC_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_asymmetric_verify - ECDSA KEY_PAIR SECP256R1 SHA-256\n", 3,
+{"Test psa_asymmetric_verify - ECDSA KEY_PAIR SECP256R1 SHA-256\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1), {0}, 32,
  PSA_KEY_USAGE_VERIFY, PSA_ALG_DETERMINISTIC_ECDSA(PSA_ALG_SHA_256),
 {0x9a, 0xc4, 0x33, 0x5b, 0x46, 0x9b, 0xbd, 0x79, 0x14, 0x39, 0x24, 0x85, 0x04,
@@ -178,7 +177,7 @@
 
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
-{"Test psa_asymmetric_verify - RSA public key\n", 4,
+{"Test psa_asymmetric_verify - RSA public key\n",
 PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -197,7 +196,7 @@
  128, 1024, PSA_SUCCESS
 },
 
-{"Test psa_asymmetric_verify - Small output buffer\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - Small output buffer\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
  0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10,
@@ -216,7 +215,7 @@
 },
 #endif
 
-{"Test psa_asymmetric_verify - Invalid algorithm\n", 6, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - Invalid algorithm\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_VERIFY, PSA_ALG_SHA_256,
 {0x61, 0x62, 0x63}, 3,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
@@ -235,7 +234,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
 #ifdef ARCH_TEST_AES_128
-{"Test psa_asymmetric_verify - Invalid key type (AES Key)\n", 7, PSA_KEY_TYPE_AES,
+{"Test psa_asymmetric_verify - Invalid key type (AES Key)\n", PSA_KEY_TYPE_AES,
 {0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xaf, 0x05,
  0x7d, 0x39, 0x6e}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_VERIFY,
  PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
@@ -258,7 +257,7 @@
 
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_asymmetric_verify - Invalid usage\n", 8, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - Invalid usage\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
 {0x61, 0x62, 0x63}, 3,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
@@ -277,7 +276,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN
 #ifdef ARCH_TEST_SHA256
-{"Test psa_asymmetric_verify - Wrong hash size\n", 9, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - Wrong hash size\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
  0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10,
@@ -295,7 +294,7 @@
  128, 1024, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_asymmetric_verify - Wrong signature\n", 10,
+{"Test psa_asymmetric_verify - Wrong signature\n",
 PSA_KEY_TYPE_RSA_PUBLIC_KEY,
 {0}, 162, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256),
 {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d,
@@ -319,7 +318,7 @@
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
 #ifdef ARCH_TEST_ECDSA
-{"Test psa_asymmetric_verify - EC public key\n", 11,
+{"Test psa_asymmetric_verify - EC public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
 {0}, 65, PSA_KEY_USAGE_VERIFY, PSA_ALG_ECDSA_ANY,
 {0x9a, 0xc4, 0x33, 0x5b, 0x46, 0x9b, 0xbd, 0x79, 0x14, 0x39, 0x24, 0x85, 0x04,
@@ -333,7 +332,7 @@
  64, 512, PSA_SUCCESS
 },
 
-{"Test psa_asymmetric_verify - Wrong signature size\n", 12,
+{"Test psa_asymmetric_verify - Wrong signature size\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
 {0}, 65, PSA_KEY_USAGE_VERIFY, PSA_ALG_ECDSA_ANY,
 {0x9a, 0xc4, 0x33, 0x5b, 0x46, 0x9b, 0xbd, 0x79, 0x14, 0x39, 0x24, 0x85, 0x04,
@@ -350,10 +349,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_RSA_1024
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-{"Test psa_asymmetric_verify - Negative case\n", 13, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_asymmetric_verify - Negative case\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
 {0}, 610, PSA_KEY_USAGE_VERIFY, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
 {0x61, 0x62, 0x63}, 3,
 {0x2c, 0x77, 0x44, 0x98, 0x3f, 0x02, 0x3a, 0xc7, 0xbb, 0x1c, 0x55, 0x52, 0x9d,
diff --git a/api-tests/dev_apis/crypto/test_c043/test_c043.c b/api-tests/dev_apis/crypto/test_c043/test_c043.c
index 5817fa2..d048364 100644
--- a/api-tests/dev_apis/crypto/test_c043/test_c043.c
+++ b/api-tests/dev_apis/crypto/test_c043/test_c043.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c043.h"
 #include "test_data.h"
 
-client_test_t test_c043_crypto_list[] = {
+const client_test_t test_c043_crypto_list[] = {
     NULL,
     psa_raw_key_agreement_test,
     psa_raw_key_agreement_negative_test,
@@ -36,6 +36,7 @@
     int32_t                 i, status;
     size_t                  output_length;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -63,19 +64,19 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set up a key agreement operation */
         status = val->crypto_function(VAL_CRYPTO_RAW_KEY_AGREEMENT, check1[i].key_alg,
-                    check1[i].key_handle, check1[i].peer_key, check1[i].peer_key_length,
+                    key_handle, check1[i].peer_key, check1[i].peer_key_length,
                     output, check1[i].output_size, &output_length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy a key and restore the slot to its default state */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
             continue;
         }
@@ -85,7 +86,7 @@
         TEST_CHECKPOINT_NUM(7));
 
         /* Destroy a key and restore the slot to its default state */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
     }
 
@@ -97,6 +98,7 @@
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
     size_t                  output_length;
+    psa_key_handle_t        key_handle = 8;
 
     /* Initialize the PSA crypto library*/
     status = val->crypto_function(VAL_CRYPTO_INIT);
@@ -113,7 +115,7 @@
                                                                                  g_test_count++);
         /* Set up a key agreement operation */
         status = val->crypto_function(VAL_CRYPTO_RAW_KEY_AGREEMENT, check2[i].key_alg,
-                    check2[i].key_handle, check2[i].peer_key, check2[i].peer_key_length,
+                    key_handle, check2[i].peer_key, check2[i].peer_key_length,
                     output, check2[i].output_size, &output_length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(3));
 
diff --git a/api-tests/dev_apis/crypto/test_c043/test_c043.h b/api-tests/dev_apis/crypto/test_c043/test_c043.h
index 136a47b..265be6f 100644
--- a/api-tests/dev_apis/crypto/test_c043/test_c043.h
+++ b/api-tests/dev_apis/crypto/test_c043/test_c043.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c043_crypto_list[];
+extern const client_test_t test_c043_crypto_list[];
 
 int32_t psa_raw_key_agreement_test(caller_security_t caller);
 int32_t psa_raw_key_agreement_negative_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c043/test_data.h b/api-tests/dev_apis/crypto/test_c043/test_data.h
index 15cf38f..c66c2b2 100644
--- a/api-tests/dev_apis/crypto/test_c043/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c043/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[91];
     uint32_t                key_length;
@@ -34,10 +33,10 @@
 } test_data;
 
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_ECDH
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_raw_key_agreement - ECDH SECP256R1\n", 1,
+{"Test psa_raw_key_agreement - ECDH SECP256R1\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -53,7 +52,7 @@
  0x64, 0xd0, 0x4b, 0x94, 0x42, 0xde}, 32, 32, PSA_SUCCESS
 },
 
-{"Test psa_raw_key_agreement - Small buffer size\n", 1,
+{"Test psa_raw_key_agreement - Small buffer size\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -72,7 +71,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP384R1
-{"Test psa_raw_key_agreement - ECDH SECP384R1\n", 2,
+{"Test psa_raw_key_agreement - ECDH SECP384R1\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP384R1),
 {0x09, 0x9f, 0x3c, 0x70, 0x34, 0xd4, 0xa2, 0xc6, 0x99, 0x88, 0x4d, 0x73, 0xa3,
  0x75, 0xa6, 0x7f, 0x76, 0x24, 0xef, 0x7c, 0x6b, 0x3c, 0x0f, 0x16, 0x06, 0x47,
@@ -96,7 +95,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_raw_key_agreement - Invalid usage\n", 3,
+{"Test psa_raw_key_agreement - Invalid usage\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -112,7 +111,7 @@
  0x64, 0xd0, 0x4b, 0x94, 0x42, 0xde}, 32, 32, PSA_ERROR_NOT_PERMITTED
 },
 
-{"Test psa_raw_key_agreement - Unknown KDF\n", 4,
+{"Test psa_raw_key_agreement - Unknown KDF\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -134,7 +133,7 @@
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
 #ifdef ARCH_TEST_SHA256
 #ifdef ARCH_TEST_HKDF
-{"Test psa_raw_key_agreement - Not a key agreement alg\n", 5,
+{"Test psa_raw_key_agreement - Not a key agreement alg\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -153,7 +152,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECDH
-{"Test psa_raw_key_agreement - Public key on different curve\n", 6,
+{"Test psa_raw_key_agreement - Public key on different curve\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
@@ -170,7 +169,7 @@
 {0}, 0, SIZE_50B, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_raw_key_agreement - Public key instead of private key\n", 7,
+{"Test psa_raw_key_agreement - Public key instead of private key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
 {0x04, 0xd1, 0x2d, 0xfb, 0x52, 0x89, 0xc8, 0xd4, 0xf8, 0x12, 0x08, 0xb7, 0x02,
  0x70, 0x39, 0x8c, 0x34, 0x22, 0x96, 0x97, 0x0a, 0x0b, 0xcc, 0xb7, 0x4c, 0x73,
@@ -189,10 +188,10 @@
 #endif
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 #ifdef ARCH_TEST_ECDH
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_raw_key_agreement - Negative case\n", 8,
+{"Test psa_raw_key_agreement - Negative case\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP256R1),
 {0xc8, 0x8f, 0x01, 0xf5, 0x10, 0xd9, 0xac, 0x3f, 0x70, 0xa2, 0x92, 0xda, 0xa2,
  0x31, 0x6d, 0xe5, 0x44, 0xe9, 0xaa, 0xb8, 0xaf, 0xe8, 0x40, 0x49, 0xc6, 0x2a,
diff --git a/api-tests/dev_apis/crypto/test_c044/test_c044.c b/api-tests/dev_apis/crypto/test_c044/test_c044.c
index 60cf422..f2a085b 100644
--- a/api-tests/dev_apis/crypto/test_c044/test_c044.c
+++ b/api-tests/dev_apis/crypto/test_c044/test_c044.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c044_crypto_list[] = {
+const client_test_t test_c044_crypto_list[] = {
     NULL,
     psa_copy_key_test,
     NULL,
@@ -43,6 +43,7 @@
     int32_t               status, export_status;
     psa_key_attributes_t  source_attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t  target_attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -103,7 +104,7 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &source_attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Setup the attributes for the target key */
@@ -115,12 +116,12 @@
         check1[i].target_usage);
 
         /* Make a copy of a key */
-        status = val->crypto_function(VAL_CRYPTO_COPY_KEY, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_COPY_KEY, key_handle,
                  &target_attributes, &target_handle);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the source key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         if (check1[i].expected_status != PSA_SUCCESS)
@@ -185,7 +186,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(15));
 
         /* Copy on a destroyed source should be an error */
-        status = val->crypto_function(VAL_CRYPTO_COPY_KEY, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_COPY_KEY, key_handle,
                  &target_attributes, &target_handle);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(16));
 
diff --git a/api-tests/dev_apis/crypto/test_c044/test_c044.h b/api-tests/dev_apis/crypto/test_c044/test_c044.h
index caea58b..1a5e9c7 100644
--- a/api-tests/dev_apis/crypto/test_c044/test_c044.h
+++ b/api-tests/dev_apis/crypto/test_c044/test_c044.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c044_crypto_list[];
+extern const client_test_t test_c044_crypto_list[];
 
 int32_t psa_copy_key_test(caller_security_t caller);
 #endif /* _TEST_C044_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c044/test_data.h b/api-tests/dev_apis/crypto/test_c044/test_data.h
index e5dd430..0903eb6 100644
--- a/api-tests/dev_apis/crypto/test_c044/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c044/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[34];
     uint32_t                key_length;
@@ -164,10 +163,10 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_copy_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_copy_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE,
@@ -177,7 +176,7 @@
  BYTES_TO_BITS(AES_16B_KEY_SIZE), AES_16B_KEY_SIZE, PSA_SUCCESS
 },
 
-{"Test psa_copy_key without copy usage\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_copy_key without copy usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE,
@@ -189,7 +188,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_copy_key 24 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_copy_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05},
  AES_24B_KEY_SIZE,
@@ -202,7 +201,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_copy_key 32 Byte AES\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_copy_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -218,7 +217,7 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_copy_key 2048 RSA public key\n", 5, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_copy_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270,
  PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_SIGN,
@@ -229,7 +228,7 @@
  2048, 270, PSA_SUCCESS
 },
 
-{"Test psa_copy_key with RSA 2048 keypair\n", 6, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_copy_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193,
  PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT,
@@ -241,7 +240,7 @@
 },
 
 {"Test psa_copy_key with Incompatible target policy(source and target)\n",
- 7, PSA_KEY_TYPE_RSA_KEY_PAIR,
+ PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193,
  PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT, PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT,
@@ -251,7 +250,7 @@
  2048, 1193, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_copy_key with Incompatible constraint\n", 8, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_copy_key with Incompatible constraint\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193,
  PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT, PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT,
@@ -261,7 +260,7 @@
  2048, 1193, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_copy_key with unexport source key usage\n", 9, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_copy_key with unexport source key usage\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193,
  PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_SIGN, PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT,
@@ -276,7 +275,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_copy_key with DES 64 bit key\n", 10, PSA_KEY_TYPE_DES,
+{"Test psa_copy_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT, PSA_KEY_USAGE_COPY | PSA_KEY_USAGE_EXPORT,
@@ -287,7 +286,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_copy_key with Triple DES 2-Key\n", 11, PSA_KEY_TYPE_DES,
+{"Test psa_copy_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE,
@@ -299,7 +298,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_copy_key with Triple DES 3-Key\n", 12, PSA_KEY_TYPE_DES,
+{"Test psa_copy_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -314,7 +313,7 @@
 
 #ifdef ARCH_TEST_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_copy_key with EC Public key\n", 13,
+{"Test psa_copy_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
  {0},
  65,
@@ -326,7 +325,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_copy_key with EC keypair\n", 14,
+{"Test psa_copy_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  {0},
  28,
@@ -340,7 +339,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES
-{"Test psa_copy_key with Incompatible target policy\n", 15, PSA_KEY_TYPE_AES,
+{"Test psa_copy_key with Incompatible target policy\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE,
diff --git a/api-tests/dev_apis/crypto/test_c045/test_c045.c b/api-tests/dev_apis/crypto/test_c045/test_c045.c
index 03e06f8..c03ab4e 100644
--- a/api-tests/dev_apis/crypto/test_c045/test_c045.c
+++ b/api-tests/dev_apis/crypto/test_c045/test_c045.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c045_crypto_list[] = {
+const client_test_t test_c045_crypto_list[] = {
     NULL,
     psa_hash_clone_test,
     NULL,
diff --git a/api-tests/dev_apis/crypto/test_c045/test_c045.h b/api-tests/dev_apis/crypto/test_c045/test_c045.h
index df92d96..aba247e 100644
--- a/api-tests/dev_apis/crypto/test_c045/test_c045.h
+++ b/api-tests/dev_apis/crypto/test_c045/test_c045.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c045_crypto_list[];
+extern const client_test_t test_c045_crypto_list[];
 
 int32_t psa_hash_clone_test(caller_security_t caller);
 #endif /* _TEST_C045_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c045/test_data.h b/api-tests/dev_apis/crypto/test_c045/test_data.h
index 55eff9f..a284be0 100644
--- a/api-tests/dev_apis/crypto/test_c045/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c045/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@
 0xcb, 0x7b, 0x00, 0xae, 0xa8, 0x91, 0x49, 0x9c, 0xf4, 0xef, 0x6a, 0x03, 0xc8, 0xa8, 0x3f, 0xe3,
 0x7c, 0x3f, 0x7b, 0xaf};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_MD2
 {"Test psa_hash_clone with MD2 algorithm\n",
  PSA_ALG_MD2, 0xbd, 1,
diff --git a/api-tests/dev_apis/crypto/test_c046/test_c046.c b/api-tests/dev_apis/crypto/test_c046/test_c046.c
index 0ed33fa..6f08f80 100644
--- a/api-tests/dev_apis/crypto/test_c046/test_c046.c
+++ b/api-tests/dev_apis/crypto/test_c046/test_c046.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c046.h"
 #include "test_data.h"
 
-client_test_t test_c046_crypto_list[] = {
+const client_test_t test_c046_crypto_list[] = {
     NULL,
     psa_mac_compute_test,
     NULL,
@@ -36,6 +35,7 @@
     int32_t               i, status;
     size_t                length;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -64,11 +64,11 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Calculate the MAC (message authentication code) of a message */
-        status = val->crypto_function(VAL_CRYPTO_MAC_COMPUTE, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_MAC_COMPUTE, key_handle,
                  check1[i].key_alg, check1[i].data, check1[i].data_size, data,
                  check1[i].mac_size, &length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
@@ -76,7 +76,7 @@
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
             continue;
@@ -91,13 +91,13 @@
         memset(data, 0, sizeof(data));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes and check if psa_import_key fails */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
-        status = val->crypto_function(VAL_CRYPTO_MAC_COMPUTE, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_MAC_COMPUTE, key_handle,
                  check1[i].key_alg, check1[i].data, check1[i].data_size, data,
                  check1[i].mac_size, &length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(9));
diff --git a/api-tests/dev_apis/crypto/test_c046/test_c046.h b/api-tests/dev_apis/crypto/test_c046/test_c046.h
index b0d994e..ddd8c1b 100644
--- a/api-tests/dev_apis/crypto/test_c046/test_c046.h
+++ b/api-tests/dev_apis/crypto/test_c046/test_c046.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c046_crypto_list[];
+extern const client_test_t test_c046_crypto_list[];
 
 int32_t psa_mac_compute_test(caller_security_t caller);
 #endif /* _TEST_C046_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c046/test_data.h b/api-tests/dev_apis/crypto/test_c046/test_data.h
index 5ab7070..6830ac4 100644
--- a/api-tests/dev_apis/crypto/test_c046/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c046/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -33,10 +32,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_compute HMAC SHA 224\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute HMAC SHA 224\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -47,7 +46,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_mac_compute - Incompactible HMAC for CMAC\n", 2, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute - Incompactible HMAC for CMAC\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -58,7 +57,7 @@
  PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_mac_compute - Invalid usage\n", 3, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute - Invalid usage\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -69,7 +68,7 @@
  PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_mac_compute - truncated MAC too small\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute - truncated MAC too small\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -80,7 +79,7 @@
  PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_mac_compute - truncated MAC too large\n", 5, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute - truncated MAC too large\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -91,7 +90,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_mac_compute - bad algorithm (unknown MAC algorithm)\n", 6, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute - bad algorithm (unknown MAC algorithm)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -104,7 +103,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_compute HMAC SHA 256\n", 7, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute HMAC SHA 256\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -117,7 +116,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA512
-{"Test psa_mac_compute HMAC SHA 512\n", 8, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute HMAC SHA 512\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -132,7 +131,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_compute HMAC SHA 224 (truncated to 8 Byte)\n", 9, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_compute HMAC SHA 224 (truncated to 8 Byte)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -145,7 +144,7 @@
 
 #ifdef ARCH_TEST_CMAC
 #ifdef ARCH_TEST_AES_128
-{"Test psa_mac_compute CMAC AES 128\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_mac_compute CMAC AES 128\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -155,7 +154,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_mac_compute small size buffer\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_mac_compute small size buffer\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -166,7 +165,7 @@
 },
 #endif
 
-{"Test psa_mac_compute - Invalid key type\n", 12, PSA_KEY_TYPE_RAW_DATA,
+{"Test psa_mac_compute - Invalid key type\n", PSA_KEY_TYPE_RAW_DATA,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
diff --git a/api-tests/dev_apis/crypto/test_c047/test_c047.c b/api-tests/dev_apis/crypto/test_c047/test_c047.c
index da4d267..55f8d6b 100644
--- a/api-tests/dev_apis/crypto/test_c047/test_c047.c
+++ b/api-tests/dev_apis/crypto/test_c047/test_c047.c
@@ -1,6 +1,5 @@
-
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +20,7 @@
 #include "test_c047.h"
 #include "test_data.h"
 
-client_test_t test_c047_crypto_list[] = {
+const client_test_t test_c047_crypto_list[] = {
     NULL,
     psa_mac_verify_test,
     NULL,
@@ -34,6 +33,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -61,24 +61,24 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Calculate the MAC of a message and compare it with a reference value */
-        status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY, key_handle,
                  check1[i].key_alg, check1[i].data, check1[i].data_size,
                  check1[i].expected_mac, check1[i].mac_size);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Reset the key attributes and check if psa_import_key fails */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
         /* Calculate the MAC of a message on a destroyed key handle should be an error */
-        status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_MAC_VERIFY, key_handle,
                  check1[i].key_alg, check1[i].data, check1[i].data_size,
                  check1[i].expected_mac, check1[i].mac_size);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(6));
diff --git a/api-tests/dev_apis/crypto/test_c047/test_c047.h b/api-tests/dev_apis/crypto/test_c047/test_c047.h
index 7e36fd3..e33762c 100644
--- a/api-tests/dev_apis/crypto/test_c047/test_c047.h
+++ b/api-tests/dev_apis/crypto/test_c047/test_c047.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c047_crypto_list[];
+extern const client_test_t test_c047_crypto_list[];
 
 int32_t psa_mac_verify_test(caller_security_t caller);
 #endif /* _TEST_C047_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c047/test_data.h b/api-tests/dev_apis/crypto/test_c047/test_data.h
index e94b27f..5a21729 100644
--- a/api-tests/dev_apis/crypto/test_c047/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c047/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[64];
     uint32_t                key_length;
@@ -32,10 +31,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_verify HMAC SHA 224\n", 1, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify HMAC SHA 224\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -48,7 +47,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify HMAC SHA 256\n", 2, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify HMAC SHA 256\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -59,7 +58,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_mac_verify - Incompactible HMAC for CMAC\n", 3, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify - Incompactible HMAC for CMAC\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -70,7 +69,7 @@
  PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_mac_verify - Invalid usage\n", 4, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify - Invalid usage\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -81,7 +80,7 @@
  PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_mac_verify - Truncated MAC too large\n", 5, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify - Truncated MAC too large\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -92,7 +91,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_mac_verify - Truncated MAC too small\n", 6, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify - Truncated MAC too small\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -103,7 +102,7 @@
  PSA_ERROR_NOT_SUPPORTED
 },
 
-{"Test psa_mac_verify - bad algorithm (unknown MAC algorithm)\n", 7, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify - bad algorithm (unknown MAC algorithm)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -117,7 +116,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA512
-{"Test psa_mac_verify HMAC SHA 512\n", 8, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify HMAC SHA 512\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -132,7 +131,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_verify HMAC SHA 224 (truncated to 8 Byte)\n", 9, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify HMAC SHA 224 (truncated to 8 Byte)\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -145,7 +144,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CMAC
-{"Test psa_mac_verify CMAC AES 128\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_mac_verify CMAC AES 128\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -157,7 +156,7 @@
 #endif
 #endif
 
-{"Test psa_mac_verify - Invalid key type\n", 11, PSA_KEY_TYPE_RAW_DATA,
+{"Test psa_mac_verify - Invalid key type\n", PSA_KEY_TYPE_RAW_DATA,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, 16,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -169,7 +168,7 @@
 
 #ifdef ARCH_TEST_HMAC
 #ifdef ARCH_TEST_SHA256
-{"Test psa_mac_verify small size buffer\n", 12, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify small size buffer\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
@@ -182,7 +181,7 @@
 #endif
 
 #ifdef ARCH_TEST_SHA224
-{"Test psa_mac_verify incorrect expected MAC\n", 13, PSA_KEY_TYPE_HMAC,
+{"Test psa_mac_verify incorrect expected MAC\n", PSA_KEY_TYPE_HMAC,
 {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
  0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 20,
 {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65}, 8,
diff --git a/api-tests/dev_apis/crypto/test_c048/test_c048.c b/api-tests/dev_apis/crypto/test_c048/test_c048.c
index 8ad6cd0..d791fd0 100644
--- a/api-tests/dev_apis/crypto/test_c048/test_c048.c
+++ b/api-tests/dev_apis/crypto/test_c048/test_c048.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c048.h"
 #include "test_data.h"
 
-client_test_t test_c048_crypto_list[] = {
+const client_test_t test_c048_crypto_list[] = {
     NULL,
     psa_cipher_encrypt_test,
     NULL,
@@ -35,6 +35,7 @@
     int32_t                 i, status;
     size_t                  output_length;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -62,17 +63,17 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Encrypt a message using a symmetric cipher */
-        status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT, key_handle,
                  check1[i].key_alg, check1[i].input, check1[i].input_length, output,
                  check1[i].output_size, &output_length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Reset the key attributes and check if psa_import_key fails */
@@ -89,7 +90,7 @@
         TEST_CHECKPOINT_NUM(7));
 
         /* Encrypt a message using a symmetric cipher on an aborted key handle should be an error */
-        status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_CIPHER_ENCRYPT, key_handle,
                  check1[i].key_alg, check1[i].input, check1[i].input_length, output,
                  check1[i].output_size, &output_length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(8));
diff --git a/api-tests/dev_apis/crypto/test_c048/test_c048.h b/api-tests/dev_apis/crypto/test_c048/test_c048.h
index d0ede7b..16db18e 100644
--- a/api-tests/dev_apis/crypto/test_c048/test_c048.h
+++ b/api-tests/dev_apis/crypto/test_c048/test_c048.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c048_crypto_list[];
+extern const client_test_t test_c048_crypto_list[];
 
 int32_t psa_cipher_encrypt_test(caller_security_t caller);
 #endif /* _TEST_C048_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c048/test_data.h b/api-tests/dev_apis/crypto/test_c048/test_data.h
index 0f9abe3..bf67c1a 100644
--- a/api-tests/dev_apis/crypto/test_c048/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c048/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -33,10 +32,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_encrypt - Encrypt - AES CBC_NO_PADDING\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Encrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -46,7 +45,7 @@
  0x20, 0x74, 0x3B}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_encrypt - Encrypt - AES CBC_NO_PADDING (Short input)\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Encrypt - AES CBC_NO_PADDING (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -56,7 +55,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_encrypt - Encrypt - AES CBC_PKCS7\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Encrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -67,7 +66,7 @@
  0x42, 0x93, 0x03, 0x1c, 0xd4, 0xf3}, 16, PSA_SUCCESS
 },
 
-{"Test psa_cipher_encrypt - Encrypt - AES CBC_PKCS7 (Short input)\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Encrypt - AES CBC_PKCS7 (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -79,7 +78,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_encrypt - Encrypt - AES CTR\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Encrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -89,7 +88,7 @@
  0xb2, 0xbd, 0x32}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_encrypt - Encrypt - AES CTR (short input)\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Encrypt - AES CTR (short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CTR,
@@ -103,7 +102,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_encrypt - Encrypt - DES CBC (nopad)\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_encrypt - Encrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0xed, 0xa4, 0x01, 0x12, 0x39, 0xbc, 0x3a, 0xc9}, 8, SIZE_32B,
@@ -112,7 +111,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_encrypt - Encrypt - 2-key 3DE -CBC (nopad)\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_encrypt - Encrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -122,7 +121,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_encrypt - Encrypt - 3-key 3DE -CBC (nopad)\n", 9, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_encrypt - Encrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -134,7 +133,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_encrypt - small output buffer size\n", 10, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - small output buffer size\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_PKCS7,
@@ -147,7 +146,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_encrypt - Decrypt - AES CBC_NO_PADDING\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_encrypt - Decrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
diff --git a/api-tests/dev_apis/crypto/test_c049/test_c049.c b/api-tests/dev_apis/crypto/test_c049/test_c049.c
index e923582..de53362 100644
--- a/api-tests/dev_apis/crypto/test_c049/test_c049.c
+++ b/api-tests/dev_apis/crypto/test_c049/test_c049.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c049.h"
 #include "test_data.h"
 
-client_test_t test_c049_crypto_list[] = {
+const client_test_t test_c049_crypto_list[] = {
     NULL,
     psa_cipher_decrypt_test,
     NULL,
@@ -35,6 +35,7 @@
     int32_t                 i, status;
     size_t                  output_length;
     psa_key_attributes_t    attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t        key_handle;
 
     if (num_checks == 0)
     {
@@ -62,17 +63,17 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Decrypt a message using a symmetric cipher */
-        status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT, key_handle,
                  check1[i].key_alg, check1[i].input, check1[i].input_length, output,
                  check1[i].output_size, &output_length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Reset the key attributes and check if psa_import_key fails */
@@ -88,7 +89,7 @@
         TEST_ASSERT_MEMCMP(output, check1[i].expected_output, output_length,
         TEST_CHECKPOINT_NUM(7));
 
-        status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_CIPHER_DECRYPT, key_handle,
                  check1[i].key_alg, check1[i].input, check1[i].input_length, output,
                  check1[i].output_size, &output_length);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(8));
diff --git a/api-tests/dev_apis/crypto/test_c049/test_c049.h b/api-tests/dev_apis/crypto/test_c049/test_c049.h
index 412a8ae..2b2ab06 100644
--- a/api-tests/dev_apis/crypto/test_c049/test_c049.h
+++ b/api-tests/dev_apis/crypto/test_c049/test_c049.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c049_crypto_list[];
+extern const client_test_t test_c049_crypto_list[];
 
 int32_t psa_cipher_decrypt_test(caller_security_t caller);
 #endif /* _TEST_C049_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c049/test_data.h b/api-tests/dev_apis/crypto/test_c049/test_data.h
index 2598395..8a74e81 100644
--- a/api-tests/dev_apis/crypto/test_c049/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c049/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -33,10 +32,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_decrypt - Encrypt - AES CBC_NO_PADDING\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Encrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -48,7 +47,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
-{"Test psa_cipher_decrypt - Decrypt - AES CBC_NO_PADDING\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -59,7 +58,7 @@
  0x93, 0x17, 0x2a}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_decrypt - Decrypt - AES CBC_NO_PADDING (Short input)\n", 12, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CBC_NO_PADDING (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -67,7 +66,7 @@
 {0x6b, 0xc1, 0xbe, 0xe2, 0x23}, 0, PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_cipher_decrypt - Decrypt - AES CBC_NO_PADDING\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CBC_NO_PADDING\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -81,7 +80,7 @@
 #endif
 
 #ifdef ARCH_TEST_CBC_PKCS7
-{"Test psa_cipher_decrypt - Decrypt - AES CBC_PKCS7\n", 13, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CBC_PKCS7\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -92,7 +91,7 @@
  0x93, 0x17, 0x2a}, 0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_decrypt - Decrypt - AES CBC_PKCS7 (Short input)\n", 14, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CBC_PKCS7 (Short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_PKCS7,
@@ -104,7 +103,7 @@
 #endif
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
-{"Test psa_cipher_decrypt - Decrypt - AES CTR\n", 15, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CTR\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR,
@@ -115,7 +114,7 @@
  0, PSA_SUCCESS
 },
 
-{"Test psa_cipher_decrypt - Decrypt - AES CTR (short input)\n", 16, PSA_KEY_TYPE_AES,
+{"Test psa_cipher_decrypt - Decrypt - AES CTR (short input)\n", PSA_KEY_TYPE_AES,
 {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09,
  0xcf, 0x4f, 0x3c}, AES_16B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CTR,
@@ -129,7 +128,7 @@
 
 #ifdef ARCH_TEST_CBC_NO_PADDING
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_cipher_decrypt - Decrypt - DES CBC (nopad)\n", 17, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_decrypt - Decrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
 {0x64, 0xf9, 0x17, 0xb0, 0x15, 0x2f, 0x8f, 0x05}, 8, SIZE_32B,
@@ -138,7 +137,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_cipher_decrypt - Decrypt - 2-key 3DE -CBC (nopad)\n", 18, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_decrypt - Decrypt - 2-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce}, DES3_2KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
@@ -148,7 +147,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_cipher_decrypt - 3-key 3DE -CBC (nopad)\n", 19, PSA_KEY_TYPE_DES,
+{"Test psa_cipher_decrypt - 3-key 3DE -CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e, 0xc1, 0xc2, 0xc4, 0xc7, 0xc8,
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
diff --git a/api-tests/dev_apis/crypto/test_c050/test_c050.c b/api-tests/dev_apis/crypto/test_c050/test_c050.c
index ee48216..a7cf51e 100644
--- a/api-tests/dev_apis/crypto/test_c050/test_c050.c
+++ b/api-tests/dev_apis/crypto/test_c050/test_c050.c
@@ -21,7 +21,7 @@
 #include "test_data.h"
 #include "val_crypto.h"
 
-client_test_t test_c050_crypto_list[] = {
+const client_test_t test_c050_crypto_list[] = {
     NULL,
     psa_open_key_test,
     NULL,
@@ -44,6 +44,7 @@
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t  get_attributes = PSA_KEY_ATTRIBUTES_INIT;
     boot_t                boot;
+    psa_key_handle_t      tdata_key_handle;
 
     if (num_checks == 0)
     {
@@ -127,7 +128,7 @@
 
             /* Import the key data into the key slot */
             status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, key_data,
-                     check1[i].key_length, &check1[i].key_handle);
+                     check1[i].key_length, &tdata_key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
             /* Save the details of current check, key id and key handle value in NV memory */
@@ -138,7 +139,7 @@
                      sizeof(psa_key_id_t));
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
-            status = val->nvmem_write(VAL_NVMEM_OFFSET(NV_TEST_DATA3), &check1[i].key_handle,
+            status = val->nvmem_write(VAL_NVMEM_OFFSET(NV_TEST_DATA3), &tdata_key_handle,
                      sizeof(psa_key_handle_t));
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
@@ -147,7 +148,11 @@
             TEST_ASSERT_EQUAL(status, VAL_STATUS_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
             /* Wait for system to reset */
-            val->crypto_function(VAL_CRYPTO_RESET);
+            status = val->crypto_function(VAL_CRYPTO_RESET);
+            if (status != PSA_SUCCESS)
+            {
+                return RESULT_SKIP(status);
+            }
             while (1);
         }
         else if (boot.state == BOOT_EXPECTED_CONT_TEST_EXEC)
diff --git a/api-tests/dev_apis/crypto/test_c050/test_c050.h b/api-tests/dev_apis/crypto/test_c050/test_c050.h
index 76fc8c5..d3179e3 100644
--- a/api-tests/dev_apis/crypto/test_c050/test_c050.h
+++ b/api-tests/dev_apis/crypto/test_c050/test_c050.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c050_crypto_list[];
+extern const client_test_t test_c050_crypto_list[];
 
 int32_t psa_open_key_test(caller_security_t caller);
 #endif /* _TEST_C050_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c050/test_data.h b/api-tests/dev_apis/crypto/test_c050/test_data.h
index 3a61714..24fa169 100644
--- a/api-tests/dev_apis/crypto/test_c050/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c050/test_data.h
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     psa_key_id_t            key_id;
     uint8_t                 key_data[34];
@@ -166,7 +165,7 @@
 static test_data check1[] = {
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_open_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES, 0x12,
+{"Test psa_open_key 16 Byte AES\n", PSA_KEY_TYPE_AES, 0x12,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9, 0x77},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, PSA_KEY_LIFETIME_PERSISTENT,
@@ -175,7 +174,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_open_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES, 0x34,
+{"Test psa_open_key 24 Byte AES\n", PSA_KEY_TYPE_AES, 0x34,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05},
  AES_24B_KEY_SIZE, BYTES_TO_BITS(AES_24B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -185,7 +184,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_open_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES, 0x56,
+{"Test psa_open_key 32 Byte AES\n", PSA_KEY_TYPE_AES, 0x56,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -197,13 +196,13 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_open_key 2048 RSA public key\n", 4, PSA_KEY_TYPE_RSA_PUBLIC_KEY, 0x78,
+{"Test psa_open_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY, 0x78,
  {0},
  270, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_KEY_LIFETIME_PERSISTENT,
  2048, 270, PSA_SUCCESS
 },
 
-{"Test psa_open_key with RSA 2048 keypair\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR, 0x89,
+{"Test psa_open_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR, 0x89,
  {0},
  1193, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW, PSA_KEY_LIFETIME_PERSISTENT,
  2048, 1193, PSA_SUCCESS
@@ -213,7 +212,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_open_key with DES 64 bit key\n", 6, PSA_KEY_TYPE_DES, 0x90,
+{"Test psa_open_key with DES 64 bit key\n", PSA_KEY_TYPE_DES, 0x90,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, BYTES_TO_BITS(DES_8B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
  PSA_KEY_LIFETIME_PERSISTENT,
@@ -222,7 +221,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_open_key with Triple DES 2-Key\n", 7, PSA_KEY_TYPE_DES, 0x123,
+{"Test psa_open_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES, 0x123,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, PSA_KEY_LIFETIME_PERSISTENT,
@@ -231,7 +230,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_open_key with Triple DES 3-Key\n", 8, PSA_KEY_TYPE_DES, 0x456,
+{"Test psa_open_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES, 0x456,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -243,7 +242,7 @@
 
 #ifdef ARCH_TEST_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_open_key with EC Public key\n", 9,
+{"Test psa_open_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1), 0x789,
  {0},
  65, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_ECDSA_ANY, PSA_KEY_LIFETIME_PERSISTENT,
@@ -252,7 +251,7 @@
 #endif
 
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_open_key with EC keypair\n", 10,
+{"Test psa_open_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1), 0x1234,
  {0},
  28, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_ECDSA_ANY, PSA_KEY_LIFETIME_PERSISTENT,
@@ -263,7 +262,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES
-{"Test psa_open_key with volatile key\n", 11, PSA_KEY_TYPE_AES,
+{"Test psa_open_key with volatile key\n", PSA_KEY_TYPE_AES,
  0x5678,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9, 0x05, 0xC9, 0xED,
diff --git a/api-tests/dev_apis/crypto/test_c051/test_c051.c b/api-tests/dev_apis/crypto/test_c051/test_c051.c
index d3e2215..f2403e4 100644
--- a/api-tests/dev_apis/crypto/test_c051/test_c051.c
+++ b/api-tests/dev_apis/crypto/test_c051/test_c051.c
@@ -20,7 +20,7 @@
 #include "test_c051.h"
 #include "test_data.h"
 
-client_test_t test_c051_crypto_list[] = {
+const client_test_t test_c051_crypto_list[] = {
     NULL,
     psa_close_key_test,
     NULL,
@@ -41,6 +41,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_key_attributes_t  set_attributes = PSA_KEY_ATTRIBUTES_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -103,15 +104,15 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &set_attributes, key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Close the key handle */
-        status = val->crypto_function(VAL_CRYPTO_CLOSE_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_CLOSE_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Getting the attributes of the closed key should return error */
-        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, check1[i].key_handle,
+        status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, key_handle,
                  &attributes);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(5));
 
@@ -135,18 +136,18 @@
         TEST_ASSERT_EQUAL(get_key_bits,  0, TEST_CHECKPOINT_NUM(11));
 
         /* Closing an empty key handle should return error */
-        status = val->crypto_function(VAL_CRYPTO_CLOSE_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_CLOSE_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(12));
 
         if (check1[i].key_lifetime == PSA_KEY_LIFETIME_PERSISTENT)
         {
             /* Open the key handle and retrieve the data */
             status = val->crypto_function(VAL_CRYPTO_OPEN_KEY, check1[i].key_id,
-                     &check1[i].key_handle);
+                     &key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(13));
 
             /* Get the attributes of the persistent key and check if it matches the given value */
-            status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, check1[i].key_handle,
+            status = val->crypto_function(VAL_CRYPTO_GET_KEY_ATTRIBUTES, key_handle,
                      &attributes);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(14));
 
@@ -172,10 +173,10 @@
             /* Reset the key attributes */
             val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(21));
 
-            status = val->crypto_function(VAL_CRYPTO_CLOSE_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_CLOSE_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(22));
         }
 
diff --git a/api-tests/dev_apis/crypto/test_c051/test_c051.h b/api-tests/dev_apis/crypto/test_c051/test_c051.h
index a539ecc..94f0edc 100644
--- a/api-tests/dev_apis/crypto/test_c051/test_c051.h
+++ b/api-tests/dev_apis/crypto/test_c051/test_c051.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c051_crypto_list[];
+extern const client_test_t test_c051_crypto_list[];
 
 int32_t psa_close_key_test(caller_security_t caller);
 #endif /* _TEST_C051_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c051/test_data.h b/api-tests/dev_apis/crypto/test_c051/test_data.h
index 6792a2a..5e77062 100644
--- a/api-tests/dev_apis/crypto/test_c051/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c051/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[34];
     uint32_t                key_length;
@@ -161,11 +160,11 @@
  0x68, 0x49, 0xf9, 0x7d, 0x10, 0x66, 0xf6, 0x99, 0x77, 0x59, 0x63, 0x7c, 0x7e, 0x38,
  0x99, 0x46, 0x4c, 0xee, 0x3e, 0xc7, 0xac, 0x97, 0x06, 0x53, 0xa0, 0xbe, 0x07, 0x42};
 
-static test_data check1[] = {
+static const test_data check1[] = {
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_AES_128
-{"Test psa_close_key 16 Byte AES\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_close_key 16 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9},
  AES_16B_KEY_SIZE, 0, PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -175,7 +174,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_192
-{"Test psa_close_key 24 Byte AES\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_close_key 24 Byte AES\n", PSA_KEY_TYPE_AES,
 {0x24, 0x13, 0x61, 0x47, 0x61, 0xB8, 0xC8, 0xF0, 0xDF, 0xAB, 0x5A, 0x0E, 0x87,
  0x40, 0xAC, 0xA3, 0x90, 0x77, 0x83, 0x52, 0x31, 0x74, 0xF9},
  AES_24B_KEY_SIZE, BYTES_TO_BITS(AES_24B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -185,7 +184,7 @@
 #endif
 
 #ifdef ARCH_TEST_AES_256
-{"Test psa_close_key 32 Byte AES\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_close_key 32 Byte AES\n", PSA_KEY_TYPE_AES,
 {0xEA, 0xD5, 0xE6, 0xC8, 0x51, 0xF9, 0xEC, 0xBB, 0x9B, 0x57, 0x7C, 0xED, 0xD2,
  0x4B, 0x82, 0x84, 0x9F, 0x9F, 0xE6, 0x73, 0x21, 0x3D, 0x1A, 0x05, 0xC9, 0xED,
  0xDF, 0x25, 0x17, 0x68, 0x86, 0xAE},
@@ -198,14 +197,14 @@
 
 #ifdef ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
 #ifdef ARCH_TEST_RSA_2048
-{"Test psa_close_key 2048 RSA public key\n", 4, PSA_KEY_TYPE_RSA_PUBLIC_KEY,
+{"Test psa_close_key 2048 RSA public key\n", PSA_KEY_TYPE_RSA_PUBLIC_KEY,
  {0},
  270, 2048, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  0x78, PSA_KEY_LIFETIME_PERSISTENT,
  2048, PSA_SUCCESS
 },
 
-{"Test psa_close_key with RSA 2048 keypair\n", 5, PSA_KEY_TYPE_RSA_KEY_PAIR,
+{"Test psa_close_key with RSA 2048 keypair\n", PSA_KEY_TYPE_RSA_KEY_PAIR,
  {0},
  1193, 2048, PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN_RAW,
  0x89, PSA_KEY_LIFETIME_PERSISTENT,
@@ -216,7 +215,7 @@
 
 #ifdef ARCH_TEST_CIPER_MODE_CTR
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_close_key with DES 64 bit key\n", 6, PSA_KEY_TYPE_DES,
+{"Test psa_close_key with DES 64 bit key\n", PSA_KEY_TYPE_DES,
  {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29},
  DES_8B_KEY_SIZE, BYTES_TO_BITS(DES_8B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
  0xAB, PSA_KEY_LIFETIME_PERSISTENT,
@@ -225,7 +224,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_2KEY
-{"Test psa_close_key with Triple DES 2-Key\n", 7, PSA_KEY_TYPE_DES,
+{"Test psa_close_key with Triple DES 2-Key\n", PSA_KEY_TYPE_DES,
 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  DES3_2KEY_SIZE, BYTES_TO_BITS(DES3_2KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR,
@@ -235,7 +234,7 @@
 #endif
 
 #ifdef ARCH_TEST_DES_3KEY
-{"Test psa_close_key with Triple DES 3-Key\n", 8, PSA_KEY_TYPE_DES,
+{"Test psa_close_key with Triple DES 3-Key\n", PSA_KEY_TYPE_DES,
 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
  0xF1, 0xE0, 0xD3, 0xC2, 0xB5, 0xA4, 0x97, 0x86,
  0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
@@ -248,7 +247,7 @@
 
 #ifdef ARCH_TEST_ECDSA
 #ifdef ARCH_TEST_ECC_CURVE_SECP256R1
-{"Test psa_close_key with EC Public key\n", 9,
+{"Test psa_close_key with EC Public key\n",
  PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_CURVE_SECP256R1),
  {0},
  65, 256, PSA_KEY_USAGE_EXPORT, PSA_ALG_ECDSA_ANY,
@@ -260,7 +259,7 @@
 
 #ifdef ARCH_TEST_ASYMMETRIC_ENCRYPTION
 #ifdef ARCH_TEST_ECC_CURVE_SECP224R1
-{"Test psa_close_key with EC keypair\n", 10,
+{"Test psa_close_key with EC keypair\n",
  PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_CURVE_SECP224R1),
  {0},
  28, 224, PSA_KEY_USAGE_EXPORT, PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION,
diff --git a/api-tests/dev_apis/crypto/test_c052/test_c052.c b/api-tests/dev_apis/crypto/test_c052/test_c052.c
index 61cd7bb..8e4dffc 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_c052.c
+++ b/api-tests/dev_apis/crypto/test_c052/test_c052.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c052.h"
 #include "test_data.h"
 
-client_test_t test_c052_crypto_list[] = {
+const client_test_t test_c052_crypto_list[] = {
     NULL,
     psa_aead_encrypt_setup_test,
     NULL,
@@ -34,6 +34,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -61,21 +62,21 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Setting up aead on destroyed key handle should return an error */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(6));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c052/test_c052.h b/api-tests/dev_apis/crypto/test_c052/test_c052.h
index 65e5c5f..a9fc662 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_c052.h
+++ b/api-tests/dev_apis/crypto/test_c052/test_c052.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c052_crypto_list[];
+extern const client_test_t test_c052_crypto_list[];
 
 int32_t psa_aead_encrypt_setup_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c052/test_data.h b/api-tests/dev_apis/crypto/test_c052/test_data.h
index efe55f5..74812c9 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c052/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -29,17 +28,17 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_encrypt_setup - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt_setup - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
  PSA_SUCCESS
 },
 
-{"Test psa_aead_encrypt_setup - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt_setup - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -50,7 +49,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_encrypt_setup - GCM - 16B AES - 12B Nounce & 12B addi data\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt_setup - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
  PSA_SUCCESS
@@ -60,7 +59,7 @@
 
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_aead_encrypt_setup - DES Key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_aead_encrypt_setup - DES Key\n", PSA_KEY_TYPE_DES,
 {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
  PSA_ERROR_NOT_SUPPORTED
@@ -70,7 +69,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CIPER_MODE_CFB
-{"Test psa_aead_encrypt_setup - Unsupported Algorithm\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt_setup - Unsupported Algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CFB, PSA_ALG_CFB,
  PSA_ERROR_NOT_SUPPORTED
@@ -78,7 +77,7 @@
 #endif
 
 #ifdef ARCH_TEST_GCM
-{"Test psa_aead_encrypt_setup - Invalid key usage\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_encrypt_setup - Invalid key usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
  PSA_ERROR_NOT_PERMITTED
diff --git a/api-tests/dev_apis/crypto/test_c053/test_c053.c b/api-tests/dev_apis/crypto/test_c053/test_c053.c
index 8b21504..b70afb5 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_c053.c
+++ b/api-tests/dev_apis/crypto/test_c053/test_c053.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c053.h"
 #include "test_data.h"
 
-client_test_t test_c053_crypto_list[] = {
+const client_test_t test_c053_crypto_list[] = {
     NULL,
     psa_aead_decrypt_setup_test,
     NULL,
@@ -34,6 +34,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -61,21 +62,21 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated decryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Setting up aead on destroyed key handle should return an error */
         status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(6));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c053/test_c053.h b/api-tests/dev_apis/crypto/test_c053/test_c053.h
index 0f3dde7..272ae24 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_c053.h
+++ b/api-tests/dev_apis/crypto/test_c053/test_c053.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c053_crypto_list[];
+extern const client_test_t test_c053_crypto_list[];
 
 int32_t psa_aead_decrypt_setup_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c053/test_data.h b/api-tests/dev_apis/crypto/test_c053/test_data.h
index 1dd20fa..995a146 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c053/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -29,17 +28,17 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_decrypt_setup - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt_setup - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
  PSA_SUCCESS
 },
 
-{"Test psa_aead_decrypt_setup - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt_setup - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -50,7 +49,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_decrypt_setup - GCM - 16B AES - 12B Nounce & 12B addi data\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt_setup - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
  PSA_SUCCESS
@@ -60,7 +59,7 @@
 
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_DES_1KEY
-{"Test psa_aead_decrypt_setup - DES Key\n", 4, PSA_KEY_TYPE_DES,
+{"Test psa_aead_decrypt_setup - DES Key\n", PSA_KEY_TYPE_DES,
 {0x70, 0x24, 0x55, 0x0C, 0x14, 0x9D, 0xED, 0x29}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
  PSA_ERROR_NOT_SUPPORTED
@@ -70,7 +69,7 @@
 
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CIPER_MODE_CFB
-{"Test psa_aead_decrypt_setup - Unsupported Algorithm\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt_setup - Unsupported Algorithm\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CFB, PSA_ALG_CFB,
  PSA_ERROR_NOT_SUPPORTED
@@ -78,7 +77,7 @@
 #endif
 
 #ifdef ARCH_TEST_GCM
-{"Test psa_aead_decrypt_setup - Invalid key usage\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_decrypt_setup - Invalid key usage\n", PSA_KEY_TYPE_AES,
 {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99,
  0x5F, 0xC9}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
  PSA_ERROR_NOT_PERMITTED
diff --git a/api-tests/dev_apis/crypto/test_c054/test_c054.c b/api-tests/dev_apis/crypto/test_c054/test_c054.c
index 553e073..6271299 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_c054.c
+++ b/api-tests/dev_apis/crypto/test_c054/test_c054.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c054.h"
 #include "test_data.h"
 
-client_test_t test_c054_crypto_list[] = {
+const client_test_t test_c054_crypto_list[] = {
     NULL,
     psa_aead_generate_nonce_test,
     NULL,
@@ -36,6 +36,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -63,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Generate a random nonce for an authenticated encryption operation */
@@ -83,7 +84,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             /* Reset the key attributes */
@@ -110,7 +111,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c054/test_c054.h b/api-tests/dev_apis/crypto/test_c054/test_c054.h
index 6560716..ad33076 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_c054.h
+++ b/api-tests/dev_apis/crypto/test_c054/test_c054.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c054_crypto_list[];
+extern const client_test_t test_c054_crypto_list[];
 
 int32_t psa_aead_generate_nonce_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c054/test_data.h b/api-tests/dev_apis/crypto/test_c054/test_data.h
index 7fbeb40..e1402c7 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c054/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -30,24 +29,24 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_generate_nonce - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_generate_nonce - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM, SIZE_32B,
  PSA_SUCCESS
 },
 
-{"Test psa_aead_generate_nonce - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_generate_nonce - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, SIZE_32B,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
  PSA_SUCCESS
 },
 
-{"Test psa_aead_generate_nonce - Small buffer size\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_generate_nonce - Small buffer size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM, 8,
@@ -58,7 +57,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_generate_nonce - GCM - 16B AES - 12B Nounce & 12B addi data\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_generate_nonce - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM, SIZE_32B,
  PSA_SUCCESS
diff --git a/api-tests/dev_apis/crypto/test_c055/test_c055.c b/api-tests/dev_apis/crypto/test_c055/test_c055.c
index 741fad1..0433e16 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_c055.c
+++ b/api-tests/dev_apis/crypto/test_c055/test_c055.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c055.h"
 #include "test_data.h"
 
-client_test_t test_c055_crypto_list[] = {
+const client_test_t test_c055_crypto_list[] = {
     NULL,
     psa_aead_set_nonce_test,
     NULL,
@@ -34,6 +34,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -61,12 +62,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set the nonce for an authenticated encryption operation */
@@ -81,7 +82,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             /* Reset the key attributes */
@@ -99,7 +100,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c055/test_c055.h b/api-tests/dev_apis/crypto/test_c055/test_c055.h
index 6e4ae3f..80bd725 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_c055.h
+++ b/api-tests/dev_apis/crypto/test_c055/test_c055.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c055_crypto_list[];
+extern const client_test_t test_c055_crypto_list[];
 
 int32_t psa_aead_set_nonce_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c055/test_data.h b/api-tests/dev_apis/crypto/test_c055/test_data.h
index 458e70b..12e2185 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c055/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -31,10 +30,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_set_nonce - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_nonce - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -43,7 +42,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_set_nonce - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_nonce - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -52,7 +51,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_set_nonce - Small nounce size\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_nonce - Small nounce size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -60,7 +59,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_aead_set_nonce - Large nonce size\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_nonce - Large nonce size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -74,7 +73,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_set_nonce - GCM - 16B AES - 12B Nounce & 12B addi data\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_nonce - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
diff --git a/api-tests/dev_apis/crypto/test_c056/test_c056.c b/api-tests/dev_apis/crypto/test_c056/test_c056.c
index 5b9f0c7..6585851 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_c056.c
+++ b/api-tests/dev_apis/crypto/test_c056/test_c056.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c056.h"
 #include "test_data.h"
 
-client_test_t test_c056_crypto_list[] = {
+const client_test_t test_c056_crypto_list[] = {
     NULL,
     psa_aead_set_lengths_test,
     NULL,
@@ -34,6 +34,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -61,12 +62,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set the nonce for an authenticated encryption operation */
@@ -91,7 +92,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
             /* Reset the key attributes */
@@ -104,7 +105,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c056/test_c056.h b/api-tests/dev_apis/crypto/test_c056/test_c056.h
index ba639f1..59bb799 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_c056.h
+++ b/api-tests/dev_apis/crypto/test_c056/test_c056.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c056_crypto_list[];
+extern const client_test_t test_c056_crypto_list[];
 
 int32_t psa_aead_set_lengths_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c056/test_data.h b/api-tests/dev_apis/crypto/test_c056/test_data.h
index 8022ea9..f891b7e 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c056/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -33,10 +32,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_set_lengths - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_lengths - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -45,7 +44,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_set_lengths - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_lengths - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -54,7 +53,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_set_lengths - Zero ad size\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_lengths - Zero ad size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -63,7 +62,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_aead_set_lengths - Zero plaintext size\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_lengths - Zero plaintext size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -72,7 +71,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_aead_set_lengths - Invalid lengths\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_lengths - Invalid lengths\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -85,7 +84,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_set_lengths - Vey large lengths\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_set_lengths - Vey large lengths\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
diff --git a/api-tests/dev_apis/crypto/test_c057/test_c057.c b/api-tests/dev_apis/crypto/test_c057/test_c057.c
index 95dd0f4..ce0745c 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_c057.c
+++ b/api-tests/dev_apis/crypto/test_c057/test_c057.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c057.h"
 #include "test_data.h"
 
-client_test_t test_c057_crypto_list[] = {
+const client_test_t test_c057_crypto_list[] = {
     NULL,
     psa_aead_update_ad_test,
     NULL,
@@ -34,6 +34,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -61,12 +62,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set the nonce for an authenticated encryption operation */
@@ -96,7 +97,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
             /* Reset the key attributes */
@@ -109,7 +110,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c057/test_c057.h b/api-tests/dev_apis/crypto/test_c057/test_c057.h
index fcbfd89..900328d 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_c057.h
+++ b/api-tests/dev_apis/crypto/test_c057/test_c057.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c057_crypto_list[];
+extern const client_test_t test_c057_crypto_list[];
 
 int32_t psa_aead_update_ad_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c057/test_data.h b/api-tests/dev_apis/crypto/test_c057/test_data.h
index 68bb98c..9ead790 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c057/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -34,10 +33,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_update_ad - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update_ad - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -47,7 +46,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_update_ad - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update_ad - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -57,7 +56,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_update_ad - Zero ad size\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update_ad - Zero ad size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -67,7 +66,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_aead_update_ad - Zero plaintext size\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update_ad - Zero plaintext size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -77,7 +76,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_aead_update_ad - Invalid lengths\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update_ad - Invalid lengths\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -91,7 +90,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_update_ad - Vey large lengths\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update_ad - Vey large lengths\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x10},
diff --git a/api-tests/dev_apis/crypto/test_c058/test_c058.c b/api-tests/dev_apis/crypto/test_c058/test_c058.c
index 5b6db96..2992e62 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_c058.c
+++ b/api-tests/dev_apis/crypto/test_c058/test_c058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c058.h"
 #include "test_data.h"
 
-client_test_t test_c058_crypto_list[] = {
+const client_test_t test_c058_crypto_list[] = {
     NULL,
     psa_aead_update_test,
     NULL,
@@ -36,6 +36,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -63,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set the nonce for an authenticated encryption operation */
@@ -105,7 +106,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
             /* Reset the key attributes */
@@ -122,7 +123,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(14));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(15));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c058/test_c058.h b/api-tests/dev_apis/crypto/test_c058/test_c058.h
index 7212975..b2273cd 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_c058.h
+++ b/api-tests/dev_apis/crypto/test_c058/test_c058.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c058_crypto_list[];
+extern const client_test_t test_c058_crypto_list[];
 
 int32_t psa_aead_update_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c058/test_data.h b/api-tests/dev_apis/crypto/test_c058/test_data.h
index bdae86a..20a4944 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c058/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -39,10 +38,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_update - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -58,7 +57,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_update - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -73,7 +72,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_update - Zero plaintext size\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update - Zero plaintext size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -84,7 +83,7 @@
  PSA_ERROR_INVALID_ARGUMENT
 },
 
-{"Test psa_aead_update - Small buffer size\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update - Small buffer size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -96,7 +95,7 @@
  PSA_ERROR_BUFFER_TOO_SMALL
 },
 
-{"Test psa_aead_update - Input length overflows plaintext length\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update - Input length overflows plaintext length\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -112,7 +111,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_update - GCM - 16B AES - 12B Nounce & 12B addi data\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_update - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x45, 0x00, 0x00, 0x1c, 0x42, 0xa2, 0x00, 0x00, 0x80, 0x01, 0x44, 0x1f, 0x40,
diff --git a/api-tests/dev_apis/crypto/test_c059/test_c059.c b/api-tests/dev_apis/crypto/test_c059/test_c059.c
index 86f3fb7..ee1cd08 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_c059.c
+++ b/api-tests/dev_apis/crypto/test_c059/test_c059.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c059.h"
 #include "test_data.h"
 
-client_test_t test_c059_crypto_list[] = {
+const client_test_t test_c059_crypto_list[] = {
     NULL,
     psa_aead_finish_test,
     NULL,
@@ -36,6 +36,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -63,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set the nonce for an authenticated encryption operation */
@@ -109,7 +110,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
             /* Reset the key attributes */
@@ -128,7 +129,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(17));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(18));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c059/test_c059.h b/api-tests/dev_apis/crypto/test_c059/test_c059.h
index ed18925..6c8dd91 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_c059.h
+++ b/api-tests/dev_apis/crypto/test_c059/test_c059.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c059_crypto_list[];
+extern const client_test_t test_c059_crypto_list[];
 
 int32_t psa_aead_finish_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c059/test_data.h b/api-tests/dev_apis/crypto/test_c059/test_data.h
index 9ea4b0e..a7b698f 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c059/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -42,10 +41,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_finish - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_finish - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -61,7 +60,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_finish - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_finish - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -76,7 +75,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_finish - Small buffer size\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_finish - Small buffer size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -88,7 +87,7 @@
  PSA_ERROR_BUFFER_TOO_SMALL
 },
 
-{"Test psa_aead_finish - Input length is less than plaintext length\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_finish - Input length is less than plaintext length\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -104,7 +103,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_finish - GCM - 16B AES - 12B Nounce & 12B addi data\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_finish - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x45, 0x00, 0x00, 0x1c, 0x42, 0xa2, 0x00, 0x00, 0x80, 0x01, 0x44, 0x1f, 0x40,
diff --git a/api-tests/dev_apis/crypto/test_c060/test_c060.c b/api-tests/dev_apis/crypto/test_c060/test_c060.c
index e924a9e..44739ec 100644
--- a/api-tests/dev_apis/crypto/test_c060/test_c060.c
+++ b/api-tests/dev_apis/crypto/test_c060/test_c060.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c060.h"
 #include "test_data.h"
 
-client_test_t test_c060_crypto_list[] = {
+const client_test_t test_c060_crypto_list[] = {
     NULL,
     psa_aead_abort_test,
     psa_aead_abort_init_test,
@@ -35,6 +35,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -62,16 +63,16 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Reset the key attributes and check if psa_import_key fails */
diff --git a/api-tests/dev_apis/crypto/test_c060/test_c060.h b/api-tests/dev_apis/crypto/test_c060/test_c060.h
index 334d180..5d724b6 100644
--- a/api-tests/dev_apis/crypto/test_c060/test_c060.h
+++ b/api-tests/dev_apis/crypto/test_c060/test_c060.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c060_crypto_list[];
+extern const client_test_t test_c060_crypto_list[];
 
 int32_t psa_aead_abort_test(caller_security_t caller);
 int32_t psa_aead_abort_init_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/crypto/test_c060/test_data.h b/api-tests/dev_apis/crypto/test_c060/test_data.h
index fcdef1f..2618c53 100644
--- a/api-tests/dev_apis/crypto/test_c060/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c060/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -29,17 +28,17 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_abort - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_abort - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
  PSA_SUCCESS
 },
 
-{"Test psa_aead_abort - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_abort - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -50,7 +49,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_abort - GCM - 16B AES - 12B Nounce & 12B addi data\n", 3, PSA_KEY_TYPE_AES,
+{"Test psa_aead_abort - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
  PSA_SUCCESS
diff --git a/api-tests/dev_apis/crypto/test_c061/test_c061.c b/api-tests/dev_apis/crypto/test_c061/test_c061.c
index 4b6bec9..5adfea0 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_c061.c
+++ b/api-tests/dev_apis/crypto/test_c061/test_c061.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_c061.h"
 #include "test_data.h"
 
-client_test_t test_c061_crypto_list[] = {
+const client_test_t test_c061_crypto_list[] = {
     NULL,
     psa_aead_verify_test,
     NULL,
@@ -36,6 +36,7 @@
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
+    psa_key_handle_t      key_handle;
 
     if (num_checks == 0)
     {
@@ -63,12 +64,12 @@
 
         /* Import the key data into the key slot */
         status = val->crypto_function(VAL_CRYPTO_IMPORT_KEY, &attributes, check1[i].key_data,
-                 check1[i].key_length, &check1[i].key_handle);
+                 check1[i].key_length, &key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(3));
 
         /* Set the key for a multipart authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT_SETUP, &operation,
-                 check1[i].key_handle, check1[i].alg);
+                 key_handle, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
         /* Set the nonce for an authenticated encryption operation */
@@ -109,7 +110,7 @@
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
             /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
             /* Reset the key attributes */
@@ -128,7 +129,7 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(16));
 
         /* Destroy the key */
-        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, check1[i].key_handle);
+        status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key_handle);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(17));
 
         /* Reset the key attributes */
diff --git a/api-tests/dev_apis/crypto/test_c061/test_c061.h b/api-tests/dev_apis/crypto/test_c061/test_c061.h
index 9ce0ed2..b9d67e9 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_c061.h
+++ b/api-tests/dev_apis/crypto/test_c061/test_c061.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_c061_crypto_list[];
+extern const client_test_t test_c061_crypto_list[];
 
 int32_t psa_aead_verify_test(caller_security_t caller);
 
diff --git a/api-tests/dev_apis/crypto/test_c061/test_data.h b/api-tests/dev_apis/crypto/test_c061/test_data.h
index af8e261..a6d0f5c 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c061/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,6 @@
 
 typedef struct {
     char                    test_desc[75];
-    psa_key_handle_t        key_handle;
     psa_key_type_t          key_type;
     uint8_t                 key_data[32];
     uint32_t                key_length;
@@ -42,10 +41,10 @@
     psa_status_t            expected_status;
 } test_data;
 
-static test_data check1[] = {
+static const test_data check1[] = {
 #ifdef ARCH_TEST_CCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_verify - AES-CCM\n", 1, PSA_KEY_TYPE_AES,
+{"Test psa_aead_verify - AES-CCM\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -61,7 +60,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_verify - AES-CCM 24 bytes Tag length = 4\n", 2, PSA_KEY_TYPE_AES,
+{"Test psa_aead_verify - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
  PSA_ALG_AEAD_WITH_TAG_LENGTH(PSA_ALG_CCM, 4),
@@ -76,7 +75,7 @@
  PSA_SUCCESS
 },
 
-{"Test psa_aead_verify - Small buffer size\n", 4, PSA_KEY_TYPE_AES,
+{"Test psa_aead_verify - Small buffer size\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -88,7 +87,7 @@
  PSA_ERROR_BUFFER_TOO_SMALL
 },
 
-{"Test psa_aead_verify - Input length is less than plaintext length\n", 5, PSA_KEY_TYPE_AES,
+{"Test psa_aead_verify - Input length is less than plaintext length\n", PSA_KEY_TYPE_AES,
 {0xD7, 0x82, 0x8D, 0x13, 0xB2, 0xB0, 0xBD, 0xC3, 0x25, 0xA7, 0x62, 0x36, 0xDF,
  0x93, 0xCC, 0x6B},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
@@ -104,7 +103,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_verify - GCM - 16B AES - 12B Nounce & 12B addi data\n", 6, PSA_KEY_TYPE_AES,
+{"Test psa_aead_verify - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x45, 0x00, 0x00, 0x1c, 0x42, 0xa2, 0x00, 0x00, 0x80, 0x01, 0x44, 0x1f, 0x40,
diff --git a/api-tests/dev_apis/initial_attestation/suite.cmake b/api-tests/dev_apis/initial_attestation/suite.cmake
index 913f7a4..ed94f07 100644
--- a/api-tests/dev_apis/initial_attestation/suite.cmake
+++ b/api-tests/dev_apis/initial_attestation/suite.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,12 +35,6 @@
 add_definitions(${AS_OPTIONS})
 add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
 
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
-    ${PSA_QCBOR_INCLUDE_PATH}
-)
-endif()
-
 # Test related Include directories
 foreach(test ${PSA_TEST_LIST})
 	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${PSA_SUITE_DIR}/${test})
@@ -57,6 +51,8 @@
 	${CMAKE_CURRENT_BINARY_DIR}
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
+	${PSA_QCBOR_INCLUDE_PATH}
 )
diff --git a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c
index f46012d..3a2251a 100644
--- a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c
+++ b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 #include "test_a001.h"
 #include "test_data.h"
 
-client_test_t test_a001_attestation_list[] = {
+const client_test_t test_a001_attestation_list[] = {
     NULL,
     psa_initial_attestation_get_token_test,
     psa_initial_attestation_get_token_size_test,
diff --git a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h
index 432b431..3a118eb 100644
--- a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h
+++ b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 
 extern val_api_t *val;
 extern psa_api_t *psa;
-extern client_test_t test_a001_attestation_list[];
+extern const client_test_t test_a001_attestation_list[];
 
 int32_t psa_initial_attestation_get_token_test(caller_security_t caller);
 int32_t psa_initial_attestation_get_token_size_test(caller_security_t caller);
diff --git a/api-tests/dev_apis/initial_attestation/test_a001/test_data.h b/api-tests/dev_apis/initial_attestation/test_a001/test_data.h
index 036aab1..55d8a3c 100644
--- a/api-tests/dev_apis/initial_attestation/test_a001/test_data.h
+++ b/api-tests/dev_apis/initial_attestation/test_a001/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -68,7 +68,7 @@
 },
 };
 
-static test_data check2[] = {
+static const test_data check2[] = {
 {"Test psa_initial_attestation_get_token_size with Challenge 32\n",
  PSA_INITIAL_ATTEST_CHALLENGE_SIZE_32, PSA_INITIAL_ATTEST_CHALLENGE_SIZE_32, TOKEN_SIZE, PSA_SUCCESS
 },
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test.cmake b/api-tests/dev_apis/internal_trusted_storage/test_s001/test.cmake
deleted file mode 100644
index fb61ac1..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s001.c
-	test_s001.c
-)
-list(APPEND CC_OPTIONS -DITS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_its_data.h
deleted file mode 100644
index b31767e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_its_data.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S001_ITS_DATA_TESTS_H_
-#define _TEST_S001_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s001_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index1 - Call the get API when no UID is set */
-},
-{
- VAL_ITS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index2 - Call the get_info API when no UID is set */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index3 - Call the remove API when no UID is set */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index4 - Create a valid storage entity with UID1 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index5 - Create a valid storage entity with UID2 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index6 - Remove UID1 */
-},
-{
- VAL_ITS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index7 - Call get API for UID1 */
-},
-{
- VAL_ITS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index8 - Call get_info API for UID1 */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index9 - Call remove API for UID1 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index10 - Create a valid storage entity again with UID1 */
-},
-{
- VAL_ITS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index11 - Call get API for UID not same as UID1 or UID2 */
-},
-{
- VAL_ITS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index12 - Call get_info for UID not same as UID1
-                                                     or UID2 */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index13 - Call remove API for UID not same as UID1
-                                                    or UID2 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index14 - Remove UID1 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index15 - Remove UID2 */
-},
-};
-#endif /* _TEST_S001_ITS_DATA_TESTS_H_ */
-
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h
deleted file mode 100644
index b9b775e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S001_PS_DATA_TESTS_H_
-#define _TEST_S001_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s001_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index1 - Call the get API when no UID is set */
-},
-{
- VAL_PS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index2 - Call the get_info API when no UID is set */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index3 - Call the remove API when no UID is set */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index4 - Create a valid storage entity with UID1 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index5 - Create a valid storage entity with UID2 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index6 - Remove UID1 */
-},
-{
- VAL_PS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index7 - Call get API for UID1 */
-},
-{
- VAL_PS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index8 - Call get_info API for UID1 */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index9 - Call remove API for UID1 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index10 - Create a valid storage entity again with UID1 */
-},
-{
- VAL_PS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index11 - Call get API for UID not same as UID1 or UID2 */
-},
-{
- VAL_PS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index12 - Call get_info for UID not same as UID1
-                                                     or UID2 */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index13 - Call remove API for UID not same as UID1
-                                                    or UID2 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index14 - Remove UID1 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index15 - Remove UID2 */
-},
-};
-#endif /*  _TEST_S001_PS_DATA_TESTS_H_  */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c
deleted file mode 100644
index 76bd753..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s001.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 16
-
-client_test_t test_s001_sst_list[] = {
-    NULL,
-    psa_sst_uid_not_found,
-    NULL,
-};
-
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
-static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
-
-static int32_t sst_calls_without_set_call(psa_storage_uid_t p_uid)
-{
-    uint32_t status, p_data_length = 0;
-
-    /* get() without using set() before */
-    val->print(PRINT_TEST, "[Check 1] Call get API for UID %d which is not set\n", p_uid);
-    status = SST_FUNCTION(s001_data[1].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status,s001_data[1].status,TEST_CHECKPOINT_NUM(1));
-
-    /*  get_info() without using set() before */
-    val->print(PRINT_TEST, "[Check 2] Call get_info API for UID %d which is not set\n", p_uid);
-    status = SST_FUNCTION(s001_data[2].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, s001_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* remove() without using set() before */
-    val->print(PRINT_TEST, "[Check 3] Call remove API for UID %d which is not set\n", p_uid);
-    status = SST_FUNCTION(s001_data[3].api, p_uid);
-    TEST_ASSERT_EQUAL(status, s001_data[3].status, TEST_CHECKPOINT_NUM(3));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-static int32_t sst_set_and_remove(psa_storage_uid_t p_uid)
-{
-    uint32_t status;
-
-    /* set() a UID1 */
-    status = SST_FUNCTION(s001_data[4].api, p_uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s001_data[4].status, TEST_CHECKPOINT_NUM(4));
-
-    /* Also set() with a different UID */
-    status = SST_FUNCTION(s001_data[5].api, p_uid + 1, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s001_data[5].status, TEST_CHECKPOINT_NUM(5));
-
-    /* remove() UID1 */
-    status = SST_FUNCTION(s001_data[6].api, p_uid);
-    TEST_ASSERT_EQUAL(status, s001_data[6].status, TEST_CHECKPOINT_NUM(6));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-static int32_t sst_calls_after_uid_remove(psa_storage_uid_t p_uid)
-{
-    uint32_t status, p_data_length = 0;
-
-    /* get() for UID which is removed */
-    val->print(PRINT_TEST, "[Check 4] Call get API for UID %d which is removed\n", p_uid);
-    status = SST_FUNCTION(s001_data[7].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s001_data[7].status, TEST_CHECKPOINT_NUM(7));
-
-    /* get_info() for UID which is removed */
-    val->print(PRINT_TEST, "[Check 5] Call get_info API for UID %d which is removed\n", p_uid);
-    status = SST_FUNCTION(s001_data[8].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, s001_data[8].status, TEST_CHECKPOINT_NUM(8));
-
-    /* remove() for UID which is removed */
-    val->print(PRINT_TEST, "[Check 6] Call remove API for UID %d which is removed\n", p_uid);
-    status = SST_FUNCTION(s001_data[9].api, p_uid);
-    TEST_ASSERT_EQUAL(status, s001_data[9].status, TEST_CHECKPOINT_NUM(9));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-static int32_t sst_calls_with_different_uid(psa_storage_uid_t p_uid)
-{
-    uint32_t status, p_data_length = 0;
-
-    /* set() a UID */
-    val->print(PRINT_TEST, "Set storage for UID %d\n", p_uid);
-    status = SST_FUNCTION(s001_data[10].api, p_uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s001_data[10].status, TEST_CHECKPOINT_NUM(10));
-
-    /* get() for different UID then set UID */
-    val->print(PRINT_TEST, "[Check 7] Call get API for different UID %d\n", p_uid-1);
-    status = SST_FUNCTION(s001_data[11].api, p_uid-1, 0, TEST_BUFF_SIZE - 1, read_buff,
-                          &p_data_length);
-    TEST_ASSERT_EQUAL(status, s001_data[11].status, TEST_CHECKPOINT_NUM(11));
-
-    /* get_info() for different UID then set UID */
-    val->print(PRINT_TEST, "[Check 8] Call get_info API for different UID %d\n", p_uid-1);
-    status = SST_FUNCTION(s001_data[12].api, p_uid-1, &info);
-    TEST_ASSERT_EQUAL(status, s001_data[12].status, TEST_CHECKPOINT_NUM(12));
-
-    /* remove() for different UID then set UID */
-    val->print(PRINT_TEST, "[Check 9] Call remove API for different UID %d\n", p_uid-1);
-    status = SST_FUNCTION(s001_data[13].api, p_uid-1);
-    TEST_ASSERT_EQUAL(status, s001_data[13].status, TEST_CHECKPOINT_NUM(13));
-
-    /* remove() the set UID */
-    status = SST_FUNCTION(s001_data[14].api, p_uid);
-    TEST_ASSERT_EQUAL(status, s001_data[14].status, TEST_CHECKPOINT_NUM(14));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-static int32_t sst_remove_stray_uid(psa_storage_uid_t p_uid)
-{
-    uint32_t status;
-
-    /* Remove UID + 1 */
-    status = SST_FUNCTION(s001_data[15].api, p_uid);
-    TEST_ASSERT_EQUAL(status, s001_data[15].status, TEST_CHECKPOINT_NUM(15));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_uid_not_found(caller_security_t caller)
-{
-    int32_t test_status;
-    psa_storage_uid_t uid = UID_BASE_VALUE + 6;
-
-    test_status = sst_calls_without_set_call(uid);
-    if (test_status != VAL_STATUS_SUCCESS)
-        return test_status;
-
-    test_status = sst_set_and_remove(uid);
-    if (test_status != VAL_STATUS_SUCCESS)
-        return test_status;
-
-    test_status = sst_calls_after_uid_remove(uid);
-    if (test_status != VAL_STATUS_SUCCESS)
-        return test_status;
-
-    test_status = sst_calls_with_different_uid(uid);
-    if (test_status != VAL_STATUS_SUCCESS)
-        return test_status;
-
-    test_status = sst_remove_stray_uid(uid + 1);
-    if (test_status != VAL_STATUS_SUCCESS)
-        return test_status;
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h
deleted file mode 100755
index b0c2541..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S002_ITS_DATA_TESTS_H_
-#define _TEST_S002_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t orig_info;
-static struct psa_storage_info_t new_info;
-static const test_data s002_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Create a valid storage with create flag value 0 */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index2 - Call the get_info API to validate the attributes */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- 0, 0 /* This is dummy for Index4 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index5 - Validate the data using get API */
-},
-{
- 0, 0 /* This is dummy for Index6 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index7 - Change the flag to WRITE_ONCE using set API */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index8 - Call the get_info API to validate the flag change */
-},
-{
- 0, 0 /* This is dummy for Index9 */
-},
-{
- 0, 0 /* This is dummy for Index10 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index11 - Validate the data using get API after flag change */
-},
-{
- 0, 0 /* This is dummy for Index12 */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index13 - Storage should not be removed after
-                                            WRITE_ONCE flag */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index14 - Create a storage with different UID and flag value
-                             WRITE_ONCE */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index15 - Storage should not be removed */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index16 - Validate the data using get API after flag change */
-},
-{
- 0, 0 /* This is dummy for Index17 */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index18 - Call the get_info API to validate the flag change */
-},
-{
- 0, 0 /* This is dummy for Index19 */
-},
-{
- 0, 0 /* This is dummy for Index20 */
-},
-{
- VAL_ITS_SET, PSA_ERROR_NOT_PERMITTED /* Index21 - Try to set different size for same UID and
-                                         flag value */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index22 - Storage should not be removed */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index23 - Call the get_info API to validate the flag change */
-},
-{
- 0, 0 /* This is dummy for Index24 */
-},
-{
- 0, 0 /* This is dummy for Index25 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index26 - Validate the data using get API after flag change */
-},
-{
- 0, 0 /* This is dummy for Index27 */
-},
-{
- VAL_ITS_SET, PSA_ERROR_NOT_PERMITTED /* Index28 - Setting flag to zero for UID should fail */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index29 - Storage should not be removed */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index30 - Check that the WRITE_ONCE flag is preserved */
-},
-{
- 0, 0 /* This is dummy for Index31 */
-},
-{
- 0, 0 /* This is dummy for Index32 */
-},
-};
-#endif /* _TEST_S002_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h
deleted file mode 100755
index 162984e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S002_PS_DATA_TESTS_H_
-#define _TEST_S002_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t orig_info;
-static struct psa_storage_info_t new_info;
-static const test_data s002_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Create a valid storage with create flag value 0 */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index2 - Call the get_info API to validate the attributes */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- 0, 0 /* This is dummy for Index4 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index5 - Validate the data using get API */
-},
-{
- 0, 0 /* This is dummy for Index6 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index7 - Change the flag to WRITE_ONCE using set API */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index8 - Call the get_info API to validate the flag change */
-},
-{
- 0, 0 /* This is dummy for Index9 */
-},
-{
- 0, 0 /* This is dummy for Index10 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index11 - Validate the data using get API after flag change */
-},
-{
- 0, 0 /* This is dummy for Index12 */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index13 - Storage should not be removed after
-                                            WRITE_ONCE flag */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index14 - Create a storage with different UID and flag value
-                             WRITE_ONCE */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index15 - Storage should not be removed */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index16 - Validate the data using get API after flag change */
-},
-{
- 0, 0 /* This is dummy for Index17 */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index18 - Call the get_info API to validate the flag change */
-},
-{
- 0, 0 /* This is dummy for Index19 */
-},
-{
- 0, 0 /* This is dummy for Index20 */
-},
-{
- VAL_PS_SET, PSA_ERROR_NOT_PERMITTED /* Index21 - Try to set different size for same UID and
-                                         flag value */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index22 - Storage should not be removed */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index23 - Call the get_info API to validate the flag change */
-},
-{
- 0, 0 /* This is dummy for Index24 */
-},
-{
- 0, 0 /* This is dummy for Index25 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index26 - Validate the data using get API after flag change */
-},
-{
- 0, 0 /* This is dummy for Index27 */
-},
-{
- VAL_PS_SET, PSA_ERROR_NOT_PERMITTED /* Index28 - Setting flag to zero for UID should fail */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_NOT_PERMITTED /* Index29 - Storage should not be removed */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index30 - Check that the WRITE_ONCE flag is preserved */
-},
-{
- 0, 0 /* This is dummy for Index31 */
-},
-{
- 0, 0 /* This is dummy for Index32 */
-},
-};
-#endif /* _TEST_S002_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c
deleted file mode 100755
index 5bb0ccd..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s002.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define UID_WRITE_ONCE_1 UID_BASE_VALUE + 1
-#define UID_WRITE_ONCE_2 UID_BASE_VALUE + 2
-#define TEST_BUFF_SIZE 16
-
-client_test_t test_s002_sst_list[] = {
-    NULL,
-    psa_sst_update_write_once_flag_after_create,
-    psa_sst_create_with_write_once_flag,
-    NULL,
-};
-
-int32_t psa_sst_update_write_once_flag_after_create(caller_security_t caller)
-{
-    uint32_t status, p_data_length = 0;
-    psa_storage_uid_t uid = UID_WRITE_ONCE_1;
-    uint8_t  write_buff[TEST_BUFF_SIZE/2]     = {0xDE, 0xAD, 0xBE, 0xEF, 0xCA, 0xFE, 0xBA, 0xBE};
-    uint8_t  read_buff[TEST_BUFF_SIZE/2]      = {0};
-    uint8_t  write_buff_new[TEST_BUFF_SIZE/4] = {0xFF, 0xFF, 0xFF, 0xFF};
-
-    /* set() data without a WRITE_ONCE flag */
-    status = SST_FUNCTION(s002_data[1].api, uid, TEST_BUFF_SIZE/2, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s002_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Check that get_info() returns correct attributes; also store for reference for later */
-    status = SST_FUNCTION(s002_data[2].api, uid, &orig_info);
-    TEST_ASSERT_EQUAL(status, s002_data[2].status, TEST_CHECKPOINT_NUM(2));
-    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_EQUAL(orig_info.flags, PSA_STORAGE_FLAG_NONE, TEST_CHECKPOINT_NUM(4));
-
-    /* Check for data consistency using get() */
-    status = SST_FUNCTION(s002_data[5].api, uid, 0, TEST_BUFF_SIZE/2, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s002_data[5].status, TEST_CHECKPOINT_NUM(5));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_MEMCMP(write_buff, read_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(7));
-
-    /* set() with WRITE_ONCE_FLAG */
-    val->print(PRINT_TEST, "[Check 1] Update the flag of UID %d with WRITE_ONCE flag\n", uid);
-    status = SST_FUNCTION(s002_data[7].api, uid, TEST_BUFF_SIZE/4, write_buff_new,
-                          PSA_STORAGE_FLAG_WRITE_ONCE);
-    TEST_ASSERT_EQUAL(status, s002_data[7].status, TEST_CHECKPOINT_NUM(8));
-
-    /* Check that info is updated, after new set */
-    status = SST_FUNCTION(s002_data[8].api, uid, &new_info);
-    TEST_ASSERT_EQUAL(status, s002_data[8].status, TEST_CHECKPOINT_NUM(9));
-    TEST_ASSERT_EQUAL(new_info.size, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(10));
-    TEST_ASSERT_EQUAL(new_info.flags, PSA_STORAGE_FLAG_WRITE_ONCE, TEST_CHECKPOINT_NUM(11));
-
-    /* Check that data contents are preserved which were written with WRITE_ONCE_FLAG originally */
-    status = SST_FUNCTION(s002_data[11].api, uid, 0, TEST_BUFF_SIZE/4, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s002_data[11].status, TEST_CHECKPOINT_NUM(12));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(13));
-    TEST_ASSERT_MEMCMP(write_buff_new, read_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(14));
-
-    /* remove() the UID */
-    val->print(PRINT_TEST, "[Check 2] Try to remove the UID %d having WRITE_ONCE flag\n", uid);
-    status = SST_FUNCTION(s002_data[13].api, uid);
-    TEST_ASSERT_EQUAL(status, s002_data[13].status, TEST_CHECKPOINT_NUM(15));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-
-int32_t psa_sst_create_with_write_once_flag(caller_security_t caller)
-{
-    uint32_t status, p_data_length = 0;
-    psa_storage_uid_t uid = UID_WRITE_ONCE_2;
-    uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                          0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
-    uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
-    uint8_t write_buff_new[TEST_BUFF_SIZE + 1] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-                                                  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-                                                  0xFF};
-
-    /* Set data for a UID using WRITE_ONCE flag */
-    val->print(PRINT_TEST, "[Check 3] Create a new UID %d with WRITE_ONCE flag\n", uid);
-    status = SST_FUNCTION(s002_data[14].api, uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_WRITE_ONCE);
-    TEST_ASSERT_EQUAL(status, s002_data[14].status, TEST_CHECKPOINT_NUM(16));
-
-    /* Check that remove() fails with PSA_SST_ERROR_WRITE_ONCE */
-    val->print(PRINT_TEST, "[Check 4] Try to remove the UID %d having WRITE_ONCE flag\n", uid);
-    status = SST_FUNCTION(s002_data[15].api, uid);
-    TEST_ASSERT_EQUAL(status, s002_data[15].status, TEST_CHECKPOINT_NUM(17));
-
-    /* Check data consistency using get()*/
-    status = SST_FUNCTION(s002_data[16].api, uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s002_data[16].status, TEST_CHECKPOINT_NUM(18));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(19));
-    TEST_ASSERT_MEMCMP(write_buff, read_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(20));
-
-    /* Check that info values is as expected */
-    status = SST_FUNCTION(s002_data[18].api, uid, &orig_info);
-    TEST_ASSERT_EQUAL(status, s002_data[18].status, TEST_CHECKPOINT_NUM(21));
-    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(22));
-    TEST_ASSERT_EQUAL(orig_info.flags, PSA_STORAGE_FLAG_WRITE_ONCE, TEST_CHECKPOINT_NUM(23));
-
-    /* Try to overwrite using set() with same UID as used before with WRITE_ONCE_FLAG */
-    val->print(PRINT_TEST, "[Check 5] Try to change the length of write_once UID %d\n", uid);
-    status = SST_FUNCTION(s002_data[21].api, uid, (TEST_BUFF_SIZE + 1), write_buff_new,
-                          PSA_STORAGE_FLAG_WRITE_ONCE);
-    TEST_ASSERT_EQUAL(status, s002_data[21].status, TEST_CHECKPOINT_NUM(24));
-
-    /* Check that remove() still fails with PSA_SST_ERROR_WRITE_ONCE */
-    val->print(PRINT_TEST, "[Check 6] Check UID removal still fails\n", 0);
-    status = SST_FUNCTION(s002_data[22].api, uid);
-    TEST_ASSERT_EQUAL(status, s002_data[22].status, TEST_CHECKPOINT_NUM(25));
-
-    /* Check that info is preserved */
-    status = SST_FUNCTION(s002_data[23].api, uid, &new_info);
-    TEST_ASSERT_EQUAL(status, s002_data[23].status, TEST_CHECKPOINT_NUM(26));
-    TEST_ASSERT_EQUAL(new_info.size, orig_info.size, TEST_CHECKPOINT_NUM(27));
-    TEST_ASSERT_EQUAL(new_info.flags, orig_info.flags, TEST_CHECKPOINT_NUM(28));
-
-    /* Check that data contents are preserved which were written with WRITE_ONCE_FLAG originally */
-    status = SST_FUNCTION(s002_data[26].api, uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s002_data[26].status, TEST_CHECKPOINT_NUM(29));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(30));
-    TEST_ASSERT_MEMCMP(write_buff, read_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(31));
-
-    /* Try to overwrite using set() with same UID as used before without WRITE_ONCE_FLAG */
-    val->print(PRINT_TEST, "[Check 7] Try to change the WRITE_ONCE flag to None for UID %d\n", uid);
-    new_info.size = 0;
-    new_info.flags = 0;
-    status = SST_FUNCTION(s002_data[28].api, uid, (TEST_BUFF_SIZE - 1), write_buff_new,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s002_data[28].status, TEST_CHECKPOINT_NUM(32));
-
-    /* Check that remove() still fails with PSA_SST_ERROR_WRITE_ONCE */
-    val->print(PRINT_TEST, "[Check 8] Check UID removal still fails\n", 0);
-    status = SST_FUNCTION(s002_data[29].api, uid);
-    TEST_ASSERT_EQUAL(status, s002_data[29].status, TEST_CHECKPOINT_NUM(33));
-
-    /* Check that info is preserved */
-    status = SST_FUNCTION(s002_data[30].api, uid, &new_info);
-    TEST_ASSERT_EQUAL(status, s002_data[30].status, TEST_CHECKPOINT_NUM(34));
-    TEST_ASSERT_EQUAL(new_info.size, orig_info.size, TEST_CHECKPOINT_NUM(35));
-    TEST_ASSERT_EQUAL(new_info.flags, orig_info.flags, TEST_CHECKPOINT_NUM(36));
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h
deleted file mode 100755
index e4b339e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S002_CLIENT_TESTS_H_
-#define _TEST_S002_CLIENT_TESTS_H_
-
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  s002)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p002)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s002_sst_list[];
-
-int32_t psa_sst_update_write_once_flag_after_create(caller_security_t caller);
-int32_t psa_sst_create_with_write_once_flag(caller_security_t caller);
-#endif /* _TEST_S002_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s003/test_its_data.h
deleted file mode 100755
index 095dcfe..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_its_data.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S003_ITS_DATA_TESTS_H_
-#define _TEST_S003_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-#define PSA_SST_SUCCESS  PSA_SUCCESS
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s003_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_ERROR_INSUFFICIENT_STORAGE /* Index1 - Call set API till insufficent space */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index2 - Remove the UID created */
-},
-};
-#endif /* _TEST_S003_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s003/test_ps_data.h
deleted file mode 100755
index 60e750d..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_ps_data.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S003_PS_DATA_TESTS_H_
-#define _TEST_S003_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s003_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_ERROR_INSUFFICIENT_STORAGE /* Index1 - Call set API till insufficent space */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index2 - Remove the UID created */
-},
-};
-#endif /* _TEST_S003_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h
deleted file mode 100755
index f92ab6d..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S004_ITS_DATA_TESTS_H_
-#define _TEST_S004_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s004_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index2 - Validate the data using get API after set API failure */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index4 - For same UID set the length as half of previous */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index5 - Call get with incorrect length */
-},
-{
- 0, 0 /* This is dummy for Index6 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index7 - Remove the valid storage entity */
-},
-};
-#endif /* _TEST_S004_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_ps_data.h
deleted file mode 100755
index e17dfde..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_ps_data.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S004_PS_DATA_TESTS_H_
-#define _TEST_S004_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s004_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index2 - Validate the data using get API after set API failure */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index4 - For same UID set the length as half of previous */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index5 - Call get with incorrect length */
-},
-{
- 0, 0 /* This is dummy for Index6 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index7 - Remove the valid storage entity */
-},
-};
-#endif /* _TEST_S004_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c
deleted file mode 100755
index 94240c0..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s004.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 20
-
-client_test_t test_s004_sst_list[] = {
-    NULL,
-    psa_sst_get_data_check,
-    NULL,
-};
-
-static psa_storage_uid_t uid = UID_BASE_VALUE + 5;
-static uint8_t read_buff[TEST_BUFF_SIZE] = {0};
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x30, 0x50, 0x04, 0x23, 0xF6, 0x07, 0x08, \
-                                  0x0D, 0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD};
-
-int32_t psa_sst_get_data_check(caller_security_t caller)
-{
-    uint32_t status, p_data_length = 0;
-
-    /* Set data for UID */
-    status = SST_FUNCTION(s004_data[1].api, uid, TEST_BUFF_SIZE, write_buff, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s004_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call get function and check the data consistency */
-    status = SST_FUNCTION(s004_data[2].api, uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s004_data[2].status, TEST_CHECKPOINT_NUM(2));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(4));
-
-    /* Call the set again for same uid and set the length as half */
-    val->print(PRINT_TEST, "[Check 1] Call set API with reduced length - TEST_BUFF_SIZE/2\n", 0);
-    status = SST_FUNCTION(s004_data[4].api, uid, TEST_BUFF_SIZE/2, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s004_data[4].status, TEST_CHECKPOINT_NUM(5));
-
-    /* Call get function with incorrect buffer length  */
-    val->print(PRINT_TEST, "[Check 2] Call get API with default length - TEST_BUFF_SIZE\n", 0);
-    status = SST_FUNCTION(s004_data[5].api, uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s004_data[5].status, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(7));
-    /* Expect p_data_length = TEST_BUFF_SIZE/2 */
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/2,  TEST_CHECKPOINT_NUM(8));
-
-    /* Remove the UID */
-    status = SST_FUNCTION(s004_data[7].api, uid);
-    TEST_ASSERT_EQUAL(status, s004_data[7].status, TEST_CHECKPOINT_NUM(9));
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test.cmake b/api-tests/dev_apis/internal_trusted_storage/test_s005/test.cmake
deleted file mode 100644
index 33559cb..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s005.c
-	test_s005.c
-)
-list(APPEND CC_OPTIONS -DITS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h
deleted file mode 100755
index 5f985e8..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S005_ITS_DATA_TESTS_H_
-#define _TEST_S005_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION           val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s005_data[] = {
-{
- 0, 0  /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index2 - Validate the data using get API */
-},
-{
- 0, 0  /* This is dummy for Index3 */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index4 - Validate the data attributes get_info API */
-},
-{
- 0, 0  /* This is dummy for Index5 */
-},
-{
- 0, 0  /* This is dummy for Index6 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index7 - Remove the valid storage entity */
-},
-};
-#endif /* _TEST_S005_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h
deleted file mode 100755
index ad248bd..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S005_PS_DATA_TESTS_H_
-#define _TEST_S005_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION           val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s005_data[] = {
-{
- 0, 0  /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index2 - Validate the data using get API */
-},
-{
- 0, 0  /* This is dummy for Index3 */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index4 - Validate the data attributes get_info API */
-},
-{
- 0, 0  /* This is dummy for Index5 */
-},
-{
- 0, 0  /* This is dummy for Index6 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index7 - Remove the valid storage entity */
-},
-};
-#endif /* _TEST_S005_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c
deleted file mode 100755
index 51bf8a4..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s005.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 30
-
-client_test_t test_s005_sst_list[] = {
-    NULL,
-    psa_sst_apis_check_success_case,
-    NULL,
-};
-
-static uint8_t read_buff[TEST_BUFF_SIZE];
-static uint8_t write_buff[TEST_BUFF_SIZE] = {
-  0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
-  0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
-
-static int32_t psa_sst_apis_check(psa_storage_uid_t uid, uint32_t data_len,
-                                  uint8_t *data_buff, psa_storage_create_flags_t create_flag)
-{
-    uint32_t status, p_data_length = 0;
-
-    /* Set the UID with the data_len and data_buff */
-    status = SST_FUNCTION(s005_data[1].api, uid, data_len, data_buff, create_flag);
-    TEST_ASSERT_EQUAL(status, s005_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call the get function to get the data buffer and match the buffer */
-    status = SST_FUNCTION(s005_data[2].api, uid, 0, data_len, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s005_data[2].status, TEST_CHECKPOINT_NUM(2));
-    TEST_ASSERT_MEMCMP(read_buff, data_buff, data_len, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_EQUAL(p_data_length, data_len, TEST_CHECKPOINT_NUM(4));
-
-    /* Call the get_info function and match the attributes */
-    status = SST_FUNCTION(s005_data[4].api, uid, &info);
-    TEST_ASSERT_EQUAL(status, s005_data[4].status, TEST_CHECKPOINT_NUM(5));
-    TEST_ASSERT_EQUAL(info.size, data_len, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_EQUAL(info.flags, create_flag, TEST_CHECKPOINT_NUM(7));
-
-    /* Remove the UID  */
-    status = SST_FUNCTION(s005_data[7].api, uid);
-    TEST_ASSERT_EQUAL(status, s005_data[7].status, TEST_CHECKPOINT_NUM(8));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_apis_check_success_case(caller_security_t caller)
-{
-   psa_storage_uid_t uid = UID_BASE_VALUE + 4;
-   uint32_t data_len = 0, status = VAL_STATUS_SUCCESS;
-
-    /* Calling set function with data_len 1 and valid data pointer */
-    val->print(PRINT_TEST, "[Check 1] Set UID with data length zero and call storage APIs\n", 0);
-    if (psa_sst_apis_check(uid, data_len, write_buff, PSA_STORAGE_FLAG_NONE))
-    {
-        val->print(PRINT_ERROR, "Data Len = %d\n", data_len);
-        return VAL_STATUS_ERROR;
-    }
-
-    data_len = TEST_BUFF_SIZE/2;
-    val->print(PRINT_TEST, "[Check 2] Resetting the length check\n", 0);
-    if (psa_sst_apis_check(uid, data_len, write_buff, PSA_STORAGE_FLAG_NONE))
-    {
-       val->print(PRINT_ERROR, "Data Len = %d\n", data_len);
-       return VAL_STATUS_ERROR;
-    }
-
-    return status;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test.cmake b/api-tests/dev_apis/internal_trusted_storage/test_s006/test.cmake
deleted file mode 100644
index 7810ff6..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s006.c
-	test_s006.c
-)
-list(APPEND CC_OPTIONS -DITS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h
deleted file mode 100755
index b6a3cf9..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S006_ITS_DATA_TESTS_H_
-#define _TEST_S006_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION            val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s006_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity with different flag values */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index2 - Validate the flag value get_info API */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index4 - Remove the storage entity */
-},
-{
- VAL_ITS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index5 - Storage entity remove fails */
-},
-};
-#endif /* _TEST_S006_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h
deleted file mode 100755
index 0bf7305..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S006_PS_DATA_TESTS_H_
-#define _TEST_S006_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION            val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s006_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity with different flag values */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index2 - Validate the flag value get_info API */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index4 - Remove the storage entity */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_DOES_NOT_EXIST /* Index5 - Storage entity remove fails */
-}
-};
-#endif /* _TEST_S006_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c
deleted file mode 100755
index bda5fcc..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s006.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 30
-
-client_test_t test_s006_sst_list[] = {
-    NULL,
-    psa_sst_flags_not_supported,
-    NULL,
-};
-
-static uint8_t write_buff[TEST_BUFF_SIZE] = {
-  0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
-  0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
-
-static int32_t psa_sst_remove_api(psa_storage_uid_t uid, uint32_t data_len,
-                                   uint8_t *data_buff, psa_storage_create_flags_t create_flag)
-{
-    uint32_t status;
-
-    /* Call the get_info function and match the attributes */
-    status = SST_FUNCTION(s006_data[2].api, uid, &info);
-    TEST_ASSERT_EQUAL(status, s006_data[2].status, TEST_CHECKPOINT_NUM(1));
-    if ((create_flag != PSA_STORAGE_FLAG_NO_CONFIDENTIALITY) ||
-        (create_flag != PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION))
-    {
-        TEST_ASSERT_EQUAL(info.flags, create_flag, TEST_CHECKPOINT_NUM(2));
-    }
-
-    /* Remove the UID  */
-    status = SST_FUNCTION(s006_data[4].api, uid);
-    TEST_ASSERT_EQUAL(status, s006_data[4].status, TEST_CHECKPOINT_NUM(3));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-static int32_t psa_sst_create_storage_api(psa_storage_uid_t uid, uint32_t data_len,
-                                         uint8_t *data_buff, psa_storage_create_flags_t create_flag)
-{
-    uint32_t status;
-    int32_t  test_status;
-
-    status = SST_FUNCTION(s006_data[1].api, uid, data_len, data_buff, create_flag);
-    if (status == s006_data[1].status)
-    {
-        test_status = psa_sst_remove_api(uid, data_len, data_buff, create_flag);
-        if (test_status != VAL_STATUS_SUCCESS)
-        {
-            return test_status;
-        }
-    }
-    else
-    {
-        /* Remove UID should fail  */
-        status = SST_FUNCTION(s006_data[5].api, uid);
-        TEST_ASSERT_EQUAL(status, s006_data[5].status, TEST_CHECKPOINT_NUM(4));
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_flags_not_supported(caller_security_t caller)
-{
-    psa_storage_create_flags_t flag;
-    uint32_t                   status = VAL_STATUS_SUCCESS;
-    psa_storage_uid_t          uid    = UID_BASE_VALUE + 5;
-    int32_t                    test_status;
-
-    /* Calling set function with different create flag value */
-
-    val->print(PRINT_TEST, "[Check 1] Call set API with flag - PSA_STORAGE_FLAG_NONE\n", 0);
-    /* Create storage with flag value */
-    flag = PSA_STORAGE_FLAG_NONE;
-    test_status = psa_sst_create_storage_api(uid, TEST_BUFF_SIZE, write_buff, flag);
-    if (test_status != VAL_STATUS_SUCCESS)
-    {
-        return test_status;
-    }
-
-    val->print(PRINT_TEST, "[Check 2] Call set API with flag - "
-                            "PSA_STORAGE_FLAG_NO_CONFIDENTIALITY\n", 0);
-    /* Create storage with flag value */
-    flag = PSA_STORAGE_FLAG_NO_CONFIDENTIALITY;
-    test_status = psa_sst_create_storage_api(uid, TEST_BUFF_SIZE, write_buff, flag);
-    if (test_status != VAL_STATUS_SUCCESS)
-    {
-        return test_status;
-    }
-
-    val->print(PRINT_TEST, "[Check 3] Call set API with flag - "
-                            "PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION\n", 0);
-    /* Create storage with flag value */
-    flag = PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION;
-    test_status = psa_sst_create_storage_api(uid, TEST_BUFF_SIZE, write_buff, flag);
-    if (test_status != VAL_STATUS_SUCCESS)
-    {
-        return test_status;
-    }
-
-    return status;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test.cmake b/api-tests/dev_apis/internal_trusted_storage/test_s007/test.cmake
deleted file mode 100644
index cee8525..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s007.c
-	test_s007.c
-)
-list(APPEND CC_OPTIONS -DITS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h
deleted file mode 100755
index b5be47e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S007_ITS_DATA_TESTS_H_
-#define _TEST_S007_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s007_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index2 - Increase the length of storage */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index3 - Try to access old length */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index4 - Try to access valid length less than set length */
-},
-{
- 0, 0 /* This is dummy for Index5 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index6 - Decrease the length of storage */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index7 - Try to access old length */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index8 - Try to access old length */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index9 - Try to access data with correct length */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index10 - Remove the storage entity */
-},
-};
-#endif /* _TEST_S007_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h
deleted file mode 100755
index 6414d2c..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S007_PS_DATA_TESTS_H_
-#define _TEST_S007_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s007_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index2 - Increase the length of storage */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index3 - Try to access old length */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index4 - Try to access valid length less than set length */
-},
-{
- 0, 0 /* This is dummy for Index5 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index6 - Decrease the length of storage */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index7 - Try to access old length */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index8 - Try to access old length */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index9 - Try to access data with correct length */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index10 - Remove the storage entity */
-},
-};
-#endif /* _TEST_S007_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c
deleted file mode 100755
index 610e045..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s007.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 30
-
-client_test_t test_s007_sst_list[] = {
-    NULL,
-    psa_sst_get_incorrect_size,
-    NULL,
-};
-
-static uint8_t write_buff[TEST_BUFF_SIZE] = {
-  0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
-  0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
-static uint8_t read_buff[TEST_BUFF_SIZE];
-
-int32_t psa_sst_get_incorrect_size(caller_security_t caller)
-{
-    psa_storage_uid_t uid = UID_BASE_VALUE + 5;
-    uint32_t status = VAL_STATUS_SUCCESS, p_data_length = 0;
-
-    /* Set the UID with the data_len and data_buff */
-    val->print(PRINT_TEST, "Create a valid Storage - TEST_BUFF_SIZE/2\n", 0);
-    status = SST_FUNCTION(s007_data[1].api, uid, TEST_BUFF_SIZE/2, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s007_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call set for same UID and increase the length */
-    val->print(PRINT_TEST, "Increase the length of storage - TEST_BUFF_SIZE\n", 0);
-    status = SST_FUNCTION(s007_data[2].api, uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s007_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Access data using get API and old length */
-    val->print(PRINT_TEST, "[Check 1] Call get API with old length - TEST_BUFF_SIZE/2\n", 0);
-    status = SST_FUNCTION(s007_data[3].api, uid, 0, TEST_BUFF_SIZE/2, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s007_data[3].status, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(4));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(5));
-
-    /* Access data using get API and valid length */
-    val->print(PRINT_TEST, "[Check 2] Call get API with old length - TEST_BUFF_SIZE/4\n", 0);
-    memset(read_buff, 0x0, TEST_BUFF_SIZE);
-    status = SST_FUNCTION(s007_data[4].api, uid, 0, TEST_BUFF_SIZE/4, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s007_data[4].status, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(7));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(8));
-
-    /* Decrease the length again */
-    val->print(PRINT_TEST, "Decrease the length of storage - TEST_BUFF_SIZE/4\n", 0);
-    status = SST_FUNCTION(s007_data[6].api, uid, TEST_BUFF_SIZE/4, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s007_data[6].status, TEST_CHECKPOINT_NUM(9));
-
-    /* Access data using get API and old length */
-    val->print(PRINT_TEST, "[Check 3] Call get API with old length - TEST_BUFF_SIZE/2\n", 0);
-    memset(read_buff, 0x0, TEST_BUFF_SIZE);
-    status = SST_FUNCTION(s007_data[7].api, uid, 0, TEST_BUFF_SIZE/2, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s007_data[7].status, TEST_CHECKPOINT_NUM(10));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(11));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(12));
-
-    /* Access data using get API and old length */
-    val->print(PRINT_TEST, "[Check 4] Call get API with old length - TEST_BUFF_SIZE\n", 0);
-    memset(read_buff, 0x0, TEST_BUFF_SIZE);
-    status = SST_FUNCTION(s007_data[8].api, uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s007_data[8].status, TEST_CHECKPOINT_NUM(13));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(14));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(15));
-
-    /* Access data using correct length */
-    val->print(PRINT_TEST, "[Check 5] Call get API with valid length - TEST_BUFF_SIZE/4\n", 0);
-    memset(read_buff, 0x0, TEST_BUFF_SIZE);
-    status = SST_FUNCTION(s007_data[9].api, uid, 0, TEST_BUFF_SIZE/4, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s007_data[9].status, TEST_CHECKPOINT_NUM(16));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(17));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(18));
-
-    /* Remove the UID  */
-    status = SST_FUNCTION(s007_data[10].api, uid);
-    TEST_ASSERT_EQUAL(status, s007_data[10].status, TEST_CHECKPOINT_NUM(19));
-
-    return status;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_its_data.h
deleted file mode 100755
index f5476c3..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_its_data.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S008_ITS_DATA_TESTS_H_
-#define _TEST_S008_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s008_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity with zero flag value */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index2 - Call get API with offset + data_len = total_size */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index4 - Call get API with offset + data_len < total_size */
-},
-{
- 0, 0 /* This is dummy for Index5 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index6 - Call get API with offset = total data_size + 1 */
-},
-{
- 0, 0 /* This is dummy for Index7 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index8 - get API with offset = total data_size */
-},
-{
- 0, 0 /* This is dummy for Index9 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index10 - Call get API with invalid data len and offset zero */
-},
-{
- 0, 0 /* This is dummy for Index11 */
-},
-{
- VAL_ITS_GET, PSA_ERROR_INVALID_ARGUMENT /* Index12 - Call get API with offset = MAX_UINT32 */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index13 - Remove the storage entity */
-},
-};
-#endif /* _TEST_S008_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_ps_data.h
deleted file mode 100755
index e994592..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_ps_data.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S008_PS_DATA_TESTS_H_
-#define _TEST_S008_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s008_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Create a valid storage entity with zero flag value */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index2 - Call get API with offset + data_len = total_size */
-},
-{
- 0, 0 /* This is dummy for Index3 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index4 - Call get API with offset + data_len < total_size */
-},
-{
- 0, 0 /* This is dummy for Index5 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS/* Index6 - Call get API with offset = total data_size + 1 */
-},
-{
- 0, 0 /* This is dummy for Index7 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index8 - get API with offset = total data_size */
-},
-{
- 0, 0 /* This is dummy for Index9 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index10 - Call get API with invalid data len and offset zero */
-},
-{
- 0, 0 /* This is dummy for Index11 */
-},
-{
- VAL_PS_GET, PSA_ERROR_INVALID_ARGUMENT /* Index12 - Call get API with offset = MAX_UINT32 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index13 - Remove the storage entity */
-},
-};
-#endif /* _TEST_S008_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c
deleted file mode 100755
index 32ddfc5..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s008.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 20
-#define TEST_MAX_UINT32 0xFFFFFFFF
-
-client_test_t test_s008_sst_list[] = {
-    NULL,
-    psa_sst_valid_offset_success,
-    psa_sst_invalid_offset_failure,
-    NULL,
-};
-
-static psa_storage_uid_t uid = UID_BASE_VALUE + 5;
-static uint8_t read_buff[TEST_BUFF_SIZE];
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, \
-                                  0x0D, 0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD};
-
-int32_t psa_sst_invalid_offset_failure(caller_security_t caller)
-{
-    uint32_t status, j, p_data_length = 0;
-
-    /* Case where offset = data_size +1 , data_len 0. Also check nothing is returned in read buff */
-    val->print(PRINT_TEST, "[Check 2] Try to access data with varying invalid offset\n", 0);
-    memset(read_buff, 0, TEST_BUFF_SIZE);
-    status = SST_FUNCTION(s008_data[6].api, uid, TEST_BUFF_SIZE+1, 0, read_buff, &p_data_length);
-    TEST_ASSERT_NOT_EQUAL(status, s008_data[6].status, TEST_CHECKPOINT_NUM(8));
-    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(9));
-    for (j = 0; j < TEST_BUFF_SIZE; j++)
-    {
-        TEST_ASSERT_EQUAL(read_buff[j], 0x00, TEST_CHECKPOINT_NUM(10));
-    }
-
-    /* Case where offset = data_size  , data_len= 1  Also check nothing is returned in read buff */
-    memset(read_buff, 0xCD, TEST_BUFF_SIZE);
-    p_data_length = 0xFF;
-    status = SST_FUNCTION(s008_data[8].api, uid, TEST_BUFF_SIZE, 1, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s008_data[8].status, TEST_CHECKPOINT_NUM(11));
-    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(12));
-
-    /* Case where offset = 0, data_len > data_size, check if just data_size is returned */
-    status = SST_FUNCTION(s008_data[10].api, uid, 0, TEST_BUFF_SIZE+1, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s008_data[10].status, TEST_CHECKPOINT_NUM(13));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(14));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(15));
-
-    /* Try to access data with offset as MAX_UINT32 and length less than buffer size */
-    status = SST_FUNCTION(s008_data[12].api, uid, TEST_MAX_UINT32, TEST_BUFF_SIZE/2, read_buff,
-                          &p_data_length);
-    TEST_ASSERT_EQUAL(status, s008_data[12].status, TEST_CHECKPOINT_NUM(16));
-
-    /* Remove the UID */
-    status = SST_FUNCTION(s008_data[13].api, uid);
-    TEST_ASSERT_EQUAL(status, s008_data[13].status, TEST_CHECKPOINT_NUM(17));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_valid_offset_success(caller_security_t caller)
-{
-    uint32_t status, data_len, offset = TEST_BUFF_SIZE;
-    uint32_t p_data_length = 0;
-
-    /* Set data for UID */
-    status = SST_FUNCTION(s008_data[1].api, uid, TEST_BUFF_SIZE, write_buff, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s008_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Case where offset + datalen =  data_size */
-    val->print(PRINT_TEST, "[Check 1] Try to access data with varying valid offset\n", 0);
-    while (offset > 0)
-    {
-         data_len = TEST_BUFF_SIZE - offset;
-         memset(read_buff, 0, TEST_BUFF_SIZE);
-         status = SST_FUNCTION(s008_data[2].api, uid, offset, data_len, read_buff, &p_data_length);
-         TEST_ASSERT_EQUAL(status, s008_data[2].status, TEST_CHECKPOINT_NUM(2));
-         TEST_ASSERT_MEMCMP(read_buff, write_buff + offset, data_len, TEST_CHECKPOINT_NUM(3));
-         TEST_ASSERT_EQUAL(p_data_length, data_len, TEST_CHECKPOINT_NUM(4));
-         offset >>= 1;
-     }
-
-    offset = TEST_BUFF_SIZE - 2;
-    data_len = 1;
-    /* Case where offset + datalen <  data_size */
-    while (offset > 0)
-    {
-         status = SST_FUNCTION(s008_data[4].api, uid, offset, data_len, read_buff, &p_data_length);
-         TEST_ASSERT_EQUAL(status, s008_data[4].status, TEST_CHECKPOINT_NUM(5));
-         TEST_ASSERT_MEMCMP(read_buff, write_buff + offset, data_len, TEST_CHECKPOINT_NUM(6));
-         TEST_ASSERT_EQUAL(p_data_length, data_len, TEST_CHECKPOINT_NUM(7));
-         offset >>= 1;
-         data_len <<= 1;
-     }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h
deleted file mode 100755
index c4426d8..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S008_CLIENT_TESTS_H_
-#define _TEST_S008_CLIENT_TESTS_H_
-
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  s008)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p008)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s008_sst_list[];
-
-int32_t psa_sst_valid_offset_success(caller_security_t caller);
-int32_t psa_sst_invalid_offset_failure(caller_security_t caller);
-
-#endif /* _TEST_S008_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test.cmake b/api-tests/dev_apis/internal_trusted_storage/test_s009/test.cmake
deleted file mode 100644
index e5fe7ee..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
-)
-list(APPEND CC_OPTIONS -DITS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h
deleted file mode 100755
index 606f02e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S009_ITS_DATA_TESTS_H_
-#define _TEST_S009_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s009_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index1 - Call set API with NULL write buffer and 0 length */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index2 - Verify UID is created */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index3 - Call get API with NULL write buffer and 0 length */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index4 - Remove the storage entity */
-},
-{
- VAL_ITS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index5 - Verify UID is removed */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index6 - Create storage of zero size and valid write buffer */
-},
-{
- VAL_ITS_GET_INFO, PSA_SUCCESS /* Index7 - Call get_info API to check data size */
-},
-{
- 0, 0 /* This is dummy for Index8 */
-},
-{
- VAL_ITS_GET, PSA_SUCCESS /* Index9 - Call get API with 0 length and NULL read buffer */
-},
-{
- VAL_ITS_SET, PSA_SUCCESS /* Index10 - Increase the asset size */
-},
-{
- VAL_ITS_REMOVE, PSA_SUCCESS /* Index11 - Remove the storage entity */
-},
-};
-#endif /* _TEST_S009_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h
deleted file mode 100755
index efc8a2c..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S009_PS_DATA_TESTS_H_
-#define _TEST_S009_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static struct psa_storage_info_t info;
-static const test_data s009_data[] = {
-{
- 0, 0 /* This is dummy for Index0 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index1 - Call set API with NULL write buffer and 0 length */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index2 - Verify UID is created */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index3 - Call get API with NULL write buffer and 0 length */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index4 - Remove the storage entity */
-},
-{
- VAL_PS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index5 - Verify UID is removed */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index6 - Create storage of zero size and valid write buffer */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index7 - Call get_info API to check data size */
-},
-{
- 0, 0 /* This is dummy for Index8 */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index9 - Call get API with 0 length and NULL read buffer */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index10 - Increase the asset size */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index11 - Remove the storage entity */
-},
-};
-#endif /* _TEST_S009_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c
deleted file mode 100755
index f3e103c..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s009.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 20
-
-client_test_t test_s009_sst_list[] = {
-    NULL,
-    psa_sst_zero_length_check,
-    NULL,
-};
-
-static psa_storage_uid_t uid = UID_BASE_VALUE + 5;
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, \
-                                  0x0D, 0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD};
-
-int32_t psa_sst_zero_length_check(caller_security_t caller)
-{
-    uint32_t status, p_data_length = 0;
-
-    /* Set data for UID with length 0 and NULL pointer */
-    val->print(PRINT_TEST, "[Check 1] Call set API with NULL pointer and data length 0\n", 0);
-    status = SST_FUNCTION(s009_data[1].api, uid, 0, NULL, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s009_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call the get_info function to verify UID created */
-    status = SST_FUNCTION(s009_data[2].api, uid, &info);
-    TEST_ASSERT_EQUAL(status, s009_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Call get API with NULL read buffer */
-    val->print(PRINT_TEST, "[Check 2] Call get API with NULL read buffer and data length 0\n", 0);
-    status = SST_FUNCTION(s009_data[3].api, uid, 0, 0, NULL, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s009_data[3].status, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(4));
-
-    /* Remove the UID */
-    val->print(PRINT_TEST, "[Check 3] Remove the UID\n", 0);
-    status = SST_FUNCTION(s009_data[4].api, uid);
-    TEST_ASSERT_EQUAL(status, s009_data[4].status, TEST_CHECKPOINT_NUM(5));
-
-    /* Call the get_info function to verify UID is removed */
-    val->print(PRINT_TEST, "[Check 4] Call get_info API to verify UID removed\n", 0);
-    status = SST_FUNCTION(s009_data[5].api, uid, &info);
-    TEST_ASSERT_EQUAL(status, s009_data[5].status, TEST_CHECKPOINT_NUM(6));
-
-    /* Create UID with length 0 and valid write buffer */
-    val->print(PRINT_TEST, "[Check 5] Create UID with zero data_len and valid write buffer\n", 0);
-    status = SST_FUNCTION(s009_data[6].api, uid, 0, write_buff, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s009_data[6].status, TEST_CHECKPOINT_NUM(7));
-
-    /* Call the get_info function and match the attributes */
-    status = SST_FUNCTION(s009_data[7].api, uid, &info);
-    TEST_ASSERT_EQUAL(status, s009_data[7].status, TEST_CHECKPOINT_NUM(8));
-    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(9));
-
-    /* Call get API with NULL read buffer and valid UID */
-    val->print(PRINT_TEST, "[Check 8] Call get API with NULL read buffer and data length 0\n", 0);
-    status = SST_FUNCTION(s009_data[9].api, uid, 0, 0, NULL, &p_data_length);
-    TEST_ASSERT_EQUAL(status, s009_data[9].status, TEST_CHECKPOINT_NUM(10));
-    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(11));
-
-    /* Change the length to test_buff_size */
-    val->print(PRINT_TEST, "[Check 9] Increase the length\n", 0);
-    status = SST_FUNCTION(s009_data[10].api, uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s009_data[10].status, TEST_CHECKPOINT_NUM(12));
-
-    /* Remove the UID */
-    status = SST_FUNCTION(s009_data[11].api, uid);
-    TEST_ASSERT_EQUAL(status, s009_data[11].status, TEST_CHECKPOINT_NUM(13));
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_its_data.h
deleted file mode 100644
index 8dd4cb8..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_its_data.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S010_ITS_DATA_TESTS_H_
-#define _TEST_S010_ITS_DATA_TESTS_H_
-
-#include "val_internal_trusted_storage.h"
-
-#define SST_FUNCTION val->its_function
-
-typedef struct {
-    enum its_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s010_data[] = {
-{
-  VAL_ITS_SET, PSA_ERROR_INVALID_ARGUMENT /* Index0 - Create with UID value zero should fail */
-},
-{
-  VAL_ITS_GET_INFO, PSA_ERROR_INVALID_ARGUMENT /* Index1 - Call to get_info API for UID 0
-                                                  should fail */
-},
-{
-  VAL_ITS_REMOVE, PSA_ERROR_INVALID_ARGUMENT /* Index2 - Call to remove API UID value zero
-                                                should fail */
-},
-};
-#endif /* _TEST_S010_ITS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_ps_data.h
deleted file mode 100644
index 2c7f149..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_ps_data.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S010_PS_DATA_TESTS_H_
-#define _TEST_S010_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data s010_data[] = {
-{
- VAL_PS_SET, PSA_ERROR_INVALID_ARGUMENT /* Index0 - Create with UID value zero should fail */
-},
-{
-  VAL_PS_GET_INFO, PSA_ERROR_INVALID_ARGUMENT /* Index1 - Call to get_info API for UID 0
-                                                  should fail */
-},
-{
-  VAL_PS_REMOVE, PSA_ERROR_INVALID_ARGUMENT /* Index2 - Call to remove API UID value zero
-                                                should fail */
-},
-};
-#endif /* _TEST_S010_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c
deleted file mode 100644
index 5cff99c..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_s010.h"
-#ifdef ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
-
-#define TEST_BUFF_SIZE 1
-
-client_test_t test_s010_sst_list[] = {
-    NULL,
-    psa_sst_uid_value_zero_check,
-    NULL,
-};
-
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0xFF};
-
-int32_t psa_sst_uid_value_zero_check(caller_security_t caller)
-{
-    int32_t status;
-    psa_storage_uid_t uid = 0;
-    struct psa_storage_info_t info;
-
-    /* Set with UID value zero should fail */
-    val->print(PRINT_TEST, "[Check 1] Creating storage with UID 0 should fail\n", 0);
-    status = SST_FUNCTION(s010_data[0].api, uid, TEST_BUFF_SIZE, write_buff, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, s010_data[0].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call to get_info call with UID zero should fail */
-    val->print(PRINT_TEST, "[Check 2] Get_info for UID 0 should fail\n", 0);
-    status = SST_FUNCTION(s010_data[1].api, uid, &info);
-    TEST_ASSERT_EQUAL(status, s010_data[1].status, TEST_CHECKPOINT_NUM(2));
-
-    /* UID removal should fail  */
-    val->print(PRINT_TEST, "[Check 3] Removing storage with UID 0 should fail\n", 0);
-    status = SST_FUNCTION(s010_data[2].api, uid);
-    TEST_ASSERT_EQUAL(status, s010_data[2].status, TEST_CHECKPOINT_NUM(3));
-
-    return VAL_STATUS_SUCCESS;
-}
-
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h
deleted file mode 100644
index ef4202e..0000000
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_S010_CLIENT_TESTS_H_
-#define _TEST_S010_CLIENT_TESTS_H_
-
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  s010)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p010)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s010_sst_list[];
-
-int32_t psa_sst_uid_value_zero_check(caller_security_t caller);
-#endif /* _TEST_S010_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/README.md b/api-tests/dev_apis/protected_storage/README.md
deleted file mode 100644
index a03221a..0000000
--- a/api-tests/dev_apis/protected_storage/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-
-# Protected Storage Test Suite
-
-## Common tests
-Since Protected Storage(PS) and Internal Trusted Storage(ITS) APIs shares the similar API prototypes and return values, some of the ITS tests are reused for PS also. The reused tests are available with ``test_s[x]`` (where, x= test_num) directory name syntax in protected_storage/. The source code of these tests are located in internal_trusted_storage/ dir with same test name.
-
-## License
-
-Arm PSA test suite is distributed under Apache v2.0 License.
---------------
-
-*Copyright (c) 2018-2019, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/dev_apis/protected_storage/suite.cmake b/api-tests/dev_apis/protected_storage/suite.cmake
deleted file mode 100644
index 6daf170..0000000
--- a/api-tests/dev_apis/protected_storage/suite.cmake
+++ /dev/null
@@ -1,72 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-foreach(test ${PSA_TEST_LIST})
-	string(SUBSTRING ${test} 0 6 ITS_TEST_STR)
-	if(${ITS_TEST_STR} STREQUAL "test_s")
-		string(REPLACE ${SUITE_LOWER} "internal_trusted_storage" ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
-	else()
-		set(ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
-	endif()
-	include(${PSA_SUITE_DIR}/${test}/test.cmake)
-	foreach(source_file ${CC_SOURCE})
-		list(APPEND SUITE_CC_SOURCE
-			${ACTUAL_PSA_SUITE_DIR}/${test}/${source_file}
-		)
-	endforeach()
-	foreach(asm_file ${AS_SOURCE})
-		list(APPEND SUITE_AS_SOURCE
-			${ACTUAL_PSA_SUITE_DIR}/${test}/${asm_file}
-		)
-	endforeach()
-	unset(CC_SOURCE)
-	unset(AS_SOURCE)
-	unset(ACTUAL_PSA_SUITE_DIR)
-endforeach()
-
-add_definitions(${CC_OPTIONS})
-add_definitions(${AS_OPTIONS})
-add_library(${PSA_TARGET_TEST_COMBINE_LIB} STATIC ${SUITE_CC_SOURCE} ${SUITE_AS_SOURCE})
-
-# Test related Include directories
-foreach(test ${PSA_TEST_LIST})
-	string(SUBSTRING ${test} 0 6 ITS_TEST_STR)
-	if(${ITS_TEST_STR} STREQUAL "test_s")
-		string(REPLACE ${SUITE_LOWER} "internal_trusted_storage" ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
-	else()
-		set(ACTUAL_PSA_SUITE_DIR ${PSA_SUITE_DIR})
-	endif()
-	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE ${ACTUAL_PSA_SUITE_DIR}/${test})
-	unset(ACTUAL_PSA_SUITE_DIR)
-endforeach()
-
-# PSA Include directories
-foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
-	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
-                ${psa_inc_path}
-        )
-endforeach()
-
-target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
-	${CMAKE_CURRENT_BINARY_DIR}
-	${PSA_ROOT_DIR}/val/common
-	${PSA_ROOT_DIR}/val/nspe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-)
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test.cmake b/api-tests/dev_apis/protected_storage/test_p011/test.cmake
deleted file mode 100644
index 67884da..0000000
--- a/api-tests/dev_apis/protected_storage/test_p011/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p011.c
-	test_p011.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_p011.c b/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
deleted file mode 100644
index 83aa410..0000000
--- a/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p011.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE 16
-
-client_test_t test_p011_sst_list[] = {
-    NULL,
-    psa_sst_optional_api_uid_not_found,
-    NULL,
-};
-
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
-static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
-
-static int32_t psa_sst_uid_not_found()
-{
-    uint32_t status, j, p_data_length = 0;
-    psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
-    struct psa_storage_info_t orig_info;
-
-    /* Call the set_extended API with UID which is not created */
-    val->print(PRINT_TEST, "[Check 1] Call set_extended API for UID %d which is not set\n", p_uid);
-    status = SST_FUNCTION(p011_data[1].api, p_uid, 0, TEST_BUFF_SIZE, write_buff);
-    TEST_ASSERT_EQUAL(status, p011_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Create a valid storage with set API */
-    status = SST_FUNCTION(p011_data[2].api, p_uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p011_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Try to change data length for same UID using create API */
-    val->print(PRINT_TEST, "[Check 2] Call create API with length different than original\n", 0);
-    status = SST_FUNCTION(p011_data[3].api, p_uid, TEST_BUFF_SIZE/2, PSA_STORAGE_FLAG_WRITE_ONCE);
-    TEST_ASSERT_EQUAL(status, p011_data[3].status, TEST_CHECKPOINT_NUM(3));
-
-    /* Try to change flag value associated with the UID */
-    val->print(PRINT_TEST, "[Check 3] Call create API with flag value different than original\n", 0);
-    status = SST_FUNCTION(p011_data[4].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_WRITE_ONCE);
-    TEST_ASSERT_EQUAL(status, p011_data[4].status, TEST_CHECKPOINT_NUM(4));
-
-    /* Check the flag value should be same as original*/
-    status = SST_FUNCTION(p011_data[5].api, p_uid, &orig_info);
-    TEST_ASSERT_EQUAL(status, p011_data[5].status, TEST_CHECKPOINT_NUM(5));
-    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_EQUAL(orig_info.flags, PSA_STORAGE_FLAG_NONE, TEST_CHECKPOINT_NUM(7));
-
-    /* Remove the UID */
-    status = SST_FUNCTION(p011_data[8].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p011_data[8].status, TEST_CHECKPOINT_NUM(8));
-
-    /* Create a valid storage */
-    status = SST_FUNCTION(p011_data[9].api, p_uid, TEST_BUFF_SIZE/2, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p011_data[9].status, TEST_CHECKPOINT_NUM(9));
-
-    /* Try to change length using create API */
-    val->print(PRINT_TEST, "[Check 4] Call create API with parameters different than original\n", 0);
-    status = SST_FUNCTION(p011_data[10].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p011_data[10].status, TEST_CHECKPOINT_NUM(10));
-
-    /* Check the storage should be empty */
-    status = SST_FUNCTION(p011_data[11].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, p011_data[11].status, TEST_CHECKPOINT_NUM(11));
-    for (j = 0; j < TEST_BUFF_SIZE; j++)
-    {
-        TEST_ASSERT_EQUAL(read_buff[j], 0, TEST_CHECKPOINT_NUM(12));
-    }
-    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(13));
-
-    /* Remove the UID */
-    status = SST_FUNCTION(p011_data[13].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p011_data[13].status, TEST_CHECKPOINT_NUM(14));
-
-    /* Call the set_extended API with UID which is removed */
-    val->print(PRINT_TEST, "[Check 5] Call set_extended API for UID %d which is removed\n", p_uid);
-    status = SST_FUNCTION(p011_data[14].api, p_uid, 0, TEST_BUFF_SIZE, write_buff);
-    TEST_ASSERT_EQUAL(status, p011_data[14].status, TEST_CHECKPOINT_NUM(15));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_optional_api_uid_not_found(caller_security_t caller)
-{
-    uint32_t status;
-    int32_t test_status;
-
-    /* Call the get_support API and check if create and set_extended API are supported */
-    status = SST_FUNCTION(p011_data[0].api);
-
-    if (status == p011_data[0].status)
-    {
-       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
-       test_status = psa_sst_uid_not_found();
-       if (test_status != VAL_STATUS_SUCCESS)
-          return test_status;
-    }
-    else
-    {
-       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
-       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_p011.h b/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
deleted file mode 100644
index 73aba0d..0000000
--- a/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P011_CLIENT_TESTS_H_
-#define _TEST_P011_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_,  p011)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p011_sst_list[];
-
-int32_t psa_sst_optional_api_uid_not_found(caller_security_t caller);
-#endif /* _TEST_P011_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p011/test_ps_data.h
deleted file mode 100644
index 97ac2dc..0000000
--- a/api-tests/dev_apis/protected_storage/test_p011/test_ps_data.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P011_PS_DATA_TESTS_H_
-#define _TEST_P011_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p011_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 - Check if optional PS API
-                                                                                 supported */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_DOES_NOT_EXIST /* Index1 - Call set_extended call for
-                                                                     non-existing UID */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index2 - Create valid storage using set API */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_INVALID_ARGUMENT /* Index3 - Create API for present UID with different
-                                                                                          length */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_INVALID_ARGUMENT /* Index4 - Call create API for to set WRITE_ONCE flag */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index5 - Validate existing UID attributes maintained */
-},
-{
- 0, 0 /* This is dummy for Index6 */
-},
-{
- 0, 0 /* This is dummy for Index7 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index8 - Remove the UID */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index9 - Create valid storage using create API */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_INVALID_ARGUMENT /* Index10 - Again call create API with different
-                                                                                     length */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index11 - Validate the storage is empty */
-},
-{
- 0, 0 /* This is dummy for Index12 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index13 - Remove the UID */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_DOES_NOT_EXIST /* Index14 - Set_extended call for removed UID */
-}
-};
-#endif /* _TEST_P011_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test.cmake b/api-tests/dev_apis/protected_storage/test_p012/test.cmake
deleted file mode 100644
index 28b4103..0000000
--- a/api-tests/dev_apis/protected_storage/test_p012/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p012.c
-	test_p012.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_p012.c b/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
deleted file mode 100644
index 93d786f..0000000
--- a/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p012.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE 16
-
-client_test_t test_p012_sst_list[] = {
-    NULL,
-    psa_sst_optional_api_offset_invalid,
-    NULL,
-};
-
-static psa_storage_uid_t p_uid = UID_BASE_VALUE + 6;
-static uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
-static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
-static uint8_t write_buff_2[TEST_BUFF_SIZE] = {0xFF, 0xC1, 0xA2, 0xE3, 0x04, 0x05, 0x06, 0x07,
-                                             0x03, 0x09, 0x0A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F};
-
-int32_t psa_sst_offset_invalid()
-{
-    uint32_t status, p_data_length = 0;
-
-    /* Create valid storage using create API */
-    status = SST_FUNCTION(p012_data[1].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p012_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Set some data in the storage created */
-    status = SST_FUNCTION(p012_data[2].api, p_uid, TEST_BUFF_SIZE/2, 5, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Try to set data at invalid location with incorrect data len + offset  */
-    val->print(PRINT_TEST, "[Check 1] Call set_extended API with invalid offset + length\n", 0);
-    status = SST_FUNCTION(p012_data[3].api, p_uid, TEST_BUFF_SIZE, 2, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[3].status, TEST_CHECKPOINT_NUM(3));
-
-    /* Try to set data at invalid location with incorrect offset */
-    val->print(PRINT_TEST, "[Check 2] Call set_extended API with invalid offset\n", 0);
-    status = SST_FUNCTION(p012_data[4].api, p_uid, TEST_BUFF_SIZE + 2, 0, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[4].status, TEST_CHECKPOINT_NUM(4));
-
-    /* Try to set data at correct offset, but zero data len */
-    val->print(PRINT_TEST, "[Check 3] Call set_extended API with offset equals length\n", 0);
-    status = SST_FUNCTION(p012_data[5].api, p_uid, TEST_BUFF_SIZE, 0, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[5].status, TEST_CHECKPOINT_NUM(5));
-
-    /* Try to set data at invalid location with incorrect data len + offset */
-    val->print(PRINT_TEST, "[Check 4] Call set_extended API with invalid offset + length\n", 0);
-    status = SST_FUNCTION(p012_data[6].api, p_uid, 1, TEST_BUFF_SIZE, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[6].status, TEST_CHECKPOINT_NUM(6));
-
-    /* Try to set data at invalid location with incorrect data len */
-    val->print(PRINT_TEST, "[Check 5] Call set_extended API with invalid length\n", 0);
-    status = SST_FUNCTION(p012_data[7].api, p_uid, 0, TEST_BUFF_SIZE + 1, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[7].status, TEST_CHECKPOINT_NUM(7));
-
-    /* Set data using set API */
-    val->print(PRINT_TEST, "[Check 6] Overwrite the whole data with set API\n", 0);
-    status = SST_FUNCTION(p012_data[8].api, p_uid, TEST_BUFF_SIZE, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p012_data[8].status, TEST_CHECKPOINT_NUM(8));
-
-    /* Call the get function to check data is correctly overwritten */
-    status = SST_FUNCTION(p012_data[9].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, p012_data[9].status, TEST_CHECKPOINT_NUM(9));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(10));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(11));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-static int32_t psa_sst_bad_pointer()
-{
-    uint32_t status;
-
-    /* Call create API with UID value 0 */
-    val->print(PRINT_TEST, "[Check 7] Call create API with UID 0\n", 0);
-    status = SST_FUNCTION(p012_data[11].api, 0, 0, TEST_BUFF_SIZE, write_buff);
-    TEST_ASSERT_EQUAL(status, p012_data[11].status, TEST_CHECKPOINT_NUM(12));
-
-    /* Call set extended API with UID value 0 */
-    val->print(PRINT_TEST, "[Check 8] Call set_extended API with UID 0\n", 0);
-    status = SST_FUNCTION(p012_data[12].api, 0, 0, TEST_BUFF_SIZE, write_buff_2);
-    TEST_ASSERT_EQUAL(status, p012_data[12].status, TEST_CHECKPOINT_NUM(13));
-
-    /* Call remove API with UID value 0 */
-    val->print(PRINT_TEST, "[Check 9] Call remove API with UID 0\n", 0);
-    status = SST_FUNCTION(p012_data[13].api, 0);
-    TEST_ASSERT_EQUAL(status, p012_data[13].status, TEST_CHECKPOINT_NUM(14));
-
-    /* Remove the UID */
-    status = SST_FUNCTION(p012_data[14].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p012_data[14].status, TEST_CHECKPOINT_NUM(15));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_optional_api_offset_invalid(caller_security_t caller)
-{
-    uint32_t status;
-    int32_t test_status;
-
-    /* Call the get_support API and check if create and set_extended API are supported */
-    status = SST_FUNCTION(p012_data[0].api);
-
-    if (status == p012_data[0].status)
-    {
-       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
-       test_status = psa_sst_offset_invalid();
-       if (test_status != VAL_STATUS_SUCCESS)
-          return test_status;
-
-       test_status = psa_sst_bad_pointer();
-       if (test_status != VAL_STATUS_SUCCESS)
-          return test_status;
-    }
-    else
-    {
-       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
-       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_p012.h b/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
deleted file mode 100644
index 7754a44..0000000
--- a/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P012_CLIENT_TESTS_H_
-#define _TEST_P012_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_,  p012)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p012_sst_list[];
-
-int32_t psa_sst_optional_api_offset_invalid(caller_security_t caller);
-#endif /* _TEST_P012_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p012/test_ps_data.h
deleted file mode 100644
index 1372ab7..0000000
--- a/api-tests/dev_apis/protected_storage/test_p012/test_ps_data.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P012_PS_DATA_TESTS_H_
-#define _TEST_P012_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p012_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 -Check if optional PS API
-                                                                                supported */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index1 - Create valid storage */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index2 - Set data using set_extended API */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_INVALID_ARGUMENT /* Index3 - Set_extended with invalid offset +
-                                                                                         length */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_INVALID_ARGUMENT /* Index4 - Set_extended call with invalid
-                                                                                     offset */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index5 - Set_extended call with valid offset and zero length */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_INVALID_ARGUMENT /* Index6 - Set_extended with invalid offset +
-                                                                                         length */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_INVALID_ARGUMENT /* Index7 - Set_extended with invalid length */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index8 - Write data using set API */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index9 - Check data validity using get API */
-},
-{
- 0, 0 /* This is dummy for Index10 */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_INVALID_ARGUMENT /* Index11 - Create call with UID 0 */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_INVALID_ARGUMENT /* Index12 - Call set_extended with UID 0 */
-},
-{
- VAL_PS_REMOVE, PSA_ERROR_INVALID_ARGUMENT /* Index13 - Call remove with UID 0 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index14 - Remove with UID */
-},
-};
-#endif /* _TEST_P012_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test.cmake b/api-tests/dev_apis/protected_storage/test_p013/test.cmake
deleted file mode 100644
index 6c1913f..0000000
--- a/api-tests/dev_apis/protected_storage/test_p013/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p013.c
-	test_p013.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test_p013.c b/api-tests/dev_apis/protected_storage/test_p013/test_p013.c
deleted file mode 100644
index d4d5026..0000000
--- a/api-tests/dev_apis/protected_storage/test_p013/test_p013.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p013.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE 16
-
-client_test_t test_p013_sst_list[] = {
-    NULL,
-    psa_sst_optional_api_success_check,
-    NULL,
-};
-
-static psa_storage_uid_t p_uid = UID_BASE_VALUE + 4;
-static uint8_t write_buff[TEST_BUFF_SIZE/2] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
-static uint8_t write_buff_2[TEST_BUFF_SIZE/2] = {0xFF, 0x11, 0xA2, 0xE3, 0x04, 0xA5, 0xD6, 0x97};
-static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
-static uint8_t write_buff_3[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
-
-static int32_t psa_sst_set_extended_create_success()
-{
-    uint32_t status, p_data_length = 0;
-    struct psa_storage_info_t info;
-
-    /* Create storage of zero length using create API */
-    val->print(PRINT_TEST, "[Check 1] Create storage using create API for 0 length\n", 0);
-    status = SST_FUNCTION(p013_data[1].api, p_uid, 0, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p013_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Set some data in the storage created */
-    val->print(PRINT_TEST, "[Check 2] Call set_extended for zero storage length\n", 0);
-    status = SST_FUNCTION(p013_data[2].api, p_uid, 0, 0, write_buff);
-    TEST_ASSERT_EQUAL(status, p013_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Call the get_info function to match attributes */
-    status = SST_FUNCTION(p013_data[3].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, p013_data[3].status, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_EQUAL(info.flags, PSA_STORAGE_FLAG_NONE, TEST_CHECKPOINT_NUM(4));
-    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(5));
-
-    /* Remove the storage */
-    val->print(PRINT_TEST, "[Check 3] Remove the storage\n", 0);
-    status = SST_FUNCTION(p013_data[6].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p013_data[6].status, TEST_CHECKPOINT_NUM(6));
-
-    /* Create a valid storage */
-    status = SST_FUNCTION(p013_data[7].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p013_data[7].status, TEST_CHECKPOINT_NUM(7));
-
-    /* Try to set data in first half of buffer */
-    status = SST_FUNCTION(p013_data[8].api, p_uid, 0, TEST_BUFF_SIZE/2, write_buff);
-    TEST_ASSERT_EQUAL(status, p013_data[8].status, TEST_CHECKPOINT_NUM(8));
-
-    /* Try to set data in second half of buffer */
-    status = SST_FUNCTION(p013_data[9].api, p_uid, TEST_BUFF_SIZE/2, TEST_BUFF_SIZE/2,\
-                          write_buff_2);
-    TEST_ASSERT_EQUAL(status, p013_data[9].status, TEST_CHECKPOINT_NUM(9));
-
-    /* Call the get function to match the data */
-    val->print(PRINT_TEST, "[Check 4] Valid data written by multiple set_extended\n", 0);
-    status = SST_FUNCTION(p013_data[10].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, p013_data[10].status, TEST_CHECKPOINT_NUM(10));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(11));
-    TEST_ASSERT_MEMCMP(read_buff + TEST_BUFF_SIZE/2, write_buff_2, TEST_BUFF_SIZE/2,\
-                       TEST_CHECKPOINT_NUM(12));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(13));
-
-    /* Overwrite data using set API */
-    val->print(PRINT_TEST, "[Check 5] Overwrite whole data using SET API\n", 0);
-    status = SST_FUNCTION(p013_data[13].api, p_uid, TEST_BUFF_SIZE, write_buff_3,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p013_data[13].status, TEST_CHECKPOINT_NUM(14));
-
-    /* Call the get function to match the data */
-    val->print(PRINT_TEST, "[Check 6] Validate the data using get API\n", 0);
-    status = SST_FUNCTION(p013_data[14].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, p013_data[14].status, TEST_CHECKPOINT_NUM(15));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff_3, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(16));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(17));
-
-    /* Call create API for existing UID with same parameters */
-    val->print(PRINT_TEST, "[Check 7] Call create API for existing UID with same parameters\n", 0);
-    status = SST_FUNCTION(p013_data[16].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p013_data[16].status, TEST_CHECKPOINT_NUM(18));
-
-    /* Call the get function to match the data */
-    val->print(PRINT_TEST, "[Check 8] Validity of data after create API call\n", 0);
-    status = SST_FUNCTION(p013_data[17].api, p_uid, 0, TEST_BUFF_SIZE, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, p013_data[17].status, TEST_CHECKPOINT_NUM(19));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff_3, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(20));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(21));
-
-    /* Remove the storage */
-    val->print(PRINT_TEST, "[Check 9] Remove the UID\n", 0);
-    status = SST_FUNCTION(p013_data[19].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p013_data[19].status, TEST_CHECKPOINT_NUM(22));
-
-    /* Validate there should not be duplicate UID present */
-    val->print(PRINT_TEST, "[Check 10] No duplicate entry of UID present\n", 0);
-    status = SST_FUNCTION(p013_data[20].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
-    TEST_ASSERT_EQUAL(status, p013_data[20].status, TEST_CHECKPOINT_NUM(23));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_optional_api_success_check(caller_security_t caller)
-{
-    uint32_t status;
-    int32_t test_status;
-
-    /* Call the get_support API and check if create and set_extended API are supported */
-    status = SST_FUNCTION(p013_data[0].api);
-
-    if (status == p013_data[0].status)
-    {
-       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
-       test_status = psa_sst_set_extended_create_success();
-       if (test_status != VAL_STATUS_SUCCESS)
-          return test_status;
-    }
-    else
-    {
-       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
-       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test_p013.h b/api-tests/dev_apis/protected_storage/test_p013/test_p013.h
deleted file mode 100644
index 7324776..0000000
--- a/api-tests/dev_apis/protected_storage/test_p013/test_p013.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P013_CLIENT_TESTS_H_
-#define _TEST_P013_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_,  p013)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p013_sst_list[];
-
-int32_t psa_sst_optional_api_success_check(caller_security_t caller);
-
-#endif /* _TEST_P013_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p013/test_ps_data.h
deleted file mode 100644
index b2c58fa..0000000
--- a/api-tests/dev_apis/protected_storage/test_p013/test_ps_data.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P013_PS_DATA_TESTS_H_
-#define _TEST_P013_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p013_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 - Check if optional PS API
-                                                                                 supported */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index1 - Create storage of zero length */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index2 - Call set_extended with zero length */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index3 - Validate the storage attributes */
-},
-{
- 0, 0 /* This is dummy for Index4 */
-},
-{
- 0, 0 /* This is dummy for Index5 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index6 - Remove the UID */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index7 - Create storage of non-zero length */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index8 - Call set_extended to write data in first half of
-                                                                                        buffer */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index9 - Call set_extended to write data in second half of
-                                                                                         buffer */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index10 - Validate the data stored */
-},
-{
- 0, 0 /* This is dummy for Index11 */
-},
-{
- 0, 0 /* This is dummy for Index12 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index13 - Overwrite data with set API */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index14 - Validate the data written */
-},
-{
- 0, 0 /* This is dummy for Index15 */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index16 - Call Create API for existing UID with same parameters */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index17 - Validate the data */
-},
-{
- 0, 0 /* This is dummy for Index18 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index19 - Remove the UID */
-},
-{
- VAL_PS_GET, PSA_ERROR_DOES_NOT_EXIST /* Index20 - Check no duplicate entry of UID present */
-}
-};
-#endif /* _TEST_P013_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test.cmake b/api-tests/dev_apis/protected_storage/test_p014/test.cmake
deleted file mode 100644
index a794d8c..0000000
--- a/api-tests/dev_apis/protected_storage/test_p014/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p014.c
-	test_p014.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test_p014.c b/api-tests/dev_apis/protected_storage/test_p014/test_p014.c
deleted file mode 100644
index d210c2f..0000000
--- a/api-tests/dev_apis/protected_storage/test_p014/test_p014.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p014.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE 16
-
-client_test_t test_p014_sst_list[] = {
-    NULL,
-    psa_sst_optional_api_not_supported_check,
-    NULL,
-};
-
-static psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
-static uint8_t write_buff[TEST_BUFF_SIZE/4] = { 0x03, 0x04, 0x05, 0x07};
-static uint8_t read_buff[TEST_BUFF_SIZE/4]  = {0};
-
-static int32_t psa_sst_optional_api_not_supported()
-{
-    uint32_t status, p_data_length = 0;
-    struct psa_storage_info_t info;
-
-    /* Try to create storage using create API */
-    val->print(PRINT_TEST, "[Check 1] Call to create API should fail as API not supported\n", 0);
-    status = SST_FUNCTION(p014_data[1].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p014_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Verify that UID doesn't exist */
-    status = SST_FUNCTION(p014_data[2].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, p014_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Create a valid storage using set API */
-    val->print(PRINT_TEST, "[Check 2] Create valid storage with set API\n", 0);
-    status = SST_FUNCTION(p014_data[3].api, p_uid, TEST_BUFF_SIZE/4, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p014_data[3].status, TEST_CHECKPOINT_NUM(3));
-
-    /* Partial data write with set_extended API should fail */
-    val->print(PRINT_TEST, "[Check 3] Call to set_extended API call should fail\n", 0);
-    status = SST_FUNCTION(p014_data[4].api, p_uid, 0, 2, write_buff);
-    TEST_ASSERT_EQUAL(status, p014_data[4].status, TEST_CHECKPOINT_NUM(4));
-
-    /* Call the get function to match the data */
-    val->print(PRINT_TEST, "[Check 4] Verify data is unchanged\n", 0);
-    status = SST_FUNCTION(p014_data[5].api, p_uid, 0, TEST_BUFF_SIZE/4, read_buff, &p_data_length);
-    TEST_ASSERT_EQUAL(status, p014_data[5].status, TEST_CHECKPOINT_NUM(5));
-    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(7));
-
-    /* Remove the storage */
-    status = SST_FUNCTION(p014_data[7].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p014_data[7].status, TEST_CHECKPOINT_NUM(8));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_optional_api_not_supported_check(caller_security_t caller)
-{
-    uint32_t status;
-    int32_t test_status;
-
-    /* Call the get_support API and check if create and set_extended API are supported */
-    status = SST_FUNCTION(p014_data[0].api);
-
-    if (status == p014_data[0].status)
-    {
-       val->print(PRINT_INFO, "Test Case skipped as Optional PS APIs are supported.\n", 0);
-       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    }
-    else
-    {
-        val->print(PRINT_TEST, "Optional PS APIs are not supported.\n", 0);
-        test_status = psa_sst_optional_api_not_supported();
-        if (test_status != VAL_STATUS_SUCCESS)
-           return test_status;
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test_p014.h b/api-tests/dev_apis/protected_storage/test_p014/test_p014.h
deleted file mode 100644
index 7b2b0f0..0000000
--- a/api-tests/dev_apis/protected_storage/test_p014/test_p014.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P014_CLIENT_TESTS_H_
-#define _TEST_P014_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_,  p014)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p014_sst_list[];
-
-int32_t psa_sst_optional_api_not_supported_check(caller_security_t caller);
-
-#endif /* _TEST_P014_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p014/test_ps_data.h
deleted file mode 100644
index 0ee29e4..0000000
--- a/api-tests/dev_apis/protected_storage/test_p014/test_ps_data.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P014_PS_DATA_TESTS_H_
-#define _TEST_P014_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p014_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 -Check if Optional API supported */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_NOT_SUPPORTED /* Index1 - Create API call should fail */
-},
-{
- VAL_PS_GET_INFO, PSA_ERROR_DOES_NOT_EXIST /* Index2 - UID should not exist */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index3 - Create storage of non-zero length */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_NOT_SUPPORTED /* Index4 - Set_extended API call should fail */
-},
-{
- VAL_PS_GET, PSA_SUCCESS /* Index5 - Validate the data should not changed */
-},
-{
- 0, 0 /* Unused Index6 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index7 - Remove the UID */
-},
-};
-#endif /* _TEST_P014_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test.cmake b/api-tests/dev_apis/protected_storage/test_p015/test.cmake
deleted file mode 100644
index b2a8b62..0000000
--- a/api-tests/dev_apis/protected_storage/test_p015/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p015.c
-	test_p015.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test_p015.c b/api-tests/dev_apis/protected_storage/test_p015/test_p015.c
deleted file mode 100644
index 54b45ce..0000000
--- a/api-tests/dev_apis/protected_storage/test_p015/test_p015.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p015.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE 5
-
-client_test_t test_p015_sst_list[] = {
-    NULL,
-    psa_sst_create_api_write_once_flag_check,
-    NULL,
-};
-
-static psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
-
-int32_t psa_sst_create_api_write_once_flag_check(caller_security_t caller)
-{
-    uint32_t status;
-
-    /* Call the get_support API and check if optional APIs are supported */
-    status = SST_FUNCTION(p015_data[0].api);
-
-    if (status == p015_data[0].status)
-    {
-        /* Call create API with write_once flag */
-        val->print(PRINT_TEST, "[Check 1] Call create API with write_once flag\n", 0);
-        status = SST_FUNCTION(p015_data[1].api, p_uid, TEST_BUFF_SIZE, PSA_STORAGE_FLAG_WRITE_ONCE);
-        TEST_ASSERT_EQUAL(status, p015_data[1].status, TEST_CHECKPOINT_NUM(1));
-    }
-    else
-    {
-        val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
-        return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test_p015.h b/api-tests/dev_apis/protected_storage/test_p015/test_p015.h
deleted file mode 100644
index 2f21d39..0000000
--- a/api-tests/dev_apis/protected_storage/test_p015/test_p015.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P015_CLIENT_TESTS_H_
-#define _TEST_P015_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_,  p015)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p015_sst_list[];
-
-int32_t psa_sst_create_api_write_once_flag_check(caller_security_t caller);
-
-#endif /* _TEST_P015_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p015/test_ps_data.h
deleted file mode 100644
index 716e4d3..0000000
--- a/api-tests/dev_apis/protected_storage/test_p015/test_ps_data.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P015_PS_DATA_TESTS_H_
-#define _TEST_P015_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p015_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 - Check if optional PS API
-                                                                                 supported */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_NOT_SUPPORTED /* Index1 - Call create API with write_once flag */
-},
-};
-#endif /* _TEST_P015_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test.cmake b/api-tests/dev_apis/protected_storage/test_p016/test.cmake
deleted file mode 100644
index b2c7a02..0000000
--- a/api-tests/dev_apis/protected_storage/test_p016/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p016.c
-	test_p016.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_p016.c b/api-tests/dev_apis/protected_storage/test_p016/test_p016.c
deleted file mode 100644
index d9d953a..0000000
--- a/api-tests/dev_apis/protected_storage/test_p016/test_p016.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p016.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE_1 10
-#define TEST_BUFF_SIZE_2 14
-#define TEST_BUFF_SIZE_3 8
-
-client_test_t test_p016_sst_list[] = {
-    NULL,
-    psa_sst_optional_api_sst_capacity_check,
-    NULL,
-};
-
-static psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
-static uint8_t write_buff[TEST_BUFF_SIZE_2] = {0x03, 0x04, 0x05, 0x07, 0xFF, 0x00, 0x32, 0x67,
-                                               0x99, 0x78, 0x43, 0x20, 0xFF, 0x91};
-
-static int32_t psa_sst_optional_api_sst_capacity(void)
-{
-    uint32_t status;
-    struct psa_storage_info_t info;
-
-    /* Try to create storage using create API */
-    status = SST_FUNCTION(p016_data[1].api, p_uid, TEST_BUFF_SIZE_1, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p016_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call to create API for existing UID should fail */
-    val->print(PRINT_TEST, "[Check 1] Create API call for existing UID\n", 0);
-    status = SST_FUNCTION(p016_data[2].api, p_uid, TEST_BUFF_SIZE_2, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p016_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Check the attributes of storage are unchanged */
-    status = SST_FUNCTION(p016_data[3].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, p016_data[3].status, TEST_CHECKPOINT_NUM(3));
-    TEST_ASSERT_EQUAL(info.capacity, TEST_BUFF_SIZE_1, TEST_CHECKPOINT_NUM(4));
-    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(5));
-
-    /* Override storage using set API */
-    val->print(PRINT_TEST, "[Check 2] Call to set API call for existing UID\n", 0);
-    status = SST_FUNCTION(p016_data[6].api, p_uid, TEST_BUFF_SIZE_3, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p016_data[6].status, TEST_CHECKPOINT_NUM(6));
-
-    /* Check the attributes of storage are changed */
-    status = SST_FUNCTION(p016_data[7].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, p016_data[7].status, TEST_CHECKPOINT_NUM(7));
-    TEST_ASSERT_EQUAL(info.capacity, TEST_BUFF_SIZE_3, TEST_CHECKPOINT_NUM(8));
-    TEST_ASSERT_EQUAL(info.size, TEST_BUFF_SIZE_3, TEST_CHECKPOINT_NUM(9));
-
-    /* Accessing old capacity with set_extended API should fail */
-    val->print(PRINT_TEST, "[Check 3] Access old capacity using set_extended API\n", 0);
-    status = SST_FUNCTION(p016_data[10].api, p_uid, 0, TEST_BUFF_SIZE_1, write_buff);
-    TEST_ASSERT_EQUAL(status, p016_data[10].status, TEST_CHECKPOINT_NUM(10));
-
-    /* Remove the storage */
-    status = SST_FUNCTION(p016_data[11].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p016_data[11].status, TEST_CHECKPOINT_NUM(11));
-
-    /* Create new storage assest using set  API */
-    val->print(PRINT_TEST, "[Check 4] Creation of new storage assest\n", 0);
-    status = SST_FUNCTION(p016_data[12].api, p_uid, TEST_BUFF_SIZE_2, write_buff,
-                          PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p016_data[12].status, TEST_CHECKPOINT_NUM(12));
-
-    /* Call to create API for existing UID should fail */
-    val->print(PRINT_TEST, "[Check 5] Create API call for existing UID\n", 0);
-    status = SST_FUNCTION(p016_data[13].api, p_uid, TEST_BUFF_SIZE_2, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p016_data[13].status, TEST_CHECKPOINT_NUM(13));
-
-    /* Remove the storage */
-    status = SST_FUNCTION(p016_data[14].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p016_data[14].status, TEST_CHECKPOINT_NUM(14));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_optional_api_sst_capacity_check(caller_security_t caller)
-{
-    uint32_t status;
-    int32_t test_status;
-
-    /* Call the get_support API and check if create and set_extended API are supported */
-    status = SST_FUNCTION(p016_data[0].api);
-
-    if (status != p016_data[0].status)
-    {
-       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs not are supported.\n", 0);
-       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    } else {
-        val->print(PRINT_TEST, "Optional PS APIs are supported.\n", 0);
-        test_status = psa_sst_optional_api_sst_capacity();
-        if (test_status != VAL_STATUS_SUCCESS)
-        {
-            return test_status;
-        }
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_p016.h b/api-tests/dev_apis/protected_storage/test_p016/test_p016.h
deleted file mode 100644
index 6e1bf93..0000000
--- a/api-tests/dev_apis/protected_storage/test_p016/test_p016.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P016_CLIENT_TESTS_H_
-#define _TEST_P016_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_, p016)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p016_sst_list[];
-
-int32_t psa_sst_optional_api_sst_capacity_check(caller_security_t caller);
-
-#endif /* _TEST_P016_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p016/test_ps_data.h
deleted file mode 100644
index 7f16787..0000000
--- a/api-tests/dev_apis/protected_storage/test_p016/test_ps_data.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P016_PS_DATA_TESTS_H_
-#define _TEST_P016_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p016_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 - Check if Optional API supported */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index1 - Storage creation */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_ALREADY_EXISTS /* Index2 - Calling create API for existing UID should
-                                                                                           fail */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index3 - Check the storage attributes are unchanged */
-},
-{
- 0, 0 /* Unused Index4 */
-},
-{
- 0, 0 /* Unused Index5 */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index6 - Set API can change capacity of storage */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index7 - Check the storage attributes are changed */
-},
-{
- 0, 0 /* Unused Index8 */
-},
-{
- 0, 0 /* Unused Index9 */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_STORAGE_FAILURE /* Index10 - Set_extended on old capacity should
-                                                                                        not work */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index11 - Remove the UID */
-},
-{
- VAL_PS_SET, PSA_SUCCESS /* Index12 - Storage creation */
-},
-{
- VAL_PS_CREATE, PSA_ERROR_ALREADY_EXISTS /* Index13 - Calling create API for existing UID should
-                                                                                            fail */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index14 - Remove the UID */
-},
-};
-#endif /* _TEST_P016_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test.cmake b/api-tests/dev_apis/protected_storage/test_p017/test.cmake
deleted file mode 100644
index cb1bda9..0000000
--- a/api-tests/dev_apis/protected_storage/test_p017/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_p017.c
-	test_p017.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test_entry_p017.c b/api-tests/dev_apis/protected_storage/test_p017/test_entry_p017.c
deleted file mode 100644
index 134fd49..0000000
--- a/api-tests/dev_apis/protected_storage/test_p017/test_entry_p017.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p017.h"
-
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 17)
-#define TEST_DESC "Storage assest capacity modification check\n"
-
-TEST_PUBLISH(TEST_NUM, test_entry);
-val_api_t *val = NULL;
-psa_api_t *psa = NULL;
-
-void test_entry(val_api_t *val_api, psa_api_t *psa_api)
-{
-    int32_t   status = VAL_STATUS_SUCCESS;
-
-    val = val_api;
-    psa = psa_api;
-
-    /* test init */
-    val->test_init(TEST_NUM, TEST_DESC, TEST_FIELD(TEST_ISOLATION_L1, WD_HIGH_TIMEOUT));
-    if (!IS_TEST_START(val->get_status()))
-    {
-        goto test_exit;
-    }
-
-    /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p017_sst_list, FALSE);
-
-    if (VAL_ERROR(status))
-    {
-        goto test_exit;
-    }
-
-test_exit:
-    val->test_exit();
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test_p017.c b/api-tests/dev_apis/protected_storage/test_p017/test_p017.c
deleted file mode 100644
index e1643c1..0000000
--- a/api-tests/dev_apis/protected_storage/test_p017/test_p017.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_interfaces.h"
-#include "val_target.h"
-#include "test_p017.h"
-#include "test_ps_data.h"
-
-#define TEST_BUFF_SIZE_1 14
-#define TEST_BUFF_SIZE_2 10
-
-client_test_t test_p017_sst_list[] = {
-    NULL,
-    psa_sst_optional_api_partial_write_check,
-    NULL,
-};
-
-static psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
-static uint8_t write_buff[TEST_BUFF_SIZE_1] = {0x03, 0x04, 0x05, 0x07, 0xFF, 0x00, 0x32, 0x67,
-                                               0x99, 0x78, 0x43, 0x20, 0xFF, 0x91};
-
-static int32_t psa_sst_optional_api_partial_write(void)
-{
-    uint32_t status;
-    struct psa_storage_info_t info;
-
-    /* Try to create storage using create API */
-    status = SST_FUNCTION(p017_data[1].api, p_uid, TEST_BUFF_SIZE_1, PSA_STORAGE_FLAG_NONE);
-    TEST_ASSERT_EQUAL(status, p017_data[1].status, TEST_CHECKPOINT_NUM(1));
-
-    /* Call set extended API to set data in first half */
-    val->print(PRINT_TEST, "[Check 1] Set data in first half of storage\n", 0);
-    status = SST_FUNCTION(p017_data[2].api, p_uid, 0, TEST_BUFF_SIZE_1/2, write_buff);
-    TEST_ASSERT_EQUAL(status, p017_data[2].status, TEST_CHECKPOINT_NUM(2));
-
-    /* Call set extended API to set data with gaps */
-    val->print(PRINT_TEST, "[Check 2] Set data having gap with existing data \n", 0);
-    status = SST_FUNCTION(p017_data[3].api, p_uid, (TEST_BUFF_SIZE_1/2) + 2, 2,  write_buff);
-    TEST_ASSERT_EQUAL(status, p017_data[3].status, TEST_CHECKPOINT_NUM(3));
-
-    /* Call set extended API to overwrite and extend the existing data */
-    val->print(PRINT_TEST, "[Check 3] Overwrite and extend existing data\n", 0);
-    status = SST_FUNCTION(p017_data[4].api, p_uid, 0, TEST_BUFF_SIZE_2, write_buff);
-    TEST_ASSERT_EQUAL(status, p017_data[4].status, TEST_CHECKPOINT_NUM(4));
-
-    /* Check the attributes of existing storage */
-    val->print(PRINT_TEST, "[Check 4] Check the storage attributes\n", 0);
-    status = SST_FUNCTION(p017_data[5].api, p_uid, &info);
-    TEST_ASSERT_EQUAL(status, p017_data[5].status, TEST_CHECKPOINT_NUM(5));
-    TEST_ASSERT_EQUAL(info.size, TEST_BUFF_SIZE_2, TEST_CHECKPOINT_NUM(6));
-    TEST_ASSERT_EQUAL(info.capacity, TEST_BUFF_SIZE_1, TEST_CHECKPOINT_NUM(7));
-
-    /* Remove the storage */
-    status = SST_FUNCTION(p017_data[8].api, p_uid);
-    TEST_ASSERT_EQUAL(status, p017_data[8].status, TEST_CHECKPOINT_NUM(8));
-
-    return VAL_STATUS_SUCCESS;
-}
-
-int32_t psa_sst_optional_api_partial_write_check(caller_security_t caller)
-{
-    uint32_t status;
-    int32_t test_status;
-
-    /* Call the get_support API and check if create and set_extended API are supported */
-    status = SST_FUNCTION(p017_data[0].api);
-
-    if (status != p017_data[0].status)
-    {
-       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs not are supported.\n", 0);
-       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
-    } else {
-        val->print(PRINT_TEST, "Optional PS APIs are supported.\n", 0);
-        test_status = psa_sst_optional_api_partial_write();
-        if (test_status != VAL_STATUS_SUCCESS)
-        {
-            return test_status;
-        }
-    }
-
-    return VAL_STATUS_SUCCESS;
-}
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test_p017.h b/api-tests/dev_apis/protected_storage/test_p017/test_p017.h
deleted file mode 100644
index 61beae7..0000000
--- a/api-tests/dev_apis/protected_storage/test_p017/test_p017.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P017_CLIENT_TESTS_H_
-#define _TEST_P017_CLIENT_TESTS_H_
-
-#define test_entry CONCAT(test_entry_, p017)
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
-
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_p017_sst_list[];
-
-int32_t psa_sst_optional_api_partial_write_check(caller_security_t caller);
-
-#endif /* _TEST_P017_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p017/test_ps_data.h
deleted file mode 100644
index 9677e90..0000000
--- a/api-tests/dev_apis/protected_storage/test_p017/test_ps_data.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-#ifndef _TEST_P017_PS_DATA_TESTS_H_
-#define _TEST_P017_PS_DATA_TESTS_H_
-
-#include "val_protected_storage.h"
-
-#define SST_FUNCTION val->ps_function
-
-typedef struct {
-    enum ps_function_code  api;
-    psa_status_t        status;
-} test_data;
-
-static const test_data p017_data[] = {
-{
- VAL_PS_GET_SUPPORT, PSA_STORAGE_SUPPORT_SET_EXTENDED /* Index0 - Check if Optional API supported */
-},
-{
- VAL_PS_CREATE, PSA_SUCCESS /* Index1 - Storage creation */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index2 - Write data in created storage  */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_ERROR_STORAGE_FAILURE /* Index3 - Try to set data in noncontinous
-                                                                                    manner */
-},
-{
- VAL_PS_SET_EXTENDED, PSA_SUCCESS /* Index4 - Overwrite the existing data */
-},
-{
- VAL_PS_GET_INFO, PSA_SUCCESS /* Index5 - Check for valid storage attributes */
-},
-{
- 0, 0 /* Unused Index6 */
-},
-{
- 0, 0 /* Unused Index7 */
-},
-{
- VAL_PS_REMOVE, PSA_SUCCESS /* Index8 - Remove the UID */
-},
-};
-#endif /* _TEST_P017_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s002/test.cmake b/api-tests/dev_apis/protected_storage/test_s002/test.cmake
deleted file mode 100644
index c588caa..0000000
--- a/api-tests/dev_apis/protected_storage/test_s002/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s002.c
-	test_s002.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s003/test.cmake b/api-tests/dev_apis/protected_storage/test_s003/test.cmake
deleted file mode 100644
index 6a38d56..0000000
--- a/api-tests/dev_apis/protected_storage/test_s003/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s003.c
-	test_s003.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s004/test.cmake b/api-tests/dev_apis/protected_storage/test_s004/test.cmake
deleted file mode 100644
index 1210631..0000000
--- a/api-tests/dev_apis/protected_storage/test_s004/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s004.c
-	test_s004.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s008/test.cmake b/api-tests/dev_apis/protected_storage/test_s008/test.cmake
deleted file mode 100644
index b91d92d..0000000
--- a/api-tests/dev_apis/protected_storage/test_s008/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s008.c
-	test_s008.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/test_s010/test.cmake b/api-tests/dev_apis/protected_storage/test_s010/test.cmake
deleted file mode 100644
index b36e23f..0000000
--- a/api-tests/dev_apis/protected_storage/test_s010/test.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-list(APPEND CC_SOURCE
-	test_entry_s010.c
-	test_s010.c
-)
-list(APPEND CC_OPTIONS -DPS_TEST)
-list(APPEND AS_SOURCE  )
-list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/protected_storage/testsuite.db b/api-tests/dev_apis/protected_storage/testsuite.db
deleted file mode 100644
index 2e95c62..0000000
--- a/api-tests/dev_apis/protected_storage/testsuite.db
+++ /dev/null
@@ -1,41 +0,0 @@
-#/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
-# * SPDX-License-Identifier : Apache-2.0
-# *
-# * Licensed under the Apache License, Version 2.0 (the "License");
-# * you may not use this file except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# *  http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-#**/
-
-
-#List of tests to be compiled and run as part of protected storage suite
-
-(START)
-
-test_s001
-test_s002
-test_s003
-test_s004
-test_s005
-test_s006
-test_s007
-test_s008
-test_s009
-test_s010
-test_p011
-test_p012
-test_p013
-test_p014
-test_p015
-test_p016
-test_p017
-
-(END)
diff --git a/api-tests/dev_apis/internal_trusted_storage/testsuite.db b/api-tests/dev_apis/storage/its_testsuite.db
similarity index 90%
rename from api-tests/dev_apis/internal_trusted_storage/testsuite.db
rename to api-tests/dev_apis/storage/its_testsuite.db
index d516619..8b5c5b6 100644
--- a/api-tests/dev_apis/internal_trusted_storage/testsuite.db
+++ b/api-tests/dev_apis/storage/its_testsuite.db
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/api-tests/dev_apis/internal_trusted_storage/testsuite.db b/api-tests/dev_apis/storage/ps_testsuite.db
similarity index 85%
copy from api-tests/dev_apis/internal_trusted_storage/testsuite.db
copy to api-tests/dev_apis/storage/ps_testsuite.db
index d516619..6af00b5 100644
--- a/api-tests/dev_apis/internal_trusted_storage/testsuite.db
+++ b/api-tests/dev_apis/storage/ps_testsuite.db
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -30,5 +30,12 @@
 test_s008
 test_s009
 test_s010
+test_s011
+test_s012
+test_s013
+test_s014
+test_s015
+test_s016
+test_s017
 
 (END)
diff --git a/api-tests/dev_apis/internal_trusted_storage/suite.cmake b/api-tests/dev_apis/storage/suite.cmake
similarity index 84%
rename from api-tests/dev_apis/internal_trusted_storage/suite.cmake
rename to api-tests/dev_apis/storage/suite.cmake
index e4de40c..2d3d9a5 100644
--- a/api-tests/dev_apis/internal_trusted_storage/suite.cmake
+++ b/api-tests/dev_apis/storage/suite.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -43,15 +43,15 @@
 # PSA Include directories
 foreach(psa_inc_path ${PSA_INCLUDE_PATHS})
 	target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
-                ${psa_inc_path}
-        )
+                                   ${psa_inc_path})
 endforeach()
 
 target_include_directories(${PSA_TARGET_TEST_COMBINE_LIB} PRIVATE
+	${PSA_SUITE_DIR}
 	${CMAKE_CURRENT_BINARY_DIR}
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
diff --git a/api-tests/dev_apis/protected_storage/test_s001/test.cmake b/api-tests/dev_apis/storage/test_s001/test.cmake
similarity index 86%
rename from api-tests/dev_apis/protected_storage/test_s001/test.cmake
rename to api-tests/dev_apis/storage/test_s001/test.cmake
index ee15ef4..d0dd06a 100644
--- a/api-tests/dev_apis/protected_storage/test_s001/test.cmake
+++ b/api-tests/dev_apis/storage/test_s001/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s001.c
 	test_s001.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s001/test_data.h b/api-tests/dev_apis/storage/test_s001/test_data.h
new file mode 100644
index 0000000..ce40cec
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s001/test_data.h
@@ -0,0 +1,88 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S001_TEST_DATA_H_
+#define _S001_TEST_DATA_H_
+
+#include "test_s001.h"
+
+static const test_data_t s001_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call the get API when no UID is set */
+    VAL_TEST_IDX1, {VAL_ITS_GET, VAL_PS_GET}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Call the get_info API when no UID is set */
+    VAL_TEST_IDX2, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Call the remove API when no UID is set */
+    VAL_TEST_IDX3, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Create a valid storage entity with UID1 */
+    VAL_TEST_IDX4, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Create a valid storage entity with UID2 */
+    VAL_TEST_IDX5, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Remove UID1 */
+    VAL_TEST_IDX6, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Call get API for UID1 */
+    VAL_TEST_IDX7, {VAL_ITS_GET, VAL_PS_GET}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Call get_info API for UID1 */
+    VAL_TEST_IDX8, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Call remove API for UID1 */
+    VAL_TEST_IDX9, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Create a valid storage entity again with UID1 */
+    VAL_TEST_IDX10, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Call get API for UID not same as UID1 or UID2 */
+    VAL_TEST_IDX11, {VAL_ITS_GET, VAL_PS_GET}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Call get_info for UID not same as UID1 or UID2 */
+    VAL_TEST_IDX12, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Call remove API for UID not same as UID1 or UID2 */
+    VAL_TEST_IDX13, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Remove UID1 */
+    VAL_TEST_IDX14, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Remove UID2 */
+    VAL_TEST_IDX15, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S001_TEST_DATA_H_ */
+
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_entry_s001.c b/api-tests/dev_apis/storage/test_s001/test_entry_s001.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s001/test_entry_s001.c
rename to api-tests/dev_apis/storage/test_s001/test_entry_s001.c
index 8b8aed9..b7dd733 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_entry_s001.c
+++ b/api-tests/dev_apis/storage/test_s001/test_entry_s001.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s001_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s001_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s001/test_s001.c b/api-tests/dev_apis/storage/test_s001/test_s001.c
new file mode 100644
index 0000000..e20a212
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s001/test_s001.c
@@ -0,0 +1,199 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s001.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+static struct psa_storage_info_t info;
+static uint8_t                   write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03,
+                                                               0x04, 0x05, 0x06, 0x07,
+                                                               0x08, 0x09, 0x0A, 0x0B,
+                                                               0x0C, 0x0D, 0x0E, 0x0F};
+static uint8_t                   read_buff[TEST_BUFF_SIZE]  = {0};
+const client_test_t              s001_storage_test_list[] = {
+    NULL,
+    s001_storage_test,
+    NULL,
+};
+
+static int32_t sst_calls_without_set_call(storage_function_code_t fCode, psa_storage_uid_t p_uid)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* get() without using set() before */
+    val->print(PRINT_TEST, "[Check 1] Call get API for UID %d which is not set\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX1].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /*  get_info() without using set() before */
+    val->print(PRINT_TEST, "[Check 2] Call get_info API for UID %d which is not set\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX2].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* remove() without using set() before */
+    val->print(PRINT_TEST, "[Check 3] Call remove API for UID %d which is not set\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX3].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t sst_set_and_remove(storage_function_code_t fCode, psa_storage_uid_t p_uid)
+{
+    int32_t status;
+
+    /* set() a UID1 */
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX4].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Also set() with a different UID */
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX5].api[fCode], p_uid + 1, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(5));
+
+    /* remove() UID1 */
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX6].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(6));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t sst_calls_after_uid_remove(storage_function_code_t fCode, psa_storage_uid_t p_uid)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* get() for UID which is removed */
+    val->print(PRINT_TEST, "[Check 4] Call get API for UID %d which is removed\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX7].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(7));
+
+    /* get_info() for UID which is removed */
+    val->print(PRINT_TEST, "[Check 5] Call get_info API for UID %d which is removed\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX8].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* remove() for UID which is removed */
+    val->print(PRINT_TEST, "[Check 6] Call remove API for UID %d which is removed\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX9].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX9].status, TEST_CHECKPOINT_NUM(9));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t sst_calls_with_different_uid(storage_function_code_t fCode, psa_storage_uid_t p_uid)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* set() a UID */
+    val->print(PRINT_TEST, "Set storage for UID %d\n", p_uid);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX10].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(10));
+
+    /* get() for different UID then set UID */
+    val->print(PRINT_TEST, "[Check 7] Call get API for different UID %d\n", p_uid-1);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX11].api[fCode], p_uid-1, 0, TEST_BUFF_SIZE - 1,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX11].status, TEST_CHECKPOINT_NUM(11));
+
+    /* get_info() for different UID then set UID */
+    val->print(PRINT_TEST, "[Check 8] Call get_info API for different UID %d\n", p_uid-1);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX12].api[fCode], p_uid-1, &info);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX12].status, TEST_CHECKPOINT_NUM(12));
+
+    /* remove() for different UID then set UID */
+    val->print(PRINT_TEST, "[Check 9] Call remove API for different UID %d\n", p_uid-1);
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX13].api[fCode], p_uid-1);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(13));
+
+    /* remove() the set UID */
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX14].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX14].status, TEST_CHECKPOINT_NUM(14));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t sst_remove_stray_uid(storage_function_code_t fCode, psa_storage_uid_t p_uid)
+{
+    int32_t status;
+
+    /* Remove UID + 1 */
+    status = STORAGE_FUNCTION(s001_data[VAL_TEST_IDX15].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s001_data[VAL_TEST_IDX15].status, TEST_CHECKPOINT_NUM(15));
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t psa_sst_uid_not_found(storage_function_code_t fCode)
+{
+    int32_t test_status;
+    psa_storage_uid_t uid = UID_BASE_VALUE + 6;
+
+    test_status = sst_calls_without_set_call(fCode, uid);
+    if (test_status != VAL_STATUS_SUCCESS)
+        return test_status;
+
+    test_status = sst_set_and_remove(fCode, uid);
+    if (test_status != VAL_STATUS_SUCCESS)
+        return test_status;
+
+    test_status = sst_calls_after_uid_remove(fCode, uid);
+    if (test_status != VAL_STATUS_SUCCESS)
+        return test_status;
+
+    test_status = sst_calls_with_different_uid(fCode, uid);
+    if (test_status != VAL_STATUS_SUCCESS)
+        return test_status;
+
+    test_status = sst_remove_stray_uid(fCode, (uid + 1));
+    if (test_status != VAL_STATUS_SUCCESS)
+        return test_status;
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s001_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_uid_not_found(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_uid_not_found(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h b/api-tests/dev_apis/storage/test_s001/test_s001.h
similarity index 61%
rename from api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h
rename to api-tests/dev_apis/storage/test_s001/test_s001.h
index eef582a..2c16a71 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h
+++ b/api-tests/dev_apis/storage/test_s001/test_s001.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,19 +17,12 @@
 #ifndef _TEST_S001_CLIENT_TESTS_H_
 #define _TEST_S001_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s001)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p001)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s001_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_uid_not_found(caller_security_t caller);
+extern const client_test_t s001_storage_test_list[];
+
+int32_t s001_storage_test(caller_security_t caller);
+
 #endif /* _TEST_S001_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test.cmake b/api-tests/dev_apis/storage/test_s002/test.cmake
similarity index 86%
rename from api-tests/dev_apis/internal_trusted_storage/test_s002/test.cmake
rename to api-tests/dev_apis/storage/test_s002/test.cmake
index e8cfe6a..cf21898 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test.cmake
+++ b/api-tests/dev_apis/storage/test_s002/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s002.c
 	test_s002.c
 )
-list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s002/test_data.h b/api-tests/dev_apis/storage/test_s002/test_data.h
new file mode 100644
index 0000000..fe9fe57
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s002/test_data.h
@@ -0,0 +1,137 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S002_TEST_DATA_H_
+#define _S002_TEST_DATA_H_
+
+#include "test_s002.h"
+
+static struct psa_storage_info_t orig_info;
+static struct psa_storage_info_t new_info;
+static const test_data_t s002_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED},  0
+},
+{
+    /* Create a valid storage with create flag value 0 */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Call the get_info API to validate the attributes */
+    VAL_TEST_IDX2, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Validate the data using get API */
+    VAL_TEST_IDX5, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Change the flag to WRITE_ONCE using set API */
+    VAL_TEST_IDX7, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Call the get_info API to validate the flag change */
+    VAL_TEST_IDX8, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX9, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX10, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Validate the data using get API after flag change */
+    VAL_TEST_IDX11, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX12, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Storage should not be removed after WRITE_ONCE flag */
+    VAL_TEST_IDX13, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_NOT_PERMITTED
+},
+{
+    /* Create a storage with different UID and flag value WRITE_ONCE */
+    VAL_TEST_IDX14, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Storage should not be removed */
+    VAL_TEST_IDX15, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_NOT_PERMITTED
+},
+{
+    /* Validate the data using get API after flag change */
+    VAL_TEST_IDX16, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX17, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call the get_info API to validate the flag change */
+    VAL_TEST_IDX18, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX19, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX20, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Try to set different size for same UID and flag value */
+    VAL_TEST_IDX21, {VAL_ITS_SET, VAL_PS_SET}, PSA_ERROR_NOT_PERMITTED
+},
+{
+    /* Storage should not be removed */
+    VAL_TEST_IDX22, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_NOT_PERMITTED
+},
+{
+    /* Call the get_info API to validate the flag change */
+    VAL_TEST_IDX23, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX24, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX25, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Validate the data using get API after flag change */
+    VAL_TEST_IDX26, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX27, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Setting flag to zero for UID should fail */
+    VAL_TEST_IDX28, {VAL_ITS_SET, VAL_PS_SET}, PSA_ERROR_NOT_PERMITTED
+},
+{
+    /* Storage should not be removed */
+    VAL_TEST_IDX29, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_NOT_PERMITTED
+},
+{
+    /* Check that the WRITE_ONCE flag is preserved */
+    VAL_TEST_IDX30, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+};
+#endif /* _S002_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_entry_s002.c b/api-tests/dev_apis/storage/test_s002/test_entry_s002.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s002/test_entry_s002.c
rename to api-tests/dev_apis/storage/test_s002/test_entry_s002.c
index 538a41f..43a3552 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_entry_s002.c
+++ b/api-tests/dev_apis/storage/test_s002/test_entry_s002.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s002_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s002_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s002/test_s002.c b/api-tests/dev_apis/storage/test_s002/test_s002.c
new file mode 100644
index 0000000..2e4b2e7
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s002/test_s002.c
@@ -0,0 +1,205 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s002.h"
+#include "test_data.h"
+
+#define UID_WRITE_ONCE_1 UID_BASE_VALUE + 1
+#define UID_WRITE_ONCE_2 UID_BASE_VALUE + 2
+#define TEST_BUFF_SIZE 16
+
+const client_test_t s002_storage_test_list[] = {
+    NULL,
+    s002_storage_test,
+    NULL,
+};
+
+static int32_t psa_sst_update_write_once_flag_after_create(storage_function_code_t fCode)
+{
+    int32_t           status;
+    uint32_t          p_data_length                    = 0;
+    psa_storage_uid_t uid                              = UID_WRITE_ONCE_1;
+    uint8_t           write_buff[TEST_BUFF_SIZE/2]     = {0xDE, 0xAD, 0xBE, 0xEF,
+                                                          0xCA, 0xFE, 0xBA, 0xBE};
+    uint8_t           read_buff[TEST_BUFF_SIZE/2]      = {0};
+    uint8_t           write_buff_new[TEST_BUFF_SIZE/4] = {0xFF, 0xFF, 0xFF, 0xFF};
+
+    /* set() data without a WRITE_ONCE flag */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX1].api[fCode], uid, TEST_BUFF_SIZE/2,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Check that get_info() returns correct attributes; also store for reference for later */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX2].api[fCode], uid, &orig_info);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(orig_info.flags, PSA_STORAGE_FLAG_NONE, TEST_CHECKPOINT_NUM(4));
+
+    /* Check for data consistency using get() */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX5].api[fCode], uid, 0, TEST_BUFF_SIZE/2,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(5));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_MEMCMP(write_buff, read_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(7));
+
+    /* set() with WRITE_ONCE_FLAG */
+    val->print(PRINT_TEST, "[Check 1] Update the flag of UID %d with WRITE_ONCE flag\n", uid);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX7].api[fCode], uid, TEST_BUFF_SIZE/4,
+                              write_buff_new, PSA_STORAGE_FLAG_WRITE_ONCE);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Check that info is updated, after new set */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX8].api[fCode], uid, &new_info);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(9));
+    TEST_ASSERT_EQUAL(new_info.size, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(10));
+    TEST_ASSERT_EQUAL(new_info.flags, PSA_STORAGE_FLAG_WRITE_ONCE, TEST_CHECKPOINT_NUM(11));
+
+    /* Check that data contents are preserved which were written with WRITE_ONCE_FLAG originally */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX11].api[fCode], uid, 0, TEST_BUFF_SIZE/4,
+                          read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX11].status, TEST_CHECKPOINT_NUM(12));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(13));
+    TEST_ASSERT_MEMCMP(write_buff_new, read_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(14));
+
+    /* remove() the UID */
+    val->print(PRINT_TEST, "[Check 2] Try to remove the UID %d having WRITE_ONCE flag\n", uid);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX13].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(15));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+
+static int32_t psa_sst_create_with_write_once_flag(storage_function_code_t fCode)
+{
+    int32_t           status;
+    uint32_t          p_data_length                      = 0;
+    psa_storage_uid_t uid                                = UID_WRITE_ONCE_2;
+    uint8_t           write_buff[TEST_BUFF_SIZE]         = {0x00, 0x01, 0x02, 0x03,
+                                                            0x04, 0x05, 0x06, 0x07,
+                                                            0x08, 0x09, 0x0A, 0x0B,
+                                                            0x0C, 0x0D, 0x0E, 0x0F};
+    uint8_t           read_buff[TEST_BUFF_SIZE]          = {0};
+    uint8_t           write_buff_new[TEST_BUFF_SIZE + 1] = {0xFF, 0xFF, 0xFF, 0xFF,
+                                                            0xFF, 0xFF, 0xFF, 0xFF,
+                                                            0xFF, 0xFF, 0xFF, 0xFF,
+                                                            0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
+
+    /* Set data for a UID using WRITE_ONCE flag */
+    val->print(PRINT_TEST, "[Check 3] Create a new UID %d with WRITE_ONCE flag\n", uid);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX14].api[fCode], uid, TEST_BUFF_SIZE, write_buff,
+                          PSA_STORAGE_FLAG_WRITE_ONCE);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX14].status, TEST_CHECKPOINT_NUM(16));
+
+    /* Check that remove() fails with PSA_SST_ERROR_WRITE_ONCE */
+    val->print(PRINT_TEST, "[Check 4] Try to remove the UID %d having WRITE_ONCE flag\n", uid);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX15].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX15].status, TEST_CHECKPOINT_NUM(17));
+
+    /* Check data consistency using get()*/
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX16].api[fCode], uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX16].status, TEST_CHECKPOINT_NUM(18));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(19));
+    TEST_ASSERT_MEMCMP(write_buff, read_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(20));
+
+    /* Check that info values is as expected */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX18].api[fCode], uid, &orig_info);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX18].status, TEST_CHECKPOINT_NUM(21));
+    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(22));
+    TEST_ASSERT_EQUAL(orig_info.flags, PSA_STORAGE_FLAG_WRITE_ONCE, TEST_CHECKPOINT_NUM(23));
+
+    /* Try to overwrite using set() with same UID as used before with WRITE_ONCE_FLAG */
+    val->print(PRINT_TEST, "[Check 5] Try to change the length of write_once UID %d\n", uid);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX21].api[fCode], uid, (TEST_BUFF_SIZE + 1),
+                          write_buff_new, PSA_STORAGE_FLAG_WRITE_ONCE);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX21].status, TEST_CHECKPOINT_NUM(24));
+
+    /* Check that remove() still fails with PSA_SST_ERROR_WRITE_ONCE */
+    val->print(PRINT_TEST, "[Check 6] Check UID removal still fails\n", 0);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX22].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX22].status, TEST_CHECKPOINT_NUM(25));
+
+    /* Check that info is preserved */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX23].api[fCode], uid, &new_info);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX23].status, TEST_CHECKPOINT_NUM(26));
+    TEST_ASSERT_EQUAL(new_info.size, orig_info.size, TEST_CHECKPOINT_NUM(27));
+    TEST_ASSERT_EQUAL(new_info.flags, orig_info.flags, TEST_CHECKPOINT_NUM(28));
+
+    /* Check that data contents are preserved which were written with WRITE_ONCE_FLAG originally */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX26].api[fCode], uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX26].status, TEST_CHECKPOINT_NUM(29));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(30));
+    TEST_ASSERT_MEMCMP(write_buff, read_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(31));
+
+    /* Try to overwrite using set() with same UID as used before without WRITE_ONCE_FLAG */
+    val->print(PRINT_TEST, "[Check 7] Try to change the WRITE_ONCE flag to None for UID %d\n", uid);
+    new_info.size  = 0;
+    new_info.flags = 0;
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX28].api[fCode], uid, (TEST_BUFF_SIZE - 1),
+                          write_buff_new, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX28].status, TEST_CHECKPOINT_NUM(32));
+
+    /* Check that remove() still fails with PSA_SST_ERROR_WRITE_ONCE */
+    val->print(PRINT_TEST, "[Check 8] Check UID removal still fails\n", 0);
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX29].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX29].status, TEST_CHECKPOINT_NUM(33));
+
+    /* Check that info is preserved */
+    status = STORAGE_FUNCTION(s002_data[VAL_TEST_IDX30].api[fCode], uid, &new_info);
+    TEST_ASSERT_EQUAL(status, s002_data[VAL_TEST_IDX30].status, TEST_CHECKPOINT_NUM(34));
+    TEST_ASSERT_EQUAL(new_info.size, orig_info.size, TEST_CHECKPOINT_NUM(35));
+    TEST_ASSERT_EQUAL(new_info.flags, orig_info.flags, TEST_CHECKPOINT_NUM(36));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s002_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_update_write_once_flag_after_create(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    status = psa_sst_create_with_write_once_flag(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_update_write_once_flag_after_create(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    status = psa_sst_create_with_write_once_flag(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s002/test_s002.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s002/test_s002.h
index 6c1e9ab..1442700 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s002/test_s002.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S002_CLIENT_TESTS_H_
+#define _TEST_S002_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s002)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s002_storage_test_list[];
+
+int32_t s002_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S002_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test.cmake b/api-tests/dev_apis/storage/test_s003/test.cmake
similarity index 86%
rename from api-tests/dev_apis/internal_trusted_storage/test_s003/test.cmake
rename to api-tests/dev_apis/storage/test_s003/test.cmake
index da2f1ad..d6b945c 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test.cmake
+++ b/api-tests/dev_apis/storage/test_s003/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s003.c
 	test_s003.c
 )
-list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s003/test_data.h b/api-tests/dev_apis/storage/test_s003/test_data.h
new file mode 100644
index 0000000..f4f54d5
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s003/test_data.h
@@ -0,0 +1,35 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S003_TEST_DATA_H_
+#define _S003_TEST_DATA_H_
+
+#include "test_s003.h"
+
+static const test_data_t s003_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call set API till insufficent space */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_ERROR_INSUFFICIENT_STORAGE
+},
+{
+    /* Remove the UID created */
+    VAL_TEST_IDX2, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S003_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_entry_s003.c b/api-tests/dev_apis/storage/test_s003/test_entry_s003.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s003/test_entry_s003.c
rename to api-tests/dev_apis/storage/test_s003/test_entry_s003.c
index 30dcbde..99807e2 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_entry_s003.c
+++ b/api-tests/dev_apis/storage/test_s003/test_entry_s003.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s003_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s003_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c b/api-tests/dev_apis/storage/test_s003/test_s003.c
similarity index 60%
rename from api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c
rename to api-tests/dev_apis/storage/test_s003/test_s003.c
index 9057316..282f326 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c
+++ b/api-tests/dev_apis/storage/test_s003/test_s003.c
@@ -18,32 +18,29 @@
 #include "val_interfaces.h"
 #include "val_target.h"
 #include "test_s003.h"
-#if ITS_TEST
-#include "test_its_data.h"
-#elif PS_TEST
-#include "test_ps_data.h"
-#endif
+#include "test_data.h"
 
 #define NUM_ITERATIONS 2
 #define TEST_BASE_UID_VALUE UID_BASE_VALUE + 5
 
-client_test_t test_s003_sst_list[] = {
+const client_test_t s003_storage_test_list[] = {
     NULL,
-    psa_sst_insufficient_space,
+    s003_storage_test,
     NULL,
 };
 
-static uint8_t write_buff[PLATFORM_MAX_UID_SIZE];
-static char test_desc[2][80] = {
+static uint8_t      write_buff[ARCH_TEST_STORAGE_UID_MAX_SIZE];
+static char         test_desc[2][80] = {
                                 "Overload storage space\n",
                                 "Overload storage again to verify all previous UID removed\n"};
 
-int32_t psa_sst_insufficient_space(caller_security_t caller)
+int32_t psa_sst_insufficient_space(storage_function_code_t fCode)
 {
-    uint32_t status = PSA_SUCCESS;
+    int32_t           status                  = PSA_SUCCESS;
     psa_storage_uid_t uid;
-    uint32_t count = 0, results[NUM_ITERATIONS] = {0};
-    int i = 0;
+    uint32_t          count                   = 0;
+    uint32_t          results[NUM_ITERATIONS] = {0};
+    int               i                       = 0;
 
     /* Saturate the storage for NUM_ITERATION times, and remove them after */
     for (i = 0 ; i < NUM_ITERATIONS; i++)
@@ -52,33 +49,36 @@
         val->print(PRINT_TEST, &test_desc[i][0], 0);
         for (uid = TEST_BASE_UID_VALUE; status == PSA_SUCCESS; uid++)
         {
-            val->print(PRINT_INFO, "Setting 0x%x bytes for ", PLATFORM_MAX_UID_SIZE);
+            val->print(PRINT_INFO, "Setting 0x%x bytes for ", ARCH_TEST_STORAGE_UID_MAX_SIZE);
             val->print(PRINT_INFO, "UID %d\n", uid);
-            status = SST_FUNCTION(s003_data[1].api, uid, PLATFORM_MAX_UID_SIZE, write_buff,
-                                  PSA_STORAGE_FLAG_NONE);
+            status = STORAGE_FUNCTION(s003_data[VAL_TEST_IDX1].api[fCode], uid,
+                                      ARCH_TEST_STORAGE_UID_MAX_SIZE, write_buff,
+                                      PSA_STORAGE_FLAG_NONE);
             if (status != PSA_SUCCESS)
             {
                 val->print(PRINT_TEST, "UID %d set failed due to insufficient space\n", uid);
                 break;
             }
         }
-        TEST_ASSERT_EQUAL(status, s003_data[1].status, TEST_CHECKPOINT_NUM(1));
+        TEST_ASSERT_EQUAL(status, s003_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
 
         /* Store number of set()s it took to saturate the storage */
         count = uid - (TEST_BASE_UID_VALUE);
         results[i] = uid - (TEST_BASE_UID_VALUE);
 
-        if (count)
+        if (count) {
            val->print(PRINT_TEST, "Remove all registered UIDs\n", 0);
+        }
         for (uid = TEST_BASE_UID_VALUE; uid < (count + TEST_BASE_UID_VALUE); uid++)
         {
             val->print(PRINT_INFO, "Removing UID %d\n", uid);
-            status = SST_FUNCTION(s003_data[2].api, uid);
+            status = STORAGE_FUNCTION(s003_data[VAL_TEST_IDX2].api[fCode], uid);
             if (status != PSA_SUCCESS)
                 break;
         }
-        if (count)
-           TEST_ASSERT_EQUAL(status, s003_data[2].status, TEST_CHECKPOINT_NUM(2));
+        if (count) {
+           TEST_ASSERT_EQUAL(status, s003_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+        }
     }
 
     /* Check that it takes equal number of UIDs to fill up the storage each time */
@@ -94,3 +94,26 @@
     }
     return VAL_STATUS_SUCCESS;
 }
+
+int32_t s003_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_insufficient_space(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_insufficient_space(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h b/api-tests/dev_apis/storage/test_s003/test_s003.h
similarity index 61%
rename from api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h
rename to api-tests/dev_apis/storage/test_s003/test_s003.h
index e022142..d9e78af 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h
+++ b/api-tests/dev_apis/storage/test_s003/test_s003.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,19 +17,12 @@
 #ifndef _TEST_S003_CLIENT_TESTS_H_
 #define _TEST_S003_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s003)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p003)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s003_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_insufficient_space(caller_security_t caller);
+extern const client_test_t s003_storage_test_list[];
+
+int32_t s003_storage_test(caller_security_t caller);
+
 #endif /* _TEST_S003_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test.cmake b/api-tests/dev_apis/storage/test_s004/test.cmake
similarity index 86%
rename from api-tests/dev_apis/internal_trusted_storage/test_s004/test.cmake
rename to api-tests/dev_apis/storage/test_s004/test.cmake
index 88caf83..775473f 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test.cmake
+++ b/api-tests/dev_apis/storage/test_s004/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s004.c
 	test_s004.c
 )
-list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s004/test_data.h b/api-tests/dev_apis/storage/test_s004/test_data.h
new file mode 100644
index 0000000..8baf212
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s004/test_data.h
@@ -0,0 +1,53 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S004_TEST_DATA_H_
+#define _S004_TEST_DATA_H_
+
+#include "test_s004.h"
+
+static const test_data_t s004_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Create a valid storage entity */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Validate the data using get API after set API failure */
+    VAL_TEST_IDX2, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* For same UID set the length as half of previous */
+    VAL_TEST_IDX4, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Call get with incorrect length */
+    VAL_TEST_IDX5, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Remove the valid storage entity */
+    VAL_TEST_IDX7, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S004_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_entry_s004.c b/api-tests/dev_apis/storage/test_s004/test_entry_s004.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s004/test_entry_s004.c
rename to api-tests/dev_apis/storage/test_s004/test_entry_s004.c
index a6afc24..a7861ef 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_entry_s004.c
+++ b/api-tests/dev_apis/storage/test_s004/test_entry_s004.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s004_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s004_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s004/test_s004.c b/api-tests/dev_apis/storage/test_s004/test_s004.c
new file mode 100644
index 0000000..ee470ac
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s004/test_s004.c
@@ -0,0 +1,98 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s004.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 20
+
+const client_test_t s004_storage_test_list[] = {
+    NULL,
+    s004_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t uid                        = UID_BASE_VALUE + 5;
+static uint8_t           read_buff[TEST_BUFF_SIZE]  = {0};
+static uint8_t           write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x30, 0x50, 0x04,
+                                                       0x23, 0xF6, 0x07, 0x08, 0x0D,
+                                                       0x70, 0xA1, 0xFF, 0xFF, 0x14,
+                                                       0x73, 0x46, 0x97, 0xE8, 0xDD};
+
+static int32_t psa_sst_get_data_check(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* Set data for UID */
+    status = STORAGE_FUNCTION(s004_data[VAL_TEST_IDX1].api[fCode], uid, TEST_BUFF_SIZE, write_buff,
+                          PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s004_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call get function and check the data consistency */
+    status = STORAGE_FUNCTION(s004_data[VAL_TEST_IDX2].api[fCode], uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s004_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(4));
+
+    /* Call the set again for same uid and set the length as half */
+    val->print(PRINT_TEST, "[Check 1] Call set API with reduced length - TEST_BUFF_SIZE/2\n", 0);
+    status = STORAGE_FUNCTION(s004_data[VAL_TEST_IDX4].api[fCode], uid, TEST_BUFF_SIZE/2,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s004_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(5));
+
+    /* Call get function with incorrect buffer length  */
+    val->print(PRINT_TEST, "[Check 2] Call get API with default length - TEST_BUFF_SIZE\n", 0);
+    status = STORAGE_FUNCTION(s004_data[VAL_TEST_IDX5].api[fCode], uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s004_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(7));
+    /* Expect p_data_length = TEST_BUFF_SIZE/2 */
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/2,  TEST_CHECKPOINT_NUM(8));
+
+    /* Remove the UID */
+    status = STORAGE_FUNCTION(s004_data[VAL_TEST_IDX7].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s004_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(9));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s004_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_get_data_check(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_get_data_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h b/api-tests/dev_apis/storage/test_s004/test_s004.h
similarity index 61%
rename from api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h
rename to api-tests/dev_apis/storage/test_s004/test_s004.h
index 85e6c34..2b44076 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h
+++ b/api-tests/dev_apis/storage/test_s004/test_s004.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,19 +17,12 @@
 #ifndef _TEST_S004_CLIENT_TESTS_H_
 #define _TEST_S004_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s004)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p004)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s004_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_get_data_check(caller_security_t caller);
+extern const client_test_t s004_storage_test_list[];
+
+int32_t s004_storage_test(caller_security_t caller);
+
 #endif /* _TEST_S004_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s005/test.cmake b/api-tests/dev_apis/storage/test_s005/test.cmake
similarity index 86%
rename from api-tests/dev_apis/protected_storage/test_s005/test.cmake
rename to api-tests/dev_apis/storage/test_s005/test.cmake
index bf3786a..28e59cf 100644
--- a/api-tests/dev_apis/protected_storage/test_s005/test.cmake
+++ b/api-tests/dev_apis/storage/test_s005/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s005.c
 	test_s005.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s005/test_data.h b/api-tests/dev_apis/storage/test_s005/test_data.h
new file mode 100644
index 0000000..3ac7fe1
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s005/test_data.h
@@ -0,0 +1,53 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S005_TEST_DATA_H_
+#define _S005_TEST_DATA_H_
+
+#include "test_s005.h"
+
+static struct psa_storage_info_t info;
+static const test_data_t s005_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Create a valid storage entity */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Validate the data using get API */
+    VAL_TEST_IDX2, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Validate the data attributes get_info API */
+    VAL_TEST_IDX4, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Remove the valid storage entity */
+    VAL_TEST_IDX7, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S005_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_entry_s005.c b/api-tests/dev_apis/storage/test_s005/test_entry_s005.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s005/test_entry_s005.c
rename to api-tests/dev_apis/storage/test_s005/test_entry_s005.c
index 36dcbaa..d41b0b8 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_entry_s005.c
+++ b/api-tests/dev_apis/storage/test_s005/test_entry_s005.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s005_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s005_storage_test_list, FALSE);
     if (VAL_ERROR(status))
     {
         goto test_exit;
diff --git a/api-tests/dev_apis/storage/test_s005/test_s005.c b/api-tests/dev_apis/storage/test_s005/test_s005.c
new file mode 100644
index 0000000..0945bc0
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s005/test_s005.c
@@ -0,0 +1,116 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s005.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 30
+
+const client_test_t s005_storage_test_list[] = {
+    NULL,
+    s005_storage_test,
+    NULL,
+};
+
+static uint8_t read_buff[TEST_BUFF_SIZE];
+static uint8_t write_buff[TEST_BUFF_SIZE] = {
+  0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
+  0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
+
+static int32_t psa_sst_apis_check(storage_function_code_t    fCode,
+                                  psa_storage_uid_t          uid,
+                                  uint32_t                   data_len,
+                                  uint8_t                    *data_buff,
+                                  psa_storage_create_flags_t create_flag)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* Set the UID with the data_len and data_buff */
+    status = STORAGE_FUNCTION(s005_data[VAL_TEST_IDX1].api[fCode], uid, data_len, data_buff,
+                          create_flag);
+    TEST_ASSERT_EQUAL(status, s005_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call the get function to get the data buffer and match the buffer */
+    status = STORAGE_FUNCTION(s005_data[VAL_TEST_IDX2].api[fCode], uid, 0, data_len, read_buff,
+                          &p_data_length);
+    TEST_ASSERT_EQUAL(status, s005_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+    TEST_ASSERT_MEMCMP(read_buff, data_buff, data_len, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(p_data_length, data_len, TEST_CHECKPOINT_NUM(4));
+
+    /* Call the get_info function and match the attributes */
+    status = STORAGE_FUNCTION(s005_data[VAL_TEST_IDX4].api[fCode], uid, &info);
+    TEST_ASSERT_EQUAL(status, s005_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(5));
+    TEST_ASSERT_EQUAL(info.size, data_len, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_EQUAL(info.flags, create_flag, TEST_CHECKPOINT_NUM(7));
+
+    /* Remove the UID  */
+    status = STORAGE_FUNCTION(s005_data[VAL_TEST_IDX7].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s005_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(8));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_apis_check_success_case(storage_function_code_t fCode)
+{
+   psa_storage_uid_t uid      = UID_BASE_VALUE + 4;
+   uint32_t          data_len = 0;
+   int32_t           status   = VAL_STATUS_SUCCESS;
+
+    /* Calling set function with data_len 1 and valid data pointer */
+    val->print(PRINT_TEST, "[Check 1] Set UID with data length zero and call storage APIs\n", 0);
+    if (psa_sst_apis_check(fCode, uid, data_len, write_buff, PSA_STORAGE_FLAG_NONE))
+    {
+        val->print(PRINT_ERROR, "Data Len = %d\n", data_len);
+        return VAL_STATUS_ERROR;
+    }
+
+    data_len = TEST_BUFF_SIZE/2;
+    val->print(PRINT_TEST, "[Check 2] Resetting the length check\n", 0);
+    if (psa_sst_apis_check(fCode, uid, data_len, write_buff, PSA_STORAGE_FLAG_NONE))
+    {
+       val->print(PRINT_ERROR, "Data Len = %d\n", data_len);
+       return VAL_STATUS_ERROR;
+    }
+
+    return status;
+}
+
+int32_t s005_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_apis_check_success_case(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_apis_check_success_case(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h b/api-tests/dev_apis/storage/test_s005/test_s005.h
similarity index 60%
rename from api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h
rename to api-tests/dev_apis/storage/test_s005/test_s005.h
index 453bb92..362c92f 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h
+++ b/api-tests/dev_apis/storage/test_s005/test_s005.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,20 +17,12 @@
 #ifndef _TEST_S005_CLIENT_TESTS_H_
 #define _TEST_S005_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s005)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p005)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s005_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_apis_check_success_case(caller_security_t caller);
+extern const client_test_t s005_storage_test_list[];
+
+int32_t s005_storage_test(caller_security_t caller);
 
 #endif /* _TEST_S005_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s006/test.cmake b/api-tests/dev_apis/storage/test_s006/test.cmake
similarity index 86%
rename from api-tests/dev_apis/protected_storage/test_s006/test.cmake
rename to api-tests/dev_apis/storage/test_s006/test.cmake
index c661ac3..0fecdc3 100644
--- a/api-tests/dev_apis/protected_storage/test_s006/test.cmake
+++ b/api-tests/dev_apis/storage/test_s006/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s006.c
 	test_s006.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s006/test_data.h b/api-tests/dev_apis/storage/test_s006/test_data.h
new file mode 100755
index 0000000..d54547a
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s006/test_data.h
@@ -0,0 +1,47 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S006_TEST_DATA_H_
+#define _S006_TEST_DATA_H_
+
+#include "test_s006.h"
+
+static struct psa_storage_info_t info;
+static const test_data_t s006_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Create a valid storage entity with different flag values */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Validate the flag value get_info API */
+    VAL_TEST_IDX2, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Remove the storage entity */
+    VAL_TEST_IDX4, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Storage entity remove fails */
+    VAL_TEST_IDX5, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_DOES_NOT_EXIST
+},
+};
+#endif /* _S006_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_entry_s006.c b/api-tests/dev_apis/storage/test_s006/test_entry_s006.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s006/test_entry_s006.c
rename to api-tests/dev_apis/storage/test_s006/test_entry_s006.c
index f3f2af3..09d90d0 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_entry_s006.c
+++ b/api-tests/dev_apis/storage/test_s006/test_entry_s006.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s006_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s006_storage_test_list, FALSE);
     if (VAL_ERROR(status))
     {
         goto test_exit;
diff --git a/api-tests/dev_apis/storage/test_s006/test_s006.c b/api-tests/dev_apis/storage/test_s006/test_s006.c
new file mode 100755
index 0000000..d5a4100
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s006/test_s006.c
@@ -0,0 +1,150 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s006.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 30
+
+const client_test_t s006_storage_test_list[] = {
+    NULL,
+    s006_storage_test,
+    NULL,
+};
+
+static uint8_t write_buff[TEST_BUFF_SIZE] = {
+  0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
+  0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
+
+static int32_t psa_sst_remove_api(storage_function_code_t    fCode,
+                                  psa_storage_uid_t          uid,
+                                  uint32_t                   data_len,
+                                  uint8_t                    *data_buff,
+                                  psa_storage_create_flags_t create_flag)
+{
+    int32_t status;
+
+    /* Call the get_info function and match the attributes */
+    status = STORAGE_FUNCTION(s006_data[VAL_TEST_IDX2].api[fCode], uid, &info);
+    TEST_ASSERT_EQUAL(status, s006_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(1));
+    if ((create_flag != PSA_STORAGE_FLAG_NO_CONFIDENTIALITY) ||
+        (create_flag != PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION))
+    {
+        TEST_ASSERT_EQUAL(info.flags, create_flag, TEST_CHECKPOINT_NUM(2));
+    }
+
+    /* Remove the UID  */
+    status = STORAGE_FUNCTION(s006_data[VAL_TEST_IDX4].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s006_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(3));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_create_storage_api(storage_function_code_t    fCode,
+                                          psa_storage_uid_t          uid,
+                                          uint32_t                   data_len,
+                                          uint8_t                    *data_buff,
+                                          psa_storage_create_flags_t create_flag)
+{
+    int32_t status;
+    int32_t  test_status;
+
+    status = STORAGE_FUNCTION(s006_data[VAL_TEST_IDX1].api[fCode], uid, data_len, data_buff,
+                          create_flag);
+    if (status == s006_data[VAL_TEST_IDX1].status)
+    {
+        test_status = psa_sst_remove_api(fCode, uid, data_len, data_buff, create_flag);
+        if (test_status != VAL_STATUS_SUCCESS)
+        {
+            return test_status;
+        }
+    }
+    else
+    {
+        /* Remove UID should fail  */
+        status = STORAGE_FUNCTION(s006_data[VAL_TEST_IDX5].api[fCode], uid);
+        TEST_ASSERT_EQUAL(status, s006_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(4));
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_flags_not_supported(storage_function_code_t fCode)
+{
+    psa_storage_create_flags_t flag;
+    uint32_t                   status = VAL_STATUS_SUCCESS;
+    psa_storage_uid_t          uid    = UID_BASE_VALUE + 5;
+    int32_t                    test_status;
+
+    /* Calling set function with different create flag value */
+
+    val->print(PRINT_TEST, "[Check 1] Call set API with flag - PSA_STORAGE_FLAG_NONE\n", 0);
+    /* Create storage with flag value */
+    flag = PSA_STORAGE_FLAG_NONE;
+    test_status = psa_sst_create_storage_api(fCode, uid, TEST_BUFF_SIZE, write_buff, flag);
+    if (test_status != VAL_STATUS_SUCCESS)
+    {
+        return test_status;
+    }
+
+    val->print(PRINT_TEST, "[Check 2] Call set API with flag - "
+                            "PSA_STORAGE_FLAG_NO_CONFIDENTIALITY\n", 0);
+    /* Create storage with flag value */
+    flag = PSA_STORAGE_FLAG_NO_CONFIDENTIALITY;
+    test_status = psa_sst_create_storage_api(fCode, uid, TEST_BUFF_SIZE, write_buff, flag);
+    if (test_status != VAL_STATUS_SUCCESS)
+    {
+        return test_status;
+    }
+
+    val->print(PRINT_TEST, "[Check 3] Call set API with flag - "
+                            "PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION\n", 0);
+    /* Create storage with flag value */
+    flag = PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION;
+    test_status = psa_sst_create_storage_api(fCode, uid, TEST_BUFF_SIZE, write_buff, flag);
+    if (test_status != VAL_STATUS_SUCCESS)
+    {
+        return test_status;
+    }
+
+    return status;
+}
+
+int32_t s006_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_flags_not_supported(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_flags_not_supported(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h b/api-tests/dev_apis/storage/test_s006/test_s006.h
similarity index 60%
rename from api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h
rename to api-tests/dev_apis/storage/test_s006/test_s006.h
index 8b9b2ba..4774d80 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h
+++ b/api-tests/dev_apis/storage/test_s006/test_s006.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,20 +17,12 @@
 #ifndef _TEST_S006_CLIENT_TESTS_H_
 #define _TEST_S006_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s006)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p006)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s006_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_flags_not_supported(caller_security_t caller);
+extern const client_test_t s006_storage_test_list[];
+
+int32_t s006_storage_test(caller_security_t caller);
 
 #endif /* _TEST_S006_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s007/test.cmake b/api-tests/dev_apis/storage/test_s007/test.cmake
similarity index 86%
rename from api-tests/dev_apis/protected_storage/test_s007/test.cmake
rename to api-tests/dev_apis/storage/test_s007/test.cmake
index 5c6606d..599088f 100644
--- a/api-tests/dev_apis/protected_storage/test_s007/test.cmake
+++ b/api-tests/dev_apis/storage/test_s007/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s007.c
 	test_s007.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s007/test_data.h b/api-tests/dev_apis/storage/test_s007/test_data.h
new file mode 100644
index 0000000..d0b6145
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s007/test_data.h
@@ -0,0 +1,66 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S007_TEST_DATA_H_
+#define _S007_TEST_DATA_H_
+
+#include "test_s007.h"
+
+static const test_data_t s007_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Create a valid storage entity */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Increase the length of storage */
+    VAL_TEST_IDX2, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Try to access old length */
+    VAL_TEST_IDX3, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    /* Try to access valid length less than set length */
+    VAL_TEST_IDX4, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Decrease the length of storage */
+    VAL_TEST_IDX6, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Try to access old length */
+    VAL_TEST_IDX7, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    /* Try to access old length */
+    VAL_TEST_IDX8, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    /* Try to access data with correct length */
+    VAL_TEST_IDX9, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    /* Remove the storage entity */
+    VAL_TEST_IDX10, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S007_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry_s007.c b/api-tests/dev_apis/storage/test_s007/test_entry_s007.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry_s007.c
rename to api-tests/dev_apis/storage/test_s007/test_entry_s007.c
index f6005a1..a2e8120 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry_s007.c
+++ b/api-tests/dev_apis/storage/test_s007/test_entry_s007.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s007_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s007_storage_test_list, FALSE);
     if (VAL_ERROR(status))
     {
         goto test_exit;
diff --git a/api-tests/dev_apis/storage/test_s007/test_s007.c b/api-tests/dev_apis/storage/test_s007/test_s007.c
new file mode 100755
index 0000000..048109e
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s007/test_s007.c
@@ -0,0 +1,132 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s007.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 30
+
+const client_test_t s007_storage_test_list[] = {
+    NULL,
+    s007_storage_test,
+    NULL,
+};
+
+static uint8_t write_buff[TEST_BUFF_SIZE] = {
+  0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
+  0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
+static uint8_t read_buff[TEST_BUFF_SIZE];
+
+static int32_t psa_sst_get_incorrect_size(storage_function_code_t fCode)
+{
+    psa_storage_uid_t uid           = UID_BASE_VALUE + 5;
+    uint32_t          p_data_length = 0;
+    int32_t           status        = VAL_STATUS_SUCCESS;
+
+    /* Set the UID with the data_len and data_buff */
+    val->print(PRINT_TEST, "Create a valid Storage - TEST_BUFF_SIZE/2\n", 0);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX1].api[fCode], uid, TEST_BUFF_SIZE/2,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call set for same UID and increase the length */
+    val->print(PRINT_TEST, "Increase the length of storage - TEST_BUFF_SIZE\n", 0);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX2].api[fCode], uid, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Access data using get API and old length */
+    val->print(PRINT_TEST, "[Check 1] Call get API with old length - TEST_BUFF_SIZE/2\n", 0);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX3].api[fCode], uid, 0, TEST_BUFF_SIZE/2,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(4));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(5));
+
+    /* Access data using get API and valid length */
+    val->print(PRINT_TEST, "[Check 2] Call get API with old length - TEST_BUFF_SIZE/4\n", 0);
+    memset(read_buff, 0x0, TEST_BUFF_SIZE);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX4].api[fCode], uid, 0, TEST_BUFF_SIZE/4,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(7));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(8));
+
+    /* Decrease the length again */
+    val->print(PRINT_TEST, "Decrease the length of storage - TEST_BUFF_SIZE/4\n", 0);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX6].api[fCode], uid, TEST_BUFF_SIZE/4,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(9));
+
+    /* Access data using get API and old length */
+    val->print(PRINT_TEST, "[Check 3] Call get API with old length - TEST_BUFF_SIZE/2\n", 0);
+    memset(read_buff, 0x0, TEST_BUFF_SIZE);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX7].api[fCode], uid, 0, TEST_BUFF_SIZE/2,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(10));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(11));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(12));
+
+    /* Access data using get API and old length */
+    val->print(PRINT_TEST, "[Check 4] Call get API with old length - TEST_BUFF_SIZE\n", 0);
+    memset(read_buff, 0x0, TEST_BUFF_SIZE);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX8].api[fCode], uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(13));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(14));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(15));
+
+    /* Access data using correct length */
+    val->print(PRINT_TEST, "[Check 5] Call get API with valid length - TEST_BUFF_SIZE/4\n", 0);
+    memset(read_buff, 0x0, TEST_BUFF_SIZE);
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX9].api[fCode], uid, 0, TEST_BUFF_SIZE/4,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX9].status, TEST_CHECKPOINT_NUM(16));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(17));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(18));
+
+    /* Remove the UID  */
+    status = STORAGE_FUNCTION(s007_data[VAL_TEST_IDX10].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s007_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(19));
+
+    return status;
+}
+
+int32_t s007_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_get_incorrect_size(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_get_incorrect_size(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h b/api-tests/dev_apis/storage/test_s007/test_s007.h
similarity index 61%
rename from api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h
rename to api-tests/dev_apis/storage/test_s007/test_s007.h
index 1fe0b5f..39eeb08 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h
+++ b/api-tests/dev_apis/storage/test_s007/test_s007.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,20 +17,12 @@
 #ifndef _TEST_S007_CLIENT_TESTS_H_
 #define _TEST_S007_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s007)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p007)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s007_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_get_incorrect_size(caller_security_t caller);
+extern const client_test_t s007_storage_test_list[];
+
+int32_t s007_storage_test(caller_security_t caller);
 
 #endif /* _TEST_S007_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test.cmake b/api-tests/dev_apis/storage/test_s008/test.cmake
similarity index 86%
rename from api-tests/dev_apis/internal_trusted_storage/test_s008/test.cmake
rename to api-tests/dev_apis/storage/test_s008/test.cmake
index ecba9c3..92b13e8 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test.cmake
+++ b/api-tests/dev_apis/storage/test_s008/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s008.c
 	test_s008.c
 )
-list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s008/test_data.h b/api-tests/dev_apis/storage/test_s008/test_data.h
new file mode 100644
index 0000000..9729ab2
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s008/test_data.h
@@ -0,0 +1,74 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S008_TEST_DATA_H_
+#define _S008_TEST_DATA_H_
+
+#include "test_s008.h"
+
+static const test_data_t s008_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Create a valid storage entity with zero flag value */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Call get API with offset + data_len = total_size */
+    VAL_TEST_IDX2, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call get API with offset + data_len < total_size */
+    VAL_TEST_IDX4, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call get API with offset = total data_size + 1 */
+    VAL_TEST_IDX6, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* get API with offset = total data_size */
+    VAL_TEST_IDX8, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX9, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call get API with invalid data len and offset zero */
+    VAL_TEST_IDX10, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX11, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call get API with offset = MAX_UINT32 */
+    VAL_TEST_IDX12, {VAL_ITS_GET, VAL_PS_GET}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Remove the storage entity */
+    VAL_TEST_IDX13, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S008_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_entry_s008.c b/api-tests/dev_apis/storage/test_s008/test_entry_s008.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s008/test_entry_s008.c
rename to api-tests/dev_apis/storage/test_s008/test_entry_s008.c
index f531881..98540df 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_entry_s008.c
+++ b/api-tests/dev_apis/storage/test_s008/test_entry_s008.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s008_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s008_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s008/test_s008.c b/api-tests/dev_apis/storage/test_s008/test_s008.c
new file mode 100644
index 0000000..a3ac971
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s008/test_s008.c
@@ -0,0 +1,156 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s008.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 20
+#define TEST_MAX_UINT32 0xFFFFFFFF
+
+const client_test_t s008_storage_test_list[] = {
+    NULL,
+    s008_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t uid = UID_BASE_VALUE + 5;
+static uint8_t           read_buff[TEST_BUFF_SIZE];
+static uint8_t           write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x02, 0x03, 0x04,
+                                                       0x23, 0xF6, 0x07, 0x08, 0x0D,
+                                                       0x70, 0xA1, 0xFF, 0xFF, 0x14,
+                                                      0x73, 0x46, 0x97, 0xE8, 0xDD};
+
+static int32_t psa_sst_invalid_offset_failure(storage_function_code_t fCode)
+{
+    uint32_t j, p_data_length = 0;
+    int32_t status;
+
+    /* Case where offset = data_size +1 , data_len 0. Also check nothing is returned in read buff */
+    val->print(PRINT_TEST, "[Check 2] Try to access data with varying invalid offset\n", 0);
+    memset(read_buff, 0, TEST_BUFF_SIZE);
+    status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX6].api[fCode], uid, TEST_BUFF_SIZE+1, 0,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_NOT_EQUAL(status, s008_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(8));
+    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(9));
+    for (j = 0; j < TEST_BUFF_SIZE; j++)
+    {
+        TEST_ASSERT_EQUAL(read_buff[j], 0x00, TEST_CHECKPOINT_NUM(10));
+    }
+
+    /* Case where offset = data_size  , data_len= 1  Also check nothing is returned in read buff */
+    memset(read_buff, 0xCD, TEST_BUFF_SIZE);
+    p_data_length = 0xFF;
+    status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX8].api[fCode], uid, TEST_BUFF_SIZE, 1,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(11));
+    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(12));
+
+    /* Case where offset = 0, data_len > data_size, check if just data_size is returned */
+    status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX10].api[fCode], uid, 0, TEST_BUFF_SIZE+1,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(13));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(14));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(15));
+
+    /* Try to access data with offset as MAX_UINT32 and length less than buffer size */
+    status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX12].api[fCode], uid, TEST_MAX_UINT32,
+                          TEST_BUFF_SIZE/2, read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX12].status, TEST_CHECKPOINT_NUM(16));
+
+    /* Remove the UID */
+    status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX13].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(17));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_valid_offset_success(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t data_len, offset = TEST_BUFF_SIZE;
+    uint32_t p_data_length = 0;
+
+    /* Set data for UID */
+    status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX1].api[fCode], uid, TEST_BUFF_SIZE, write_buff,
+                          PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Case where offset + datalen =  data_size */
+    val->print(PRINT_TEST, "[Check 1] Try to access data with varying valid offset\n", 0);
+    while (offset > 0)
+    {
+         data_len = TEST_BUFF_SIZE - offset;
+         memset(read_buff, 0, TEST_BUFF_SIZE);
+         status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX2].api[fCode], uid, offset, data_len,
+                               read_buff, &p_data_length);
+         TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+         TEST_ASSERT_MEMCMP(read_buff, write_buff + offset, data_len, TEST_CHECKPOINT_NUM(3));
+         TEST_ASSERT_EQUAL(p_data_length, data_len, TEST_CHECKPOINT_NUM(4));
+         offset >>= 1;
+     }
+
+    offset = TEST_BUFF_SIZE - 2;
+    data_len = 1;
+    /* Case where offset + datalen <  data_size */
+    while (offset > 0)
+    {
+         status = STORAGE_FUNCTION(s008_data[VAL_TEST_IDX4].api[fCode], uid, offset, data_len,
+                               read_buff, &p_data_length);
+         TEST_ASSERT_EQUAL(status, s008_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(5));
+         TEST_ASSERT_MEMCMP(read_buff, write_buff + offset, data_len, TEST_CHECKPOINT_NUM(6));
+         TEST_ASSERT_EQUAL(p_data_length, data_len, TEST_CHECKPOINT_NUM(7));
+         offset >>= 1;
+         data_len <<= 1;
+     }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s008_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_valid_offset_success(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    status = psa_sst_invalid_offset_failure(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_valid_offset_success(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    status = psa_sst_invalid_offset_failure(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s008/test_s008.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s008/test_s008.h
index 6c1e9ab..8c51dc4 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s008/test_s008.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S008_CLIENT_TESTS_H_
+#define _TEST_S008_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s008)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s008_storage_test_list[];
+
+int32_t s008_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S008_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s009/test.cmake
similarity index 86%
rename from api-tests/dev_apis/protected_storage/test_s009/test.cmake
rename to api-tests/dev_apis/storage/test_s009/test.cmake
index 9d66436..729f5bf 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s009/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s009.c
 	test_s009.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s009/test_data.h b/api-tests/dev_apis/storage/test_s009/test_data.h
new file mode 100644
index 0000000..1561048
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s009/test_data.h
@@ -0,0 +1,71 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S009_TEST_DATA_H_
+#define _S009_TEST_DATA_H_
+
+#include "test_s009.h"
+
+static struct psa_storage_info_t info;
+static const test_data_t s009_data[] = {
+{
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call set API with NULL write buffer and 0 length */
+    VAL_TEST_IDX1, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Verify UID is created */
+    VAL_TEST_IDX2, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    /* Call get API with NULL write buffer and 0 length */
+    VAL_TEST_IDX3, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    /* Remove the storage entity */
+    VAL_TEST_IDX4, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Verify UID is removed */
+    VAL_TEST_IDX5, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Create storage of zero size and valid write buffer */
+    VAL_TEST_IDX6, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Call get_info API to check data size */
+    VAL_TEST_IDX7, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX8, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call get API with 0 length and NULL read buffer */
+    VAL_TEST_IDX9, {VAL_ITS_GET, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    /* Increase the asset size */
+    VAL_TEST_IDX10, {VAL_ITS_SET, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Remove the storage entity */
+    VAL_TEST_IDX11, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S009_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_entry_s009.c b/api-tests/dev_apis/storage/test_s009/test_entry_s009.c
similarity index 94%
rename from api-tests/dev_apis/internal_trusted_storage/test_s009/test_entry_s009.c
rename to api-tests/dev_apis/storage/test_s009/test_entry_s009.c
index 37883fb..6a1da17 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_entry_s009.c
+++ b/api-tests/dev_apis/storage/test_s009/test_entry_s009.c
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s009_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s009_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s009/test_s009.c b/api-tests/dev_apis/storage/test_s009/test_s009.c
new file mode 100644
index 0000000..e767f10
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s009/test_s009.c
@@ -0,0 +1,119 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s009.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 20
+
+const client_test_t s009_storage_test_list[] = {
+    NULL,
+    s009_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t uid                        = UID_BASE_VALUE + 5;
+static uint8_t           write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x02, 0x03, 0x04,
+                                                       0x23, 0xF6, 0x07, 0x08, 0x0D,
+                                                       0x70, 0xA1, 0xFF, 0xFF, 0x14,
+                                                       0x73, 0x46, 0x97, 0xE8, 0xDD};
+
+static int32_t psa_sst_zero_length_check(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* Set data for UID with length 0 and NULL pointer */
+    val->print(PRINT_TEST, "[Check 1] Call set API with NULL pointer and data length 0\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX1].api[fCode], uid, 0, NULL,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call the get_info function to verify UID created */
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX2].api[fCode], uid, &info);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Call get API with NULL read buffer */
+    val->print(PRINT_TEST, "[Check 2] Call get API with NULL read buffer and data length 0\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX3].api[fCode], uid, 0, 0, NULL, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(4));
+
+    /* Remove the UID */
+    val->print(PRINT_TEST, "[Check 3] Remove the UID\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX4].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(5));
+
+    /* Call the get_info function to verify UID is removed */
+    val->print(PRINT_TEST, "[Check 4] Call get_info API to verify UID removed\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX5].api[fCode], uid, &info);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(6));
+
+    /* Create UID with length 0 and valid write buffer */
+    val->print(PRINT_TEST, "[Check 5] Create UID with zero data_len and valid write buffer\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX6].api[fCode], uid, 0, write_buff,
+                          PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(7));
+
+    /* Call the get_info function and match the attributes */
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX7].api[fCode], uid, &info);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(8));
+    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(9));
+
+    /* Call get API with NULL read buffer and valid UID */
+    val->print(PRINT_TEST, "[Check 8] Call get API with NULL read buffer and data length 0\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX9].api[fCode], uid, 0, 0, NULL, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX9].status, TEST_CHECKPOINT_NUM(10));
+    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(11));
+
+    /* Change the length to test_buff_size */
+    val->print(PRINT_TEST, "[Check 9] Increase the length\n", 0);
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX10].api[fCode], uid, TEST_BUFF_SIZE, write_buff,
+                          PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(12));
+
+    /* Remove the UID */
+    status = STORAGE_FUNCTION(s009_data[VAL_TEST_IDX11].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s009_data[VAL_TEST_IDX11].status, TEST_CHECKPOINT_NUM(13));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s009_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_zero_length_check(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_zero_length_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h b/api-tests/dev_apis/storage/test_s009/test_s009.h
similarity index 61%
rename from api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h
rename to api-tests/dev_apis/storage/test_s009/test_s009.h
index f1c396a..b34a1bc 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h
+++ b/api-tests/dev_apis/storage/test_s009/test_s009.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,20 +17,12 @@
 #ifndef _TEST_S009_CLIENT_TESTS_H_
 #define _TEST_S009_CLIENT_TESTS_H_
 
-#ifdef ITS_TEST
-#define VAL_STORAGE_BASE VAL_INTERNAL_TRUSTED_STORAGE_BASE
 #define test_entry CONCAT(test_entry_,  s009)
-#elif PS_TEST
-#define VAL_STORAGE_BASE VAL_PROTECTED_STORAGE_BASE
-#define test_entry CONCAT(test_entry_,  p009)
-#endif
-#define val CONCAT(val, test_entry)
-#define psa CONCAT(psa, test_entry)
 
-extern val_api_t *val;
-extern psa_api_t *psa;
-extern client_test_t test_s009_sst_list[];
+#include "test_storage_common.h"
 
-int32_t psa_sst_zero_length_check(caller_security_t caller);
+extern const client_test_t s009_storage_test_list[];
+
+int32_t s009_storage_test(caller_security_t caller);
 
 #endif /* _TEST_S009_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test.cmake b/api-tests/dev_apis/storage/test_s010/test.cmake
similarity index 86%
rename from api-tests/dev_apis/internal_trusted_storage/test_s010/test.cmake
rename to api-tests/dev_apis/storage/test_s010/test.cmake
index 4c3dc6a..983eefa 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test.cmake
+++ b/api-tests/dev_apis/storage/test_s010/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,6 +19,6 @@
 	test_entry_s010.c
 	test_s010.c
 )
-list(APPEND CC_OPTIONS -DITS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s010/test_data.h b/api-tests/dev_apis/storage/test_s010/test_data.h
new file mode 100644
index 0000000..1caf600
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s010/test_data.h
@@ -0,0 +1,36 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S010_TEST_DATA_H_
+#define _S010_TEST_DATA_H_
+
+#include "test_s010.h"
+
+static const test_data_t s010_data[] = {
+{
+    /* Create with UID value zero should fail */
+    VAL_TEST_IDX0, {VAL_ITS_SET, VAL_PS_SET}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Call to get_info API for UID 0 should fail */
+    VAL_TEST_IDX1, {VAL_ITS_GET_INFO, VAL_PS_GET_INFO}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Call to remove API UID value zero should fail */
+    VAL_TEST_IDX2, {VAL_ITS_REMOVE, VAL_PS_REMOVE}, PSA_ERROR_INVALID_ARGUMENT
+},
+};
+#endif /* _S010_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_entry_s010.c b/api-tests/dev_apis/storage/test_s010/test_entry_s010.c
similarity index 89%
rename from api-tests/dev_apis/internal_trusted_storage/test_s010/test_entry_s010.c
rename to api-tests/dev_apis/storage/test_s010/test_entry_s010.c
index 82623c6..8cdd70b 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_entry_s010.c
+++ b/api-tests/dev_apis/storage/test_s010/test_entry_s010.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_secure_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_s010_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s010_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s010/test_s010.c b/api-tests/dev_apis/storage/test_s010/test_s010.c
new file mode 100644
index 0000000..abcdb12
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s010/test_s010.c
@@ -0,0 +1,79 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s010.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 1
+
+const client_test_t s010_storage_test_list[] = {
+    NULL,
+    s010_storage_test,
+    NULL,
+};
+
+static uint8_t write_buff[TEST_BUFF_SIZE] = {0xFF};
+
+int32_t psa_sst_uid_value_zero_check(storage_function_code_t fCode)
+{
+    int32_t                   status;
+    psa_storage_uid_t         uid = 0;
+    struct psa_storage_info_t info;
+
+    /* Set with UID value zero should fail */
+    val->print(PRINT_TEST, "[Check 1] Creating storage with UID 0 should fail\n", 0);
+    status = STORAGE_FUNCTION(s010_data[VAL_TEST_IDX0].api[fCode], uid, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s010_data[VAL_TEST_IDX0].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call to get_info call with UID zero should fail */
+    val->print(PRINT_TEST, "[Check 2] Get_info for UID 0 should fail\n", 0);
+    status = STORAGE_FUNCTION(s010_data[VAL_TEST_IDX1].api[fCode], uid, &info);
+    TEST_ASSERT_EQUAL(status, s010_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(2));
+
+    /* UID removal should fail  */
+    val->print(PRINT_TEST, "[Check 3] Removing storage with UID 0 should fail\n", 0);
+    status = STORAGE_FUNCTION(s010_data[VAL_TEST_IDX2].api[fCode], uid);
+    TEST_ASSERT_EQUAL(status, s010_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(3));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s010_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+    val->print(PRINT_TEST, ITS_TEST_MESSAGE, 0);
+    status = psa_sst_uid_value_zero_check(VAL_ITS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_uid_value_zero_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+#endif
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s010/test_s010.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s010/test_s010.h
index 6c1e9ab..61b5eaa 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s010/test_s010.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S010_CLIENT_TESTS_H_
+#define _TEST_S010_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s010)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s010_storage_test_list[];
+
+int32_t s010_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S010_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s011/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s011/test.cmake
index 9d66436..d776d75 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s011/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s011.c
+	test_s011.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s011/test_data.h b/api-tests/dev_apis/storage/test_s011/test_data.h
new file mode 100644
index 0000000..4921d2d
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s011/test_data.h
@@ -0,0 +1,81 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S011_TEST_DATA_H_
+#define _S011_TEST_DATA_H_
+
+#include "test_s011.h"
+
+static const test_data_t s011_data[] = {
+{
+    /* Check if optional PS API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Call set_extended call for non-existing UID */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Create valid storage using set API */
+    VAL_TEST_IDX2, {VAL_API_UNUSED, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Create API for present UID with different length */
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Call create API for to set WRITE_ONCE flag */
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Validate existing UID attributes maintained */
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Remove the UID */
+    VAL_TEST_IDX8, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Create valid storage using create API */
+    VAL_TEST_IDX9, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+},
+{
+    /* Again call create API with different length */
+    VAL_TEST_IDX10, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Validate the storage is empty */
+    VAL_TEST_IDX11, {VAL_API_UNUSED, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX12, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Remove the UID */
+    VAL_TEST_IDX13, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Set_extended call for removed UID */
+    VAL_TEST_IDX14, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_DOES_NOT_EXIST
+}
+};
+#endif /* _S011_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_entry_p011.c b/api-tests/dev_apis/storage/test_s011/test_entry_s011.c
similarity index 83%
rename from api-tests/dev_apis/protected_storage/test_p011/test_entry_p011.c
rename to api-tests/dev_apis/storage/test_s011/test_entry_s011.c
index daa7ef2..082eea4 100644
--- a/api-tests/dev_apis/protected_storage/test_p011/test_entry_p011.c
+++ b/api-tests/dev_apis/storage/test_s011/test_entry_s011.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p011.h"
+#include "test_s011.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 11)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 11)
 #define TEST_DESC "Optional APIs: UID not found check\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p011_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s011_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s011/test_s011.c b/api-tests/dev_apis/storage/test_s011/test_s011.c
new file mode 100644
index 0000000..a18bb65
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s011/test_s011.c
@@ -0,0 +1,146 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s011.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+const client_test_t s011_storage_test_list[] = {
+    NULL,
+    s011_storage_test,
+    NULL,
+};
+
+static uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
+static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
+
+static int32_t psa_sst_uid_not_found(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t j, p_data_length = 0;
+    psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
+    struct psa_storage_info_t orig_info;
+
+    /* Call the set_extended API with UID which is not created */
+    val->print(PRINT_TEST, "[Check 1] Call set_extended API for UID %d which is not set\n", p_uid);
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX1].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Create a valid storage with set API */
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX2].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Try to change data length for same UID using create API */
+    val->print(PRINT_TEST, "[Check 2] Call create API with length different than original\n", 0);
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX3].api[fCode], p_uid, TEST_BUFF_SIZE/2,
+                              PSA_STORAGE_FLAG_WRITE_ONCE);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+
+    /* Try to change flag value associated with the UID */
+    val->print(PRINT_TEST, "[Check 3] Call create API with flag value different than original\n",
+                           0);
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX4].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              PSA_STORAGE_FLAG_WRITE_ONCE);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Check the flag value should be same as original*/
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX5].api[fCode], p_uid, &orig_info);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(5));
+    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_EQUAL(orig_info.flags, PSA_STORAGE_FLAG_NONE, TEST_CHECKPOINT_NUM(7));
+
+    /* Remove the UID */
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX8].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Create a valid storage */
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX9].api[fCode], p_uid, TEST_BUFF_SIZE/2,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX9].status, TEST_CHECKPOINT_NUM(9));
+
+    /* Try to change length using create API */
+    val->print(PRINT_TEST, "[Check 4] Call create API with parameters different than original\n",
+                           0);
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX10].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(10));
+
+    /* Check the storage should be empty */
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX11].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX11].status, TEST_CHECKPOINT_NUM(11));
+    for (j = 0; j < TEST_BUFF_SIZE; j++)
+    {
+        TEST_ASSERT_EQUAL(read_buff[j], 0, TEST_CHECKPOINT_NUM(12));
+    }
+    TEST_ASSERT_EQUAL(p_data_length, 0, TEST_CHECKPOINT_NUM(13));
+
+    /* Remove the UID */
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX13].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(14));
+
+    /* Call the set_extended API with UID which is removed */
+    val->print(PRINT_TEST, "[Check 5] Call set_extended API for UID %d which is removed\n", p_uid);
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX14].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s011_data[VAL_TEST_IDX14].status, TEST_CHECKPOINT_NUM(15));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_optional_api_uid_not_found(storage_function_code_t fCode)
+{
+    uint32_t status;
+    int32_t test_status;
+
+    /* Call the get_support API and check if create and set_extended API are supported */
+    status = STORAGE_FUNCTION(s011_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status == s011_data[VAL_TEST_IDX0].status)
+    {
+       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
+       test_status = psa_sst_uid_not_found(fCode);
+       if (test_status != VAL_STATUS_SUCCESS)
+          return test_status;
+    }
+    else
+    {
+       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s011_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_optional_api_uid_not_found(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s011/test_s011.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s011/test_s011.h
index 6c1e9ab..04f10d6 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s011/test_s011.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S011_CLIENT_TESTS_H_
+#define _TEST_S011_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s011)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s011_storage_test_list[];
+
+int32_t s011_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S011_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s012/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s012/test.cmake
index 9d66436..2eeec7f 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s012/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s012.c
+	test_s012.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s012/test_data.h b/api-tests/dev_apis/storage/test_s012/test_data.h
new file mode 100644
index 0000000..8e8c66c
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s012/test_data.h
@@ -0,0 +1,84 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S012_TEST_DATA_H_
+#define _S012_TEST_DATA_H_
+
+#include "test_s012.h"
+
+static const test_data_t s012_data[] = {
+{
+    /* Check if optional PS API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Create valid storage */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+
+},
+{
+    /* Set data using set_extended API */
+    VAL_TEST_IDX2, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Set_extended with invalid offset + length */
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Set_extended call with invalid offset */
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Set_extended call with valid offset and zero length */
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Set_extended with invalid offset + length */
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Set_extended with invalid length */
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Write data using set API */
+    VAL_TEST_IDX8, {VAL_API_UNUSED, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Check data validity using get API */
+    VAL_TEST_IDX9, {VAL_API_UNUSED, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX10, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Create call with UID 0 */
+    VAL_TEST_IDX11, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Call set_extended with UID 0 */
+    VAL_TEST_IDX12, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Call remove with UID 0 */
+    VAL_TEST_IDX13, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_ERROR_INVALID_ARGUMENT
+},
+{
+    /* Remove with UID */
+    VAL_TEST_IDX14, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S012_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_entry_p012.c b/api-tests/dev_apis/storage/test_s012/test_entry_s012.c
similarity index 83%
rename from api-tests/dev_apis/protected_storage/test_p012/test_entry_p012.c
rename to api-tests/dev_apis/storage/test_s012/test_entry_s012.c
index df4c4a8..4bded12 100644
--- a/api-tests/dev_apis/protected_storage/test_p012/test_entry_p012.c
+++ b/api-tests/dev_apis/storage/test_s012/test_entry_s012.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p012.h"
+#include "test_s012.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 12)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 12)
 #define TEST_DESC "Optional APIs: Invalid arguments and offset invalid\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p012_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s012_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s012/test_s012.c b/api-tests/dev_apis/storage/test_s012/test_s012.c
new file mode 100644
index 0000000..27508a8
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s012/test_s012.c
@@ -0,0 +1,170 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s012.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+const client_test_t s012_storage_test_list[] = {
+    NULL,
+    s012_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t p_uid                        = UID_BASE_VALUE + 6;
+static uint8_t           write_buff[TEST_BUFF_SIZE]   = {0x00, 0x01, 0x02, 0x03,
+                                                         0x04, 0x05, 0x06, 0x07,
+                                                         0x08, 0x09, 0x0A, 0x0B,
+                                                         0x0C, 0x0D, 0x0E, 0x0F};
+static uint8_t           read_buff[TEST_BUFF_SIZE]    = {0};
+static uint8_t           write_buff_2[TEST_BUFF_SIZE] = {0xFF, 0xC1, 0xA2, 0xE3,
+                                                         0x04, 0x05, 0x06, 0x07,
+                                                         0x03, 0x09, 0x0A, 0x1B,
+                                                         0x0C, 0x0D, 0x0E, 0x0F};
+
+static int32_t psa_sst_offset_invalid(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+
+    /* Create valid storage using create API */
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX1].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Set some data in the storage created */
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX2].api[fCode], p_uid, TEST_BUFF_SIZE/2, 5,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Try to set data at invalid location with incorrect data len + offset  */
+    val->print(PRINT_TEST, "[Check 1] Call set_extended API with invalid offset + length\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX3].api[fCode], p_uid, TEST_BUFF_SIZE, 2,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+
+    /* Try to set data at invalid location with incorrect offset */
+    val->print(PRINT_TEST, "[Check 2] Call set_extended API with invalid offset\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX4].api[fCode], p_uid, TEST_BUFF_SIZE + 2, 0,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Try to set data at correct offset, but zero data len */
+    val->print(PRINT_TEST, "[Check 3] Call set_extended API with offset equals length\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX5].api[fCode], p_uid, TEST_BUFF_SIZE, 0,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(5));
+
+    /* Try to set data at invalid location with incorrect data len + offset */
+    val->print(PRINT_TEST, "[Check 4] Call set_extended API with invalid offset + length\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX6].api[fCode], p_uid, 1, TEST_BUFF_SIZE,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(6));
+
+    /* Try to set data at invalid location with incorrect data len */
+    val->print(PRINT_TEST, "[Check 5] Call set_extended API with invalid length\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX7].api[fCode], p_uid, 0, TEST_BUFF_SIZE + 1,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(7));
+
+    /* Set data using set API */
+    val->print(PRINT_TEST, "[Check 6] Overwrite the whole data with set API\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX8].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Call the get function to check data is correctly overwritten */
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX9].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX9].status, TEST_CHECKPOINT_NUM(9));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(10));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(11));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_bad_pointer(storage_function_code_t fCode)
+{
+    int32_t status;
+
+    /* Call create API with UID value 0 */
+    val->print(PRINT_TEST, "[Check 7] Call create API with UID 0\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX11].api[fCode], 0, 0, TEST_BUFF_SIZE,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX11].status, TEST_CHECKPOINT_NUM(12));
+
+    /* Call set extended API with UID value 0 */
+    val->print(PRINT_TEST, "[Check 8] Call set_extended API with UID 0\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX12].api[fCode], 0, 0, TEST_BUFF_SIZE,
+                              write_buff_2);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX12].status, TEST_CHECKPOINT_NUM(13));
+
+    /* Call remove API with UID value 0 */
+    val->print(PRINT_TEST, "[Check 9] Call remove API with UID 0\n", 0);
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX13].api[fCode], 0);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(14));
+
+    /* Remove the UID */
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX14].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s012_data[VAL_TEST_IDX14].status, TEST_CHECKPOINT_NUM(15));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_optional_api_offset_invalid(storage_function_code_t fCode)
+{
+    int32_t status;
+    int32_t test_status;
+
+    /* Call the get_support API and check if create and set_extended API are supported */
+    status = STORAGE_FUNCTION(s012_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status == s012_data[VAL_TEST_IDX0].status)
+    {
+       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
+       test_status = psa_sst_offset_invalid(fCode);
+       if (test_status != VAL_STATUS_SUCCESS)
+          return test_status;
+
+       test_status = psa_sst_bad_pointer(fCode);
+       if (test_status != VAL_STATUS_SUCCESS)
+          return test_status;
+    }
+    else
+    {
+       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s012_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_optional_api_offset_invalid(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s012/test_s012.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s012/test_s012.h
index 6c1e9ab..582ba80 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s012/test_s012.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S012_CLIENT_TESTS_H_
+#define _TEST_S012_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s012)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s012_storage_test_list[];
+
+int32_t s012_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S012_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s013/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s013/test.cmake
index 9d66436..589c300 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s013/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s013.c
+	test_s013.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s013/test_data.h b/api-tests/dev_apis/storage/test_s013/test_data.h
new file mode 100644
index 0000000..652a2c1
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s013/test_data.h
@@ -0,0 +1,101 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S013_TEST_DATA_H_
+#define _S013_TEST_DATA_H_
+
+#include "test_s013.h"
+
+static const test_data_t s013_data[] = {
+{
+    /* Check if optional PS API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Create storage of zero length */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+},
+{
+    /* Call set_extended with zero length */
+    VAL_TEST_IDX2, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Validate the storage attributes */
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+},
+{
+    /* Call set_extended to write data in first half of buffer */
+    VAL_TEST_IDX8, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Call set_extended to write data in second half of buffer */
+    VAL_TEST_IDX9, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Validate the data stored */
+    VAL_TEST_IDX10, {VAL_API_UNUSED, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX11, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX12, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Overwrite data with set API */
+    VAL_TEST_IDX13, {VAL_API_UNUSED, VAL_PS_SET}, PSA_SUCCESS
+
+},
+{
+    /* Validate the data written */
+    VAL_TEST_IDX14, {VAL_API_UNUSED, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX15, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Call Create API for existing UID with same parameters */
+    VAL_TEST_IDX16, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+},
+{
+    /* Validate the data */
+    VAL_TEST_IDX17, {VAL_API_UNUSED, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX18, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Remove the UID */
+    VAL_TEST_IDX19, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Check no duplicate entry of UID present */
+    VAL_TEST_IDX20, {VAL_API_UNUSED, VAL_PS_GET}, PSA_ERROR_DOES_NOT_EXIST
+}
+};
+#endif /* _S013_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test_entry_p013.c b/api-tests/dev_apis/storage/test_s013/test_entry_s013.c
similarity index 83%
rename from api-tests/dev_apis/protected_storage/test_p013/test_entry_p013.c
rename to api-tests/dev_apis/storage/test_s013/test_entry_s013.c
index 4a2acac..0c3fa8f 100644
--- a/api-tests/dev_apis/protected_storage/test_p013/test_entry_p013.c
+++ b/api-tests/dev_apis/storage/test_s013/test_entry_s013.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p013.h"
+#include "test_s013.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 13)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 13)
 #define TEST_DESC "Set_Extended and Create api : Success\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p013_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s013_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s013/test_s013.c b/api-tests/dev_apis/storage/test_s013/test_s013.c
new file mode 100644
index 0000000..80cd0ec
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s013/test_s013.c
@@ -0,0 +1,171 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s013.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+const client_test_t s013_storage_test_list[] = {
+    NULL,
+    s013_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t p_uid                          = UID_BASE_VALUE + 4;
+static uint8_t           write_buff[TEST_BUFF_SIZE/2]   = {0x00, 0x01, 0x02, 0x03,
+                                                           0x04, 0x05, 0x06, 0x07};
+static uint8_t           write_buff_2[TEST_BUFF_SIZE/2] = {0xFF, 0x11, 0xA2, 0xE3,
+                                                           0x04, 0xA5, 0xD6, 0x97};
+static uint8_t           read_buff[TEST_BUFF_SIZE]      = {0};
+static uint8_t           write_buff_3[TEST_BUFF_SIZE]   = {0x00, 0x01, 0x02, 0x03,
+                                                           0x04, 0x05, 0x06, 0x07,
+                                                           0x08, 0x09, 0x0A, 0x0B,
+                                                           0x0C, 0x0D, 0x0E, 0x0F};
+
+static int32_t psa_sst_set_extended_create_success(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+    struct psa_storage_info_t info;
+
+    /* Create storage of zero length using create API */
+    val->print(PRINT_TEST, "[Check 1] Create storage using create API for 0 length\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX1].api[fCode], p_uid, 0, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Set some data in the storage created */
+    val->print(PRINT_TEST, "[Check 2] Call set_extended for zero storage length\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX2].api[fCode], p_uid, 0, 0, write_buff);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Call the get_info function to match attributes */
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX3].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(info.flags, PSA_STORAGE_FLAG_NONE, TEST_CHECKPOINT_NUM(4));
+    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(5));
+
+    /* Remove the storage */
+    val->print(PRINT_TEST, "[Check 3] Remove the storage\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX6].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(6));
+
+    /* Create a valid storage */
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX7].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(7));
+
+    /* Try to set data in first half of buffer */
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX8].api[fCode], p_uid, 0, TEST_BUFF_SIZE/2,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Try to set data in second half of buffer */
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX9].api[fCode], p_uid, TEST_BUFF_SIZE/2,
+                              TEST_BUFF_SIZE/2, write_buff_2);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX9].status, TEST_CHECKPOINT_NUM(9));
+
+    /* Call the get function to match the data */
+    val->print(PRINT_TEST, "[Check 4] Valid data written by multiple set_extended\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX10].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(10));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(11));
+    TEST_ASSERT_MEMCMP(read_buff + TEST_BUFF_SIZE/2, write_buff_2, TEST_BUFF_SIZE/2,\
+                       TEST_CHECKPOINT_NUM(12));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(13));
+
+    /* Overwrite data using set API */
+    val->print(PRINT_TEST, "[Check 5] Overwrite whole data using SET API\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX13].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              write_buff_3, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(14));
+
+    /* Call the get function to match the data */
+    val->print(PRINT_TEST, "[Check 6] Validate the data using get API\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX14].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX14].status, TEST_CHECKPOINT_NUM(15));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff_3, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(16));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(17));
+
+    /* Call create API for existing UID with same parameters */
+    val->print(PRINT_TEST, "[Check 7] Call create API for existing UID with same parameters\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX16].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX16].status, TEST_CHECKPOINT_NUM(18));
+
+    /* Call the get function to match the data */
+    val->print(PRINT_TEST, "[Check 8] Validity of data after create API call\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX17].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX17].status, TEST_CHECKPOINT_NUM(19));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff_3, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(20));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(21));
+
+    /* Remove the storage */
+    val->print(PRINT_TEST, "[Check 9] Remove the UID\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX19].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX19].status, TEST_CHECKPOINT_NUM(22));
+
+    /* Validate there should not be duplicate UID present */
+    val->print(PRINT_TEST, "[Check 10] No duplicate entry of UID present\n", 0);
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX20].api[fCode], p_uid, 0, TEST_BUFF_SIZE,
+                              read_buff);
+    TEST_ASSERT_EQUAL(status, s013_data[VAL_TEST_IDX20].status, TEST_CHECKPOINT_NUM(23));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t psa_sst_optional_api_success_check(storage_function_code_t fCode)
+{
+    int32_t status;
+    int32_t test_status;
+
+    /* Call the get_support API and check if create and set_extended API are supported */
+    status = STORAGE_FUNCTION(s013_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status == s013_data[VAL_TEST_IDX0].status)
+    {
+       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
+       test_status = psa_sst_set_extended_create_success(fCode);
+       if (test_status != VAL_STATUS_SUCCESS)
+          return test_status;
+    }
+    else
+    {
+       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s013_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_optional_api_success_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s013/test_s013.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s013/test_s013.h
index 6c1e9ab..8cff9fa 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s013/test_s013.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S013_CLIENT_TESTS_H_
+#define _TEST_S013_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s013)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s013_storage_test_list[];
+
+int32_t s013_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S013_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s014/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s014/test.cmake
index 9d66436..acc0cd6 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s014/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s014.c
+	test_s014.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s014/test_data.h b/api-tests/dev_apis/storage/test_s014/test_data.h
new file mode 100644
index 0000000..45b96ff
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s014/test_data.h
@@ -0,0 +1,54 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S014_TEST_DATA_H_
+#define _S014_TEST_DATA_H_
+
+#include "test_s014.h"
+
+static const test_data_t s014_data[] = {
+{
+    /* Check if Optional API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Create API call should fail */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_NOT_SUPPORTED
+},
+{
+    /* UID should not exist */
+    VAL_TEST_IDX2, {VAL_API_UNUSED, VAL_PS_GET_INFO}, PSA_ERROR_DOES_NOT_EXIST
+},
+{
+    /* Create storage of non-zero length */
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Set_extended API call should fail */
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_NOT_SUPPORTED
+},
+{
+    /* Validate the data should not changed */
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_PS_GET}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S014_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test_entry_p014.c b/api-tests/dev_apis/storage/test_s014/test_entry_s014.c
similarity index 83%
rename from api-tests/dev_apis/protected_storage/test_p014/test_entry_p014.c
rename to api-tests/dev_apis/storage/test_s014/test_entry_s014.c
index ee39f86..5b01131 100644
--- a/api-tests/dev_apis/protected_storage/test_p014/test_entry_p014.c
+++ b/api-tests/dev_apis/storage/test_s014/test_entry_s014.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p014.h"
+#include "test_s014.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 14)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 14)
 #define TEST_DESC "Optional APIs not supported check\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p014_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s014_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s014/test_s014.c b/api-tests/dev_apis/storage/test_s014/test_s014.c
new file mode 100644
index 0000000..267fc85
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s014/test_s014.c
@@ -0,0 +1,112 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s014.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+const client_test_t s014_storage_test_list[] = {
+    NULL,
+    s014_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t p_uid                        = UID_BASE_VALUE + 5;
+static uint8_t           write_buff[TEST_BUFF_SIZE/4] = { 0x03, 0x04, 0x05, 0x07};
+static uint8_t           read_buff[TEST_BUFF_SIZE/4]  = {0};
+
+static int32_t psa_sst_optional_api_not_supported(storage_function_code_t fCode)
+{
+    int32_t  status;
+    uint32_t p_data_length = 0;
+    struct psa_storage_info_t info;
+
+    /* Try to create storage using create API */
+    val->print(PRINT_TEST, "[Check 1] Call to create API should fail as API not supported\n", 0);
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX1].api[fCode], p_uid, TEST_BUFF_SIZE,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s014_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Verify that UID doesn't exist */
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX2].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s014_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Create a valid storage using set API */
+    val->print(PRINT_TEST, "[Check 2] Create valid storage with set API\n", 0);
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX3].api[fCode], p_uid, TEST_BUFF_SIZE/4,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s014_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+
+    /* Partial data write with set_extended API should fail */
+    val->print(PRINT_TEST, "[Check 3] Call to set_extended API call should fail\n", 0);
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX4].api[fCode], p_uid, 0, 2, write_buff);
+    TEST_ASSERT_EQUAL(status, s014_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Call the get function to match the data */
+    val->print(PRINT_TEST, "[Check 4] Verify data is unchanged\n", 0);
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX5].api[fCode], p_uid, 0, TEST_BUFF_SIZE/4,
+                              read_buff, &p_data_length);
+    TEST_ASSERT_EQUAL(status, s014_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(5));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_EQUAL(p_data_length, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(7));
+
+    /* Remove the storage */
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX7].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s014_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(8));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_optional_api_not_supported_check(storage_function_code_t fCode)
+{
+    int32_t status;
+    int32_t test_status;
+
+    /* Call the get_support API and check if create and set_extended API are supported */
+    status = STORAGE_FUNCTION(s014_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status == s014_data[VAL_TEST_IDX0].status)
+    {
+       val->print(PRINT_INFO, "Test Case skipped as Optional PS APIs are supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+    else
+    {
+        val->print(PRINT_TEST, "Optional PS APIs are not supported.\n", 0);
+        test_status = psa_sst_optional_api_not_supported(fCode);
+        if (test_status != VAL_STATUS_SUCCESS)
+           return test_status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s014_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_optional_api_not_supported_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s014/test_s014.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s014/test_s014.h
index 6c1e9ab..4900f2b 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s014/test_s014.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S014_CLIENT_TESTS_H_
+#define _TEST_S014_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s014)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s014_storage_test_list[];
+
+int32_t s014_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S014_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s015/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s015/test.cmake
index 9d66436..2227088 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s015/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s015.c
+	test_s015.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s015/test_data.h b/api-tests/dev_apis/storage/test_s015/test_data.h
new file mode 100644
index 0000000..64a6aec
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s015/test_data.h
@@ -0,0 +1,32 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S015_TEST_DATA_H_
+#define _S015_TEST_DATA_H_
+
+#include "test_s015.h"
+
+static const test_data_t s015_data[] = {
+{
+    /* Check if optional PS API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Call create API with write_once flag */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_NOT_SUPPORTED
+},
+};
+#endif /* _S015_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test_entry_p015.c b/api-tests/dev_apis/storage/test_s015/test_entry_s015.c
similarity index 83%
rename from api-tests/dev_apis/protected_storage/test_p015/test_entry_p015.c
rename to api-tests/dev_apis/storage/test_s015/test_entry_s015.c
index 785f8f8..567c981 100644
--- a/api-tests/dev_apis/protected_storage/test_p015/test_entry_p015.c
+++ b/api-tests/dev_apis/storage/test_s015/test_entry_s015.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p015.h"
+#include "test_s015.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 15)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 15)
 #define TEST_DESC "Create API write_once flag value check\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p015_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s015_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s015/test_s015.c b/api-tests/dev_apis/storage/test_s015/test_s015.c
new file mode 100644
index 0000000..a38991b
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s015/test_s015.c
@@ -0,0 +1,68 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s015.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE 5
+
+const client_test_t s015_storage_test_list[] = {
+    NULL,
+    s015_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
+
+static int32_t psa_sst_create_api_write_once_flag_check(storage_function_code_t fCode)
+{
+    int32_t status;
+
+    /* Call the get_support API and check if optional APIs are supported */
+    status = STORAGE_FUNCTION(s015_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status == s015_data[VAL_TEST_IDX0].status)
+    {
+        /* Call create API with write_once flag */
+        val->print(PRINT_TEST, "[Check 1] Call create API with write_once flag\n", 0);
+        status = STORAGE_FUNCTION(s015_data[VAL_TEST_IDX1].api[fCode], p_uid, TEST_BUFF_SIZE,
+                                  PSA_STORAGE_FLAG_WRITE_ONCE);
+        TEST_ASSERT_EQUAL(status, s015_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+    }
+    else
+    {
+        val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs are not supported.\n", 0);
+        return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s015_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_create_api_write_once_flag_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s015/test_s015.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s015/test_s015.h
index 6c1e9ab..a8f0b33 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s015/test_s015.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S015_CLIENT_TESTS_H_
+#define _TEST_S015_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_,  s015)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s015_storage_test_list[];
+
+int32_t s015_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S015_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s016/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s016/test.cmake
index 9d66436..810f1d1 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s016/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s016.c
+	test_s016.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s016/test_data.h b/api-tests/dev_apis/storage/test_s016/test_data.h
new file mode 100644
index 0000000..61cd608
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s016/test_data.h
@@ -0,0 +1,80 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S016_TEST_DATA_H_
+#define _S016_TEST_DATA_H_
+
+#include "test_s016.h"
+
+static const test_data_t s016_data[] = {
+{
+    /* Check if Optional API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Storage creation */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+},
+{
+    /* Calling create API for existing UID should fail */
+    VAL_TEST_IDX2, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_ALREADY_EXISTS
+},
+{
+    /* Check the storage attributes are unchanged */
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Set API can change capacity of storage */
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Check the storage attributes are changed */
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX8, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX9, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    /* Set_extended on old capacity should not work */
+    VAL_TEST_IDX10, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_STORAGE_FAILURE
+},
+{
+    /* Remove the UID */
+    VAL_TEST_IDX11, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+{
+    /* Storage creation */
+    VAL_TEST_IDX12, {VAL_API_UNUSED, VAL_PS_SET}, PSA_SUCCESS
+},
+{
+    /* Calling create API for existing UID should fail */
+    VAL_TEST_IDX13, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_ERROR_ALREADY_EXISTS
+},
+{
+    /* Remove the UID */
+    VAL_TEST_IDX14, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S016_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_entry_p016.c b/api-tests/dev_apis/storage/test_s016/test_entry_s016.c
similarity index 83%
copy from api-tests/dev_apis/protected_storage/test_p016/test_entry_p016.c
copy to api-tests/dev_apis/storage/test_s016/test_entry_s016.c
index 8bf29b0..3aef53d 100644
--- a/api-tests/dev_apis/protected_storage/test_p016/test_entry_p016.c
+++ b/api-tests/dev_apis/storage/test_s016/test_entry_s016.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p016.h"
+#include "test_s016.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 16)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 16)
 #define TEST_DESC "Storage assest capacity modification check\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p016_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s016_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s016/test_s016.c b/api-tests/dev_apis/storage/test_s016/test_s016.c
new file mode 100644
index 0000000..aed4ecb
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s016/test_s016.c
@@ -0,0 +1,135 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s016.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE_1 10
+#define TEST_BUFF_SIZE_2 14
+#define TEST_BUFF_SIZE_3 8
+
+const client_test_t s016_storage_test_list[] = {
+    NULL,
+    s016_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t p_uid                        = UID_BASE_VALUE + 5;
+static uint8_t           write_buff[TEST_BUFF_SIZE_2] = {0x03, 0x04, 0x05, 0x07, 0xFF, 0x00, 0x32,
+                                                         0x67, 0x99, 0x78, 0x43, 0x20, 0xFF, 0x91};
+
+static int32_t psa_sst_optional_api_sst_capacity(storage_function_code_t fCode)
+{
+    int32_t status;
+    struct psa_storage_info_t info;
+
+    /* Try to create storage using create API */
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX1].api[fCode], p_uid, TEST_BUFF_SIZE_1,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call to create API for existing UID should fail */
+    val->print(PRINT_TEST, "[Check 1] Create API call for existing UID\n", 0);
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX2].api[fCode], p_uid, TEST_BUFF_SIZE_2,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Check the attributes of storage are unchanged */
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX3].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(info.capacity, TEST_BUFF_SIZE_1, TEST_CHECKPOINT_NUM(4));
+    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(5));
+
+    /* Override storage using set API */
+    val->print(PRINT_TEST, "[Check 2] Call to set API call for existing UID\n", 0);
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX6].api[fCode], p_uid, TEST_BUFF_SIZE_3,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX6].status, TEST_CHECKPOINT_NUM(6));
+
+    /* Check the attributes of storage are changed */
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX7].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX7].status, TEST_CHECKPOINT_NUM(7));
+    TEST_ASSERT_EQUAL(info.capacity, TEST_BUFF_SIZE_3, TEST_CHECKPOINT_NUM(8));
+    TEST_ASSERT_EQUAL(info.size, TEST_BUFF_SIZE_3, TEST_CHECKPOINT_NUM(9));
+
+    /* Accessing old capacity with set_extended API should fail */
+    val->print(PRINT_TEST, "[Check 3] Access old capacity using set_extended API\n", 0);
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX10].api[fCode], p_uid, 0, TEST_BUFF_SIZE_1,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX10].status, TEST_CHECKPOINT_NUM(10));
+
+    /* Remove the storage */
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX11].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX11].status, TEST_CHECKPOINT_NUM(11));
+
+    /* Create new storage assest using set  API */
+    val->print(PRINT_TEST, "[Check 4] Creation of new storage assest\n", 0);
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX12].api[fCode], p_uid, TEST_BUFF_SIZE_2,
+                              write_buff, PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX12].status, TEST_CHECKPOINT_NUM(12));
+
+    /* Call to create API for existing UID should fail */
+    val->print(PRINT_TEST, "[Check 5] Create API call for existing UID\n", 0);
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX13].api[fCode], p_uid, TEST_BUFF_SIZE_2,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX13].status, TEST_CHECKPOINT_NUM(13));
+
+    /* Remove the storage */
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX14].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s016_data[VAL_TEST_IDX14].status, TEST_CHECKPOINT_NUM(14));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_optional_api_sst_capacity_check(storage_function_code_t fCode)
+{
+    int32_t status;
+    int32_t test_status;
+
+    /* Call the get_support API and check if create and set_extended API are supported */
+    status = STORAGE_FUNCTION(s016_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status != s016_data[VAL_TEST_IDX0].status)
+    {
+       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs not are supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    } else {
+        val->print(PRINT_TEST, "Optional PS APIs are supported.\n", 0);
+        test_status = psa_sst_optional_api_sst_capacity(fCode);
+        if (test_status != VAL_STATUS_SUCCESS)
+        {
+            return test_status;
+        }
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s016_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_optional_api_sst_capacity_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s016/test_s016.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s016/test_s016.h
index 6c1e9ab..376f7fe 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s016/test_s016.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S016_CLIENT_TESTS_H_
+#define _TEST_S016_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_, s016)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s016_storage_test_list[];
+
+int32_t s016_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S016_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_s009/test.cmake b/api-tests/dev_apis/storage/test_s017/test.cmake
similarity index 82%
copy from api-tests/dev_apis/protected_storage/test_s009/test.cmake
copy to api-tests/dev_apis/storage/test_s017/test.cmake
index 9d66436..66a76b4 100644
--- a/api-tests/dev_apis/protected_storage/test_s009/test.cmake
+++ b/api-tests/dev_apis/storage/test_s017/test.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,9 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_s009.c
-	test_s009.c
+	test_entry_s017.c
+	test_s017.c
 )
-list(APPEND CC_OPTIONS -DPS_TEST)
+list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
diff --git a/api-tests/dev_apis/storage/test_s017/test_data.h b/api-tests/dev_apis/storage/test_s017/test_data.h
new file mode 100644
index 0000000..ab02d84
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s017/test_data.h
@@ -0,0 +1,57 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _S017_TEST_DATA_H_
+#define _S017_TEST_DATA_H_
+
+#include "test_s017.h"
+
+static const test_data_t s017_data[] = {
+{
+    /* Check if Optional API supported */
+    VAL_TEST_IDX0, {VAL_API_UNUSED, VAL_PS_GET_SUPPORT}, PSA_STORAGE_SUPPORT_SET_EXTENDED
+},
+{
+    /* Storage creation */
+    VAL_TEST_IDX1, {VAL_API_UNUSED, VAL_PS_CREATE}, PSA_SUCCESS
+},
+{
+    /* Write data in created storage  */
+    VAL_TEST_IDX2, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Try to set data in noncontinous manner */
+    VAL_TEST_IDX3, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_ERROR_STORAGE_FAILURE
+},
+{
+    /* Overwrite the existing data */
+    VAL_TEST_IDX4, {VAL_API_UNUSED, VAL_PS_SET_EXTENDED}, PSA_SUCCESS
+},
+{
+    /* Check for valid storage attributes */
+    VAL_TEST_IDX5, {VAL_API_UNUSED, VAL_PS_GET_INFO}, PSA_SUCCESS
+},
+{
+    VAL_TEST_IDX6, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX7, {VAL_API_UNUSED, VAL_API_UNUSED}, 0
+},
+{
+    VAL_TEST_IDX8, {VAL_API_UNUSED, VAL_PS_REMOVE}, PSA_SUCCESS
+},
+};
+#endif /* _S017_TEST_DATA_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_entry_p016.c b/api-tests/dev_apis/storage/test_s017/test_entry_s017.c
similarity index 83%
rename from api-tests/dev_apis/protected_storage/test_p016/test_entry_p016.c
rename to api-tests/dev_apis/storage/test_s017/test_entry_s017.c
index 8bf29b0..9f7ea64 100644
--- a/api-tests/dev_apis/protected_storage/test_p016/test_entry_p016.c
+++ b/api-tests/dev_apis/storage/test_s017/test_entry_s017.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,9 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_p016.h"
+#include "test_s017.h"
 
-#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 16)
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 17)
 #define TEST_DESC "Storage assest capacity modification check\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
@@ -41,7 +41,7 @@
     }
 
     /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
-    status = val->execute_non_secure_tests(TEST_NUM, test_p016_sst_list, FALSE);
+    status = val->execute_non_secure_tests(TEST_NUM, s017_storage_test_list, FALSE);
 
     if (VAL_ERROR(status))
     {
diff --git a/api-tests/dev_apis/storage/test_s017/test_s017.c b/api-tests/dev_apis/storage/test_s017/test_s017.c
new file mode 100644
index 0000000..10f240f
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_s017/test_s017.c
@@ -0,0 +1,113 @@
+/** @file
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_s017.h"
+#include "test_data.h"
+
+#define TEST_BUFF_SIZE_1 14
+#define TEST_BUFF_SIZE_2 10
+
+const client_test_t s017_storage_test_list[] = {
+    NULL,
+    s017_storage_test,
+    NULL,
+};
+
+static psa_storage_uid_t p_uid                        = UID_BASE_VALUE + 5;
+static uint8_t           write_buff[TEST_BUFF_SIZE_1] = {0x03, 0x04, 0x05, 0x07, 0xFF, 0x00, 0x32,
+                                                         0x67, 0x99, 0x78, 0x43, 0x20, 0xFF, 0x91};
+
+static int32_t psa_sst_optional_api_partial_write(storage_function_code_t fCode)
+{
+    int32_t status;
+    struct psa_storage_info_t info;
+
+    /* Try to create storage using create API */
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX1].api[fCode], p_uid, TEST_BUFF_SIZE_1,
+                              PSA_STORAGE_FLAG_NONE);
+    TEST_ASSERT_EQUAL(status, s017_data[VAL_TEST_IDX1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Call set extended API to set data in first half */
+    val->print(PRINT_TEST, "[Check 1] Set data in first half of storage\n", 0);
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX2].api[fCode], p_uid, 0, TEST_BUFF_SIZE_1/2,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s017_data[VAL_TEST_IDX2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Call set extended API to set data with gaps */
+    val->print(PRINT_TEST, "[Check 2] Set data having gap with existing data \n", 0);
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX3].api[fCode], p_uid, (TEST_BUFF_SIZE_1/2) + 2,
+                              2,  write_buff);
+    TEST_ASSERT_EQUAL(status, s017_data[VAL_TEST_IDX3].status, TEST_CHECKPOINT_NUM(3));
+
+    /* Call set extended API to overwrite and extend the existing data */
+    val->print(PRINT_TEST, "[Check 3] Overwrite and extend existing data\n", 0);
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX4].api[fCode], p_uid, 0, TEST_BUFF_SIZE_2,
+                              write_buff);
+    TEST_ASSERT_EQUAL(status, s017_data[VAL_TEST_IDX4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Check the attributes of existing storage */
+    val->print(PRINT_TEST, "[Check 4] Check the storage attributes\n", 0);
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX5].api[fCode], p_uid, &info);
+    TEST_ASSERT_EQUAL(status, s017_data[VAL_TEST_IDX5].status, TEST_CHECKPOINT_NUM(5));
+    TEST_ASSERT_EQUAL(info.size, TEST_BUFF_SIZE_2, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_EQUAL(info.capacity, TEST_BUFF_SIZE_1, TEST_CHECKPOINT_NUM(7));
+
+    /* Remove the storage */
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX8].api[fCode], p_uid);
+    TEST_ASSERT_EQUAL(status, s017_data[VAL_TEST_IDX8].status, TEST_CHECKPOINT_NUM(8));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_optional_api_partial_write_check(storage_function_code_t fCode)
+{
+    uint32_t status;
+    int32_t test_status;
+
+    /* Call the get_support API and check if create and set_extended API are supported */
+    status = STORAGE_FUNCTION(s017_data[VAL_TEST_IDX0].api[fCode]);
+
+    if (status != s017_data[VAL_TEST_IDX0].status)
+    {
+       val->print(PRINT_TEST, "Test Case skipped as Optional PS APIs not are supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    } else {
+        val->print(PRINT_TEST, "Optional PS APIs are supported.\n", 0);
+        test_status = psa_sst_optional_api_partial_write(fCode);
+        if (test_status != VAL_STATUS_SUCCESS)
+        {
+            return test_status;
+        }
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t s017_storage_test(caller_security_t caller)
+{
+    int32_t status;
+
+    val->print(PRINT_TEST, PS_TEST_MESSAGE, 0);
+    status = psa_sst_optional_api_partial_write_check(VAL_PS_FUNCTION);
+    if (status != VAL_STATUS_SUCCESS) {
+        return status;
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/dev_apis/storage/test_s017/test_s017.h
similarity index 60%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/dev_apis/storage/test_s017/test_s017.h
index 6c1e9ab..162f395 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/dev_apis/storage/test_s017/test_s017.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,17 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
+#ifndef _TEST_S017_CLIENT_TESTS_H_
+#define _TEST_S017_CLIENT_TESTS_H_
 
-#include <stdarg.h>
-#include "pal_common.h"
+#define test_entry CONCAT(test_entry_, s017)
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+#include "test_storage_common.h"
+
+extern const client_test_t s017_storage_test_list[];
+
+int32_t s017_storage_test(caller_security_t caller);
+
+#endif /* _TEST_S017_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/storage/test_storage_common.h b/api-tests/dev_apis/storage/test_storage_common.h
new file mode 100644
index 0000000..7d1d4b1
--- /dev/null
+++ b/api-tests/dev_apis/storage/test_storage_common.h
@@ -0,0 +1,37 @@
+/** @file
+ * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_STORAGE_COMMON_H_
+#define _TEST_STORAGE_COMMON_H_
+
+#include "val_storage.h"
+
+#define val              CONCAT(val, test_entry)
+#define psa              CONCAT(psa, test_entry)
+#define STORAGE_FUNCTION val->storage_function
+#define ITS_TEST_MESSAGE "\n[Info] Executing ITS tests\n"
+#define PS_TEST_MESSAGE  "\n[Info] Executing PS tests\n"
+
+extern val_api_t           *val;
+extern psa_api_t           *psa;
+
+typedef struct {
+    val_test_index_t        idx;
+    storage_function_type_t api[2];
+    psa_status_t            status;
+} test_data_t;
+
+#endif /* _TEST_STORAGE_COMMON_H_ */
diff --git a/api-tests/docs/porting_guide_dev_apis.md b/api-tests/docs/porting_guide_dev_apis.md
index c57b79b..ad98f1e 100644
--- a/api-tests/docs/porting_guide_dev_apis.md
+++ b/api-tests/docs/porting_guide_dev_apis.md
@@ -65,6 +65,7 @@
 | 11 | int32_t pal_attestation_function(int type, va_list valist);                                                                | Calls the requested Initial Attestation  function                       | type    : Function code<br/>valist  : Variable argument list<br/>                             |
 | 12 | uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash, struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers, struct q_useful_buf_c payload);                                                                | Computes hash for the requested data                       | cose_alg_id    : Algorithm ID<br/>buffer_for_hash  : Temp buffer for calculating hash<br/><br/>hash  : Pointer to store the hash<br/> buffer_for_hash  : Temp buffer for calculating hash<br/>protected_headers : data to be hashed<br/>payload  : Payload data<br/>                             |
 | 13 | uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash, struct q_useful_buf_c signature);                                                                | Function call to verify the signature using the public key              | cose_algorithm_id    : Algorithm ID<br/>token_hash  : Data that needs to be verified<br/>signature  : Signature to be verified against<br/>                             |
+| 14 | int pal_system_reset(void) | Resets the system | None |
 
 ## License
 Arm PSA test suite is distributed under Apache v2.0 License.
diff --git a/api-tests/docs/psa_attestation_testlist.md b/api-tests/docs/psa_attestation_testlist.md
index c43cbe4..1ec78f5 100644
--- a/api-tests/docs/psa_attestation_testlist.md
+++ b/api-tests/docs/psa_attestation_testlist.md
@@ -11,14 +11,14 @@
 ## Note
 
 1. In verifying the token, only the data type of claims and presence of the mandatory claims are checked and the values of the claims are not checked. <br />
-2. Specify the version of underlying PSA crypto in  <psa-arch-tests>/api-tests/platform/targets/<target_name>/nspe/common/pal_config.h <br />
+2. Specify the version of underlying PSA crypto in  <psa-arch-tests>/api-tests/platform/targets/<target_name>/nspe/pal_config.h <br />
 3. Supported crypto versions are CRYPTO_VERSION_BETA1, CRYPTO_VERSION_BETA2 and CRYPTO_VERSION_BETA3 <br />
 4. Signer ID and Version fields of the software component must be present to be compliant with the PSA-SM <br />
-5. Define the macro PLATFORM_OVERRIDE_ATTEST_PK in <psa-arch-tests>/api-tests/platform/targets/<target_name>/nspe/common/pal_config.h to use hardcoded public key <br />
+5. Define the macro PLATFORM_OVERRIDE_ATTEST_PK in <psa-arch-tests>/api-tests/platform/targets/<target_name>/nspe/pal_config.h to use hardcoded public key <br />
 
 # License
 Arm PSA test suite is distributed under Apache v2.0 License.
 
 --------------
 
-*Copyright (c) 2019, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/docs/psa_its_testlist.md b/api-tests/docs/psa_its_testlist.md
deleted file mode 100644
index 5d0d898..0000000
--- a/api-tests/docs/psa_its_testlist.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# PSA Internal Trusted Storage Testcase checklist
-
-## Requirements for Storage Test Suite
-
-Following are the requirements of the Storage Test Suite. <br />
-
-1. Unless described in this document, any behaviour that is defined as IMPLEMENTATION_DEFINED in PSA Storage API document is not verified in this document. <br />
-2. Storage Test Cases use UID value starting from 1 onwards. These UID needs to be free for successfull test execution.<br />
-3. UID values 1 and 2 are reserved as WRITE_ONCE UID. These UID can't be free from testcase. Make sure these are free.<br />
-
-| Test      | Test Scenario                         | API Verified   | Return Value            | Test Algorithm      | UID Usage              |
-|-----------|---------------------------------------|----------------|-------------------------|---------------------|------------------------|
-| test_s001 | Get,get_info and remove API's call for <br /> non-existent and removed assest | psa_its_get<br />psa_its_get_info <br />psa_its_remove<br />                 | PSA_ERROR_DOES_NOT_EXIST       | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. Remove the stray uid.<br />                                                                                                         | UID value used are 5,6,7                                                                                                                     |
-| test_s002 | Overwriting data for asset created with<br /> WRITE_ONCE flag                 | psa_its_set<br />psa_its_remove<br />                                        | PSA_ERROR_NOT_PERMITTED        | 1. Set valid UID/data value pair , with create flag value none.<br />2. Call get and get_info API to validate the data, attributes associated with data<br />3. Call set API again with same uid and create flag  PSA_PS_WRITE_ONCE_FLAG<br />4. Call get and get_info API to validate the data, attributes associated with data<br /> is not changed after second set operation<br />5. try to remove the UID/data pair.<br />6. Create new UID/data value pair, with create flag PSA_PS_WRITE_ONCE_FLAG<br />7. Try to remove the created UID.<br />8. Call get and get_info API to validate the data, attributes associated with data<br />9. Again call SET with same UID , create flag PSA_PS_WRITE_ONCE_FLAG but <br />different data length<br />10. Try to remove the UID, PSA_ITS_ERROR_WRITE_ONCE error should be returned<br />11. Call get and get_info API to validate the data, attributes associated with data<br /> | UID value used are 1 and 2                                                                                                                                                                     |
-| test_s003 | Exhaust storage space                                                         | psa_its_set<br />                                                            | PSA_ERROR_INSUFFICIENT_STORAGE | 1. Create UID/data pairs, with data_len of PLATFORM_MAX_UID_SIZE bytes. Do this with incrementing<br /> uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. Repeat the steps once more, to check all previous uid are removed successfully<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 5 and keep on incrementing till all space is exhausted                                                                                                                    |
-| test_s004 | Overwriting data for asset created without WRITE_ONCE flag                    | psa_its_set<br />psa_its_get<br />psa_its_get_info<br />psa_its_remove<br /> | PSA_SUCCESS                    | 1. Set a valid uid/data pair<br />2. Validate the data using get api<br />3. Change the data length to half of previous.<br />4. Call GET api with original data length , expect the success result and the read buffer to match for half of original length <br />5. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used is 5                                                                                                                                                                            |
-| test_s005 | Get, get_info and remove API call for valid assest                            | psa_its_set<br />psa_its_get<br />psa_its_get_info<br />psa_its_remove<br /> | PSA_SUCCESS                    | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 4                                                                                                                           |
-| test_s006 | Storage asset creation with supported create flag values                      | psa_its_set<br />                                                            | PSA_ERROR_NOT_SUPPORTED        | 1. Call the SET API with available create flag values <br />2. Call GET_INFO api and validate the flag value<br />3. Remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 5                                                                                                                          |
-| test_s007 | Get API call with length different than asset <br /> data length              | psa_its_set<br /> psa_its_get <br />                                         | PSA_SUCCESS                    | 1. Create valid uid/data pair. <br />2. Increase the length of storage.<br />3. Try to access the old length using get api.<br />4. Try to access with valid length less than stored size.<br />5. Decrease the length of storage.<br />6. Try to access the old length.<br />7. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 5                                                                                                                       |
-| test_s008 | Get API call with invalid offset                                              | psa_its_get<br />                                                            | PSA_ERROR_INVALID_ARGUMENT     | 1. Set valid UID/data pair<br />2. Call GET api with valid offset and offset + data_len equal to stored data size.<br />3. Call GET api with valid offset and offset + data_len less than stored data size.<br />4. Call get api with invalid offset.<br />5. Call get api with zero offset , but data len greater than data size.<br />6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | UID value used is  5 |
-| test_s009 | API call with NULL pointer and zero length                                    | psa_its_get<br />psa_its_set<br />psa_its_get_info<br />                     | PSA_ERROR_DOES_NOT_EXIST       | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should be present.<br />3. Call get API with NULL pointer.<br />4. Remove the UID.<br />5. Call get_info API to validate storage is removed.<br />6. Set storage entity with valid write_buffer , but length zero.<br />7. Call get_info API to validate storage attributes.<br />8. Call get_info api with NULL pointer and valid uid.<br />9. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 5 <br />                                                                                                                                                                     |
-| test_s010 | Storage assest creation with UID value 0                                      | psa_its_set<br />                                                            | PSA_ERROR_INVALID_ARGUMENT     | 1. Call the SET API with UID value 0.<br />2. Check that storage creation fails.<br /> | UID value used is 0 <br />
-| NA        | Storage Failure                                                               | NA                                                                           | PSA_ERROR_STORAGE_FAILURE      | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br />                                                                                                                                                                     |
-
-## License
-Arm PSA test suite is distributed under Apache v2.0 License.
-
---------------
-
-*Copyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/docs/psa_ps_testlist.md b/api-tests/docs/psa_ps_testlist.md
deleted file mode 100644
index bf90b02..0000000
--- a/api-tests/docs/psa_ps_testlist.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# PSA Protected Storage Testcase checklist
-
-## Requirements for Storage Test Suite
-
-Following are the requirements of the Storage Test Suite. <br />
-
-1. Unless described in this document, any behaviour that is defined as IMPLEMENTATION_DEFINED in PSA Storage API document is not verified in this document. <br />
-2. Storage Test Cases use UID value starting from 1 onwards. These UID needs to be free for successfull test execution.<br />
-3. UID values 1 and 2 are reserved as WRITE_ONCE UID. These UID can't be free from testcase. Make sure these are free.<br />
-
-| Test      | Test Scenario                         | API Verified   | Return Value            | Test Algorithm      | UID Usage              |
-|-----------|---------------------------------------|----------------|-------------------------|---------------------|------------------------|
-| test_s001 | Get,get_info and remove API's call for <br /> non-existent and removed assest | psa_ps_get<br />psa_ps_get_info <br />psa_ps_remove<br />                | PSA_ERROR_DOES_NOT_EXIST       | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. Remove the stray uid.<br />                                                                                                         | UID value used are 5,6,7                                                                                                                     |
-| test_s002 | Overwriting data for asset created with<br /> WRITE_ONCE flag                 | psa_ps_set<br />psa_ps_remove<br />                                      | PSA_ERROR_NOT_PERMITTED        | 1. Set valid UID/data value pair , with create flag value none.<br />2. Call get and get_info API to validate the data, attributes associated with data<br />3. Call set API again with same uid and create flag  PSA_PS_WRITE_ONCE_FLAG<br />4. Call get and get_info API to validate the data, attributes associated with data<br /> is not changed after second set operation<br />5. try to remove the UID/data pair.<br />6. Create new UID/data value pair, with create flag PSA_PS_WRITE_ONCE_FLAG<br />7. Try to remove the created UID.<br />8. Call get and get_info API to validate the data, attributes associated with data<br />9. Again call SET with same UID , create flag PSA_PS_WRITE_ONCE_FLAG but <br />different data length<br />10. Try to remove the UID, PSA_ITS_ERROR_WRITE_ONCE error should be returned<br />11. Call get and get_info API to validate the data, attributes associated with data<br /> | UID value used are 1 and 2                                                                                                                                                                     |
-| test_s003 | Exhaust storage space                                                         | psa_ps_set<br />                                                         | PSA_ERROR_INSUFFICIENT_STORAGE | 1. Create UID/data pairs, with data_len of PLATFORM_MAX_UID_SIZE bytes. Do this with incrementing<br /> uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. Repeat the steps once more, to check all previous uid are removed successfully<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 5 and keep on incrementing till all space is exhausted                                                                                                                    |
-| test_s004 | Overwriting data for asset created without WRITE_ONCE flag                    | psa_ps_set<br />psa_ps_get<br />psa_ps_get_info<br />psa_ps_remove<br /> | PSA_SUCCESS                    | 1. Set a valid uid/data pair<br />2. Validate the data using get api<br />3. Change the data length to half of previous.<br />4. Call GET api with original data length , expect the success result and the read buffer to match for half of original length <br />5. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used is 5                                                                                                                                                                            |
-| test_s005 | Get, get_info and remove API call for valid assest                            | psa_ps_set<br />psa_ps_get<br />psa_ps_get_info<br />psa_ps_remove<br /> | PSA_SUCCESS                    | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 4                                                                                                                           |
-| test_s006 | Storage asset creation with supported create flag values                      | psa_ps_set<br />                                                         | PSA_ERROR_NOT_SUPPORTED        | 1. Call the SET API with available create flag values <br />2. Call GET_INFO api and validate the flag value<br />3. Remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 5                                                                                                                          |
-| test_s007 | Get API call with length different than asset <br /> data length              | psa_ps_set<br /> psa_ps_get <br />                                       | PSA_SUCCESS                    | 1. Create valid uid/data pair. <br />2. Increase the length of storage.<br />3. Try to access the old length using get api.<br />4. Try to access with valid length less than stored size.<br />5. Decrease the length of storage.<br />6. Try to access the old length.<br />7. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 5                                                                                                                       |
-| test_s008 | Get API call with invalid offset                                              | psa_ps_get<br />                                                         | PSA_ERROR_INVALID_ARGUMENT     | 1. Set valid UID/data pair<br />2. Call GET api with valid offset and offset + data_len equal to stored data size.<br />3. Call GET api with valid offset and offset + data_len less than stored data size.<br />4. Call get api with invalid offset.<br />5. Call get api with zero offset , but data len greater than data size.<br />6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | UID value used is  5 |
-| test_s009 | API call with NULL pointer and zero length                                    | psa_ps_get<br />psa_ps_set<br />psa_ps_get_info<br />                    | PSA_ERROR_DOES_NOT_EXIST       | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should be present.<br />3. Call get API with NULL pointer.<br />4. Remove the UID.<br />5. Call get_info API to validate storage is removed.<br />6. Set storage entity with valid write_buffer , but length zero.<br />7. Call get_info API to validate storage attributes.<br />8. Call get_info api with NULL pointer and valid uid.<br />9. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 5 <br />                                                                                                                                                                     |
-| test_s010 | Storage assest creation with UID value 0                                      | psa_ps_set<br />                                                         | PSA_ERROR_INVALID_ARGUMENT     | 1. Call the SET API with UID value 0.<br />2. Check that storage creation fails.<br /> | UID value used is 0 <br />
-| test_p011 | Set_extended API's call for <br /> non-existent and removed assest            | psa_ps_set_extended<br />                                                                                | PSA_ERROR_DOES_NOT_EXIST         | Below Steps will be run only if optional API are not supported.<br />1. Call the SET Extended API when no uid present.<br />2. Create a valid storage using set. <br /> 3. Call create api with different length for existing uid.<br /> 4. Call create api to set WRITE_ONCE flag.<br /> 5. Validate data attributes are maintained.<br />6. Remove the uid.<br /> 7. Create valid storage using create api.<br /> 8. Try to change length using create api.<br /> 9. Validate storage is empty.<br /> 10. Again call create api with original parameters.<br />11. Remove the uid.<br /> 12. Check no duplicate entry present.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is 5 <br />                                                                                                                                                                     |
-| test_p012 | Set_extended API's call <br /> with invalid offset                            | psa_ps_set_extended<br />                                                                                | PSA_ERROR_INVALID_ARGUMENT       | Below Steps will be run only if optional API are not supported.<br />1. Create a valid storage using set.<br /> 2. Set data on first half of buffer.<br /> 3. Try to set data at incorrect offset +length. <br /> 4. Try to set data at incorrect offset.<br />5. Try to set at correct offset but zero length buffer.<br />6. Try to set data at incorrect length and valid offset.<br /> 7. Overwrite the storage using set api.<br /> 8. Validate data is correctly written.<br \> 9. Call set_extended with NULL write buffer.<br /> 10. Overwrite storage using set_extended api.<br /> 11. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is 6 <br />
-| test_p013 | Create and set_extended API call for valid assest                             | psa_ps_set_extended<br /> psa_ps_create                                                                  | PSA_SUCCESS                      | Below Steps will be run only if optional API are not supported.<br />1.  Create Storage of zero length using create.<br />2. Try to set some data in the storage created.<br />3. Validate the storage attributes.<br /> 4. Remove the storage.<br /> 5. Create a valid storage with non-zero length.<br /> 6. Set data in the buffer.<br /> 7. Validate the data attributes.<br /> 8. Overwrite data using set api.<br /> 9. Validate the data.<br /> 10. Call create api for existing uid with same parameters.<br /> 11. Remove the uid.<br /> 12. Check with set_extended no duplicate uid exists.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 4
-| test_p014 | Create and set_extended API call<br /> when API's not supported               | psa_ps_create<br />psa_ps_set_extended<br />                                                             | PSA_ERROR_NOT_SUPPORTED          | Below Steps will be run only if optional API are not supported.<br />1. Create API call should fail.<br />2. Check the UID should not exist.<br /> 3. Create storage using set API.<br /> 4. Try to partially write using set_extended API.<br /> 5. Validate data is not modified.<br /> 6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 5
-| test_p015 | Create API call with<br /> WRITE_ONCE flag                                    | psa_ps_create<br />                                                                                      | PSA_ERROR_NOT_SUPPORTED          | Below Step will be run only if optional API are supported.<br />1. Create API call with WRITE_ONCE flag should fail.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 5 <br />
-| test_p016 | Create API call for capacity check                                            | psa_ps_create<br /> psa_ps_set<br /> psa_ps_get_info<br /> psa_ps_set_extended<br /> psa_ps_remove<br /> | PSA_ERROR_ALREADY_EXISTS<br /> PSA_ERROR_STORAGE_FAILURE | Below Steps will be run only if optional API are supported.<br /> 1. Create storage with valid UID and capacity using create<br /> 2. Check create for existing UID fails<br /> 3. Check the attributes of storage are unchanged<br /> 4. Override the storage using SET API<br /> 5. Check the attributes of storage are changed<br /> 6. Accessing old capacity with set_extended API fails<br /> 7. Remove the storage<br /> 8. Create new storage with valid UID/data pair using set API<br /> 9. Check create API for existing UID fails<br /> 10. Remove the storage | UID value used is 5                                                                                                                                                           <br />
-| test_p017 | Partial write check with set extended API                                     | psa_ps_create<br /> psa_ps_set_extended<br /> psa_ps_get_info<br /> psa_ps_remove<br />                  | PSA_ERROR_STORAGE_FAILURE                                | Below Steps will be run only if optional API are supported.<br /> 1. Create storage with valid UID and capacity using create<br /> 2. Set partial data using set extended API<br /> 3. Check set extended API fails for data with gaps<br /> 4. Set full length data using set extended API<br /> 5. Check the valid attributes of storage<br /> 6. Remove the storage<br /> | UID value used is 5 <br />
-| NA        | Fatal error <br />                                                            | NA                                                                                                       | PSA_ERROR_STORAGE_FAILURE                                | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br /> |
-| NA        | Data Corruption  <br />                                                       | NA                                                                                                       | PSA_ERROR_DATA_CORRUPT                                   | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br /> |
-| NA        | Invalid Signature <br />                                                      | NA                                                                                                       | PSA_ERROR_INVALID_SIGNATURE                              | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br /> |
-
-## License
-Arm PSA test suite is distributed under Apache v2.0 License.
-
---------------
-
-*Copyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/docs/psa_storage_testlist.md b/api-tests/docs/psa_storage_testlist.md
new file mode 100644
index 0000000..1359f52
--- /dev/null
+++ b/api-tests/docs/psa_storage_testlist.md
@@ -0,0 +1,40 @@
+# PSA Storage (Internal Trusted Storage and Protected Storage) Testcase checklist
+
+## Requirements for Storage Test Suite
+
+Following are the requirements of the Storage Test Suite. <br />
+
+1. Unless described in this document, any behaviour that is defined as IMPLEMENTATION_DEFINED in PSA Storage API document is not verified in this document. <br />
+2. Storage Test Cases use UID value starting from 1 onwards. These UID needs to be free for successfull test execution.<br />
+3. UID values 1 and 2 are reserved as WRITE_ONCE UID. These UID can't be free from testcase. Make sure these are free.<br />
+
+| Test      | Test Scenario                         | API Verified   | Return Value            | Test Algorithm      | UID Usage              |
+|-----------|---------------------------------------|----------------|-------------------------|---------------------|------------------------|
+| test_s001 | get_info and remove API's call for <br /> non-existent and removed assest | psa_its(ps)_get<br />psa_its(ps)_get_info <br />psa_its(ps)_remove<br />                                 | PSA_ERROR_DOES_NOT_EXIST                                 | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. Remove the stray uid.<br />                                                                                                         | UID value used are 5,6,7                                                                                                                     |
+| test_s002 | Overwriting data for asset created with<br /> WRITE_ONCE flag                 | psa_its(ps)_set<br />psa_its(ps)_remove<br />                                                            | PSA_ERROR_NOT_PERMITTED                                  | 1. Set valid UID/data value pair , with create flag value none.<br />2. Call get and get_info API to validate the data, attributes associated with data<br />3. Call set API again with same uid and create flag  PSA_STORAGE_WRITE_ONCE_FLAG<br />4. Call get and get_info API to validate the data, attributes associated with data<br /> is not changed after second set operation<br />5. try to remove the UID/data pair.<br />6. Create new UID/data value pair, with create flag PSA_STORAGE_WRITE_ONCE_FLAG<br />7. Try to remove the created UID.<br />8. Call get and get_info API to validate the data, attributes associated with data<br />9. Again call SET with same UID , create flag PSA_STORAGE_WRITE_ONCE_FLAG but <br />different data length<br />10. Try to remove the UID, PSA_ERROR_NOT_PERMITTED error should be returned<br />11. Call get and get_info API to validate the data, attributes associated with data<br /> | UID value used are 1 and 2                                                                                                                                                                     |
+| test_s003 | Exhaust storage space                                                         | psa_its(ps)_set<br />                                                                                    | PSA_ERROR_INSUFFICIENT_STORAGE                           | 1. Create UID/data pairs, with data_len of ARCH_TEST_STORAGE_UID_MAX_SIZE bytes. Do this with incrementing<br /> uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. Repeat the steps once more, to check all previous uid are removed successfully<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 5 and keep on incrementing till all space is exhausted                                                                                                                    |
+| test_s004 | Overwriting data for asset created without WRITE_ONCE flag                    | psa_its(ps)_set<br />psa_its(ps)_get<br />psa_its(ps)_get_info<br />psa_its(ps)_remove<br />             | PSA_SUCCESS                                              | 1. Set a valid uid/data pair<br />2. Validate the data using get api<br />3. Change the data length to half of previous.<br />4. Call GET api with original data length , expect the success result and the read buffer to match for half of original length <br />5. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used is 5                                                                                                                                                                            |
+| test_s005 | Get, get_info and remove API call for valid assest                            | psa_its(ps)_set<br />psa_its(ps)_get<br />psa_its(ps)_get_info<br />psa_its(ps)_remove<br />             | PSA_SUCCESS                                              | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 4                                                                                                                           |
+| test_s006 | Storage asset creation with supported create flag values                      | psa_its(ps)_set<br />                                                                                    | PSA_ERROR_NOT_SUPPORTED                                  | 1. Call the SET API with available create flag values <br />2. Call GET_INFO api and validate the flag value<br />3. Remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 5                                                                                                                          |
+| test_s007 | Get API call with length different than asset <br /> data length              | psa_its(ps)_set<br /> psa_its(ps)_get <br />                                                             | PSA_SUCCESS                                              | 1. Create valid uid/data pair. <br />2. Increase the length of storage.<br />3. Try to access the old length using get api.<br />4. Try to access with valid length less than stored size.<br />5. Decrease the length of storage.<br />6. Try to access the old length.<br />7. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 5                                                                                                                       |
+| test_s008 | Get API call with invalid offset                                              | psa_its(ps)_get<br />                                                                                    | PSA_ERROR_INVALID_ARGUMENT                               | 1. Set valid UID/data pair<br />2. Call GET api with valid offset and offset + data_len equal to stored data size.<br />3. Call GET api with valid offset and offset + data_len less than stored data size.<br />4. Call get api with invalid offset.<br />5. Call get api with zero offset , but data len greater than data size.<br />6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | UID value used is  5 |
+| test_s009 | API call with NULL pointer and zero length                                    | psa_its(ps)_get<br />psa_its(ps)_set<br />psa_its(ps)_get_info<br />                                     | PSA_ERROR_DOES_NOT_EXIST                                 | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should be present.<br />3. Call get API with NULL pointer.<br />4. Remove the UID.<br />5. Call get_info API to validate storage is removed.<br />6. Set storage entity with valid write_buffer , but length zero.<br />7. Call get_info API to validate storage attributes.<br />8. Call get_info api with NULL pointer and valid uid.<br />9. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 5 <br />                                                                                                                                                                     |
+| test_s010 | Storage assest creation with UID value 0                                      | psa_its(ps)_set<br />                                                                                    | PSA_ERROR_INVALID_ARGUMENT                               | 1. Call the SET API with UID value 0.<br />2. Check that storage creation fails.<br /> | UID value used is 0 <br />
+| NA        | Storage Failure                                                               | NA                                                                                                       | PSA_ERROR_STORAGE_FAILURE                                | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br />                                                                                                                                                                     |
+| test_s011 | Set_extended API's call for <br /> non-existent and removed assest            | psa_ps_set_extended<br />                                                                                | PSA_ERROR_DOES_NOT_EXIST                                 | Below Steps will be run only if optional API are not supported.<br />1. Call the SET Extended API when no uid present.<br />2. Create a valid storage using set. <br /> 3. Call create api with different length for existing uid.<br /> 4. Call create api to set WRITE_ONCE flag.<br /> 5. Validate data attributes are maintained.<br />6. Remove the uid.<br /> 7. Create valid storage using create api.<br /> 8. Try to change length using create api.<br /> 9. Validate storage is empty.<br /> 10. Again call create api with original parameters.<br />11. Remove the uid.<br /> 12. Check no duplicate entry present.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is 5 <br />                                                                                                                                                                     |
+| test_s012 | Set_extended API's call <br /> with invalid offset                            | psa_ps_set_extended<br />                                                                                | PSA_ERROR_INVALID_ARGUMENT                               | Below Steps will be run only if optional API are not supported.<br />1. Create a valid storage using set.<br /> 2. Set data on first half of buffer.<br /> 3. Try to set data at incorrect offset +length. <br /> 4. Try to set data at incorrect offset.<br />5. Try to set at correct offset but zero length buffer.<br />6. Try to set data at incorrect length and valid offset.<br /> 7. Overwrite the storage using set api.<br /> 8. Validate data is correctly written.<br \> 9. Call set_extended with NULL write buffer.<br /> 10. Overwrite storage using set_extended api.<br /> 11. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is 6 <br />
+| test_s013 | Create and set_extended API call for valid assest                             | psa_ps_set_extended<br /> psa_ps_create                                                                  | PSA_SUCCESS                                              | Below Steps will be run only if optional API are not supported.<br />1.  Create Storage of zero length using create.<br />2. Try to set some data in the storage created.<br />3. Validate the storage attributes.<br /> 4. Remove the storage.<br /> 5. Create a valid storage with non-zero length.<br /> 6. Set data in the buffer.<br /> 7. Validate the data attributes.<br /> 8. Overwrite data using set api.<br /> 9. Validate the data.<br /> 10. Call create api for existing uid with same parameters.<br /> 11. Remove the uid.<br /> 12. Check with set_extended no duplicate uid exists.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 4
+| test_s014 | Create and set_extended API call<br /> when API's not supported               | psa_ps_create<br />psa_ps_set_extended<br />                                                             | PSA_ERROR_NOT_SUPPORTED                                  | Below Steps will be run only if optional API are not supported.<br />1. Create API call should fail.<br />2. Check the UID should not exist.<br /> 3. Create storage using set API.<br /> 4. Try to partially write using set_extended API.<br /> 5. Validate data is not modified.<br /> 6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 5
+| test_s015 | Create API call with<br /> WRITE_ONCE flag                                    | psa_ps_create<br />                                                                                      | PSA_ERROR_NOT_SUPPORTED                                  | Below Step will be run only if optional API are supported.<br />1. Create API call with WRITE_ONCE flag should fail.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 5 <br />
+| test_s016 | Create API call for capacity check                                            | psa_ps_create<br /> psa_ps_set<br /> psa_ps_get_info<br /> psa_ps_set_extended<br /> psa_ps_remove<br /> | PSA_ERROR_ALREADY_EXISTS<br /> PSA_ERROR_STORAGE_FAILURE | Below Steps will be run only if optional API are supported.<br /> 1. Create storage with valid UID and capacity using create<br /> 2. Check create for existing UID fails<br /> 3. Check the attributes of storage are unchanged<br /> 4. Override the storage using SET API<br /> 5. Check the attributes of storage are changed<br /> 6. Accessing old capacity with set_extended API fails<br /> 7. Remove the storage<br /> 8. Create new storage with valid UID/data pair using set API<br /> 9. Check create API for existing UID fails<br /> 10. Remove the storage | UID value used is 5                                                                                                                                                           <br />
+| test_s017 | Partial write check with set extended API                                     | psa_ps_create<br /> psa_ps_set_extended<br /> psa_ps_get_info<br /> psa_ps_remove<br />                  | PSA_ERROR_STORAGE_FAILURE                                | Below Steps will be run only if optional API are supported.<br /> 1. Create storage with valid UID and capacity using create<br /> 2. Set partial data using set extended API<br /> 3. Check set extended API fails for data with gaps<br /> 4. Set full length data using set extended API<br /> 5. Check the valid attributes of storage<br /> 6. Remove the storage<br /> | UID value used is 5 <br />
+| NA        | Fatal error <br />                                                            | NA                                                                                                       | PSA_ERROR_STORAGE_FAILURE                                | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br /> |
+| NA        | Data Corruption  <br />                                                       | NA                                                                                                       | PSA_ERROR_DATA_CORRUPT                                   | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br /> |
+| NA        | Invalid Signature <br />                                                      | NA                                                                                                       | PSA_ERROR_INVALID_SIGNATURE                              | 1. The failure cause will depend on the underlying <br /> platform and vary for each implementation.<br /> It is skipped in current suite  <br /> | NA <br /> |
+
+## License
+Arm PSA test suite is distributed under Apache v2.0 License.
+
+--------------
+
+*Copyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/ff/ipc/suite.cmake b/api-tests/ff/ipc/suite.cmake
index aaaa0f2..d85b4ad 100644
--- a/api-tests/ff/ipc/suite.cmake
+++ b/api-tests/ff/ipc/suite.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -63,6 +63,7 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
 	${PSA_ROOT_DIR}/val/spe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	 ${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
diff --git a/api-tests/ff/ipc/test_i001/test_i001.c b/api-tests/ff/ipc/test_i001/test_i001.c
index be6961d..ef4a498 100644
--- a/api-tests/ff/ipc/test_i001/test_i001.c
+++ b/api-tests/ff/ipc/test_i001/test_i001.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i001.h"
 
-client_test_t test_i001_client_tests_list[] = {
+const client_test_t test_i001_client_tests_list[] = {
     NULL,
     client_test_psa_framework_version,
     client_test_psa_version,
diff --git a/api-tests/ff/ipc/test_i001/test_i001.h b/api-tests/ff/ipc/test_i001/test_i001.h
index 191bb17..37db20b 100644
--- a/api-tests/ff/ipc/test_i001/test_i001.h
+++ b/api-tests/ff/ipc/test_i001/test_i001.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i001_client_tests_list[];
+extern const client_test_t test_i001_client_tests_list[];
 
 int32_t client_test_psa_framework_version(caller_security_t);
 int32_t client_test_psa_version(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i001/test_supp_i001.c b/api-tests/ff/ipc/test_i001/test_supp_i001.c
index 45ffd93..5e93dde 100644
--- a/api-tests/ff/ipc/test_i001/test_supp_i001.c
+++ b/api-tests/ff/ipc/test_i001/test_supp_i001.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_psa_framework_version(void);
 int32_t server_test_psa_version(void);
 
-server_test_t test_i001_server_tests_list[] = {
+const server_test_t test_i001_server_tests_list[] = {
     NULL,
     server_test_psa_framework_version,
     server_test_psa_version,
diff --git a/api-tests/ff/ipc/test_i002/test_i002.c b/api-tests/ff/ipc/test_i002/test_i002.c
index 4177fe7..76e4a1f 100644
--- a/api-tests/ff/ipc/test_i002/test_i002.c
+++ b/api-tests/ff/ipc/test_i002/test_i002.c
@@ -25,7 +25,7 @@
 
 #include "test_i002.h"
 
-client_test_t test_i002_client_tests_list[] = {
+const client_test_t test_i002_client_tests_list[] = {
     NULL,
     client_test_connection_busy_and_reject,
     client_test_accept_and_close_connect,
diff --git a/api-tests/ff/ipc/test_i002/test_i002.h b/api-tests/ff/ipc/test_i002/test_i002.h
index 9f36dca..073fb29 100644
--- a/api-tests/ff/ipc/test_i002/test_i002.h
+++ b/api-tests/ff/ipc/test_i002/test_i002.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,7 +34,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i002_client_tests_list[];
+extern const client_test_t test_i002_client_tests_list[];
 
 int32_t client_test_connection_busy_and_reject(caller_security_t);
 int32_t client_test_accept_and_close_connect(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i002/test_supp_i002.c b/api-tests/ff/ipc/test_i002/test_supp_i002.c
index 6e4ab00..4c14cf1 100644
--- a/api-tests/ff/ipc/test_i002/test_supp_i002.c
+++ b/api-tests/ff/ipc/test_i002/test_supp_i002.c
@@ -35,7 +35,7 @@
 int32_t server_test_psa_block_behave(void);
 int32_t server_test_psa_poll_behave(void);
 
-server_test_t test_i002_server_tests_list[] = {
+const server_test_t test_i002_server_tests_list[] = {
     NULL,
     server_test_connection_busy_and_reject,
     server_test_accept_and_close_connect,
diff --git a/api-tests/ff/ipc/test_i003/test_i003.c b/api-tests/ff/ipc/test_i003/test_i003.c
index d151442..1a61ad6 100644
--- a/api-tests/ff/ipc/test_i003/test_i003.c
+++ b/api-tests/ff/ipc/test_i003/test_i003.c
@@ -26,7 +26,7 @@
 
 #include "test_i003.h"
 
-client_test_t test_i003_client_tests_list[] = {
+const client_test_t test_i003_client_tests_list[] = {
     NULL,
     client_test_zero_length_invec,
     client_test_zero_length_outvec,
diff --git a/api-tests/ff/ipc/test_i003/test_i003.h b/api-tests/ff/ipc/test_i003/test_i003.h
index 1d0971b..bb0497c 100644
--- a/api-tests/ff/ipc/test_i003/test_i003.h
+++ b/api-tests/ff/ipc/test_i003/test_i003.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i003_client_tests_list[];
+extern const client_test_t test_i003_client_tests_list[];
 
 int32_t client_test_psa_set_rhandle(caller_security_t);
 int32_t client_test_call_read_and_skip(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i003/test_supp_i003.c b/api-tests/ff/ipc/test_i003/test_supp_i003.c
index 1043aa7..cd27deb 100644
--- a/api-tests/ff/ipc/test_i003/test_supp_i003.c
+++ b/api-tests/ff/ipc/test_i003/test_supp_i003.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -30,7 +30,7 @@
 int32_t server_test_zero_length_outvec(void);
 int32_t server_test_overlapping_vectors(void);
 
-server_test_t test_i003_server_tests_list[] = {
+const server_test_t test_i003_server_tests_list[] = {
     NULL,
     server_test_zero_length_invec,
     server_test_zero_length_outvec,
diff --git a/api-tests/ff/ipc/test_i004/test_i004.c b/api-tests/ff/ipc/test_i004/test_i004.c
index 4c003d8..7190d25 100644
--- a/api-tests/ff/ipc/test_i004/test_i004.c
+++ b/api-tests/ff/ipc/test_i004/test_i004.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i004.h"
 
-client_test_t test_i004_client_tests_list[] = {
+const client_test_t test_i004_client_tests_list[] = {
     NULL,
     client_test_sid_does_not_exists,
     NULL,
diff --git a/api-tests/ff/ipc/test_i004/test_i004.h b/api-tests/ff/ipc/test_i004/test_i004.h
index 4edf8ea..e864328 100644
--- a/api-tests/ff/ipc/test_i004/test_i004.h
+++ b/api-tests/ff/ipc/test_i004/test_i004.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i004_client_tests_list[];
+extern const client_test_t test_i004_client_tests_list[];
 
 int32_t client_test_sid_does_not_exists(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i004/test_supp_i004.c b/api-tests/ff/ipc/test_i004/test_supp_i004.c
index f769fc9..c4522ef 100644
--- a/api-tests/ff/ipc/test_i004/test_supp_i004.c
+++ b/api-tests/ff/ipc/test_i004/test_supp_i004.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_sid_does_not_exists();
 
-server_test_t test_i004_server_tests_list[] = {
+const server_test_t test_i004_server_tests_list[] = {
     NULL,
     server_test_sid_does_not_exists,
     NULL,
diff --git a/api-tests/ff/ipc/test_i005/test_i005.c b/api-tests/ff/ipc/test_i005/test_i005.c
index db59673..9770359 100644
--- a/api-tests/ff/ipc/test_i005/test_i005.c
+++ b/api-tests/ff/ipc/test_i005/test_i005.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i005.h"
 
-client_test_t test_i005_client_tests_list[] = {
+const client_test_t test_i005_client_tests_list[] = {
     NULL,
     client_test_strict_policy_higher_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i005/test_i005.h b/api-tests/ff/ipc/test_i005/test_i005.h
index 2aca795..3098f1b 100644
--- a/api-tests/ff/ipc/test_i005/test_i005.h
+++ b/api-tests/ff/ipc/test_i005/test_i005.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i005_client_tests_list[];
+extern const client_test_t test_i005_client_tests_list[];
 
 int32_t client_test_strict_policy_higher_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i005/test_supp_i005.c b/api-tests/ff/ipc/test_i005/test_supp_i005.c
index 6c9526c..46a6352 100644
--- a/api-tests/ff/ipc/test_i005/test_supp_i005.c
+++ b/api-tests/ff/ipc/test_i005/test_supp_i005.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_strict_policy_higher_version(void);
 
-server_test_t test_i005_server_tests_list[] = {
+const server_test_t test_i005_server_tests_list[] = {
     NULL,
     server_test_strict_policy_higher_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i006/test_i006.c b/api-tests/ff/ipc/test_i006/test_i006.c
index 7ee0832..0ce2ee0 100644
--- a/api-tests/ff/ipc/test_i006/test_i006.c
+++ b/api-tests/ff/ipc/test_i006/test_i006.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i006.h"
 
-client_test_t test_i006_client_tests_list[] = {
+const client_test_t test_i006_client_tests_list[] = {
     NULL,
     client_test_strict_policy_lower_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i006/test_i006.h b/api-tests/ff/ipc/test_i006/test_i006.h
index c3ba7c7..54c4645 100644
--- a/api-tests/ff/ipc/test_i006/test_i006.h
+++ b/api-tests/ff/ipc/test_i006/test_i006.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i006_client_tests_list[];
+extern const client_test_t test_i006_client_tests_list[];
 
 int32_t client_test_strict_policy_lower_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i006/test_supp_i006.c b/api-tests/ff/ipc/test_i006/test_supp_i006.c
index 23ced7e..efd1a53 100644
--- a/api-tests/ff/ipc/test_i006/test_supp_i006.c
+++ b/api-tests/ff/ipc/test_i006/test_supp_i006.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_strict_policy_lower_version(void);
 
-server_test_t test_i006_server_tests_list[] = {
+const server_test_t test_i006_server_tests_list[] = {
     NULL,
     server_test_strict_policy_lower_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i007/test_i007.c b/api-tests/ff/ipc/test_i007/test_i007.c
index cbbbee5..dd198ce 100644
--- a/api-tests/ff/ipc/test_i007/test_i007.c
+++ b/api-tests/ff/ipc/test_i007/test_i007.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i007.h"
 
-client_test_t test_i007_client_tests_list[] = {
+const client_test_t test_i007_client_tests_list[] = {
     NULL,
     client_test_relax_policy_higher_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i007/test_i007.h b/api-tests/ff/ipc/test_i007/test_i007.h
index 7929b3a..ceb44f7 100644
--- a/api-tests/ff/ipc/test_i007/test_i007.h
+++ b/api-tests/ff/ipc/test_i007/test_i007.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i007_client_tests_list[];
+extern const client_test_t test_i007_client_tests_list[];
 
 int32_t client_test_relax_policy_higher_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i007/test_supp_i007.c b/api-tests/ff/ipc/test_i007/test_supp_i007.c
index 96a200e..d6887ce 100644
--- a/api-tests/ff/ipc/test_i007/test_supp_i007.c
+++ b/api-tests/ff/ipc/test_i007/test_supp_i007.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_relax_policy_higher_version(void);
 
-server_test_t test_i007_server_tests_list[] = {
+const server_test_t test_i007_server_tests_list[] = {
     NULL,
     server_test_relax_policy_higher_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i008/test_i008.c b/api-tests/ff/ipc/test_i008/test_i008.c
index d13a4b3..f7fdf70 100644
--- a/api-tests/ff/ipc/test_i008/test_i008.c
+++ b/api-tests/ff/ipc/test_i008/test_i008.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i008.h"
 
-client_test_t test_i008_client_tests_list[] = {
+const client_test_t test_i008_client_tests_list[] = {
     NULL,
     client_test_secure_access_only_connection,
     NULL,
diff --git a/api-tests/ff/ipc/test_i008/test_i008.h b/api-tests/ff/ipc/test_i008/test_i008.h
index ee762ed..c8ae362 100644
--- a/api-tests/ff/ipc/test_i008/test_i008.h
+++ b/api-tests/ff/ipc/test_i008/test_i008.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i008_client_tests_list[];
+extern const client_test_t test_i008_client_tests_list[];
 
 int32_t client_test_secure_access_only_connection(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i008/test_supp_i008.c b/api-tests/ff/ipc/test_i008/test_supp_i008.c
index df13c4c..397dd35 100644
--- a/api-tests/ff/ipc/test_i008/test_supp_i008.c
+++ b/api-tests/ff/ipc/test_i008/test_supp_i008.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_secure_access_only_connection(void);
 
-server_test_t test_i008_server_tests_list[] = {
+const server_test_t test_i008_server_tests_list[] = {
     NULL,
     server_test_secure_access_only_connection,
     NULL,
diff --git a/api-tests/ff/ipc/test_i009/test_i009.c b/api-tests/ff/ipc/test_i009/test_i009.c
index cd53082..3c1ba45 100644
--- a/api-tests/ff/ipc/test_i009/test_i009.c
+++ b/api-tests/ff/ipc/test_i009/test_i009.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i009.h"
 
-client_test_t test_i009_client_tests_list[] = {
+const client_test_t test_i009_client_tests_list[] = {
     NULL,
     client_test_unspecified_dependent_sid,
     NULL,
diff --git a/api-tests/ff/ipc/test_i009/test_i009.h b/api-tests/ff/ipc/test_i009/test_i009.h
index 35d7e15..b2e4d0c 100644
--- a/api-tests/ff/ipc/test_i009/test_i009.h
+++ b/api-tests/ff/ipc/test_i009/test_i009.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i009_client_tests_list[];
+extern const client_test_t test_i009_client_tests_list[];
 
 int32_t client_test_unspecified_dependent_sid(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i009/test_supp_i009.c b/api-tests/ff/ipc/test_i009/test_supp_i009.c
index c6711bc..9cd483d 100644
--- a/api-tests/ff/ipc/test_i009/test_supp_i009.c
+++ b/api-tests/ff/ipc/test_i009/test_supp_i009.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_unspecified_dependent_sid(void);
 
-server_test_t test_i009_server_tests_list[] = {
+const server_test_t test_i009_server_tests_list[] = {
     NULL,
     server_test_unspecified_dependent_sid,
     NULL,
diff --git a/api-tests/ff/ipc/test_i010/test_i010.c b/api-tests/ff/ipc/test_i010/test_i010.c
index 77233b6..8a380c3 100644
--- a/api-tests/ff/ipc/test_i010/test_i010.c
+++ b/api-tests/ff/ipc/test_i010/test_i010.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i010.h"
 
-client_test_t test_i010_client_tests_list[] = {
+const client_test_t test_i010_client_tests_list[] = {
     NULL,
     client_test_unspecified_policy_with_higher_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i010/test_i010.h b/api-tests/ff/ipc/test_i010/test_i010.h
index e5dc30d..5fb9d63 100644
--- a/api-tests/ff/ipc/test_i010/test_i010.h
+++ b/api-tests/ff/ipc/test_i010/test_i010.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i010_client_tests_list[];
+extern const client_test_t test_i010_client_tests_list[];
 
 int32_t client_test_unspecified_policy_with_higher_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i010/test_supp_i010.c b/api-tests/ff/ipc/test_i010/test_supp_i010.c
index 0429ea5..8901876 100644
--- a/api-tests/ff/ipc/test_i010/test_supp_i010.c
+++ b/api-tests/ff/ipc/test_i010/test_supp_i010.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_unspecified_policy_with_higher_version(void);
 
-server_test_t test_i010_server_tests_list[] = {
+const server_test_t test_i010_server_tests_list[] = {
     NULL,
     server_test_unspecified_policy_with_higher_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i011/test_i011.c b/api-tests/ff/ipc/test_i011/test_i011.c
index e0996aa..9f0e2fb 100644
--- a/api-tests/ff/ipc/test_i011/test_i011.c
+++ b/api-tests/ff/ipc/test_i011/test_i011.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i011.h"
 
-client_test_t test_i011_client_tests_list[] = {
+const client_test_t test_i011_client_tests_list[] = {
     NULL,
     client_test_unspecified_policy_with_lower_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i011/test_i011.h b/api-tests/ff/ipc/test_i011/test_i011.h
index db4436d..218303a 100644
--- a/api-tests/ff/ipc/test_i011/test_i011.h
+++ b/api-tests/ff/ipc/test_i011/test_i011.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i011_client_tests_list[];
+extern const client_test_t test_i011_client_tests_list[];
 
 int32_t client_test_unspecified_policy_with_lower_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i011/test_supp_i011.c b/api-tests/ff/ipc/test_i011/test_supp_i011.c
index 97e05df..ddfcdb7 100644
--- a/api-tests/ff/ipc/test_i011/test_supp_i011.c
+++ b/api-tests/ff/ipc/test_i011/test_supp_i011.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_unspecified_policy_with_lower_version(void);
 
-server_test_t test_i011_server_tests_list[] = {
+const server_test_t test_i011_server_tests_list[] = {
     NULL,
     server_test_unspecified_policy_with_lower_version,
     NULL,
diff --git a/api-tests/ff/ipc/test_i012/test_i012.c b/api-tests/ff/ipc/test_i012/test_i012.c
index 0724ced..38de1ed 100644
--- a/api-tests/ff/ipc/test_i012/test_i012.c
+++ b/api-tests/ff/ipc/test_i012/test_i012.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i012.h"
 
-client_test_t test_i012_client_tests_list[] = {
+const client_test_t test_i012_client_tests_list[] = {
     NULL,
     client_test_psa_close_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i012/test_i012.h b/api-tests/ff/ipc/test_i012/test_i012.h
index c8b269f..599817b 100644
--- a/api-tests/ff/ipc/test_i012/test_i012.h
+++ b/api-tests/ff/ipc/test_i012/test_i012.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i012_client_tests_list[];
+extern const client_test_t test_i012_client_tests_list[];
 
 int32_t client_test_psa_close_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i012/test_supp_i012.c b/api-tests/ff/ipc/test_i012/test_supp_i012.c
index 0de30cf..4a3c88e 100644
--- a/api-tests/ff/ipc/test_i012/test_supp_i012.c
+++ b/api-tests/ff/ipc/test_i012/test_supp_i012.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_close_with_invalid_handle(void);
 
-server_test_t test_i012_server_tests_list[] = {
+const server_test_t test_i012_server_tests_list[] = {
     NULL,
     server_test_psa_close_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i013/test_i013.c b/api-tests/ff/ipc/test_i013/test_i013.c
index db11275..61c4e25 100644
--- a/api-tests/ff/ipc/test_i013/test_i013.c
+++ b/api-tests/ff/ipc/test_i013/test_i013.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i013.h"
 
-client_test_t test_i013_client_tests_list[] = {
+const client_test_t test_i013_client_tests_list[] = {
     NULL,
     client_test_psa_get_with_more_than_one_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i013/test_i013.h b/api-tests/ff/ipc/test_i013/test_i013.h
index efcd988..3199d1c 100644
--- a/api-tests/ff/ipc/test_i013/test_i013.h
+++ b/api-tests/ff/ipc/test_i013/test_i013.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i013_client_tests_list[];
+extern const client_test_t test_i013_client_tests_list[];
 
 int32_t client_test_psa_get_with_more_than_one_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i013/test_supp_i013.c b/api-tests/ff/ipc/test_i013/test_supp_i013.c
index 640d71f..024d964 100644
--- a/api-tests/ff/ipc/test_i013/test_supp_i013.c
+++ b/api-tests/ff/ipc/test_i013/test_supp_i013.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_get_with_more_than_one_signal(void);
 
-server_test_t test_i013_server_tests_list[] = {
+const server_test_t test_i013_server_tests_list[] = {
     NULL,
     server_test_psa_get_with_more_than_one_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i014/test_i014.c b/api-tests/ff/ipc/test_i014/test_i014.c
index b6c260a..361fb3e 100644
--- a/api-tests/ff/ipc/test_i014/test_i014.c
+++ b/api-tests/ff/ipc/test_i014/test_i014.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i014.h"
 
-client_test_t test_i014_client_tests_list[] = {
+const client_test_t test_i014_client_tests_list[] = {
     NULL,
     client_test_psa_get_called_twice,
     NULL,
diff --git a/api-tests/ff/ipc/test_i014/test_i014.h b/api-tests/ff/ipc/test_i014/test_i014.h
index 0825f26..e372d82 100644
--- a/api-tests/ff/ipc/test_i014/test_i014.h
+++ b/api-tests/ff/ipc/test_i014/test_i014.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i014_client_tests_list[];
+extern const client_test_t test_i014_client_tests_list[];
 
 int32_t client_test_psa_get_called_twice(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i014/test_supp_i014.c b/api-tests/ff/ipc/test_i014/test_supp_i014.c
index ab2e938..dc8aeaa 100644
--- a/api-tests/ff/ipc/test_i014/test_supp_i014.c
+++ b/api-tests/ff/ipc/test_i014/test_supp_i014.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_get_called_twice(void);
 
-server_test_t test_i014_server_tests_list[] = {
+const server_test_t test_i014_server_tests_list[] = {
     NULL,
     server_test_psa_get_called_twice,
     NULL,
diff --git a/api-tests/ff/ipc/test_i015/test_i015.c b/api-tests/ff/ipc/test_i015/test_i015.c
index a23157c..8c13c24 100644
--- a/api-tests/ff/ipc/test_i015/test_i015.c
+++ b/api-tests/ff/ipc/test_i015/test_i015.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i015.h"
 
-client_test_t test_i015_client_tests_list[] = {
+const client_test_t test_i015_client_tests_list[] = {
     NULL,
     client_test_psa_get_with_non_rot_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i015/test_i015.h b/api-tests/ff/ipc/test_i015/test_i015.h
index b74f6c3..9d11257 100644
--- a/api-tests/ff/ipc/test_i015/test_i015.h
+++ b/api-tests/ff/ipc/test_i015/test_i015.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i015_client_tests_list[];
+extern const client_test_t test_i015_client_tests_list[];
 
 int32_t client_test_psa_get_with_non_rot_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i015/test_supp_i015.c b/api-tests/ff/ipc/test_i015/test_supp_i015.c
index 6b24b66..a68d467 100644
--- a/api-tests/ff/ipc/test_i015/test_supp_i015.c
+++ b/api-tests/ff/ipc/test_i015/test_supp_i015.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_get_with_non_rot_signal(void);
 
-server_test_t test_i015_server_tests_list[] = {
+const server_test_t test_i015_server_tests_list[] = {
     NULL,
     server_test_psa_get_with_non_rot_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i016/test_i016.c b/api-tests/ff/ipc/test_i016/test_i016.c
index cec06b9..e1dcc91 100644
--- a/api-tests/ff/ipc/test_i016/test_i016.c
+++ b/api-tests/ff/ipc/test_i016/test_i016.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i016.h"
 
-client_test_t test_i016_client_tests_list[] = {
+const client_test_t test_i016_client_tests_list[] = {
     NULL,
     client_test_psa_get_with_unasserted_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i016/test_i016.h b/api-tests/ff/ipc/test_i016/test_i016.h
index 16c265d..790b869 100644
--- a/api-tests/ff/ipc/test_i016/test_i016.h
+++ b/api-tests/ff/ipc/test_i016/test_i016.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i016_client_tests_list[];
+extern const client_test_t test_i016_client_tests_list[];
 
 int32_t client_test_psa_get_with_unasserted_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i016/test_supp_i016.c b/api-tests/ff/ipc/test_i016/test_supp_i016.c
index 5818ebd..f4a10a4 100644
--- a/api-tests/ff/ipc/test_i016/test_supp_i016.c
+++ b/api-tests/ff/ipc/test_i016/test_supp_i016.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_get_with_unasserted_signal(void);
 
-server_test_t test_i016_server_tests_list[] = {
+const server_test_t test_i016_server_tests_list[] = {
     NULL,
     server_test_psa_get_with_unasserted_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i017/test_i017.c b/api-tests/ff/ipc/test_i017/test_i017.c
index 4823c46..ca9bf59 100644
--- a/api-tests/ff/ipc/test_i017/test_i017.c
+++ b/api-tests/ff/ipc/test_i017/test_i017.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i017.h"
 
-client_test_t test_i017_client_tests_list[] = {
+const client_test_t test_i017_client_tests_list[] = {
     NULL,
     client_test_partition_calling_its_own_rot_service,
     NULL,
diff --git a/api-tests/ff/ipc/test_i017/test_i017.h b/api-tests/ff/ipc/test_i017/test_i017.h
index 57697d8..db6c487 100644
--- a/api-tests/ff/ipc/test_i017/test_i017.h
+++ b/api-tests/ff/ipc/test_i017/test_i017.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i017_client_tests_list[];
+extern const client_test_t test_i017_client_tests_list[];
 
 int32_t client_test_partition_calling_its_own_rot_service(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i017/test_supp_i017.c b/api-tests/ff/ipc/test_i017/test_supp_i017.c
index 63057a5..c68b0de 100644
--- a/api-tests/ff/ipc/test_i017/test_supp_i017.c
+++ b/api-tests/ff/ipc/test_i017/test_supp_i017.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_partition_calling_its_own_rot_service(void);
 
-server_test_t test_i017_server_tests_list[] = {
+const server_test_t test_i017_server_tests_list[] = {
     NULL,
     server_test_partition_calling_its_own_rot_service,
     NULL,
diff --git a/api-tests/ff/ipc/test_i018/test_i018.c b/api-tests/ff/ipc/test_i018/test_i018.c
index fa40d5f..c7d8467 100644
--- a/api-tests/ff/ipc/test_i018/test_i018.c
+++ b/api-tests/ff/ipc/test_i018/test_i018.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i018.h"
 
-client_test_t test_i018_client_tests_list[] = {
+const client_test_t test_i018_client_tests_list[] = {
     NULL,
     client_test_psa_set_rhandle_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i018/test_i018.h b/api-tests/ff/ipc/test_i018/test_i018.h
index 9bf6c7f..6414c4b 100644
--- a/api-tests/ff/ipc/test_i018/test_i018.h
+++ b/api-tests/ff/ipc/test_i018/test_i018.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i018_client_tests_list[];
+extern const client_test_t test_i018_client_tests_list[];
 
 int32_t client_test_psa_set_rhandle_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i018/test_supp_i018.c b/api-tests/ff/ipc/test_i018/test_supp_i018.c
index 6a7afe4..04f115d 100644
--- a/api-tests/ff/ipc/test_i018/test_supp_i018.c
+++ b/api-tests/ff/ipc/test_i018/test_supp_i018.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_set_rhandle_with_invalid_handle(void);
 
-server_test_t test_i018_server_tests_list[] = {
+const server_test_t test_i018_server_tests_list[] = {
     NULL,
     server_test_psa_set_rhandle_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i019/test_i019.c b/api-tests/ff/ipc/test_i019/test_i019.c
index 941a82c..6b5c6a8 100644
--- a/api-tests/ff/ipc/test_i019/test_i019.c
+++ b/api-tests/ff/ipc/test_i019/test_i019.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i019.h"
 
-client_test_t test_i019_client_tests_list[] = {
+const client_test_t test_i019_client_tests_list[] = {
     NULL,
     client_test_psa_set_rhandle_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i019/test_i019.h b/api-tests/ff/ipc/test_i019/test_i019.h
index 9e1f146..a810e28 100644
--- a/api-tests/ff/ipc/test_i019/test_i019.h
+++ b/api-tests/ff/ipc/test_i019/test_i019.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i019_client_tests_list[];
+extern const client_test_t test_i019_client_tests_list[];
 
 int32_t client_test_psa_set_rhandle_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i019/test_supp_i019.c b/api-tests/ff/ipc/test_i019/test_supp_i019.c
index 5e4362c..77cd0dd 100644
--- a/api-tests/ff/ipc/test_i019/test_supp_i019.c
+++ b/api-tests/ff/ipc/test_i019/test_supp_i019.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_set_rhandle_with_null_handle(void);
 
-server_test_t test_i019_server_tests_list[] = {
+const server_test_t test_i019_server_tests_list[] = {
     NULL,
     server_test_psa_set_rhandle_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i020/test_i020.c b/api-tests/ff/ipc/test_i020/test_i020.c
index 7f3dbb5..bf46bfa 100644
--- a/api-tests/ff/ipc/test_i020/test_i020.c
+++ b/api-tests/ff/ipc/test_i020/test_i020.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i020.h"
 
-client_test_t test_i020_client_tests_list[] = {
+const client_test_t test_i020_client_tests_list[] = {
     NULL,
     client_test_psa_reply_with_invalid_connect_status_code,
     NULL,
diff --git a/api-tests/ff/ipc/test_i020/test_i020.h b/api-tests/ff/ipc/test_i020/test_i020.h
index 5c820fc..a70d309 100644
--- a/api-tests/ff/ipc/test_i020/test_i020.h
+++ b/api-tests/ff/ipc/test_i020/test_i020.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i020_client_tests_list[];
+extern const client_test_t test_i020_client_tests_list[];
 
 int32_t client_test_psa_reply_with_invalid_connect_status_code(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i020/test_supp_i020.c b/api-tests/ff/ipc/test_i020/test_supp_i020.c
index 4bbc184..6d5e77a 100644
--- a/api-tests/ff/ipc/test_i020/test_supp_i020.c
+++ b/api-tests/ff/ipc/test_i020/test_supp_i020.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_reply_with_invalid_connect_status_code(void);
 
-server_test_t test_i020_server_tests_list[] = {
+const server_test_t test_i020_server_tests_list[] = {
     NULL,
     server_test_psa_reply_with_invalid_connect_status_code,
     NULL,
diff --git a/api-tests/ff/ipc/test_i021/test_i021.c b/api-tests/ff/ipc/test_i021/test_i021.c
index cdb2107..788917c 100644
--- a/api-tests/ff/ipc/test_i021/test_i021.c
+++ b/api-tests/ff/ipc/test_i021/test_i021.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i021.h"
 
-client_test_t test_i021_client_tests_list[] = {
+const client_test_t test_i021_client_tests_list[] = {
     NULL,
     client_test_irq_routing,
     NULL,
diff --git a/api-tests/ff/ipc/test_i021/test_i021.h b/api-tests/ff/ipc/test_i021/test_i021.h
index d99b1d7..da03fa2 100644
--- a/api-tests/ff/ipc/test_i021/test_i021.h
+++ b/api-tests/ff/ipc/test_i021/test_i021.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i021_client_tests_list[];
+extern const client_test_t test_i021_client_tests_list[];
 
 int32_t client_test_irq_routing(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i021/test_supp_i021.c b/api-tests/ff/ipc/test_i021/test_supp_i021.c
index 1877450..0467112 100644
--- a/api-tests/ff/ipc/test_i021/test_supp_i021.c
+++ b/api-tests/ff/ipc/test_i021/test_supp_i021.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_irq_routing(void);
 
-server_test_t test_i021_server_tests_list[] = {
+const server_test_t test_i021_server_tests_list[] = {
     NULL,
     server_test_irq_routing,
     NULL,
diff --git a/api-tests/ff/ipc/test_i022/test_i022.c b/api-tests/ff/ipc/test_i022/test_i022.c
index 366d944..59cd0d0 100644
--- a/api-tests/ff/ipc/test_i022/test_i022.c
+++ b/api-tests/ff/ipc/test_i022/test_i022.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i022.h"
 
-client_test_t test_i022_client_tests_list[] = {
+const client_test_t test_i022_client_tests_list[] = {
     NULL,
     client_test_psa_reply_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i022/test_i022.h b/api-tests/ff/ipc/test_i022/test_i022.h
index ad0e570..e5bb5b6 100644
--- a/api-tests/ff/ipc/test_i022/test_i022.h
+++ b/api-tests/ff/ipc/test_i022/test_i022.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i022_client_tests_list[];
+extern const client_test_t test_i022_client_tests_list[];
 
 int32_t client_test_psa_reply_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i022/test_supp_i022.c b/api-tests/ff/ipc/test_i022/test_supp_i022.c
index f952610..ce4b7ab 100644
--- a/api-tests/ff/ipc/test_i022/test_supp_i022.c
+++ b/api-tests/ff/ipc/test_i022/test_supp_i022.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_reply_with_invalid_handle(void);
 
-server_test_t test_i022_server_tests_list[] = {
+const server_test_t test_i022_server_tests_list[] = {
     NULL,
     server_test_psa_reply_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i023/test_i023.c b/api-tests/ff/ipc/test_i023/test_i023.c
index 6e0cff1..60e6ac2 100644
--- a/api-tests/ff/ipc/test_i023/test_i023.c
+++ b/api-tests/ff/ipc/test_i023/test_i023.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i023.h"
 
-client_test_t test_i023_client_tests_list[] = {
+const client_test_t test_i023_client_tests_list[] = {
     NULL,
     client_test_psa_reply_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i023/test_i023.h b/api-tests/ff/ipc/test_i023/test_i023.h
index 2bd6660..5e2e88f 100644
--- a/api-tests/ff/ipc/test_i023/test_i023.h
+++ b/api-tests/ff/ipc/test_i023/test_i023.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i023_client_tests_list[];
+extern const client_test_t test_i023_client_tests_list[];
 
 int32_t client_test_psa_reply_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i023/test_supp_i023.c b/api-tests/ff/ipc/test_i023/test_supp_i023.c
index 11d871f..02cebf9 100644
--- a/api-tests/ff/ipc/test_i023/test_supp_i023.c
+++ b/api-tests/ff/ipc/test_i023/test_supp_i023.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_reply_with_null_handle(void);
 
-server_test_t test_i023_server_tests_list[] = {
+const server_test_t test_i023_server_tests_list[] = {
     NULL,
     server_test_psa_reply_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i024/test_i024.c b/api-tests/ff/ipc/test_i024/test_i024.c
index 40de681..d35f382 100644
--- a/api-tests/ff/ipc/test_i024/test_i024.c
+++ b/api-tests/ff/ipc/test_i024/test_i024.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i024.h"
 
-client_test_t test_i024_client_tests_list[] = {
+const client_test_t test_i024_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i024/test_i024.h b/api-tests/ff/ipc/test_i024/test_i024.h
index 3015932..811de9e 100644
--- a/api-tests/ff/ipc/test_i024/test_i024.h
+++ b/api-tests/ff/ipc/test_i024/test_i024.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i024_client_tests_list[];
+extern const client_test_t test_i024_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i024/test_supp_i024.c b/api-tests/ff/ipc/test_i024/test_supp_i024.c
index 67b4fc9..b766875 100644
--- a/api-tests/ff/ipc/test_i024/test_supp_i024.c
+++ b/api-tests/ff/ipc/test_i024/test_supp_i024.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_handle(void);
 
-server_test_t test_i024_server_tests_list[] = {
+const server_test_t test_i024_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i025/test_i025.c b/api-tests/ff/ipc/test_i025/test_i025.c
index da20375..661ccc7 100644
--- a/api-tests/ff/ipc/test_i025/test_i025.c
+++ b/api-tests/ff/ipc/test_i025/test_i025.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i025.h"
 
-client_test_t test_i025_client_tests_list[] = {
+const client_test_t test_i025_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i025/test_i025.h b/api-tests/ff/ipc/test_i025/test_i025.h
index eaec5a1..0726bf0 100644
--- a/api-tests/ff/ipc/test_i025/test_i025.h
+++ b/api-tests/ff/ipc/test_i025/test_i025.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i025_client_tests_list[];
+extern const client_test_t test_i025_client_tests_list[];
 
 int32_t client_test_psa_call_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i025/test_supp_i025.c b/api-tests/ff/ipc/test_i025/test_supp_i025.c
index 19d70e8..acc502d 100644
--- a/api-tests/ff/ipc/test_i025/test_supp_i025.c
+++ b/api-tests/ff/ipc/test_i025/test_supp_i025.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_null_handle(void);
 
-server_test_t test_i025_server_tests_list[] = {
+const server_test_t test_i025_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i026/test_i026.c b/api-tests/ff/ipc/test_i026/test_i026.c
index 0b186e9..a1cb20a 100644
--- a/api-tests/ff/ipc/test_i026/test_i026.c
+++ b/api-tests/ff/ipc/test_i026/test_i026.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i026.h"
 
-client_test_t test_i026_client_tests_list[] = {
+const client_test_t test_i026_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_iovec_more_than_max_limit,
     NULL,
diff --git a/api-tests/ff/ipc/test_i026/test_i026.h b/api-tests/ff/ipc/test_i026/test_i026.h
index 98eb2fe..3ee9b5f 100644
--- a/api-tests/ff/ipc/test_i026/test_i026.h
+++ b/api-tests/ff/ipc/test_i026/test_i026.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i026_client_tests_list[];
+extern const client_test_t test_i026_client_tests_list[];
 
 int32_t client_test_psa_call_with_iovec_more_than_max_limit(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i026/test_supp_i026.c b/api-tests/ff/ipc/test_i026/test_supp_i026.c
index dc5b829..142b910 100644
--- a/api-tests/ff/ipc/test_i026/test_supp_i026.c
+++ b/api-tests/ff/ipc/test_i026/test_supp_i026.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_iovec_more_than_max_limit();
 
-server_test_t test_i026_server_tests_list[] = {
+const server_test_t test_i026_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_iovec_more_than_max_limit,
     NULL,
diff --git a/api-tests/ff/ipc/test_i027/test_i027.c b/api-tests/ff/ipc/test_i027/test_i027.c
index b346fa7..9b74a58 100644
--- a/api-tests/ff/ipc/test_i027/test_i027.c
+++ b/api-tests/ff/ipc/test_i027/test_i027.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i027.h"
 
-client_test_t test_i027_client_tests_list[] = {
+const client_test_t test_i027_client_tests_list[] = {
     NULL,
     client_test_psa_drop_connection,
     NULL,
diff --git a/api-tests/ff/ipc/test_i027/test_i027.h b/api-tests/ff/ipc/test_i027/test_i027.h
index 9a679ea..cdaa5d2 100644
--- a/api-tests/ff/ipc/test_i027/test_i027.h
+++ b/api-tests/ff/ipc/test_i027/test_i027.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i027_client_tests_list[];
+extern const client_test_t test_i027_client_tests_list[];
 
 int32_t client_test_psa_drop_connection(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i027/test_supp_i027.c b/api-tests/ff/ipc/test_i027/test_supp_i027.c
index fe5374b..4e53da0 100644
--- a/api-tests/ff/ipc/test_i027/test_supp_i027.c
+++ b/api-tests/ff/ipc/test_i027/test_supp_i027.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_drop_connection(void);
 
-server_test_t test_i027_server_tests_list[] = {
+const server_test_t test_i027_server_tests_list[] = {
     NULL,
     server_test_psa_drop_connection,
     NULL,
diff --git a/api-tests/ff/ipc/test_i028/test_i028.c b/api-tests/ff/ipc/test_i028/test_i028.c
index 7e2f112..1f70117 100644
--- a/api-tests/ff/ipc/test_i028/test_i028.c
+++ b/api-tests/ff/ipc/test_i028/test_i028.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i028.h"
 
-client_test_t test_i028_client_tests_list[] = {
+const client_test_t test_i028_client_tests_list[] = {
     NULL,
     client_test_psa_read_at_ipc_connect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i028/test_i028.h b/api-tests/ff/ipc/test_i028/test_i028.h
index f958ebb..6a7982e 100644
--- a/api-tests/ff/ipc/test_i028/test_i028.h
+++ b/api-tests/ff/ipc/test_i028/test_i028.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i028_client_tests_list[];
+extern const client_test_t test_i028_client_tests_list[];
 
 int32_t client_test_psa_read_at_ipc_connect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i028/test_supp_i028.c b/api-tests/ff/ipc/test_i028/test_supp_i028.c
index 02a0023..5404df4 100644
--- a/api-tests/ff/ipc/test_i028/test_supp_i028.c
+++ b/api-tests/ff/ipc/test_i028/test_supp_i028.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_read_at_ipc_connect();
 
-server_test_t test_i028_server_tests_list[] = {
+const server_test_t test_i028_server_tests_list[] = {
     NULL,
     server_test_psa_read_at_ipc_connect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i029/test_i029.c b/api-tests/ff/ipc/test_i029/test_i029.c
index d208bc8..1f15e7c 100644
--- a/api-tests/ff/ipc/test_i029/test_i029.c
+++ b/api-tests/ff/ipc/test_i029/test_i029.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i029.h"
 
-client_test_t test_i029_client_tests_list[] = {
+const client_test_t test_i029_client_tests_list[] = {
     NULL,
     client_test_psa_read_at_ipc_disconnect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i029/test_i029.h b/api-tests/ff/ipc/test_i029/test_i029.h
index bc21184..3f926e3 100644
--- a/api-tests/ff/ipc/test_i029/test_i029.h
+++ b/api-tests/ff/ipc/test_i029/test_i029.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i029_client_tests_list[];
+extern const client_test_t test_i029_client_tests_list[];
 
 int32_t client_test_psa_read_at_ipc_disconnect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i029/test_supp_i029.c b/api-tests/ff/ipc/test_i029/test_supp_i029.c
index ff9caf9..34adaf2 100644
--- a/api-tests/ff/ipc/test_i029/test_supp_i029.c
+++ b/api-tests/ff/ipc/test_i029/test_supp_i029.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_read_at_ipc_disconnect(void);
 
-server_test_t test_i029_server_tests_list[] = {
+const server_test_t test_i029_server_tests_list[] = {
     NULL,
     server_test_psa_read_at_ipc_disconnect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i030/test_i030.c b/api-tests/ff/ipc/test_i030/test_i030.c
index 922f131..ff73a91 100644
--- a/api-tests/ff/ipc/test_i030/test_i030.c
+++ b/api-tests/ff/ipc/test_i030/test_i030.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i030.h"
 
-client_test_t test_i030_client_tests_list[] = {
+const client_test_t test_i030_client_tests_list[] = {
     NULL,
     client_test_psa_read_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i030/test_i030.h b/api-tests/ff/ipc/test_i030/test_i030.h
index c5ec886..f971dad 100644
--- a/api-tests/ff/ipc/test_i030/test_i030.h
+++ b/api-tests/ff/ipc/test_i030/test_i030.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i030_client_tests_list[];
+extern const client_test_t test_i030_client_tests_list[];
 
 int32_t client_test_psa_read_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i030/test_supp_i030.c b/api-tests/ff/ipc/test_i030/test_supp_i030.c
index 1f46e69..5a74021 100644
--- a/api-tests/ff/ipc/test_i030/test_supp_i030.c
+++ b/api-tests/ff/ipc/test_i030/test_supp_i030.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_read_with_null_handle(void);
 
-server_test_t test_i030_server_tests_list[] = {
+const server_test_t test_i030_server_tests_list[] = {
     NULL,
     server_test_psa_read_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i031/test_i031.c b/api-tests/ff/ipc/test_i031/test_i031.c
index 25b6975..f4ab03a 100644
--- a/api-tests/ff/ipc/test_i031/test_i031.c
+++ b/api-tests/ff/ipc/test_i031/test_i031.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i031.h"
 
-client_test_t test_i031_client_tests_list[] = {
+const client_test_t test_i031_client_tests_list[] = {
     NULL,
     client_test_psa_read_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i031/test_i031.h b/api-tests/ff/ipc/test_i031/test_i031.h
index 849197f..8c869dc 100644
--- a/api-tests/ff/ipc/test_i031/test_i031.h
+++ b/api-tests/ff/ipc/test_i031/test_i031.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i031_client_tests_list[];
+extern const client_test_t test_i031_client_tests_list[];
 
 int32_t client_test_psa_read_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i031/test_supp_i031.c b/api-tests/ff/ipc/test_i031/test_supp_i031.c
index 94f7389..62af645 100644
--- a/api-tests/ff/ipc/test_i031/test_supp_i031.c
+++ b/api-tests/ff/ipc/test_i031/test_supp_i031.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_read_with_invalid_handle(void);
 
-server_test_t test_i031_server_tests_list[] = {
+const server_test_t test_i031_server_tests_list[] = {
     NULL,
     server_test_psa_read_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i032/test_i032.c b/api-tests/ff/ipc/test_i032/test_i032.c
index b790271..e48b425 100644
--- a/api-tests/ff/ipc/test_i032/test_i032.c
+++ b/api-tests/ff/ipc/test_i032/test_i032.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i032.h"
 
-client_test_t test_i032_client_tests_list[] = {
+const client_test_t test_i032_client_tests_list[] = {
     NULL,
     client_test_psa_read_with_invec_equal_to_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i032/test_i032.h b/api-tests/ff/ipc/test_i032/test_i032.h
index 327be5a..96e8fac 100644
--- a/api-tests/ff/ipc/test_i032/test_i032.h
+++ b/api-tests/ff/ipc/test_i032/test_i032.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i032_client_tests_list[];
+extern const client_test_t test_i032_client_tests_list[];
 
 int32_t client_test_psa_read_with_invec_equal_to_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i032/test_supp_i032.c b/api-tests/ff/ipc/test_i032/test_supp_i032.c
index 2077133..fe94496 100644
--- a/api-tests/ff/ipc/test_i032/test_supp_i032.c
+++ b/api-tests/ff/ipc/test_i032/test_supp_i032.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_read_with_invec_equal_to_max_iovec(void);
 
-server_test_t test_i032_server_tests_list[] = {
+const server_test_t test_i032_server_tests_list[] = {
     NULL,
     server_test_psa_read_with_invec_equal_to_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i033/test_i033.c b/api-tests/ff/ipc/test_i033/test_i033.c
index 79cad60..f1ba08a 100644
--- a/api-tests/ff/ipc/test_i033/test_i033.c
+++ b/api-tests/ff/ipc/test_i033/test_i033.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i033.h"
 
-client_test_t test_i033_client_tests_list[] = {
+const client_test_t test_i033_client_tests_list[] = {
     NULL,
     client_test_psa_read_with_invec_greater_than_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i033/test_i033.h b/api-tests/ff/ipc/test_i033/test_i033.h
index 3ee5558..67ee597 100644
--- a/api-tests/ff/ipc/test_i033/test_i033.h
+++ b/api-tests/ff/ipc/test_i033/test_i033.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i033_client_tests_list[];
+extern const client_test_t test_i033_client_tests_list[];
 
 int32_t client_test_psa_read_with_invec_greater_than_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i033/test_supp_i033.c b/api-tests/ff/ipc/test_i033/test_supp_i033.c
index 676c1cd..789de3d 100644
--- a/api-tests/ff/ipc/test_i033/test_supp_i033.c
+++ b/api-tests/ff/ipc/test_i033/test_supp_i033.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_read_with_invec_greater_than_max_iovec(void);
 
-server_test_t test_i033_server_tests_list[] = {
+const server_test_t test_i033_server_tests_list[] = {
     NULL,
     server_test_psa_read_with_invec_greater_than_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i034/test_i034.c b/api-tests/ff/ipc/test_i034/test_i034.c
index a5a18b8..20fa8a8 100644
--- a/api-tests/ff/ipc/test_i034/test_i034.c
+++ b/api-tests/ff/ipc/test_i034/test_i034.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i034.h"
 
-client_test_t test_i034_client_tests_list[] = {
+const client_test_t test_i034_client_tests_list[] = {
     NULL,
     client_test_psa_skip_at_ipc_connect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i034/test_i034.h b/api-tests/ff/ipc/test_i034/test_i034.h
index 0c0001f..552232c 100644
--- a/api-tests/ff/ipc/test_i034/test_i034.h
+++ b/api-tests/ff/ipc/test_i034/test_i034.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i034_client_tests_list[];
+extern const client_test_t test_i034_client_tests_list[];
 
 int32_t client_test_psa_skip_at_ipc_connect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i034/test_supp_i034.c b/api-tests/ff/ipc/test_i034/test_supp_i034.c
index b455d23..98d919a 100644
--- a/api-tests/ff/ipc/test_i034/test_supp_i034.c
+++ b/api-tests/ff/ipc/test_i034/test_supp_i034.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_skip_at_ipc_connect(void);
 
-server_test_t test_i034_server_tests_list[] = {
+const server_test_t test_i034_server_tests_list[] = {
     NULL,
     server_test_psa_skip_at_ipc_connect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i035/test_i035.c b/api-tests/ff/ipc/test_i035/test_i035.c
index aea9bd9..59b0e85 100644
--- a/api-tests/ff/ipc/test_i035/test_i035.c
+++ b/api-tests/ff/ipc/test_i035/test_i035.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i035.h"
 
-client_test_t test_i035_client_tests_list[] = {
+const client_test_t test_i035_client_tests_list[] = {
     NULL,
     client_test_psa_skip_at_ipc_disconnect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i035/test_i035.h b/api-tests/ff/ipc/test_i035/test_i035.h
index 8ebc1c3..18e3c21 100644
--- a/api-tests/ff/ipc/test_i035/test_i035.h
+++ b/api-tests/ff/ipc/test_i035/test_i035.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i035_client_tests_list[];
+extern const client_test_t test_i035_client_tests_list[];
 
 int32_t client_test_psa_skip_at_ipc_disconnect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i035/test_supp_i035.c b/api-tests/ff/ipc/test_i035/test_supp_i035.c
index c9caa9e..41d9fe5 100644
--- a/api-tests/ff/ipc/test_i035/test_supp_i035.c
+++ b/api-tests/ff/ipc/test_i035/test_supp_i035.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_skip_at_ipc_disconnect();
 
-server_test_t test_i035_server_tests_list[] = {
+const server_test_t test_i035_server_tests_list[] = {
     NULL,
     server_test_psa_skip_at_ipc_disconnect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i036/test_i036.c b/api-tests/ff/ipc/test_i036/test_i036.c
index a54ab14..ec0d106 100644
--- a/api-tests/ff/ipc/test_i036/test_i036.c
+++ b/api-tests/ff/ipc/test_i036/test_i036.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i036.h"
 
-client_test_t test_i036_client_tests_list[] = {
+const client_test_t test_i036_client_tests_list[] = {
     NULL,
     client_test_psa_skip_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i036/test_i036.h b/api-tests/ff/ipc/test_i036/test_i036.h
index ebce979..b21fc04 100644
--- a/api-tests/ff/ipc/test_i036/test_i036.h
+++ b/api-tests/ff/ipc/test_i036/test_i036.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i036_client_tests_list[];
+extern const client_test_t test_i036_client_tests_list[];
 
 int32_t client_test_psa_skip_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i036/test_supp_i036.c b/api-tests/ff/ipc/test_i036/test_supp_i036.c
index 1a47f3f..cf92845 100644
--- a/api-tests/ff/ipc/test_i036/test_supp_i036.c
+++ b/api-tests/ff/ipc/test_i036/test_supp_i036.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_skip_with_null_handle(void);
 
-server_test_t test_i036_server_tests_list[] = {
+const server_test_t test_i036_server_tests_list[] = {
     NULL,
     server_test_psa_skip_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i037/test_i037.c b/api-tests/ff/ipc/test_i037/test_i037.c
index c428c43..7c451bf 100644
--- a/api-tests/ff/ipc/test_i037/test_i037.c
+++ b/api-tests/ff/ipc/test_i037/test_i037.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i037.h"
 
-client_test_t test_i037_client_tests_list[] = {
+const client_test_t test_i037_client_tests_list[] = {
     NULL,
     client_test_psa_skip_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i037/test_i037.h b/api-tests/ff/ipc/test_i037/test_i037.h
index 29d6346..5f31884 100644
--- a/api-tests/ff/ipc/test_i037/test_i037.h
+++ b/api-tests/ff/ipc/test_i037/test_i037.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i037_client_tests_list[];
+extern const client_test_t test_i037_client_tests_list[];
 
 int32_t client_test_psa_skip_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i037/test_supp_i037.c b/api-tests/ff/ipc/test_i037/test_supp_i037.c
index a4d0f6f..c7d7711 100644
--- a/api-tests/ff/ipc/test_i037/test_supp_i037.c
+++ b/api-tests/ff/ipc/test_i037/test_supp_i037.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_skip_with_invalid_handle(void);
 
-server_test_t test_i037_server_tests_list[] = {
+const server_test_t test_i037_server_tests_list[] = {
     NULL,
     server_test_psa_skip_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i038/test_i038.c b/api-tests/ff/ipc/test_i038/test_i038.c
index b75ed58..4d951d5 100644
--- a/api-tests/ff/ipc/test_i038/test_i038.c
+++ b/api-tests/ff/ipc/test_i038/test_i038.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i038.h"
 
-client_test_t test_i038_client_tests_list[] = {
+const client_test_t test_i038_client_tests_list[] = {
     NULL,
     client_test_psa_skip_with_invec_equal_to_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i038/test_i038.h b/api-tests/ff/ipc/test_i038/test_i038.h
index 162466f..02eb134 100644
--- a/api-tests/ff/ipc/test_i038/test_i038.h
+++ b/api-tests/ff/ipc/test_i038/test_i038.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i038_client_tests_list[];
+extern const client_test_t test_i038_client_tests_list[];
 
 int32_t client_test_psa_skip_with_invec_equal_to_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i038/test_supp_i038.c b/api-tests/ff/ipc/test_i038/test_supp_i038.c
index bcd8dbe..3790305 100644
--- a/api-tests/ff/ipc/test_i038/test_supp_i038.c
+++ b/api-tests/ff/ipc/test_i038/test_supp_i038.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_skip_with_invec_equal_to_max_iovec(void);
 
-server_test_t test_i038_server_tests_list[] = {
+const server_test_t test_i038_server_tests_list[] = {
     NULL,
     server_test_psa_skip_with_invec_equal_to_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i039/test_i039.c b/api-tests/ff/ipc/test_i039/test_i039.c
index c6cdd24..a9bb801 100644
--- a/api-tests/ff/ipc/test_i039/test_i039.c
+++ b/api-tests/ff/ipc/test_i039/test_i039.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i039.h"
 
-client_test_t test_i039_client_tests_list[] = {
+const client_test_t test_i039_client_tests_list[] = {
     NULL,
     client_test_psa_skip_with_invec_greater_than_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i039/test_i039.h b/api-tests/ff/ipc/test_i039/test_i039.h
index 9d5ae47..029d806 100644
--- a/api-tests/ff/ipc/test_i039/test_i039.h
+++ b/api-tests/ff/ipc/test_i039/test_i039.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i039_client_tests_list[];
+extern const client_test_t test_i039_client_tests_list[];
 
 int32_t client_test_psa_skip_with_invec_greater_than_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i039/test_supp_i039.c b/api-tests/ff/ipc/test_i039/test_supp_i039.c
index eb788b8..a94076c 100644
--- a/api-tests/ff/ipc/test_i039/test_supp_i039.c
+++ b/api-tests/ff/ipc/test_i039/test_supp_i039.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_skip_with_invec_greater_than_max_iovec(void);
 
-server_test_t test_i039_server_tests_list[] = {
+const server_test_t test_i039_server_tests_list[] = {
     NULL,
     server_test_psa_skip_with_invec_greater_than_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i040/test_i040.c b/api-tests/ff/ipc/test_i040/test_i040.c
index 18c95bf..4125c26 100644
--- a/api-tests/ff/ipc/test_i040/test_i040.c
+++ b/api-tests/ff/ipc/test_i040/test_i040.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i040.h"
 
-client_test_t test_i040_client_tests_list[] = {
+const client_test_t test_i040_client_tests_list[] = {
     NULL,
     client_test_psa_write_at_ipc_connect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i040/test_i040.h b/api-tests/ff/ipc/test_i040/test_i040.h
index f865a10..92048d5 100644
--- a/api-tests/ff/ipc/test_i040/test_i040.h
+++ b/api-tests/ff/ipc/test_i040/test_i040.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i040_client_tests_list[];
+extern const client_test_t test_i040_client_tests_list[];
 
 int32_t client_test_psa_write_at_ipc_connect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i040/test_supp_i040.c b/api-tests/ff/ipc/test_i040/test_supp_i040.c
index 2ba2015..4b3f2c7 100644
--- a/api-tests/ff/ipc/test_i040/test_supp_i040.c
+++ b/api-tests/ff/ipc/test_i040/test_supp_i040.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_write_at_ipc_connect(void);
 
-server_test_t test_i040_server_tests_list[] = {
+const server_test_t test_i040_server_tests_list[] = {
     NULL,
     server_test_psa_write_at_ipc_connect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i041/test_i041.c b/api-tests/ff/ipc/test_i041/test_i041.c
index 2866b6c..2b51c6f 100644
--- a/api-tests/ff/ipc/test_i041/test_i041.c
+++ b/api-tests/ff/ipc/test_i041/test_i041.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i041.h"
 
-client_test_t test_i041_client_tests_list[] = {
+const client_test_t test_i041_client_tests_list[] = {
     NULL,
     client_test_psa_write_at_ipc_disconnect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i041/test_i041.h b/api-tests/ff/ipc/test_i041/test_i041.h
index c43d574..0bfa366 100644
--- a/api-tests/ff/ipc/test_i041/test_i041.h
+++ b/api-tests/ff/ipc/test_i041/test_i041.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i041_client_tests_list[];
+extern const client_test_t test_i041_client_tests_list[];
 
 int32_t client_test_psa_write_at_ipc_disconnect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i041/test_supp_i041.c b/api-tests/ff/ipc/test_i041/test_supp_i041.c
index d7365ac..93180c0 100644
--- a/api-tests/ff/ipc/test_i041/test_supp_i041.c
+++ b/api-tests/ff/ipc/test_i041/test_supp_i041.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_write_at_ipc_disconnect(void);
 
-server_test_t test_i041_server_tests_list[] = {
+const server_test_t test_i041_server_tests_list[] = {
     NULL,
     server_test_psa_write_at_ipc_disconnect,
     NULL,
diff --git a/api-tests/ff/ipc/test_i042/test_i042.c b/api-tests/ff/ipc/test_i042/test_i042.c
index 9977cb5..f0ec5c3 100644
--- a/api-tests/ff/ipc/test_i042/test_i042.c
+++ b/api-tests/ff/ipc/test_i042/test_i042.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i042.h"
 
-client_test_t test_i042_client_tests_list[] = {
+const client_test_t test_i042_client_tests_list[] = {
     NULL,
     client_test_psa_write_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i042/test_i042.h b/api-tests/ff/ipc/test_i042/test_i042.h
index 42713df..4230e8c 100644
--- a/api-tests/ff/ipc/test_i042/test_i042.h
+++ b/api-tests/ff/ipc/test_i042/test_i042.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i042_client_tests_list[];
+extern const client_test_t test_i042_client_tests_list[];
 
 int32_t client_test_psa_write_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i042/test_supp_i042.c b/api-tests/ff/ipc/test_i042/test_supp_i042.c
index 0ea1a9a..09bb04f 100644
--- a/api-tests/ff/ipc/test_i042/test_supp_i042.c
+++ b/api-tests/ff/ipc/test_i042/test_supp_i042.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_write_with_null_handle();
 
-server_test_t test_i042_server_tests_list[] = {
+const server_test_t test_i042_server_tests_list[] = {
     NULL,
     server_test_psa_write_with_null_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i043/test_i043.c b/api-tests/ff/ipc/test_i043/test_i043.c
index e068910..cc12284 100644
--- a/api-tests/ff/ipc/test_i043/test_i043.c
+++ b/api-tests/ff/ipc/test_i043/test_i043.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i043.h"
 
-client_test_t test_i043_client_tests_list[] = {
+const client_test_t test_i043_client_tests_list[] = {
     NULL,
     client_test_psa_write_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i043/test_i043.h b/api-tests/ff/ipc/test_i043/test_i043.h
index 56250f9..f080e47 100644
--- a/api-tests/ff/ipc/test_i043/test_i043.h
+++ b/api-tests/ff/ipc/test_i043/test_i043.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i043_client_tests_list[];
+extern const client_test_t test_i043_client_tests_list[];
 
 int32_t client_test_psa_write_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i043/test_supp_i043.c b/api-tests/ff/ipc/test_i043/test_supp_i043.c
index a5dcc9b..eca5ee7 100644
--- a/api-tests/ff/ipc/test_i043/test_supp_i043.c
+++ b/api-tests/ff/ipc/test_i043/test_supp_i043.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_write_with_invalid_handle(void);
 
-server_test_t test_i043_server_tests_list[] = {
+const server_test_t test_i043_server_tests_list[] = {
     NULL,
     server_test_psa_write_with_invalid_handle,
     NULL,
diff --git a/api-tests/ff/ipc/test_i044/test_i044.c b/api-tests/ff/ipc/test_i044/test_i044.c
index f67150a..e6a42b9 100644
--- a/api-tests/ff/ipc/test_i044/test_i044.c
+++ b/api-tests/ff/ipc/test_i044/test_i044.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i044.h"
 
-client_test_t test_i044_client_tests_list[] = {
+const client_test_t test_i044_client_tests_list[] = {
     NULL,
     client_test_psa_write_with_invec_equal_to_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i044/test_i044.h b/api-tests/ff/ipc/test_i044/test_i044.h
index 19e32d3..9710d91 100644
--- a/api-tests/ff/ipc/test_i044/test_i044.h
+++ b/api-tests/ff/ipc/test_i044/test_i044.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i044_client_tests_list[];
+extern const client_test_t test_i044_client_tests_list[];
 
 int32_t client_test_psa_write_with_invec_equal_to_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i044/test_supp_i044.c b/api-tests/ff/ipc/test_i044/test_supp_i044.c
index 3b50696..6fea86e 100644
--- a/api-tests/ff/ipc/test_i044/test_supp_i044.c
+++ b/api-tests/ff/ipc/test_i044/test_supp_i044.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_write_with_invec_equal_to_max_iovec(void);
 
-server_test_t test_i044_server_tests_list[] = {
+const server_test_t test_i044_server_tests_list[] = {
     NULL,
     server_test_psa_write_with_invec_equal_to_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i045/test_i045.c b/api-tests/ff/ipc/test_i045/test_i045.c
index 1b4c6b4..9627251 100644
--- a/api-tests/ff/ipc/test_i045/test_i045.c
+++ b/api-tests/ff/ipc/test_i045/test_i045.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i045.h"
 
-client_test_t test_i045_client_tests_list[] = {
+const client_test_t test_i045_client_tests_list[] = {
     NULL,
     client_test_psa_write_with_invec_greater_than_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i045/test_i045.h b/api-tests/ff/ipc/test_i045/test_i045.h
index 04e11c0..88ccf7e 100644
--- a/api-tests/ff/ipc/test_i045/test_i045.h
+++ b/api-tests/ff/ipc/test_i045/test_i045.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i045_client_tests_list[];
+extern const client_test_t test_i045_client_tests_list[];
 
 int32_t client_test_psa_write_with_invec_greater_than_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i045/test_supp_i045.c b/api-tests/ff/ipc/test_i045/test_supp_i045.c
index caeb823..b590405 100644
--- a/api-tests/ff/ipc/test_i045/test_supp_i045.c
+++ b/api-tests/ff/ipc/test_i045/test_supp_i045.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_write_with_invec_greater_than_max_iovec(void);
 
-server_test_t test_i045_server_tests_list[] = {
+const server_test_t test_i045_server_tests_list[] = {
     NULL,
     server_test_psa_write_with_invec_greater_than_max_iovec,
     NULL,
diff --git a/api-tests/ff/ipc/test_i046/test_i046.c b/api-tests/ff/ipc/test_i046/test_i046.c
index f0efdf5..ff34db2 100644
--- a/api-tests/ff/ipc/test_i046/test_i046.c
+++ b/api-tests/ff/ipc/test_i046/test_i046.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i046.h"
 
-client_test_t test_i046_client_tests_list[] = {
+const client_test_t test_i046_client_tests_list[] = {
     NULL,
     client_test_psa_write_with_size_overflow,
     NULL,
diff --git a/api-tests/ff/ipc/test_i046/test_i046.h b/api-tests/ff/ipc/test_i046/test_i046.h
index f2f7a7e..8884700 100644
--- a/api-tests/ff/ipc/test_i046/test_i046.h
+++ b/api-tests/ff/ipc/test_i046/test_i046.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i046_client_tests_list[];
+extern const client_test_t test_i046_client_tests_list[];
 
 int32_t client_test_psa_write_with_size_overflow(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i046/test_supp_i046.c b/api-tests/ff/ipc/test_i046/test_supp_i046.c
index 450d712..d4be5e0 100644
--- a/api-tests/ff/ipc/test_i046/test_supp_i046.c
+++ b/api-tests/ff/ipc/test_i046/test_supp_i046.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_write_with_size_overflow(void);
 
-server_test_t test_i046_server_tests_list[] = {
+const server_test_t test_i046_server_tests_list[] = {
     NULL,
     server_test_psa_write_with_size_overflow,
     NULL,
diff --git a/api-tests/ff/ipc/test_i047/test_i047.c b/api-tests/ff/ipc/test_i047/test_i047.c
index d08096b..0485a6a 100644
--- a/api-tests/ff/ipc/test_i047/test_i047.c
+++ b/api-tests/ff/ipc/test_i047/test_i047.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i047.h"
 
-client_test_t test_i047_client_tests_list[] = {
+const client_test_t test_i047_client_tests_list[] = {
     NULL,
     client_test_psa_get_with_invalid_msg_pointer,
     NULL,
diff --git a/api-tests/ff/ipc/test_i047/test_i047.h b/api-tests/ff/ipc/test_i047/test_i047.h
index c8f2d52..08d4e9d 100644
--- a/api-tests/ff/ipc/test_i047/test_i047.h
+++ b/api-tests/ff/ipc/test_i047/test_i047.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i047_client_tests_list[];
+extern const client_test_t test_i047_client_tests_list[];
 
 int32_t client_test_psa_get_with_invalid_msg_pointer(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i047/test_supp_i047.c b/api-tests/ff/ipc/test_i047/test_supp_i047.c
index eeef031..49a5337 100644
--- a/api-tests/ff/ipc/test_i047/test_supp_i047.c
+++ b/api-tests/ff/ipc/test_i047/test_supp_i047.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 
 int32_t server_test_psa_get_with_invalid_msg_pointer(void);
 
-server_test_t test_i047_server_tests_list[] = {
+const server_test_t test_i047_server_tests_list[] = {
     NULL,
     server_test_psa_get_with_invalid_msg_pointer,
     NULL,
diff --git a/api-tests/ff/ipc/test_i048/test_i048.c b/api-tests/ff/ipc/test_i048/test_i048.c
index d55611a..7e11989 100644
--- a/api-tests/ff/ipc/test_i048/test_i048.c
+++ b/api-tests/ff/ipc/test_i048/test_i048.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i048.h"
 
-client_test_t test_i048_client_tests_list[] = {
+const client_test_t test_i048_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_invec_pointer,
     NULL,
diff --git a/api-tests/ff/ipc/test_i048/test_i048.h b/api-tests/ff/ipc/test_i048/test_i048.h
index b614ac5..5e0a249 100644
--- a/api-tests/ff/ipc/test_i048/test_i048.h
+++ b/api-tests/ff/ipc/test_i048/test_i048.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i048_client_tests_list[];
+extern const client_test_t test_i048_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_invec_pointer(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i048/test_supp_i048.c b/api-tests/ff/ipc/test_i048/test_supp_i048.c
index 167f2c3..29058c1 100644
--- a/api-tests/ff/ipc/test_i048/test_supp_i048.c
+++ b/api-tests/ff/ipc/test_i048/test_supp_i048.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_invec_pointer(void);
 
-server_test_t test_i048_server_tests_list[] = {
+const server_test_t test_i048_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_invec_pointer,
     NULL,
diff --git a/api-tests/ff/ipc/test_i049/test_i049.c b/api-tests/ff/ipc/test_i049/test_i049.c
index 590944d..becd24a 100644
--- a/api-tests/ff/ipc/test_i049/test_i049.c
+++ b/api-tests/ff/ipc/test_i049/test_i049.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i049.h"
 
-client_test_t test_i049_client_tests_list[] = {
+const client_test_t test_i049_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_outvec_pointer,
     NULL,
diff --git a/api-tests/ff/ipc/test_i049/test_i049.h b/api-tests/ff/ipc/test_i049/test_i049.h
index 9dcdbaf..790f10e 100644
--- a/api-tests/ff/ipc/test_i049/test_i049.h
+++ b/api-tests/ff/ipc/test_i049/test_i049.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i049_client_tests_list[];
+extern const client_test_t test_i049_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_outvec_pointer(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i049/test_supp_i049.c b/api-tests/ff/ipc/test_i049/test_supp_i049.c
index 0d62b78..8061a00 100644
--- a/api-tests/ff/ipc/test_i049/test_supp_i049.c
+++ b/api-tests/ff/ipc/test_i049/test_supp_i049.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_outvec_pointer(void);
 
-server_test_t test_i049_server_tests_list[] = {
+const server_test_t test_i049_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_outvec_pointer,
     NULL,
diff --git a/api-tests/ff/ipc/test_i050/test_i050.c b/api-tests/ff/ipc/test_i050/test_i050.c
index 6418b6e..13701a3 100644
--- a/api-tests/ff/ipc/test_i050/test_i050.c
+++ b/api-tests/ff/ipc/test_i050/test_i050.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i050.h"
 
-client_test_t test_i050_client_tests_list[] = {
+const client_test_t test_i050_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_invec_base,
     NULL,
diff --git a/api-tests/ff/ipc/test_i050/test_i050.h b/api-tests/ff/ipc/test_i050/test_i050.h
index c946db9..34f549a 100644
--- a/api-tests/ff/ipc/test_i050/test_i050.h
+++ b/api-tests/ff/ipc/test_i050/test_i050.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i050_client_tests_list[];
+extern const client_test_t test_i050_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_invec_base(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i050/test_supp_i050.c b/api-tests/ff/ipc/test_i050/test_supp_i050.c
index cf8fb79..3cd745d 100644
--- a/api-tests/ff/ipc/test_i050/test_supp_i050.c
+++ b/api-tests/ff/ipc/test_i050/test_supp_i050.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_invec_base(void);
 
-server_test_t test_i050_server_tests_list[] = {
+const server_test_t test_i050_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_invec_base,
     NULL,
diff --git a/api-tests/ff/ipc/test_i051/test_i051.c b/api-tests/ff/ipc/test_i051/test_i051.c
index 2c44181..3fb0d15 100644
--- a/api-tests/ff/ipc/test_i051/test_i051.c
+++ b/api-tests/ff/ipc/test_i051/test_i051.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i051.h"
 
-client_test_t test_i051_client_tests_list[] = {
+const client_test_t test_i051_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_outvec_base,
     NULL,
diff --git a/api-tests/ff/ipc/test_i051/test_i051.h b/api-tests/ff/ipc/test_i051/test_i051.h
index ecd1c22..4ba390b 100644
--- a/api-tests/ff/ipc/test_i051/test_i051.h
+++ b/api-tests/ff/ipc/test_i051/test_i051.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i051_client_tests_list[];
+extern const client_test_t test_i051_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_outvec_base(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i051/test_supp_i051.c b/api-tests/ff/ipc/test_i051/test_supp_i051.c
index 42cda89..01d83f1 100644
--- a/api-tests/ff/ipc/test_i051/test_supp_i051.c
+++ b/api-tests/ff/ipc/test_i051/test_supp_i051.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_outvec_base(void);
 
-server_test_t test_i051_server_tests_list[] = {
+const server_test_t test_i051_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_outvec_base,
     NULL,
diff --git a/api-tests/ff/ipc/test_i052/test_i052.c b/api-tests/ff/ipc/test_i052/test_i052.c
index 724ecd3..d8c3ef0 100644
--- a/api-tests/ff/ipc/test_i052/test_i052.c
+++ b/api-tests/ff/ipc/test_i052/test_i052.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i052.h"
 
-client_test_t test_i052_client_tests_list[] = {
+const client_test_t test_i052_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_invec_end_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i052/test_i052.h b/api-tests/ff/ipc/test_i052/test_i052.h
index 4b53371..d038746 100644
--- a/api-tests/ff/ipc/test_i052/test_i052.h
+++ b/api-tests/ff/ipc/test_i052/test_i052.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i052_client_tests_list[];
+extern const client_test_t test_i052_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_invec_end_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i052/test_supp_i052.c b/api-tests/ff/ipc/test_i052/test_supp_i052.c
index 760ec0c..c989cf1 100644
--- a/api-tests/ff/ipc/test_i052/test_supp_i052.c
+++ b/api-tests/ff/ipc/test_i052/test_supp_i052.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_invec_end_addr(void);
 
-server_test_t test_i052_server_tests_list[] = {
+const server_test_t test_i052_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_invec_end_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i053/test_i053.c b/api-tests/ff/ipc/test_i053/test_i053.c
index f08febc..542f809 100644
--- a/api-tests/ff/ipc/test_i053/test_i053.c
+++ b/api-tests/ff/ipc/test_i053/test_i053.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i053.h"
 
-client_test_t test_i053_client_tests_list[] = {
+const client_test_t test_i053_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_invalid_outvec_end_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i053/test_i053.h b/api-tests/ff/ipc/test_i053/test_i053.h
index 8efc2ed..ecef134 100644
--- a/api-tests/ff/ipc/test_i053/test_i053.h
+++ b/api-tests/ff/ipc/test_i053/test_i053.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i053_client_tests_list[];
+extern const client_test_t test_i053_client_tests_list[];
 
 int32_t client_test_psa_call_with_invalid_outvec_end_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i053/test_supp_i053.c b/api-tests/ff/ipc/test_i053/test_supp_i053.c
index 984ef25..59ad945 100644
--- a/api-tests/ff/ipc/test_i053/test_supp_i053.c
+++ b/api-tests/ff/ipc/test_i053/test_supp_i053.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_invalid_outvec_end_addr(void);
 
-server_test_t test_i053_server_tests_list[] = {
+const server_test_t test_i053_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_invalid_outvec_end_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i054/test_i054.c b/api-tests/ff/ipc/test_i054/test_i054.c
index 8c7caee..1d8ab50 100644
--- a/api-tests/ff/ipc/test_i054/test_i054.c
+++ b/api-tests/ff/ipc/test_i054/test_i054.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i054.h"
 
-client_test_t test_i054_client_tests_list[] = {
+const client_test_t test_i054_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_not_writable_outvec_base,
     NULL,
diff --git a/api-tests/ff/ipc/test_i054/test_i054.h b/api-tests/ff/ipc/test_i054/test_i054.h
index 4850726..f87bbb5 100644
--- a/api-tests/ff/ipc/test_i054/test_i054.h
+++ b/api-tests/ff/ipc/test_i054/test_i054.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i054_client_tests_list[];
+extern const client_test_t test_i054_client_tests_list[];
 
 int32_t client_test_psa_call_with_not_writable_outvec_base(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i054/test_supp_i054.c b/api-tests/ff/ipc/test_i054/test_supp_i054.c
index ca8f4cc..b76863b 100644
--- a/api-tests/ff/ipc/test_i054/test_supp_i054.c
+++ b/api-tests/ff/ipc/test_i054/test_supp_i054.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_not_writable_outvec_base(void);
 
-server_test_t test_i054_server_tests_list[] = {
+const server_test_t test_i054_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_not_writable_outvec_base,
     NULL,
diff --git a/api-tests/ff/ipc/test_i055/test_i055.c b/api-tests/ff/ipc/test_i055/test_i055.c
index 16582f5..0e92d5a 100644
--- a/api-tests/ff/ipc/test_i055/test_i055.c
+++ b/api-tests/ff/ipc/test_i055/test_i055.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i055.h"
 
-client_test_t test_i055_client_tests_list[] = {
+const client_test_t test_i055_client_tests_list[] = {
     NULL,
     client_test_psa_read_with_invalid_buffer_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i055/test_i055.h b/api-tests/ff/ipc/test_i055/test_i055.h
index 0f949a0..e7222a7 100644
--- a/api-tests/ff/ipc/test_i055/test_i055.h
+++ b/api-tests/ff/ipc/test_i055/test_i055.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i055_client_tests_list[];
+extern const client_test_t test_i055_client_tests_list[];
 
 int32_t client_test_psa_read_with_invalid_buffer_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i055/test_supp_i055.c b/api-tests/ff/ipc/test_i055/test_supp_i055.c
index 12439d7..406f416 100644
--- a/api-tests/ff/ipc/test_i055/test_supp_i055.c
+++ b/api-tests/ff/ipc/test_i055/test_supp_i055.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_read_with_invalid_buffer_addr(void);
 
-server_test_t test_i055_server_tests_list[] = {
+const server_test_t test_i055_server_tests_list[] = {
     NULL,
     server_test_psa_read_with_invalid_buffer_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i056/test_i056.c b/api-tests/ff/ipc/test_i056/test_i056.c
index f0697bc..40a0584 100644
--- a/api-tests/ff/ipc/test_i056/test_i056.c
+++ b/api-tests/ff/ipc/test_i056/test_i056.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i056.h"
 
-client_test_t test_i056_client_tests_list[] = {
+const client_test_t test_i056_client_tests_list[] = {
     NULL,
     client_test_psa_read_with_not_writable_buffer_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i056/test_i056.h b/api-tests/ff/ipc/test_i056/test_i056.h
index 1c2dcfe..0a1d90d 100644
--- a/api-tests/ff/ipc/test_i056/test_i056.h
+++ b/api-tests/ff/ipc/test_i056/test_i056.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i056_client_tests_list[];
+extern const client_test_t test_i056_client_tests_list[];
 
 int32_t client_test_psa_read_with_not_writable_buffer_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i056/test_supp_i056.c b/api-tests/ff/ipc/test_i056/test_supp_i056.c
index 655d62a..b0fd4a2 100644
--- a/api-tests/ff/ipc/test_i056/test_supp_i056.c
+++ b/api-tests/ff/ipc/test_i056/test_supp_i056.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_read_with_not_writable_buffer_addr(void);
 
-server_test_t test_i056_server_tests_list[] = {
+const server_test_t test_i056_server_tests_list[] = {
     NULL,
     server_test_psa_read_with_not_writable_buffer_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i057/test_i057.c b/api-tests/ff/ipc/test_i057/test_i057.c
index 2995393..3e63406 100644
--- a/api-tests/ff/ipc/test_i057/test_i057.c
+++ b/api-tests/ff/ipc/test_i057/test_i057.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i057.h"
 
-client_test_t test_i057_client_tests_list[] = {
+const client_test_t test_i057_client_tests_list[] = {
     NULL,
     client_test_psa_write_with_invalid_buffer_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i057/test_i057.h b/api-tests/ff/ipc/test_i057/test_i057.h
index 8fa8a1d..ad426d5 100644
--- a/api-tests/ff/ipc/test_i057/test_i057.h
+++ b/api-tests/ff/ipc/test_i057/test_i057.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i057_client_tests_list[];
+extern const client_test_t test_i057_client_tests_list[];
 
 int32_t client_test_psa_write_with_invalid_buffer_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i057/test_supp_i057.c b/api-tests/ff/ipc/test_i057/test_supp_i057.c
index e6ad366..d00ed25 100644
--- a/api-tests/ff/ipc/test_i057/test_supp_i057.c
+++ b/api-tests/ff/ipc/test_i057/test_supp_i057.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_write_with_invalid_buffer_addr(void);
 
-server_test_t test_i057_server_tests_list[] = {
+const server_test_t test_i057_server_tests_list[] = {
     NULL,
     server_test_psa_write_with_invalid_buffer_addr,
     NULL,
diff --git a/api-tests/ff/ipc/test_i058/test_i058.c b/api-tests/ff/ipc/test_i058/test_i058.c
index c6e8a37..c4675d6 100644
--- a/api-tests/ff/ipc/test_i058/test_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_i058.c
@@ -25,7 +25,7 @@
 
 #include "test_i058.h"
 
-client_test_t test_i058_client_tests_list[] = {
+const client_test_t test_i058_client_tests_list[] = {
     NULL,
     client_test_psa_doorbell_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i058/test_i058.h b/api-tests/ff/ipc/test_i058/test_i058.h
index 180a5cc..1fe62d0 100644
--- a/api-tests/ff/ipc/test_i058/test_i058.h
+++ b/api-tests/ff/ipc/test_i058/test_i058.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i058_client_tests_list[];
+extern const client_test_t test_i058_client_tests_list[];
 
 int32_t client_test_psa_doorbell_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i058/test_supp_i058.c b/api-tests/ff/ipc/test_i058/test_supp_i058.c
index 72b1bf9..21218b0 100644
--- a/api-tests/ff/ipc/test_i058/test_supp_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_supp_i058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_doorbell_signal(void);
 
-server_test_t test_i058_server_tests_list[] = {
+const server_test_t test_i058_server_tests_list[] = {
     NULL,
     server_test_psa_doorbell_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i059/test_i059.c b/api-tests/ff/ipc/test_i059/test_i059.c
index 8a4dc77..936154e 100644
--- a/api-tests/ff/ipc/test_i059/test_i059.c
+++ b/api-tests/ff/ipc/test_i059/test_i059.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i059.h"
 
-client_test_t test_i059_client_tests_list[] = {
+const client_test_t test_i059_client_tests_list[] = {
     NULL,
     client_test_psa_notify_with_neg_part_id,
     NULL,
diff --git a/api-tests/ff/ipc/test_i059/test_i059.h b/api-tests/ff/ipc/test_i059/test_i059.h
index a56dd8b..41f5545 100644
--- a/api-tests/ff/ipc/test_i059/test_i059.h
+++ b/api-tests/ff/ipc/test_i059/test_i059.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i059_client_tests_list[];
+extern const client_test_t test_i059_client_tests_list[];
 
 int32_t client_test_psa_notify_with_neg_part_id(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i059/test_supp_i059.c b/api-tests/ff/ipc/test_i059/test_supp_i059.c
index ef0b67a..ad54c84 100644
--- a/api-tests/ff/ipc/test_i059/test_supp_i059.c
+++ b/api-tests/ff/ipc/test_i059/test_supp_i059.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_notify_with_neg_part_id(void);
 
-server_test_t test_i059_server_tests_list[] = {
+const server_test_t test_i059_server_tests_list[] = {
     NULL,
     server_test_psa_notify_with_neg_part_id,
     NULL,
diff --git a/api-tests/ff/ipc/test_i060/test_i060.c b/api-tests/ff/ipc/test_i060/test_i060.c
index d9521c4..05c5031 100644
--- a/api-tests/ff/ipc/test_i060/test_i060.c
+++ b/api-tests/ff/ipc/test_i060/test_i060.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i060.h"
 
-client_test_t test_i060_client_tests_list[] = {
+const client_test_t test_i060_client_tests_list[] = {
     NULL,
     client_test_psa_notify_with_invalid_pos_part_id,
     NULL,
diff --git a/api-tests/ff/ipc/test_i060/test_i060.h b/api-tests/ff/ipc/test_i060/test_i060.h
index 0cdc2be..0bc24d8 100644
--- a/api-tests/ff/ipc/test_i060/test_i060.h
+++ b/api-tests/ff/ipc/test_i060/test_i060.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i060_client_tests_list[];
+extern const client_test_t test_i060_client_tests_list[];
 
 int32_t client_test_psa_notify_with_invalid_pos_part_id(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i060/test_supp_i060.c b/api-tests/ff/ipc/test_i060/test_supp_i060.c
index 79d0a16..7c3c14d 100644
--- a/api-tests/ff/ipc/test_i060/test_supp_i060.c
+++ b/api-tests/ff/ipc/test_i060/test_supp_i060.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 int32_t server_test_psa_notify_with_invalid_pos_part_id(void);
 
-server_test_t test_i060_server_tests_list[] = {
+const server_test_t test_i060_server_tests_list[] = {
     NULL,
     server_test_psa_notify_with_invalid_pos_part_id,
     NULL,
diff --git a/api-tests/ff/ipc/test_i061/test_i061.c b/api-tests/ff/ipc/test_i061/test_i061.c
index c21fe56..1576148 100644
--- a/api-tests/ff/ipc/test_i061/test_i061.c
+++ b/api-tests/ff/ipc/test_i061/test_i061.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i061.h"
 
-client_test_t test_i061_client_tests_list[] = {
+const client_test_t test_i061_client_tests_list[] = {
     NULL,
     client_test_psa_clear_at_unasserted_doorbell_sig,
     NULL,
diff --git a/api-tests/ff/ipc/test_i061/test_i061.h b/api-tests/ff/ipc/test_i061/test_i061.h
index 3c3344c..e1c4862 100644
--- a/api-tests/ff/ipc/test_i061/test_i061.h
+++ b/api-tests/ff/ipc/test_i061/test_i061.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i061_client_tests_list[];
+extern const client_test_t test_i061_client_tests_list[];
 
 int32_t client_test_psa_clear_at_unasserted_doorbell_sig(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i061/test_supp_i061.c b/api-tests/ff/ipc/test_i061/test_supp_i061.c
index 8e78916..fb7f0b8 100644
--- a/api-tests/ff/ipc/test_i061/test_supp_i061.c
+++ b/api-tests/ff/ipc/test_i061/test_supp_i061.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_clear_at_unasserted_doorbell_sig(void);
 
-server_test_t test_i061_server_tests_list[] = {
+const server_test_t test_i061_server_tests_list[] = {
     NULL,
     server_test_psa_clear_at_unasserted_doorbell_sig,
     NULL,
diff --git a/api-tests/ff/ipc/test_i062/test_i062.c b/api-tests/ff/ipc/test_i062/test_i062.c
index ca87dc5..3894d84 100644
--- a/api-tests/ff/ipc/test_i062/test_i062.c
+++ b/api-tests/ff/ipc/test_i062/test_i062.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i062.h"
 
-client_test_t test_i062_client_tests_list[] = {
+const client_test_t test_i062_client_tests_list[] = {
     NULL,
     client_test_psa_wait_with_unassigned_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i062/test_i062.h b/api-tests/ff/ipc/test_i062/test_i062.h
index ddd3cf3..20addf0 100644
--- a/api-tests/ff/ipc/test_i062/test_i062.h
+++ b/api-tests/ff/ipc/test_i062/test_i062.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i062_client_tests_list[];
+extern const client_test_t test_i062_client_tests_list[];
 
 int32_t client_test_psa_wait_with_unassigned_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i062/test_supp_i062.c b/api-tests/ff/ipc/test_i062/test_supp_i062.c
index 6cec537..236944a 100644
--- a/api-tests/ff/ipc/test_i062/test_supp_i062.c
+++ b/api-tests/ff/ipc/test_i062/test_supp_i062.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 int32_t server_test_psa_wait_with_unassigned_signal(void);
 
-server_test_t test_i062_server_tests_list[] = {
+const server_test_t test_i062_server_tests_list[] = {
     NULL,
     server_test_psa_wait_with_unassigned_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i063/test_i063.c b/api-tests/ff/ipc/test_i063/test_i063.c
index 579d5f6..a9bdd93 100644
--- a/api-tests/ff/ipc/test_i063/test_i063.c
+++ b/api-tests/ff/ipc/test_i063/test_i063.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i063.h"
 
-client_test_t test_i063_client_tests_list[] = {
+const client_test_t test_i063_client_tests_list[] = {
     NULL,
     client_test_psa_wait_signal_mask,
     NULL,
diff --git a/api-tests/ff/ipc/test_i063/test_i063.h b/api-tests/ff/ipc/test_i063/test_i063.h
index c5115a9..f5276f9 100644
--- a/api-tests/ff/ipc/test_i063/test_i063.h
+++ b/api-tests/ff/ipc/test_i063/test_i063.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i063_client_tests_list[];
+extern const client_test_t test_i063_client_tests_list[];
 
 int32_t client_test_psa_wait_signal_mask(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i063/test_supp_i063.c b/api-tests/ff/ipc/test_i063/test_supp_i063.c
index ab7ccf3..9e211b4 100644
--- a/api-tests/ff/ipc/test_i063/test_supp_i063.c
+++ b/api-tests/ff/ipc/test_i063/test_supp_i063.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_wait_signal_mask(void);
 
-server_test_t test_i063_server_tests_list[] = {
+const server_test_t test_i063_server_tests_list[] = {
     NULL,
     server_test_psa_wait_signal_mask,
     NULL,
diff --git a/api-tests/ff/ipc/test_i064/test_i064.c b/api-tests/ff/ipc/test_i064/test_i064.c
index 05c4f79..a735528 100644
--- a/api-tests/ff/ipc/test_i064/test_i064.c
+++ b/api-tests/ff/ipc/test_i064/test_i064.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i064.h"
 
-client_test_t test_i064_client_tests_list[] = {
+const client_test_t test_i064_client_tests_list[] = {
     NULL,
     client_test_psa_eoi_with_non_intr_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i064/test_i064.h b/api-tests/ff/ipc/test_i064/test_i064.h
index d89997b..310f844 100644
--- a/api-tests/ff/ipc/test_i064/test_i064.h
+++ b/api-tests/ff/ipc/test_i064/test_i064.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i064_client_tests_list[];
+extern const client_test_t test_i064_client_tests_list[];
 
 int32_t client_test_psa_eoi_with_non_intr_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i064/test_supp_i064.c b/api-tests/ff/ipc/test_i064/test_supp_i064.c
index 58d9638..91ee652 100644
--- a/api-tests/ff/ipc/test_i064/test_supp_i064.c
+++ b/api-tests/ff/ipc/test_i064/test_supp_i064.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_eoi_with_non_intr_signal(void);
 
-server_test_t test_i064_server_tests_list[] = {
+const server_test_t test_i064_server_tests_list[] = {
     NULL,
     server_test_psa_eoi_with_non_intr_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i065/test_i065.c b/api-tests/ff/ipc/test_i065/test_i065.c
index 9fe7e9f..7560f49 100644
--- a/api-tests/ff/ipc/test_i065/test_i065.c
+++ b/api-tests/ff/ipc/test_i065/test_i065.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i065.h"
 
-client_test_t test_i065_client_tests_list[] = {
+const client_test_t test_i065_client_tests_list[] = {
     NULL,
     client_test_psa_eoi_with_unasserted_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i065/test_i065.h b/api-tests/ff/ipc/test_i065/test_i065.h
index c1e1af9..048f672 100644
--- a/api-tests/ff/ipc/test_i065/test_i065.h
+++ b/api-tests/ff/ipc/test_i065/test_i065.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i065_client_tests_list[];
+extern const client_test_t test_i065_client_tests_list[];
 
 int32_t client_test_psa_eoi_with_unasserted_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i065/test_supp_i065.c b/api-tests/ff/ipc/test_i065/test_supp_i065.c
index 1ae6f68..7a5c7b4 100644
--- a/api-tests/ff/ipc/test_i065/test_supp_i065.c
+++ b/api-tests/ff/ipc/test_i065/test_supp_i065.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_eoi_with_non_intr_signal(void);
 
-server_test_t test_i065_server_tests_list[] = {
+const server_test_t test_i065_server_tests_list[] = {
     NULL,
     server_test_psa_eoi_with_non_intr_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i066/test_i066.c b/api-tests/ff/ipc/test_i066/test_i066.c
index af1797c..c389e98 100644
--- a/api-tests/ff/ipc/test_i066/test_i066.c
+++ b/api-tests/ff/ipc/test_i066/test_i066.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i066.h"
 
-client_test_t test_i066_client_tests_list[] = {
+const client_test_t test_i066_client_tests_list[] = {
     NULL,
     client_test_psa_eoi_with_multiple_signals,
     NULL,
diff --git a/api-tests/ff/ipc/test_i066/test_i066.h b/api-tests/ff/ipc/test_i066/test_i066.h
index fe246a0..e946b49 100644
--- a/api-tests/ff/ipc/test_i066/test_i066.h
+++ b/api-tests/ff/ipc/test_i066/test_i066.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i066_client_tests_list[];
+extern const client_test_t test_i066_client_tests_list[];
 
 int32_t client_test_psa_eoi_with_multiple_signals(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i066/test_supp_i066.c b/api-tests/ff/ipc/test_i066/test_supp_i066.c
index 357883b..514cda3 100644
--- a/api-tests/ff/ipc/test_i066/test_supp_i066.c
+++ b/api-tests/ff/ipc/test_i066/test_supp_i066.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_eoi_with_non_intr_signal(void);
 
-server_test_t test_i066_server_tests_list[] = {
+const server_test_t test_i066_server_tests_list[] = {
     NULL,
     server_test_psa_eoi_with_non_intr_signal,
     NULL,
diff --git a/api-tests/ff/ipc/test_i067/test_i067.c b/api-tests/ff/ipc/test_i067/test_i067.c
index 55af02e..04589b9 100644
--- a/api-tests/ff/ipc/test_i067/test_i067.c
+++ b/api-tests/ff/ipc/test_i067/test_i067.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -30,7 +30,7 @@
 void free(void *ptr);
 #endif
 
-client_test_t test_i067_client_tests_list[] = {
+const client_test_t test_i067_client_tests_list[] = {
     NULL,
     client_test_dynamic_mem_alloc_fn,
     NULL,
diff --git a/api-tests/ff/ipc/test_i067/test_i067.h b/api-tests/ff/ipc/test_i067/test_i067.h
index 11e0bb6..13c8ec9 100644
--- a/api-tests/ff/ipc/test_i067/test_i067.h
+++ b/api-tests/ff/ipc/test_i067/test_i067.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i067_client_tests_list[];
+extern const client_test_t test_i067_client_tests_list[];
 
 int32_t client_test_dynamic_mem_alloc_fn(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i067/test_supp_i067.c b/api-tests/ff/ipc/test_i067/test_supp_i067.c
index 4202944..62070fb 100644
--- a/api-tests/ff/ipc/test_i067/test_supp_i067.c
+++ b/api-tests/ff/ipc/test_i067/test_supp_i067.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -33,7 +33,7 @@
 
 int32_t server_test_dynamic_mem_alloc_fn(void);
 
-server_test_t test_i067_server_tests_list[] = {
+const server_test_t test_i067_server_tests_list[] = {
     NULL,
     server_test_dynamic_mem_alloc_fn,
     NULL,
diff --git a/api-tests/ff/ipc/test_i068/test_i068.c b/api-tests/ff/ipc/test_i068/test_i068.c
index 61a59f8..948c1bf 100644
--- a/api-tests/ff/ipc/test_i068/test_i068.c
+++ b/api-tests/ff/ipc/test_i068/test_i068.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,7 +32,7 @@
 
 char opcode[NO_OF_BYTES] = {0}; // Data memory
 
-client_test_t test_i068_client_tests_list[] = {
+const client_test_t test_i068_client_tests_list[] = {
     NULL,
     client_test_instr_exec_from_writable_mem,
     NULL,
diff --git a/api-tests/ff/ipc/test_i068/test_i068.h b/api-tests/ff/ipc/test_i068/test_i068.h
index f7ed66b..821d0a5 100644
--- a/api-tests/ff/ipc/test_i068/test_i068.h
+++ b/api-tests/ff/ipc/test_i068/test_i068.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i068_client_tests_list[];
+extern const client_test_t test_i068_client_tests_list[];
 
 int32_t client_test_instr_exec_from_writable_mem(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i068/test_supp_i068.c b/api-tests/ff/ipc/test_i068/test_supp_i068.c
index ec58682..64602ae 100644
--- a/api-tests/ff/ipc/test_i068/test_supp_i068.c
+++ b/api-tests/ff/ipc/test_i068/test_supp_i068.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_instr_exec_from_writable_mem(void);
 
-server_test_t test_i068_server_tests_list[] = {
+const server_test_t test_i068_server_tests_list[] = {
     NULL,
     server_test_instr_exec_from_writable_mem,
     NULL,
diff --git a/api-tests/ff/ipc/test_i069/test_i069.c b/api-tests/ff/ipc/test_i069/test_i069.c
index 27706e6..2dff728 100644
--- a/api-tests/ff/ipc/test_i069/test_i069.c
+++ b/api-tests/ff/ipc/test_i069/test_i069.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i069.h"
 
-client_test_t test_i069_client_tests_list[] = {
+const client_test_t test_i069_client_tests_list[] = {
     NULL,
     client_test_write_to_code_space,
     NULL,
diff --git a/api-tests/ff/ipc/test_i069/test_i069.h b/api-tests/ff/ipc/test_i069/test_i069.h
index 574f4d8..81cd040 100644
--- a/api-tests/ff/ipc/test_i069/test_i069.h
+++ b/api-tests/ff/ipc/test_i069/test_i069.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i069_client_tests_list[];
+extern const client_test_t test_i069_client_tests_list[];
 
 int32_t client_test_write_to_code_space(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i069/test_supp_i069.c b/api-tests/ff/ipc/test_i069/test_supp_i069.c
index 5dd572c..d8c5e71 100644
--- a/api-tests/ff/ipc/test_i069/test_supp_i069.c
+++ b/api-tests/ff/ipc/test_i069/test_supp_i069.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_write_to_code_space(void);
 
-server_test_t test_i069_server_tests_list[] = {
+const server_test_t test_i069_server_tests_list[] = {
     NULL,
     server_test_write_to_code_space,
     NULL,
diff --git a/api-tests/ff/ipc/test_i070/test_i070.c b/api-tests/ff/ipc/test_i070/test_i070.c
index c5d9f94..da11bf8 100644
--- a/api-tests/ff/ipc/test_i070/test_i070.c
+++ b/api-tests/ff/ipc/test_i070/test_i070.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i070.h"
 
-client_test_t test_i070_client_tests_list[] = {
+const client_test_t test_i070_client_tests_list[] = {
     NULL,
     client_test_write_to_const_data,
     NULL,
diff --git a/api-tests/ff/ipc/test_i070/test_i070.h b/api-tests/ff/ipc/test_i070/test_i070.h
index 9da1c68..74a7eb0 100644
--- a/api-tests/ff/ipc/test_i070/test_i070.h
+++ b/api-tests/ff/ipc/test_i070/test_i070.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i070_client_tests_list[];
+extern const client_test_t test_i070_client_tests_list[];
 
 int32_t client_test_write_to_const_data(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i070/test_supp_i070.c b/api-tests/ff/ipc/test_i070/test_supp_i070.c
index 62f2e17..fbceb4f 100644
--- a/api-tests/ff/ipc/test_i070/test_supp_i070.c
+++ b/api-tests/ff/ipc/test_i070/test_supp_i070.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_write_to_const_data(void);
 
-server_test_t test_i070_server_tests_list[] = {
+const server_test_t test_i070_server_tests_list[] = {
     NULL,
     server_test_write_to_const_data,
     NULL,
diff --git a/api-tests/ff/ipc/test_i071/test_i071.c b/api-tests/ff/ipc/test_i071/test_i071.c
index 130ebf0..a65721c 100644
--- a/api-tests/ff/ipc/test_i071/test_i071.c
+++ b/api-tests/ff/ipc/test_i071/test_i071.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define BUFF_SIZE 32
 
-client_test_t test_i071_client_tests_list[] = {
+const client_test_t test_i071_client_tests_list[] = {
     NULL,
     client_test_mem_manipulation_fn,
     NULL,
diff --git a/api-tests/ff/ipc/test_i071/test_i071.h b/api-tests/ff/ipc/test_i071/test_i071.h
index cb75dff..3eb0553 100644
--- a/api-tests/ff/ipc/test_i071/test_i071.h
+++ b/api-tests/ff/ipc/test_i071/test_i071.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i071_client_tests_list[];
+extern const client_test_t test_i071_client_tests_list[];
 
 int32_t client_test_mem_manipulation_fn(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i071/test_supp_i071.c b/api-tests/ff/ipc/test_i071/test_supp_i071.c
index b96ac47..8981cc9 100644
--- a/api-tests/ff/ipc/test_i071/test_supp_i071.c
+++ b/api-tests/ff/ipc/test_i071/test_supp_i071.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_mem_manipulation_fn(void);
 
-server_test_t test_i071_server_tests_list[] = {
+const server_test_t test_i071_server_tests_list[] = {
     NULL,
     server_test_mem_manipulation_fn,
     NULL,
diff --git a/api-tests/ff/ipc/test_i072/test_i072.c b/api-tests/ff/ipc/test_i072/test_i072.c
index 38fd78a..263b84c 100644
--- a/api-tests/ff/ipc/test_i072/test_i072.c
+++ b/api-tests/ff/ipc/test_i072/test_i072.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i072.h"
 
-client_test_t test_i072_client_tests_list[] = {
+const client_test_t test_i072_client_tests_list[] = {
     NULL,
     client_test_nspe_read_app_rot_variable,
     client_test_nspe_write_app_rot_variable,
diff --git a/api-tests/ff/ipc/test_i072/test_i072.h b/api-tests/ff/ipc/test_i072/test_i072.h
index 48eb9b7..bf8b372 100644
--- a/api-tests/ff/ipc/test_i072/test_i072.h
+++ b/api-tests/ff/ipc/test_i072/test_i072.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i072_client_tests_list[];
+extern const client_test_t test_i072_client_tests_list[];
 
 int32_t client_test_nspe_read_app_rot_variable(caller_security_t);
 int32_t client_test_nspe_write_app_rot_variable(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i072/test_supp_i072.c b/api-tests/ff/ipc/test_i072/test_supp_i072.c
index 704fb10..636f477 100644
--- a/api-tests/ff/ipc/test_i072/test_supp_i072.c
+++ b/api-tests/ff/ipc/test_i072/test_supp_i072.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 /* Application RoT data region */
 volatile uint32_t g_test_i072 = DATA_VALUE;
 
-server_test_t test_i072_server_tests_list[] = {
+const server_test_t test_i072_server_tests_list[] = {
     NULL,
     server_test_nspe_read_app_rot_variable,
     server_test_nspe_write_app_rot_variable,
diff --git a/api-tests/ff/ipc/test_i073/test_i073.c b/api-tests/ff/ipc/test_i073/test_i073.c
index 8b8d8b6..298b939 100644
--- a/api-tests/ff/ipc/test_i073/test_i073.c
+++ b/api-tests/ff/ipc/test_i073/test_i073.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i073.h"
 
-client_test_t test_i073_client_tests_list[] = {
+const client_test_t test_i073_client_tests_list[] = {
     NULL,
     client_test_nspe_read_app_rot_stack,
     client_test_nspe_write_app_rot_stack,
diff --git a/api-tests/ff/ipc/test_i073/test_i073.h b/api-tests/ff/ipc/test_i073/test_i073.h
index a2a4bb9..89cbcb2 100644
--- a/api-tests/ff/ipc/test_i073/test_i073.h
+++ b/api-tests/ff/ipc/test_i073/test_i073.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i073_client_tests_list[];
+extern const client_test_t test_i073_client_tests_list[];
 
 int32_t client_test_nspe_read_app_rot_stack(caller_security_t);
 int32_t client_test_nspe_write_app_rot_stack(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i073/test_supp_i073.c b/api-tests/ff/ipc/test_i073/test_supp_i073.c
index a18ec3b..0a0900d 100644
--- a/api-tests/ff/ipc/test_i073/test_supp_i073.c
+++ b/api-tests/ff/ipc/test_i073/test_supp_i073.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 #define DATA_VALUE 0x5467
 
-server_test_t test_i073_server_tests_list[] = {
+const server_test_t test_i073_server_tests_list[] = {
     NULL,
     server_test_nspe_read_app_rot_stack,
     server_test_nspe_write_app_rot_stack,
diff --git a/api-tests/ff/ipc/test_i074/test_i074.c b/api-tests/ff/ipc/test_i074/test_i074.c
index ce91843..bc5cf39 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_i074.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,7 +29,7 @@
 #define DATA_VALUE     0x12
 #define BUFFER_SIZE    0x4
 
-client_test_t test_i074_client_tests_list[] = {
+const client_test_t test_i074_client_tests_list[] = {
     NULL,
     client_test_nspe_read_app_rot_heap,
     client_test_nspe_write_app_rot_heap,
diff --git a/api-tests/ff/ipc/test_i074/test_i074.h b/api-tests/ff/ipc/test_i074/test_i074.h
index 2b47742..b906077 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.h
+++ b/api-tests/ff/ipc/test_i074/test_i074.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i074_client_tests_list[];
+extern const client_test_t test_i074_client_tests_list[];
 
 int32_t client_test_nspe_read_app_rot_heap(caller_security_t);
 int32_t client_test_nspe_write_app_rot_heap(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i074/test_supp_i074.c b/api-tests/ff/ipc/test_i074/test_supp_i074.c
index 3b72f32..d5c84bf 100644
--- a/api-tests/ff/ipc/test_i074/test_supp_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_supp_i074.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,7 +34,7 @@
 #define DATA_VALUE_ORG 0x11
 #define BUFFER_SIZE    0x4
 
-server_test_t test_i074_server_tests_list[] = {
+const server_test_t test_i074_server_tests_list[] = {
     NULL,
     server_test_nspe_read_app_rot_heap,
     server_test_nspe_write_app_rot_heap,
diff --git a/api-tests/ff/ipc/test_i075/test_i075.c b/api-tests/ff/ipc/test_i075/test_i075.c
index 84c1c23..b794f64 100644
--- a/api-tests/ff/ipc/test_i075/test_i075.c
+++ b/api-tests/ff/ipc/test_i075/test_i075.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE 0x1234
 
-client_test_t test_i075_client_tests_list[] = {
+const client_test_t test_i075_client_tests_list[] = {
     NULL,
     client_test_nspe_read_app_rot_mmio,
     client_test_nspe_write_app_rot_mmio,
diff --git a/api-tests/ff/ipc/test_i075/test_i075.h b/api-tests/ff/ipc/test_i075/test_i075.h
index a5a8188..341657f 100644
--- a/api-tests/ff/ipc/test_i075/test_i075.h
+++ b/api-tests/ff/ipc/test_i075/test_i075.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i075_client_tests_list[];
+extern const client_test_t test_i075_client_tests_list[];
 
 int32_t client_test_nspe_read_app_rot_mmio(caller_security_t);
 int32_t client_test_nspe_write_app_rot_mmio(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i075/test_supp_i075.c b/api-tests/ff/ipc/test_i075/test_supp_i075.c
index 8c062a6..8b094d5 100644
--- a/api-tests/ff/ipc/test_i075/test_supp_i075.c
+++ b/api-tests/ff/ipc/test_i075/test_supp_i075.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 #define DATA_VALUE 0x5467
 
-server_test_t test_i075_server_tests_list[] = {
+const server_test_t test_i075_server_tests_list[] = {
     NULL,
     server_test_nspe_read_app_rot_mmio,
     server_test_nspe_write_app_rot_mmio,
diff --git a/api-tests/ff/ipc/test_i076/test_i076.c b/api-tests/ff/ipc/test_i076/test_i076.c
index 94510de..4af1f64 100644
--- a/api-tests/ff/ipc/test_i076/test_i076.c
+++ b/api-tests/ff/ipc/test_i076/test_i076.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE1 0x1234
 
-client_test_t test_i076_client_tests_list[] = {
+const client_test_t test_i076_client_tests_list[] = {
     NULL,
     client_test_nspe_read_psa_rot_variable,
     client_test_nspe_write_psa_rot_variable,
diff --git a/api-tests/ff/ipc/test_i076/test_i076.h b/api-tests/ff/ipc/test_i076/test_i076.h
index 6ec51f9..d0a4009 100644
--- a/api-tests/ff/ipc/test_i076/test_i076.h
+++ b/api-tests/ff/ipc/test_i076/test_i076.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i076_client_tests_list[];
+extern const client_test_t test_i076_client_tests_list[];
 
 int32_t client_test_nspe_read_psa_rot_variable(caller_security_t);
 int32_t client_test_nspe_write_psa_rot_variable(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i076/test_supp_i076.c b/api-tests/ff/ipc/test_i076/test_supp_i076.c
index eb87a0f..2bb6537 100644
--- a/api-tests/ff/ipc/test_i076/test_supp_i076.c
+++ b/api-tests/ff/ipc/test_i076/test_supp_i076.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_nspe_read_psa_rot_variable(void);
 int32_t server_test_nspe_write_psa_rot_variable(void);
 
-server_test_t test_i076_server_tests_list[] = {
+const server_test_t test_i076_server_tests_list[] = {
     NULL,
     server_test_nspe_read_psa_rot_variable,
     server_test_nspe_write_psa_rot_variable,
diff --git a/api-tests/ff/ipc/test_i077/test_i077.c b/api-tests/ff/ipc/test_i077/test_i077.c
index e714e80..7ce34b7 100644
--- a/api-tests/ff/ipc/test_i077/test_i077.c
+++ b/api-tests/ff/ipc/test_i077/test_i077.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE1 0x1234
 
-client_test_t test_i077_client_tests_list[] = {
+const client_test_t test_i077_client_tests_list[] = {
     NULL,
     client_test_nspe_read_psa_rot_stack,
     client_test_nspe_write_psa_rot_stack,
diff --git a/api-tests/ff/ipc/test_i077/test_i077.h b/api-tests/ff/ipc/test_i077/test_i077.h
index eb88d39..94686f6 100644
--- a/api-tests/ff/ipc/test_i077/test_i077.h
+++ b/api-tests/ff/ipc/test_i077/test_i077.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i077_client_tests_list[];
+extern const client_test_t test_i077_client_tests_list[];
 
 int32_t client_test_nspe_read_psa_rot_stack(caller_security_t);
 int32_t client_test_nspe_write_psa_rot_stack(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i077/test_supp_i077.c b/api-tests/ff/ipc/test_i077/test_supp_i077.c
index 112d7e4..f1b01c8 100644
--- a/api-tests/ff/ipc/test_i077/test_supp_i077.c
+++ b/api-tests/ff/ipc/test_i077/test_supp_i077.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_nspe_read_psa_rot_stack(void);
 int32_t server_test_nspe_write_psa_rot_stack(void);
 
-server_test_t test_i077_server_tests_list[] = {
+const server_test_t test_i077_server_tests_list[] = {
     NULL,
     server_test_nspe_read_psa_rot_stack,
     server_test_nspe_write_psa_rot_stack,
diff --git a/api-tests/ff/ipc/test_i078/test_i078.c b/api-tests/ff/ipc/test_i078/test_i078.c
index a708eeb..2f97ed9 100644
--- a/api-tests/ff/ipc/test_i078/test_i078.c
+++ b/api-tests/ff/ipc/test_i078/test_i078.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,7 +29,7 @@
 #define DATA_VALUE     0x12
 #define BUFFER_SIZE    0x4
 
-client_test_t test_i078_client_tests_list[] = {
+const client_test_t test_i078_client_tests_list[] = {
     NULL,
     client_test_nspe_read_psa_rot_heap,
     client_test_nspe_write_psa_rot_heap,
diff --git a/api-tests/ff/ipc/test_i078/test_i078.h b/api-tests/ff/ipc/test_i078/test_i078.h
index 0613f10..c023833 100644
--- a/api-tests/ff/ipc/test_i078/test_i078.h
+++ b/api-tests/ff/ipc/test_i078/test_i078.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i078_client_tests_list[];
+extern const client_test_t test_i078_client_tests_list[];
 
 int32_t client_test_nspe_read_psa_rot_heap(caller_security_t);
 int32_t client_test_nspe_write_psa_rot_heap(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i078/test_supp_i078.c b/api-tests/ff/ipc/test_i078/test_supp_i078.c
index 59297e3..5fcf478 100644
--- a/api-tests/ff/ipc/test_i078/test_supp_i078.c
+++ b/api-tests/ff/ipc/test_i078/test_supp_i078.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_nspe_read_psa_rot_heap(void);
 int32_t server_test_nspe_write_psa_rot_heap(void);
 
-server_test_t test_i078_server_tests_list[] = {
+const server_test_t test_i078_server_tests_list[] = {
     NULL,
     server_test_nspe_read_psa_rot_heap,
     server_test_nspe_write_psa_rot_heap,
diff --git a/api-tests/ff/ipc/test_i079/test_i079.c b/api-tests/ff/ipc/test_i079/test_i079.c
index 9cbbd79..653ef91 100644
--- a/api-tests/ff/ipc/test_i079/test_i079.c
+++ b/api-tests/ff/ipc/test_i079/test_i079.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE 0x1234
 
-client_test_t test_i079_client_tests_list[] = {
+const client_test_t test_i079_client_tests_list[] = {
     NULL,
     client_test_nspe_read_psa_rot_mmio,
     client_test_nspe_write_psa_rot_mmio,
diff --git a/api-tests/ff/ipc/test_i079/test_i079.h b/api-tests/ff/ipc/test_i079/test_i079.h
index 99e2855..9c9c53a 100644
--- a/api-tests/ff/ipc/test_i079/test_i079.h
+++ b/api-tests/ff/ipc/test_i079/test_i079.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i079_client_tests_list[];
+extern const client_test_t test_i079_client_tests_list[];
 
 int32_t client_test_nspe_read_psa_rot_mmio(caller_security_t);
 int32_t client_test_nspe_write_psa_rot_mmio(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i079/test_supp_i079.c b/api-tests/ff/ipc/test_i079/test_supp_i079.c
index 57e7057..e560967 100644
--- a/api-tests/ff/ipc/test_i079/test_supp_i079.c
+++ b/api-tests/ff/ipc/test_i079/test_supp_i079.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 #define DATA_VALUE 0x5467
 
-server_test_t test_i079_server_tests_list[] = {
+const server_test_t test_i079_server_tests_list[] = {
     NULL,
     server_test_nspe_read_psa_rot_mmio,
     server_test_nspe_write_psa_rot_mmio,
diff --git a/api-tests/ff/ipc/test_i080/test_i080.c b/api-tests/ff/ipc/test_i080/test_i080.c
index ccafd64..5947f25 100644
--- a/api-tests/ff/ipc/test_i080/test_i080.c
+++ b/api-tests/ff/ipc/test_i080/test_i080.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE1 0x1234
 
-client_test_t test_i080_client_tests_list[] = {
+const client_test_t test_i080_client_tests_list[] = {
     NULL,
     client_test_app_rot_read_psa_rot_variable,
     client_test_app_rot_write_psa_rot_variable,
diff --git a/api-tests/ff/ipc/test_i080/test_i080.h b/api-tests/ff/ipc/test_i080/test_i080.h
index a78d6cb..f696753 100644
--- a/api-tests/ff/ipc/test_i080/test_i080.h
+++ b/api-tests/ff/ipc/test_i080/test_i080.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i080_client_tests_list[];
+extern const client_test_t test_i080_client_tests_list[];
 
 int32_t client_test_app_rot_read_psa_rot_variable(caller_security_t);
 int32_t client_test_app_rot_write_psa_rot_variable(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i080/test_supp_i080.c b/api-tests/ff/ipc/test_i080/test_supp_i080.c
index 0b00be4..7a601a8 100644
--- a/api-tests/ff/ipc/test_i080/test_supp_i080.c
+++ b/api-tests/ff/ipc/test_i080/test_supp_i080.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_app_rot_read_psa_rot_variable(void);
 int32_t server_test_app_rot_write_psa_rot_variable(void);
 
-server_test_t test_i080_server_tests_list[] = {
+const server_test_t test_i080_server_tests_list[] = {
     NULL,
     server_test_app_rot_read_psa_rot_variable,
     server_test_app_rot_write_psa_rot_variable,
diff --git a/api-tests/ff/ipc/test_i081/test_i081.c b/api-tests/ff/ipc/test_i081/test_i081.c
index b1e4b9e..65ba121 100644
--- a/api-tests/ff/ipc/test_i081/test_i081.c
+++ b/api-tests/ff/ipc/test_i081/test_i081.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE1 0x1234
 
-client_test_t test_i081_client_tests_list[] = {
+const client_test_t test_i081_client_tests_list[] = {
     NULL,
     client_test_app_rot_read_psa_rot_stack,
     client_test_app_rot_write_psa_rot_stack,
diff --git a/api-tests/ff/ipc/test_i081/test_i081.h b/api-tests/ff/ipc/test_i081/test_i081.h
index cafee8d..6a58a94 100644
--- a/api-tests/ff/ipc/test_i081/test_i081.h
+++ b/api-tests/ff/ipc/test_i081/test_i081.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i081_client_tests_list[];
+extern const client_test_t test_i081_client_tests_list[];
 
 int32_t client_test_app_rot_read_psa_rot_stack(caller_security_t);
 int32_t client_test_app_rot_write_psa_rot_stack(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i081/test_supp_i081.c b/api-tests/ff/ipc/test_i081/test_supp_i081.c
index 474230a..f2d9f38 100644
--- a/api-tests/ff/ipc/test_i081/test_supp_i081.c
+++ b/api-tests/ff/ipc/test_i081/test_supp_i081.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_app_rot_read_app_rot_stack(void);
 int32_t server_test_app_rot_write_app_rot_stack(void);
 
-server_test_t test_i081_server_tests_list[] = {
+const server_test_t test_i081_server_tests_list[] = {
     NULL,
     server_test_app_rot_read_app_rot_stack,
     server_test_app_rot_write_app_rot_stack,
diff --git a/api-tests/ff/ipc/test_i082/test_i082.c b/api-tests/ff/ipc/test_i082/test_i082.c
index 4180f94..ba015c4 100644
--- a/api-tests/ff/ipc/test_i082/test_i082.c
+++ b/api-tests/ff/ipc/test_i082/test_i082.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,7 +29,7 @@
 #define DATA_VALUE     0x12
 #define BUFFER_SIZE    0x4
 
-client_test_t test_i082_client_tests_list[] = {
+const client_test_t test_i082_client_tests_list[] = {
     NULL,
     client_test_app_rot_read_psa_rot_heap,
     client_test_app_rot_write_psa_rot_heap,
diff --git a/api-tests/ff/ipc/test_i082/test_i082.h b/api-tests/ff/ipc/test_i082/test_i082.h
index 37d1af5..559e4be 100644
--- a/api-tests/ff/ipc/test_i082/test_i082.h
+++ b/api-tests/ff/ipc/test_i082/test_i082.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i082_client_tests_list[];
+extern const client_test_t test_i082_client_tests_list[];
 
 int32_t client_test_app_rot_read_psa_rot_heap(caller_security_t);
 int32_t client_test_app_rot_write_psa_rot_heap(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i082/test_supp_i082.c b/api-tests/ff/ipc/test_i082/test_supp_i082.c
index 1095b5c..b92bcf8 100644
--- a/api-tests/ff/ipc/test_i082/test_supp_i082.c
+++ b/api-tests/ff/ipc/test_i082/test_supp_i082.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 int32_t server_test_app_rot_read_psa_rot_heap(void);
 int32_t server_test_app_rot_write_psa_rot_heap(void);
 
-server_test_t test_i082_server_tests_list[] = {
+const server_test_t test_i082_server_tests_list[] = {
     NULL,
     server_test_app_rot_read_psa_rot_heap,
     server_test_app_rot_write_psa_rot_heap,
diff --git a/api-tests/ff/ipc/test_i083/test_i083.c b/api-tests/ff/ipc/test_i083/test_i083.c
index 3e95c8e..fba4ce2 100644
--- a/api-tests/ff/ipc/test_i083/test_i083.c
+++ b/api-tests/ff/ipc/test_i083/test_i083.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE 0x1234
 
-client_test_t test_i083_client_tests_list[] = {
+const client_test_t test_i083_client_tests_list[] = {
     NULL,
     client_test_app_rot_read_psa_rot_mmio,
     client_test_app_rot_write_psa_rot_mmio,
diff --git a/api-tests/ff/ipc/test_i083/test_i083.h b/api-tests/ff/ipc/test_i083/test_i083.h
index fffd86e..a73308b 100644
--- a/api-tests/ff/ipc/test_i083/test_i083.h
+++ b/api-tests/ff/ipc/test_i083/test_i083.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i083_client_tests_list[];
+extern const client_test_t test_i083_client_tests_list[];
 
 int32_t client_test_app_rot_read_psa_rot_mmio(caller_security_t);
 int32_t client_test_app_rot_write_psa_rot_mmio(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i083/test_supp_i083.c b/api-tests/ff/ipc/test_i083/test_supp_i083.c
index 893c291..9d1224e 100644
--- a/api-tests/ff/ipc/test_i083/test_supp_i083.c
+++ b/api-tests/ff/ipc/test_i083/test_supp_i083.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 #define DATA_VALUE 0x5467
 
-server_test_t test_i083_server_tests_list[] = {
+const server_test_t test_i083_server_tests_list[] = {
     NULL,
     server_test_app_rot_read_psa_rot_mmio,
     server_test_app_rot_write_psa_rot_mmio,
diff --git a/api-tests/ff/ipc/test_i084/test_i084.c b/api-tests/ff/ipc/test_i084/test_i084.c
index 639a8ab..f50650e 100644
--- a/api-tests/ff/ipc/test_i084/test_i084.c
+++ b/api-tests/ff/ipc/test_i084/test_i084.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i084.h"
 
-client_test_t test_i084_client_tests_list[] = {
+const client_test_t test_i084_client_tests_list[] = {
     NULL,
     client_test_sp_read_other_sp_variable,
     client_test_sp_write_other_sp_variable,
diff --git a/api-tests/ff/ipc/test_i084/test_i084.h b/api-tests/ff/ipc/test_i084/test_i084.h
index 0465a4b..87e7402 100644
--- a/api-tests/ff/ipc/test_i084/test_i084.h
+++ b/api-tests/ff/ipc/test_i084/test_i084.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i084_client_tests_list[];
+extern const client_test_t test_i084_client_tests_list[];
 
 int32_t client_test_sp_read_other_sp_variable(caller_security_t);
 int32_t client_test_sp_write_other_sp_variable(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i084/test_supp_i084.c b/api-tests/ff/ipc/test_i084/test_supp_i084.c
index 87aecf0..5362919 100644
--- a/api-tests/ff/ipc/test_i084/test_supp_i084.c
+++ b/api-tests/ff/ipc/test_i084/test_supp_i084.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 /* Application RoT data region */
 volatile uint32_t g_test_i084 = DATA_VALUE;
 
-server_test_t test_i084_server_tests_list[] = {
+const server_test_t test_i084_server_tests_list[] = {
     NULL,
     server_test_sp_read_other_sp_variable,
     server_test_sp_write_other_sp_variable,
diff --git a/api-tests/ff/ipc/test_i085/test_i085.c b/api-tests/ff/ipc/test_i085/test_i085.c
index 07eb2ec..2900785 100644
--- a/api-tests/ff/ipc/test_i085/test_i085.c
+++ b/api-tests/ff/ipc/test_i085/test_i085.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i085.h"
 
-client_test_t test_i085_client_tests_list[] = {
+const client_test_t test_i085_client_tests_list[] = {
     NULL,
     client_test_sp_read_other_sp_stack,
     client_test_sp_write_other_sp_stack,
diff --git a/api-tests/ff/ipc/test_i085/test_i085.h b/api-tests/ff/ipc/test_i085/test_i085.h
index 03d295b..8c76f28 100644
--- a/api-tests/ff/ipc/test_i085/test_i085.h
+++ b/api-tests/ff/ipc/test_i085/test_i085.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i085_client_tests_list[];
+extern const client_test_t test_i085_client_tests_list[];
 
 int32_t client_test_sp_read_other_sp_stack(caller_security_t);
 int32_t client_test_sp_write_other_sp_stack(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i085/test_supp_i085.c b/api-tests/ff/ipc/test_i085/test_supp_i085.c
index 607a415..bf0541a 100644
--- a/api-tests/ff/ipc/test_i085/test_supp_i085.c
+++ b/api-tests/ff/ipc/test_i085/test_supp_i085.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 #define DATA_VALUE 0x5467
 
-server_test_t test_i085_server_tests_list[] = {
+const server_test_t test_i085_server_tests_list[] = {
     NULL,
     server_test_sp_read_other_sp_stack,
     server_test_sp_write_other_sp_stack,
diff --git a/api-tests/ff/ipc/test_i086/test_i086.c b/api-tests/ff/ipc/test_i086/test_i086.c
index 0be11be..82017ec 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_i086.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -29,7 +29,7 @@
 #define DATA_VALUE     0x12
 #define BUFFER_SIZE    0x4
 
-client_test_t test_i086_client_tests_list[] = {
+const client_test_t test_i086_client_tests_list[] = {
     NULL,
     client_test_sp_read_other_sp_heap,
     client_test_sp_write_other_sp_heap,
diff --git a/api-tests/ff/ipc/test_i086/test_i086.h b/api-tests/ff/ipc/test_i086/test_i086.h
index 794d5a1..98716a8 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.h
+++ b/api-tests/ff/ipc/test_i086/test_i086.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i086_client_tests_list[];
+extern const client_test_t test_i086_client_tests_list[];
 
 int32_t client_test_sp_read_other_sp_heap(caller_security_t);
 int32_t client_test_sp_write_other_sp_heap(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i086/test_supp_i086.c b/api-tests/ff/ipc/test_i086/test_supp_i086.c
index efff3ad..2d48686 100644
--- a/api-tests/ff/ipc/test_i086/test_supp_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_supp_i086.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,7 +34,7 @@
 #define DATA_VALUE_ORG 0x11
 #define BUFFER_SIZE    0x4
 
-server_test_t test_i086_server_tests_list[] = {
+const server_test_t test_i086_server_tests_list[] = {
     NULL,
     server_test_sp_read_other_sp_heap,
     server_test_sp_write_other_sp_heap,
diff --git a/api-tests/ff/ipc/test_i087/test_i087.c b/api-tests/ff/ipc/test_i087/test_i087.c
index f5ce74c..602424a 100644
--- a/api-tests/ff/ipc/test_i087/test_i087.c
+++ b/api-tests/ff/ipc/test_i087/test_i087.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@
 
 #define DATA_VALUE 0x1234
 
-client_test_t test_i087_client_tests_list[] = {
+const client_test_t test_i087_client_tests_list[] = {
     NULL,
     client_test_sp_read_other_sp_mmio,
     client_test_sp_write_other_sp_mmio,
diff --git a/api-tests/ff/ipc/test_i087/test_i087.h b/api-tests/ff/ipc/test_i087/test_i087.h
index abfd6db..1970434 100644
--- a/api-tests/ff/ipc/test_i087/test_i087.h
+++ b/api-tests/ff/ipc/test_i087/test_i087.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i087_client_tests_list[];
+extern const client_test_t test_i087_client_tests_list[];
 
 int32_t client_test_sp_read_other_sp_mmio(caller_security_t);
 int32_t client_test_sp_write_other_sp_mmio(caller_security_t);
diff --git a/api-tests/ff/ipc/test_i087/test_supp_i087.c b/api-tests/ff/ipc/test_i087/test_supp_i087.c
index b1bee74..0eedb5e 100644
--- a/api-tests/ff/ipc/test_i087/test_supp_i087.c
+++ b/api-tests/ff/ipc/test_i087/test_supp_i087.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,7 +28,7 @@
 
 #define DATA_VALUE 0x5467
 
-server_test_t test_i087_server_tests_list[] = {
+const server_test_t test_i087_server_tests_list[] = {
     NULL,
     server_test_sp_read_other_sp_mmio,
     server_test_sp_write_other_sp_mmio,
diff --git a/api-tests/ff/ipc/test_i089/test_i089.c b/api-tests/ff/ipc/test_i089/test_i089.c
index 28987ef..619d5be 100644
--- a/api-tests/ff/ipc/test_i089/test_i089.c
+++ b/api-tests/ff/ipc/test_i089/test_i089.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i089.h"
 
-client_test_t test_i089_client_tests_list[] = {
+const client_test_t test_i089_client_tests_list[] = {
     NULL,
     client_test_psa_panic,
     NULL,
diff --git a/api-tests/ff/ipc/test_i089/test_i089.h b/api-tests/ff/ipc/test_i089/test_i089.h
index b0bbec3..7987399 100644
--- a/api-tests/ff/ipc/test_i089/test_i089.h
+++ b/api-tests/ff/ipc/test_i089/test_i089.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i089_client_tests_list[];
+extern const client_test_t test_i089_client_tests_list[];
 
 int32_t client_test_psa_panic(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i089/test_supp_i089.c b/api-tests/ff/ipc/test_i089/test_supp_i089.c
index 189a736..9abaf7a 100644
--- a/api-tests/ff/ipc/test_i089/test_supp_i089.c
+++ b/api-tests/ff/ipc/test_i089/test_supp_i089.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_panic(void);
 
-server_test_t test_i089_server_tests_list[] = {
+const server_test_t test_i089_server_tests_list[] = {
     NULL,
     server_test_psa_panic,
     NULL,
diff --git a/api-tests/ff/ipc/test_i090/test_i090.c b/api-tests/ff/ipc/test_i090/test_i090.c
index 8d70be3..f7e9bfe 100644
--- a/api-tests/ff/ipc/test_i090/test_i090.c
+++ b/api-tests/ff/ipc/test_i090/test_i090.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_i090.h"
 
-client_test_t test_i090_client_tests_list[] = {
+const client_test_t test_i090_client_tests_list[] = {
     NULL,
     client_test_psa_call_with_neg_type,
     NULL,
diff --git a/api-tests/ff/ipc/test_i090/test_i090.h b/api-tests/ff/ipc/test_i090/test_i090.h
index 8ba9147..d73e451 100644
--- a/api-tests/ff/ipc/test_i090/test_i090.h
+++ b/api-tests/ff/ipc/test_i090/test_i090.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i090_client_tests_list[];
+extern const client_test_t test_i090_client_tests_list[];
 
 int32_t client_test_psa_call_with_neg_type(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i090/test_supp_i090.c b/api-tests/ff/ipc/test_i090/test_supp_i090.c
index 438bfee..7295b59 100644
--- a/api-tests/ff/ipc/test_i090/test_supp_i090.c
+++ b/api-tests/ff/ipc/test_i090/test_supp_i090.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_call_with_neg_type();
 
-server_test_t test_i090_server_tests_list[] = {
+const server_test_t test_i090_server_tests_list[] = {
     NULL,
     server_test_psa_call_with_neg_type,
     NULL,
diff --git a/api-tests/ff/ipc/test_l088/test_l088.c b/api-tests/ff/ipc/test_l088/test_l088.c
index e4c1785..0dcb164 100644
--- a/api-tests/ff/ipc/test_l088/test_l088.c
+++ b/api-tests/ff/ipc/test_l088/test_l088.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 #include "test_l088.h"
 
-client_test_t test_l088_client_tests_list[] = {
+const client_test_t test_l088_client_tests_list[] = {
     NULL,
     client_test_psa_rot_lifecycle_state,
     NULL,
diff --git a/api-tests/ff/ipc/test_l088/test_l088.h b/api-tests/ff/ipc/test_l088/test_l088.h
index fe916aa..df6251e 100644
--- a/api-tests/ff/ipc/test_l088/test_l088.h
+++ b/api-tests/ff/ipc/test_l088/test_l088.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,7 +31,7 @@
 extern val_api_t *val;
 extern psa_api_t *psa;
 
-extern client_test_t test_i088_client_tests_list[];
+extern const client_test_t test_i088_client_tests_list[];
 
 int32_t client_test_psa_rot_lifecycle_state(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_l088/test_supp_l088.c b/api-tests/ff/ipc/test_l088/test_supp_l088.c
index 7510003..e9e5f3c 100644
--- a/api-tests/ff/ipc/test_l088/test_supp_l088.c
+++ b/api-tests/ff/ipc/test_l088/test_supp_l088.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_rot_lifecycle_state(void);
 
-server_test_t test_l088_server_tests_list[] = {
+const server_test_t test_l088_server_tests_list[] = {
     NULL,
     server_test_psa_rot_lifecycle_state,
     NULL,
diff --git a/api-tests/platform/drivers/uart/cmsdk/pal_uart.c b/api-tests/platform/drivers/uart/cmsdk/pal_uart.c
index d31ffa3..08c2765 100644
--- a/api-tests/platform/drivers/uart/cmsdk/pal_uart.c
+++ b/api-tests/platform/drivers/uart/cmsdk/pal_uart.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -65,7 +65,7 @@
     @param    - str      : Input String
               - data     : Value for format specifier
 **/
-void pal_cmsdk_print(char *str, int32_t data)
+void pal_cmsdk_print(const char *str, int32_t data)
 {
     int8_t  j, buffer[16];
     int8_t  i = 0, is_neg = 0, k = 2 * sizeof(data);
diff --git a/api-tests/platform/drivers/uart/cmsdk/pal_uart.h b/api-tests/platform/drivers/uart/cmsdk/pal_uart.h
index 442536f..68f1ed7 100644
--- a/api-tests/platform/drivers/uart/cmsdk/pal_uart.h
+++ b/api-tests/platform/drivers/uart/cmsdk/pal_uart.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -52,7 +52,7 @@
 
 /* function prototypes */
 void pal_uart_cmsdk_init(uint32_t uart_base_addr);
-void pal_cmsdk_print(char *str, int32_t data);
+void pal_cmsdk_print(const char *str, int32_t data);
 void pal_uart_cmsdk_generate_irq(void);
 void pal_uart_cmsdk_disable_irq(void);
 
diff --git a/api-tests/platform/drivers/uart/pl011/pal_uart.c b/api-tests/platform/drivers/uart/pl011/pal_uart.c
index 04de0cc..b3b3a7a 100644
--- a/api-tests/platform/drivers/uart/pl011/pal_uart.c
+++ b/api-tests/platform/drivers/uart/pl011/pal_uart.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -66,7 +66,7 @@
     @param    - str      : Input String
               - data     : Value for format specifier
 **/
-void pal_uart_pl011_print(char *str, int32_t data)
+void pal_uart_pl011_print(const char *str, int32_t data)
 {
     uint8_t j, buffer[16];
     int8_t  i = 0, is_neg = 0, k = 2 * sizeof(data);
diff --git a/api-tests/platform/drivers/uart/pl011/pal_uart.h b/api-tests/platform/drivers/uart/pl011/pal_uart.h
index 3b8ea8a..4e40c6e 100644
--- a/api-tests/platform/drivers/uart/pl011/pal_uart.h
+++ b/api-tests/platform/drivers/uart/pl011/pal_uart.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -59,7 +59,7 @@
 
 /* function prototypes */
 void pal_uart_pl011_init(uint32_t uart_base_addr);
-void pal_uart_pl011_print(char *str, int32_t data);
+void pal_uart_pl011_print(const char *str, int32_t data);
 void pal_uart_pl011_generate_irq(void);
 void pal_uart_pl011_disable_irq(void);
 
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_config_check.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_config_check.h
rename to api-tests/platform/targets/common/nspe/crypto/pal_crypto_config_check.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
similarity index 99%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_intf.c
rename to api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
index 272b3d1..6c8f269 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_intf.c
+++ b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,7 +20,7 @@
 
 #define  PAL_KEY_SLOT_COUNT  32
 
-int32_t tfm_platform_system_reset(void);
+int pal_system_reset(void);
 
 /**
     @brief    - This API will call the requested crypto function
@@ -514,7 +514,7 @@
                 psa_destroy_key(i);
             return 0;
         case PAL_CRYPTO_RESET:
-            return tfm_platform_system_reset();
+            return pal_system_reset();
         default:
             return PAL_STATUS_UNSUPPORTED_FUNC;
     }
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_intf.h
rename to api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.h
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
similarity index 100%
rename from api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.c
rename to api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
diff --git a/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.h
new file mode 100644
index 0000000..939ecee
--- /dev/null
+++ b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.h
@@ -0,0 +1,36 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_ATTESTATION_CRYPTO_H_
+#define _PAL_ATTESTATION_CRYPTO_H_
+
+#include "pal_attestation_eat.h"
+
+int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
+void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
+                                 struct q_useful_buf_c data_to_hash);
+int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
+                                    struct q_useful_buf buffer_to_hold_result,
+                                    struct q_useful_buf_c *hash_result);
+int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
+                      struct q_useful_buf_c *hash);
+uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
+                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
+                          struct q_useful_buf_c payload);
+uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
+                                   struct q_useful_buf_c signature);
+#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_eat.h
new file mode 100644
index 0000000..58e98fe
--- /dev/null
+++ b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_eat.h
@@ -0,0 +1,46 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _PAL_ATTESTATION_EAT_H_
+#define _PAL_ATTESTATION_EAT_H_
+
+#include "qcbor.h"
+#include "pal_common.h"
+
+#define PAL_ATTEST_MIN_ERROR              30
+
+enum attestation_error_code {
+    PAL_ATTEST_SUCCESS = 0,
+    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
+    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
+    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
+    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
+    PAL_ATTEST_HASH_LENGTH_MISMATCH,
+    PAL_ATTEST_HASH_MISMATCH,
+    PAL_ATTEST_HASH_FAIL,
+    PAL_ATTEST_HASH_UNSUPPORTED,
+    PAL_ATTEST_HASH_BUFFER_SIZE,
+    PAL_ATTEST_ERR_PROTECTED_HEADERS,
+    PAL_ATTEST_ERR_SIGN_STRUCT,
+    PAL_ATTEST_ERR_KEY_FAIL,
+    PAL_ATTEST_ERR_SIGNATURE_FAIL,
+    PAL_ATTEST_ERR_CBOR_STRUCTURE,
+    PAL_ATTEST_ERR_SMALL_BUFFER,
+    PAL_ATTEST_ERROR,
+};
+
+#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_intf.c
rename to api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.h
similarity index 100%
rename from api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_intf.h
rename to api-tests/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
similarity index 94%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
rename to api-tests/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
index abfdc5d..327f304 100644
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ b/api-tests/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
                 valist  : variable argument list
     @return   - error status
 **/
-uint32_t pal_its_function(int type, va_list valist)
+int32_t pal_its_function(int type, va_list valist)
 {
     psa_storage_uid_t           uid;
     uint32_t                    data_size, offset;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
similarity index 88%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
rename to api-tests/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
index 82d0ccf..2a2602c 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ b/api-tests/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,5 +27,5 @@
     PAL_ITS_REMOVE                      = 0x4,
 };
 
-uint32_t pal_its_function(int type, va_list valist);
+int32_t pal_its_function(int type, va_list valist);
 #endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_common.h b/api-tests/platform/targets/common/nspe/pal_common.h
similarity index 98%
rename from api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_common.h
rename to api-tests/platform/targets/common/nspe/pal_common.h
index a628d4d..1179ee8 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_common.h
+++ b/api-tests/platform/targets/common/nspe/pal_common.h
@@ -25,15 +25,16 @@
 #include <stdarg.h>
 
 #include "pal_config.h"
-#include "pal_crypto_config.h"
 
 /* typedef's */
+#ifndef TARGET_SPECIFIC_TYPES
 typedef uint8_t             bool_t;
 typedef uint32_t            addr_t;
 typedef uint32_t            test_id_t;
 typedef uint32_t            block_id_t;
 typedef char                char8_t;
 typedef uint32_t            cfg_id_t;
+#endif
 
 #define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
 
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
similarity index 95%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_intf.c
rename to api-tests/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
index cc01027..9d8aa9e 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_intf.c
+++ b/api-tests/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@
                 valist  : variable argument list
     @return   - error status
 **/
-uint32_t pal_ps_function(int type, va_list valist)
+int32_t pal_ps_function(int type, va_list valist)
 {
     psa_storage_uid_t          uid;
     uint32_t                   data_size, size, offset;
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.h
similarity index 63%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_intf.h
rename to api-tests/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.h
index a338cdf..9d041e3 100644
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_intf.h
+++ b/api-tests/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,14 +21,14 @@
 #include "pal_common.h"
 
 enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
+    PAL_PS_SET                          = 0x5,
+    PAL_PS_GET                          = 0x6,
+    PAL_PS_GET_INFO                     = 0x7,
+    PAL_PS_REMOVE                       = 0x8,
+    PAL_PS_CREATE                       = 0x9,
+    PAL_PS_SET_EXTENDED                 = 0xA,
+    PAL_PS_GET_SUPPORT                  = 0xB,
 };
 
-uint32_t pal_ps_function(int type, va_list valist);
+int32_t pal_ps_function(int type, va_list valist);
 #endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 578b4ce..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the minor version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Minor version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - minor_version : minor_version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t minor_version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                         const psa_invec *in_vec,
-                         size_t in_len,
-                         psa_outvec *out_vec,
-                         size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 3f5741e..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t minor_version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                      const psa_invec *in_vec,
-                      size_t in_len,
-                      psa_outvec *out_vec,
-                      size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_common.h
deleted file mode 100644
index 8a8f064..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_common.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uintptr_t           addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum {
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 9a051c9..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 671dfa0..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/main.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/main.c
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/main.c
rename to api-tests/platform/targets/tgt_dev_apis_stdc/nspe/main.c
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_config.h
similarity index 87%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_config.h
rename to api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_config.h
index 68d6739..01514c3 100644
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_config.h
@@ -18,6 +18,21 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_storage_config.h"
+
+#define TARGET_SPECIFIC_TYPES
+
+#ifdef TARGET_SPECIFIC_TYPES
+/* typedef's */
+typedef uint8_t             bool_t;
+typedef uintptr_t           addr_t;
+typedef uint32_t            test_id_t;
+typedef uint32_t            block_id_t;
+typedef char                char8_t;
+typedef uint32_t            cfg_id_t;
+#endif
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +45,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +61,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_driver_intf.c
similarity index 90%
rename from api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_driver_ns_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_driver_intf.c
index 2bbaad7..4fb961a 100644
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -130,7 +130,7 @@
               - data     : Value for format specifier
     @return   - SUCCESS/FAILURE
 **/
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     if (printf(str, data) < 0)
     {
@@ -181,21 +181,6 @@
 }
 
 /**
-     @brief    - This function will read peripherals using SPI commands
-
-    This implementation doesn't support SPI so this is a noop.
-
-     @param    - addr : address of the peripheral
-                 data : read buffer
-                 len  : length of the read buffer in bytes
-     @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return PAL_STATUS_ERROR;
-}
-
-/**
      @brief    - Terminates the simulation at the end of all tests completion.
 
      This implementation just calls exit.
@@ -207,3 +192,13 @@
 {
     ;
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return PAL_STATUS_UNSUPPORTED_FUNC;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_storage_config.h
similarity index 67%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/target.cfg b/api-tests/platform/targets/tgt_dev_apis_stdc/target.cfg
index 1befaec..b21b158 100644
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_stdc/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -45,16 +45,3 @@
 nvmem.0.start = 0x0;
 nvmem.0.end = 0x0;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x2007F000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x2003F000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_stdc/target.cmake b/api-tests/platform/targets/tgt_dev_apis_stdc/target.cmake
index ce8fb1d..7d002d1 100644
--- a/api-tests/platform/targets/tgt_dev_apis_stdc/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_stdc/target.cmake
@@ -41,7 +41,7 @@
 	set(EXE_NAME ${_exe_name})
 
 	# Create list of test binary source files.
-	list(APPEND EXE_SRC ${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/main.c)
+	list(APPEND EXE_SRC ${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/main.c)
 
 	# Create list of libraries to link to test binary
 	list(APPEND EXE_LIBS
@@ -73,13 +73,12 @@
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 	if(NOT DEFINED PSA_CRYPTO_LIB_FILENAME)
 		message(FATAL_ERROR "ERROR: PSA_CRYPTO_LIB_FILENAME undefined.")
@@ -88,21 +87,31 @@
 endif()
 if(${SUITE} STREQUAL "PROTECTED_STORAGE")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 	if(NOT DEFINED PSA_STORAGE_LIB_FILENAME)
 		message(FATAL_ERROR "ERROR: PSA_STORAGE_LIB_FILENAME undefined.")
 	endif()
-	_create_psa_stdc_exe(psa-arch-tests-ps protected_storage)
+	_create_psa_stdc_exe(psa-arch-tests-storage storage)
 endif()
 if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 	if(NOT DEFINED PSA_STORAGE_LIB_FILENAME)
 		message(FATAL_ERROR "ERROR: PSA_STORAGE_LIB_FILENAME undefined.")
 	endif()
-	_create_psa_stdc_exe(psa-arch-tests-its internal_trusted_storage)
+	_create_psa_stdc_exe(psa-arch-tests-storage storage)
+endif()
+if(${SUITE} STREQUAL "STORAGE")
+	list(APPEND PAL_SRC_C_NSPE
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
+	)
+	if(NOT DEFINED PSA_STORAGE_LIB_FILENAME)
+		message(FATAL_ERROR "ERROR: PSA_STORAGE_LIB_FILENAME undefined.")
+	endif()
+	_create_psa_stdc_exe(psa-arch-tests-storage storage)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	message(FATAL_ERROR "Initial attestation not supported")
@@ -117,15 +126,9 @@
 endforeach()
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
-
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
-	${PSA_QCBOR_INCLUDE_PATH}
-)
-endif()
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 0030ef0..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index 68af13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 89b4da6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h
deleted file mode 100644
index 0a63b02..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 139f04f..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index 443e0bc..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 4818c8b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        case PAL_CRYPTO_RESET:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index 91be54d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 559a24c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fae5434..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index faf3f49..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 3ab7ebb..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index abfdc5d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_attestation_config.h
similarity index 62%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_attestation_config.h
index 9ca9637..6817b5f 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_config.h
similarity index 92%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_config.h
index b8ddc57..c9a3597 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_driver_intf.c
similarity index 88%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_driver_ns_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_driver_intf.c
index 2af6fcc..b407e9b 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -38,7 +38,7 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     pal_cmsdk_print(str, data);
     return PAL_STATUS_SUCCESS;
@@ -117,18 +117,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
@@ -143,3 +131,14 @@
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    /* Reset functionality is not functional on AN521 FVP */
+    return PAL_STATUS_UNSUPPORTED_FUNC;
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index a338cdf..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cfg
index 1ec4be2..247a73c 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x28100000;
 nvmem.0.end = 0x281003FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake
index d33dcc9..c699182 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an521/target.cmake
@@ -27,51 +27,38 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
+	message(FATAL_ERROR "For IPC - use -DTARGET=tgt_ff_tfm_an521 instead")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
 		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -95,11 +82,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 0030ef0..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index c29938c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return psa_framework_version();
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return psa_version(sid);
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return psa_connect(sid, version);
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return psa_call(handle, type, in_vec, in_len, out_vec, out_len);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 89b4da6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_common.h
deleted file mode 100644
index a03cd8d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_common.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum {
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_config.h
deleted file mode 100644
index b8ddc57..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 862b948..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0} };
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)} };
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)} };
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)} };
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)} };
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)} };
-    psa_outvec outvec[1] = {{buffer, size} };
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size} };
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while (1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index 443e0bc..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 41e59b8..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-int32_t tfm_platform_system_reset(void);
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        case PAL_CRYPTO_RESET:
-            return tfm_platform_system_reset();
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index e9039f6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_RESET                            = 0xFD,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index 91be54d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 559a24c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fae5434..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index faf3f49..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index dd41690..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 3ab7ebb..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index abfdc5d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_attestation_config.h
similarity index 62%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_attestation_config.h
index 9ca9637..6817b5f 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_config.h
similarity index 92%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_config.h
index b8ddc57..c9a3597 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_driver_intf.c
similarity index 88%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ns_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_driver_intf.c
index 2f1f008..662ed9a 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,6 +20,8 @@
 #include "pal_nvmem.h"
 #include "pal_wd_cmsdk.h"
 
+int32_t tfm_platform_system_reset(void);
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -38,7 +40,7 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     pal_cmsdk_print(str, data);
     return PAL_STATUS_SUCCESS;
@@ -117,18 +119,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
@@ -143,3 +133,13 @@
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return tfm_platform_system_reset();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index a338cdf..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg
index eafa7b0..e5ec8de 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x20018000;
 nvmem.0.end = 0x200183FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake
index d33dcc9..1dc77dc 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an524/target.cmake
@@ -27,51 +27,38 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
+	message(FATAL_ERROR "IPC not supported for ${TARGET}")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
 		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -95,11 +82,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index b11cae2..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index d41dfb3..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 0f8090a..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_common.h
deleted file mode 100644
index 2028195..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index f75cc1b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 1f9b4af..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_RESET                            = 0xFD,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index e7ec66b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fa61d6a..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index 99c9466..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index 009b79f..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 235d578..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index fa0ceb3..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index 31269ee..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_attestation_config.h
similarity index 62%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_attestation_config.h
index 9ca9637..6817b5f 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_config.h
similarity index 92%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_config.h
index 3af5cdb..59ff02a 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_driver_intf.c
similarity index 90%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ns_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_driver_intf.c
index ef1e88d..a83e77a 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_driver_intf.c
@@ -20,6 +20,8 @@
 #include "pal_nvmem.h"
 #include "pal_wd_syswdog.h"
 
+int32_t tfm_platform_system_reset(void);
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -38,7 +40,7 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     pal_cmsdk_print(str, data);
     return PAL_STATUS_SUCCESS;
@@ -117,18 +119,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
@@ -143,3 +133,13 @@
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return tfm_platform_system_reset();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index bfd4b47..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index 53d7c6c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cfg
index fd55e30..4a1eb43 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cfg
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x28100000;
 nvmem.0.end = 0x281003FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cmake
index 74b286c..bd65cea 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_an539/target.cmake
@@ -27,51 +27,38 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/syswatchdog/pal_wd_syswdog.c
-	)
+	message(FATAL_ERROR "IPC not supported for ${TARGET}")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
 		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/syswatchdog/pal_wd_syswdog.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -95,11 +82,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 0030ef0..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index 68af13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 89b4da6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h
deleted file mode 100644
index 0a63b02..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h
deleted file mode 100644
index b8ddc57..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 139f04f..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_driver_ns_intf.c
deleted file mode 100644
index 338df6c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/common/pal_driver_ns_intf.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_uart.h"
-#include "pal_nvmem.h"
-#include "pal_wd_cmsdk.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    pal_uart_pl011_init(uart_base_addr);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    pal_uart_pl011_print(str, data);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    return(pal_wd_cmsdk_init(base_addr,time_us, timer_tick_us));
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    return(pal_wd_cmsdk_enable(base_addr));
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    return (pal_wd_cmsdk_disable(base_addr));
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_read(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_write(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index 443e0bc..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 41e59b8..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-int32_t tfm_platform_system_reset(void);
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        case PAL_CRYPTO_RESET:
-            return tfm_platform_system_reset();
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index e9039f6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_RESET                            = 0xFD,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index 91be54d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 559a24c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fae5434..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index faf3f49..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index dd41690..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 3ab7ebb..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index abfdc5d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_attestation_config.h
similarity index 62%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_attestation_config.h
index 9ca9637..6817b5f 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_config.h
similarity index 92%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_config.h
index b8ddc57..c9a3597 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_driver_intf.c
similarity index 88%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_driver_intf.c
index 82bc6e3..d0113c0 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,6 +20,8 @@
 #include "pal_nvmem.h"
 #include "pal_wd_cmsdk.h"
 
+int32_t tfm_platform_system_reset(void);
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -38,7 +40,7 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     pal_uart_pl011_print(str, data);
     return PAL_STATUS_SUCCESS;
@@ -117,18 +119,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
@@ -143,3 +133,13 @@
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return tfm_platform_system_reset();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index a338cdf..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cfg
index 97ac9c6..074c0a3 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x20018000;
 nvmem.0.end = 0x200183FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake
index 5388ca1..17ad2e3 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/target.cmake
@@ -27,51 +27,38 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
+	message(FATAL_ERROR "IPC not supported for ${TARGET}, use -DTARGET=tgt_ff_tfm_musca_a instead")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
 		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -95,11 +82,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 0030ef0..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index 68af13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 89b4da6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h
deleted file mode 100644
index 0a63b02..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h
deleted file mode 100644
index b8ddc57..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 139f04f..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_driver_ns_intf.c
deleted file mode 100644
index 338df6c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/common/pal_driver_ns_intf.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_uart.h"
-#include "pal_nvmem.h"
-#include "pal_wd_cmsdk.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    pal_uart_pl011_init(uart_base_addr);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    pal_uart_pl011_print(str, data);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    return(pal_wd_cmsdk_init(base_addr,time_us, timer_tick_us));
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    return(pal_wd_cmsdk_enable(base_addr));
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    return (pal_wd_cmsdk_disable(base_addr));
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_read(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_write(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index 443e0bc..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 41e59b8..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-int32_t tfm_platform_system_reset(void);
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        case PAL_CRYPTO_RESET:
-            return tfm_platform_system_reset();
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index e9039f6..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_RESET                            = 0xFD,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index 91be54d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 559a24c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fae5434..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index faf3f49..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index dd41690..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 3ab7ebb..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index abfdc5d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_attestation_config.h
similarity index 62%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_attestation_config.h
index 9ca9637..6817b5f 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_config.h
similarity index 92%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_config.h
index b8ddc57..c9a3597 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_driver_intf.c
similarity index 88%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_driver_intf.c
index 82bc6e3..d0113c0 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,6 +20,8 @@
 #include "pal_nvmem.h"
 #include "pal_wd_cmsdk.h"
 
+int32_t tfm_platform_system_reset(void);
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -38,7 +40,7 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     pal_uart_pl011_print(str, data);
     return PAL_STATUS_SUCCESS;
@@ -117,18 +119,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
@@ -143,3 +133,13 @@
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return tfm_platform_system_reset();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index a338cdf..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cfg
index 20c1ab8..21801fb 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x20060000;
 nvmem.0.end = 0x200603FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake
index 5388ca1..128f427 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_b1/target.cmake
@@ -27,51 +27,38 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
+	message(FATAL_ERROR "IPC not supported for ${TARGET}, use -DTARGET=tgt_ff_tfm_musca_b1 instead")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
 		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -95,11 +82,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index b11cae2..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index d41dfb3..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 0f8090a..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_common.h
deleted file mode 100644
index 2028195..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_config.h
deleted file mode 100644
index 3af5cdb..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 950c8ba..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index f75cc1b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 6c1e9ab..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 272b3d1..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-int32_t tfm_platform_system_reset(void);
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        case PAL_CRYPTO_RESET:
-            return tfm_platform_system_reset();
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 1f9b4af..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_RESET                            = 0xFD,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index e7ec66b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 9ca9637..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fa61d6a..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index 99c9466..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index 009b79f..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 235d578..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index fa0ceb3..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index 31269ee..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 82d0ccf..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_attestation_config.h
similarity index 62%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_attestation_config.h
index 9ca9637..6817b5f 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    )
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_config.h
similarity index 92%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_config.h
index 3af5cdb..59ff02a 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_crypto_config.h
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_driver_intf.c
similarity index 90%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_driver_intf.c
index 82bc6e3..cb43986 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_driver_intf.c
@@ -20,6 +20,8 @@
 #include "pal_nvmem.h"
 #include "pal_wd_cmsdk.h"
 
+int32_t tfm_platform_system_reset(void);
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -38,7 +40,7 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     pal_uart_pl011_print(str, data);
     return PAL_STATUS_SUCCESS;
@@ -117,18 +119,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
@@ -143,3 +133,13 @@
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return tfm_platform_system_reset();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index bfd4b47..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index cc01027..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index 53d7c6c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cfg
index 6abe607..c0f2277 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cfg
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x20060000;
 nvmem.0.end = 0x200603FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cmake
index 745ef75..77bae1b 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_s1/target.cmake
@@ -27,51 +27,38 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
+	message(FATAL_ERROR "IPC not supported for ${TARGET}")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
 		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -95,11 +82,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index b11cae2..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index d41dfb3..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 0f8090a..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_common.h
deleted file mode 100644
index 2028195..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 950c8ba..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index f75cc1b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 6c1e9ab..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index eac1993..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 83071ce..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index e7ec66b..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 9ca9637..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fa61d6a..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index 99c9466..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index 009b79f..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 235d578..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index fa0ceb3..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index 31269ee..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 82d0ccf..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_attestation_config.h
similarity index 62%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_attestation_config.h
index 9ca9637..624a134 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/initial_attestation/pal_attestation_crypto.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_attestation_config.h
@@ -15,10 +15,42 @@
  * limitations under the License.
 **/
 
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
+#ifndef _PAL_ATTESTATION_CONFIG_H_
+#define _PAL_ATTESTATION_CONFIG_H_
 
-#include "pal_attestation_eat.h"
+#define COSE_ALGORITHM_ES256             -7
+#define COSE_ALG_SHA256_PROPRIETARY      -72000
+
+#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
+
+#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
+
+/* Private value. Intentionally not documented for Doxygen.
+ * This is the size allocated for the encoded protected headers.  It
+ * needs to be big enough for make_protected_header() to succeed. It
+ * currently sized for one header with an algorithm ID up to 32 bits
+ * long -- one byte for the wrapping map, one byte for the label, 5
+ * bytes for the ID. If this is made accidentially too small, QCBOR will
+ * only return an error, and not overrun any buffers.
+ *
+ * 9 extra bytes are added, rounding it up to 16 total, in case some
+ * other protected header is to be added.
+ */
+#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
+
+/**
+ * This is the size of the first part of the CBOR encoded TBS
+ * bytes. It is around 20 bytes. See create_tbs_hash().
+ */
+#define T_COSE_SIZE_OF_TBS \
+    (1 + /* For opening the array */ \
+    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
+    2 + /* Overhead for encoding string */ \
+    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
+    3 * (/* 3 NULL bstrs for fields not used */ \
+        1 /* size of a NULL bstr */  \
+    ))
+#define NULL_USEFUL_BUF_C  NULLUsefulBufC
 
 #define ATTEST_PUBLIC_KEY_SLOT                  4
 #define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
@@ -72,17 +104,4 @@
         sizeof(initial_attestation_public_y_key)
 };
 
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
+#endif /* _PAL_ATTESTATION_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_config.h
similarity index 92%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_config.h
index ca167e9..ffb6a26 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_config.h
@@ -18,6 +18,10 @@
 #ifndef _PAL_CONFIG_H_
 #define _PAL_CONFIG_H_
 
+#include "pal_crypto_config.h"
+#include "pal_attestation_config.h"
+#include "pal_storage_config.h"
+
 /* Define PSA test suite dependent macros for non-cmake build */
 #if !defined(PSA_CMAKE_BUILD)
 
@@ -30,9 +34,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 //#define WATCHDOG_AVAILABLE
 
@@ -49,9 +50,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -79,12 +77,12 @@
 #include "psa/crypto.h"
 #endif
 
-#ifdef INTERNAL_TRUSTED_STORAGE
+#if defined(INTERNAL_TRUSTED_STORAGE) || defined(STORAGE)
 /* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
 #include "psa/internal_trusted_storage.h"
 #endif
 
-#ifdef PROTECTED_STORAGE
+#if defined(PROTECTED_STORAGE) || defined(STORAGE)
 /* psa/protected_storage.h: Contains the PSA PS API elements */
 #include "psa/protected_storage.h"
 #endif
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_crypto_config.h
old mode 100755
new mode 100644
similarity index 100%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/crypto/pal_crypto_config.h
rename to api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_crypto_config.h
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_driver_intf.c
similarity index 93%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_driver_ns_intf.c
rename to api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_driver_intf.c
index 09a113d..13ae59b 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/common/pal_driver_ns_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_driver_intf.c
@@ -18,6 +18,8 @@
 #include "pal_common.h"
 
 extern int tfm_log_printf(const char *, ...);
+int32_t tfm_platform_system_reset(void);
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -125,8 +127,18 @@
 {
     /* Add logic to terminate the simluation */
 
-    while(1)
+    while (1)
     {
         asm volatile("WFI");
     }
 }
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void)
+{
+    return tfm_platform_system_reset();
+}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_storage_config.h
similarity index 67%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
copy to api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_storage_config.h
index 6c1e9ab..bbb3741 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/crypto/pal_crypto_empty_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/pal_storage_config.h
@@ -15,16 +15,10 @@
  * limitations under the License.
 **/
 
-#include <stdarg.h>
-#include "pal_common.h"
+#ifndef _PAL_STORAGE_CONFIG_H_
+#define _PAL_STORAGE_CONFIG_H_
 
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
+/* Platform specific max UID's size */
+#define ARCH_TEST_STORAGE_UID_MAX_SIZE 512
+
+#endif /* _PAL_STORAGE_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index bfd4b47..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index cc01027..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index 53d7c6c..0000000
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cfg
index 91016fe..c0c7d02 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cfg
@@ -39,16 +39,3 @@
 nvmem.0.start = 0x28100000;
 nvmem.0.end = 0x281003FF;
 nvmem.0.permission = TYPE_READ_WRITE;
-
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x28110000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file.
-dut.0.ns_start_addr_of_combine_test_binary = 0x28120000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cmake
index 2f42b84..d8b8201 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_psoc64/target.cmake
@@ -27,45 +27,35 @@
 # PAL ASM source files part of SPE library - driver partition
 list(APPEND PAL_SRC_ASM_DRIVER_SP )
 
-
 # Listing all the sources required for given target
 if(${SUITE} STREQUAL "IPC")
-	list(APPEND PAL_SRC_C_NSPE
-		# driver functionalities are implemented as RoT-services
-		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
-	)
-	list(APPEND PAL_SRC_C_DRIVER_SP
-		# Driver files will be compiled as part of driver partition
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/spe/pal_driver_intf.c
-	)
+	message(FATAL_ERROR "IPC not supported for ${TARGET}")
 else()
 	list(APPEND PAL_SRC_C_NSPE
 		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 	)
 endif()
+
 if(${SUITE} STREQUAL "CRYPTO")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto/pal_crypto_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
+if((${SUITE} STREQUAL "PROTECTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage/pal_protected_storage_intf.c
 	)
 endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
+if((${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR (${SUITE} STREQUAL "STORAGE"))
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
 	)
 endif()
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
 	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_intf.c
+		${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation/pal_attestation_crypto.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
                 ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
@@ -83,11 +73,12 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/protected_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 0030ef0..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index 68af13d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 89b4da6..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_common.h
deleted file mode 100644
index 0a63b02..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_config.h
deleted file mode 100644
index b8ddc57..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 139f04f..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_driver_ns_intf.c
deleted file mode 100644
index 2af6fcc..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/common/pal_driver_ns_intf.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_uart.h"
-#include "pal_nvmem.h"
-#include "pal_wd_cmsdk.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    pal_uart_cmsdk_init(uart_base_addr);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    pal_cmsdk_print(str, data);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    return(pal_wd_cmsdk_init(base_addr,time_us, timer_tick_us));
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    return(pal_wd_cmsdk_enable(base_addr));
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    return (pal_wd_cmsdk_disable(base_addr));
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_read(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_write(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_config.h
deleted file mode 100644
index 0e95f72..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_config.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/*
- * \file pal_crypto_config.h
- *
- * \brief Configuration options for crypto tests (set of defines)
- *
- *  This set of compile-time options may be used to enable
- *  or disable features selectively for crypto test suite
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_H_
-#define _PAL_CRYPTO_CONFIG_H_
-/**
- * \def ARCH_TEST_RSA
- *
- * Enable the RSA public-key cryptosystem.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_RSA
-#define ARCH_TEST_RSA_1024
-#define ARCH_TEST_RSA_2048
-#define ARCH_TEST_RSA_3072
-
-/**
- * \def  ARCH_TEST_ECC
- * \def  ARCH_TEST_ECC_CURVE_SECPXXXR1
- *
- * Enable the elliptic curve
- * Enable specific curves within the Elliptic Curve
- * module.  By default all supported curves are enabled.
- *
- * Requires: ARCH_TEST_ECC
- * Comment macros to disable the curve
- */
-#define ARCH_TEST_ECC
-#define ARCH_TEST_ECC_CURVE_SECP192R1
-#define ARCH_TEST_ECC_CURVE_SECP224R1
-#define ARCH_TEST_ECC_CURVE_SECP256R1
-#define ARCH_TEST_ECC_CURVE_SECP384R1
-
-/**
- * \def ARCH_TEST_AES
- *
- * Enable the AES block cipher.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_AES
-#define ARCH_TEST_AES_128
-#define ARCH_TEST_AES_192
-#define ARCH_TEST_AES_256
-#define ARCH_TEST_AES_512
-
-/**
- * \def  ARCH_TEST_DES
- *
- * Enable the DES block cipher.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-//#define ARCH_TEST_DES
-//#define ARCH_TEST_DES_1KEY
-//#define ARCH_TEST_DES_2KEY
-//#define ARCH_TEST_DES_3KEY
-
-/**
- * \def  ARCH_TEST_RAW
- *
- * A "key" of this type cannot be used for any cryptographic operation.
- * Applications may use this type to store arbitrary data in the keystore.
- */
-#define ARCH_TEST_RAW
-
-/**
- * \def ARCH_TEST_CIPER
- *
- * Enable the generic cipher layer.
- */
-
-#define ARCH_TEST_CIPER
-
-/**
- * \def ARCH_TEST_ARC4
- *
- * Enable the ARC4 key type.
- */
-//#define ARCH_TEST_ARC4
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CTR
- *
- * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CTR
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CFB
- *
- * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CFB
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CBC
- *
- * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CBC
-
-/**
- * \def ARCH_TEST_CTR_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CTR
- */
-#define ARCH_TEST_CTR_AES
-
-/**
- * \def ARCH_TEST_CBC_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_AES
-#define ARCH_TEST_CBC_AES_NO_PADDING
-
-/**
- * \def ARCH_TEST_CBC_NO_PADDING
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_NO_PADDING
-
-/**
- * \def ARCH_TEST_CFB_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CFB
- */
-#define ARCH_TEST_CFB_AES
-
-/**
- * \def ARCH_TEST_PKCS1V15_*
- *
- * Enable support for PKCS#1 v1.5 encoding.
- * Enable support for PKCS#1 v1.5 operations.
- * Enable support for RSA-OAEP
- *
- * Requires: ARCH_TEST_RSA, ARCH_TEST_PKCS1V15
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_PKCS1V15
-#define ARCH_TEST_RSA_PKCS1V15_SIGN
-#define ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-#define ARCH_TEST_RSA_PKCS1V15_CRYPT
-#define ARCH_TEST_RSA_OAEP
-
-/**
- * \def ARCH_TEST_CBC_PKCS7
- *
- * Requires: ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_PKCS7
-
-/**
- * \def ARCH_TEST_ASYMMETRIC_ENCRYPTION
- *
- * Enable support for Asymmetric encryption algorithms
- */
-#define ARCH_TEST_ASYMMETRIC_ENCRYPTION
-
-/**
- * \def ARCH_TEST_HASH
- *
- * Enable the hash algorithm.
- */
-#define ARCH_TEST_HASH
-
-/**
- * \def  ARCH_TEST_HMAC
- *
- * The key policy determines which underlying hash algorithm the key can be
- * used for.
- *
- * Requires: ARCH_TEST_HASH
- */
-#define ARCH_TEST_HMAC
-
-/**
- * \def ARCH_TEST_MDX
- * \def ARCH_TEST_SHAXXX
- *
- * Enable the MDX algorithm.
- * Enable the SHAXXX algorithm.
- *
- * Requires: ARCH_TEST_HASH
- *
- * Comment macros to disable the types
- */
-//#define ARCH_TEST_MD2
-//#define ARCH_TEST_MD4
-//#define ARCH_TEST_MD5
-//#define ARCH_TEST_RIPEMD160
-//#define ARCH_TEST_SHA1
-#define ARCH_TEST_SHA224
-#define ARCH_TEST_SHA256
-#define ARCH_TEST_SHA384
-#define ARCH_TEST_SHA512
-//#define ARCH_TEST_SHA512_224
-//#define ARCH_TEST_SHA512_256
-//#define ARCH_TEST_SHA3_224
-//#define ARCH_TEST_SHA3_256
-//#define ARCH_TEST_SHA3_384
-//#define ARCH_TEST_SHA3_512
-
-/**
- * \def ARCH_TEST_HKDF
- *
- * Enable the HKDF algorithm (RFC 5869).
- *
- * Requires: ARCH_TEST_HASH
-*/
-#define ARCH_TEST_HKDF
-
-/**
- * \def ARCH_TEST_xMAC
- *
- * Enable the xMAC (Cipher/Hash/G-based Message Authentication Code) mode for block
- * ciphers.
- * Requires: ARCH_TEST_AES or ARCH_TEST_DES
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CMAC
-#define ARCH_TEST_GMAC
-#define ARCH_TEST_HMAC
-
-/**
- * \def ARCH_TEST_CCM
- *
- * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
- *
- * Requires: ARCH_TEST_AES
- */
-#define ARCH_TEST_CCM
-
-/**
- * \def ARCH_TEST_GCM
- *
- * Enable the Galois/Counter Mode (GCM) for AES.
- *
- * Requires: ARCH_TEST_AES
- *
- */
-#define ARCH_TEST_GCM
-
-/**
- * \def ARCH_TEST_TRUNCATED_MAC
- *
- * Enable support for RFC 6066 truncated HMAC in SSL.
- *
- * Comment this macro to disable support for truncated HMAC in SSL
- */
-#define ARCH_TEST_TRUNCATED_MAC
-
-
-/**
- * \def ARCH_TEST_ECDH
- *
- * Enable the elliptic curve Diffie-Hellman library.
- *
- * Requires: ARCH_TEST_ECC
- */
-#define ARCH_TEST_ECDH
-
-/**
- * \def ARCH_TEST_ECDSA
- *
- * Enable the elliptic curve DSA library.
- * Requires: ARCH_TEST_ECC
- */
-#define ARCH_TEST_ECDSA
-
-/**
- * \def ARCH_TEST_DETERMINISTIC_ECDSA
- *
- * Enable deterministic ECDSA (RFC 6979).
-*/
-#define ARCH_TEST_DETERMINISTIC_ECDSA
-
-/**
- * \def ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
- *
- * Enable ECC support for asymmetric API.
-*/
-//#define ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
-#include "pal_crypto_config_check.h"
-
-#endif /* _PAL_CRYPTO_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index 443e0bc..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 1e61e8c..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,516 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 671dfa0..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 559a24c..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index ea2cf93..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index faf3f49..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index dd41690..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index abfdc5d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/pal_config.h
similarity index 75%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_ff_tfm_an521/nspe/pal_config.h
index b8ddc57..0c956f5 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/pal_config.h
@@ -30,9 +30,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +46,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -74,24 +68,4 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
 #endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/pal_driver_ipc_intf.c
similarity index 79%
rename from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ipc_intf.c
rename to api-tests/platform/targets/tgt_ff_tfm_an521/nspe/pal_driver_ipc_intf.c
index 950c8ba..d06b383 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ipc_intf.c
+++ b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/pal_driver_ipc_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,7 +16,6 @@
 **/
 
 #include "pal_common.h"
-#include "pal_client_api_intf.h"
 
 /**
     @brief    - This function initializes the UART
@@ -33,11 +32,11 @@
                          {&uart_base_addr, sizeof(uart_base_addr)},
                          {NULL, 0}};
 
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
+    print_handle = psa_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
     if (PSA_HANDLE_IS_VALID(print_handle))
     {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
+        status_of_call = psa_call(print_handle, 0, data, 3, NULL, 0);
+        psa_close(print_handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -56,10 +55,10 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     int             string_len = 0;
-    char            *p = str;
+    const char      *p = str;
     psa_handle_t    print_handle = 0;
     psa_status_t    status_of_call = PSA_SUCCESS;
     uart_fn_type_t  uart_fn = UART_PRINT;
@@ -74,11 +73,11 @@
                           {str, string_len+1},
                           {&data, sizeof(data)}};
 
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
+    print_handle = psa_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
     if (PSA_HANDLE_IS_VALID(print_handle))
     {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
+        status_of_call = psa_call(print_handle, 0, data1, 3, NULL, 0);
+        psa_close(print_handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -109,11 +108,11 @@
     wd_param.wd_timer_tick_us = timer_tick_us;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -142,11 +141,11 @@
     wd_param.wd_timer_tick_us = 0;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -175,11 +174,11 @@
     wd_param.wd_timer_tick_us = 0;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -212,11 +211,11 @@
     psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
     psa_outvec outvec[1] = {{buffer, size}};
 
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
+    handle = psa_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, outvec, 1);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -248,11 +247,11 @@
     nvmem_param.size = size;
     psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
 
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
+    handle = psa_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 2, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -265,18 +264,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index a338cdf..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.c b/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.c
index fd30783..144c0c4 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.c
+++ b/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.c
@@ -1,5 +1,5 @@
  /** @file
-  * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+  * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
   * SPDX-License-Identifier : Apache-2.0
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
@@ -33,7 +33,7 @@
               - data     : Value for format specifier
 **/
 
-void pal_print(char *str, int32_t data)
+void pal_print(const char *str, int32_t data)
 {
   pal_cmsdk_print(str,data);
 
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.h b/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.h
index cef34ca..6cad0e3 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.h
+++ b/api-tests/platform/targets/tgt_ff_tfm_an521/spe/pal_driver_intf.h
@@ -1,5 +1,5 @@
  /** @file
-  * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+  * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
   * SPDX-License-Identifier : Apache-2.0
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,7 @@
 #include "pal_wd_cmsdk.h"
 
 void pal_uart_init(uint32_t uart_base_addr);
-void pal_print(char *str, int32_t data);
+void pal_print(const char *str, int32_t data);
 int pal_nvmem_write(addr_t base, uint32_t offset, void *buffer, int size);
 int pal_nvmem_read(addr_t base, uint32_t offset, void *buffer, int size);
 int pal_wd_timer_init(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/target.cfg b/api-tests/platform/targets/tgt_ff_tfm_an521/target.cfg
index 729388e..4bce640 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/target.cfg
+++ b/api-tests/platform/targets/tgt_ff_tfm_an521/target.cfg
@@ -40,20 +40,6 @@
 nvmem.0.end = 0x102FFFFF;
 nvmem.0.permission = TYPE_READ_WRITE;
 
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x281E0000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file
-dut.0.ns_start_addr_of_combine_test_binary = 0x281F0000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
-
-
 // ###################################################################
 // Following Target configuration parameters are required for IPC tests
 // only. Avoid updating them if you are running dev_apis tests.
diff --git a/api-tests/platform/targets/tgt_ff_tfm_an521/target.cmake b/api-tests/platform/targets/tgt_ff_tfm_an521/target.cmake
index d33dcc9..5018f81 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_an521/target.cmake
+++ b/api-tests/platform/targets/tgt_ff_tfm_an521/target.cmake
@@ -33,8 +33,7 @@
 	list(APPEND PAL_SRC_C_NSPE
 		# driver functionalities are implemented as RoT-services
 		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_ipc_intf.c
 	)
 	list(APPEND PAL_SRC_C_DRIVER_SP
 		# Driver files will be compiled as part of driver partition
@@ -43,40 +42,14 @@
 		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
-else()
-	list(APPEND PAL_SRC_C_NSPE
-		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/cmsdk/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
 endif()
-if(${SUITE} STREQUAL "CRYPTO")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_encode.c
-	)
+
+if((${SUITE} STREQUAL "CRYPTO") OR
+   (${SUITE} STREQUAL "STORAGE") OR
+   (${SUITE} STREQUAL "PROTECTED_STORAGE") OR
+   (${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR
+   (${SUITE} STREQUAL "INITIAL_ATTESTATION"))
+	message(FATAL_ERROR "For Functional API - use -DTARGET=tgt_dev_apis_tfm_an521 instead")
 endif()
 
 # Create NSPE library
@@ -95,15 +68,7 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
-
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
-	${PSA_QCBOR_INCLUDE_PATH}
-)
-endif()
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index 0030ef0..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index 68af13d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return (psa_framework_version());
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return (psa_version(sid));
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return (psa_connect(sid, version));
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (psa_call(handle, type, in_vec, in_len, out_vec, out_len));
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 89b4da6..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_common.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_common.h
deleted file mode 100644
index 0a63b02..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_common.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_COMMON_H_
-#define _PAL_COMMON_H_
-
-#include <string.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdarg.h>
-
-#include "pal_config.h"
-#include "pal_crypto_config.h"
-
-/* typedef's */
-typedef uint8_t             bool_t;
-typedef uint32_t            addr_t;
-typedef uint32_t            test_id_t;
-typedef uint32_t            block_id_t;
-typedef char                char8_t;
-typedef uint32_t            cfg_id_t;
-
-#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
-
-typedef enum
-{
-    PAL_STATUS_SUCCESS = 0x0,
-    PAL_STATUS_ERROR   = 0x80
-} pal_status_t;
-
-typedef enum {
-    NVMEM_READ             = 0x1,
-    NVMEM_WRITE            = 0x2,
-} nvmem_fn_type_t;
-
-typedef struct {
-    nvmem_fn_type_t nvmem_fn_type;
-    addr_t base;
-    uint32_t offset;
-    int size;
-} nvmem_param_t;
-
-typedef enum {
-    WD_INIT_SEQ         = 0x1,
-    WD_ENABLE_SEQ       = 0x2,
-    WD_DISABLE_SEQ      = 0x3,
-    WD_STATUS_SEQ       = 0x4,
-} wd_fn_type_t;
-
-typedef enum {
-    WD_LOW_TIMEOUT      = 0x1,
-    WD_MEDIUM_TIMEOUT   = 0x2,
-    WD_HIGH_TIMEOUT     = 0x3,
-    WD_CRYPTO_TIMEOUT   = 0x4,
-} wd_timeout_type_t;
-
-typedef struct {
-    wd_fn_type_t wd_fn_type;
-    addr_t       wd_base_addr;
-    uint32_t     wd_time_us;
-    uint32_t     wd_timer_tick_us;
-} wd_param_t;
-
-typedef enum {
-    UART_INIT             = 0x1,
-    UART_PRINT            = 0x2,
-} uart_fn_type_t;
-
-/*
- * Redefining some of the client.h elements for compilation to go through
- * when PSA IPC APIs are not implemented.
- */
-#ifndef IPC
-
-#ifndef PSA_VERSION_NONE
-#define PSA_VERSION_NONE            (0)
-#endif
-
-#ifndef PSA_SUCCESS
-#define PSA_SUCCESS                 (0)
-typedef int32_t psa_status_t;
-#endif
-typedef int32_t psa_handle_t;
-
-#ifndef PSA_NULL_HANDLE
-#define PSA_NULL_HANDLE             ((psa_handle_t)0)
-#endif
-
-typedef struct psa_invec {
-    const void *base;
-    size_t len;
-} psa_invec;
-
-typedef struct psa_outvec {
-    void *base;
-    size_t len;
-} psa_outvec;
-
-#endif /* IPC */
-
-#endif /* _PAL_COMMON_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_config.h
deleted file mode 100644
index b8ddc57..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_driver_ipc_intf.c
deleted file mode 100644
index 139f04f..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_driver_ipc_intf.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    psa_handle_t            print_handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-    uart_fn_type_t          uart_fn = UART_INIT;
-
-    psa_invec data[3] = {{&uart_fn, sizeof(uart_fn)},
-                         {&uart_base_addr, sizeof(uart_base_addr)},
-                         {NULL, 0}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    int             string_len = 0;
-    char            *p = str;
-    psa_handle_t    print_handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-    uart_fn_type_t  uart_fn = UART_PRINT;
-
-    while (*p != '\0')
-    {
-        string_len++;
-        p++;
-    }
-
-    psa_invec data1[3] = {{&uart_fn, sizeof(uart_fn)},
-                          {str, string_len+1},
-                          {&data, sizeof(data)}};
-
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
-    if (PSA_HANDLE_IS_VALID(print_handle))
-    {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_INIT_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = time_us;
-    wd_param.wd_timer_tick_us = timer_tick_us;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_ENABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    wd_param_t              wd_param;
-    psa_handle_t            handle = 0;
-    psa_status_t            status_of_call = PSA_SUCCESS;
-
-    wd_param.wd_fn_type = WD_DISABLE_SEQ;
-    wd_param.wd_base_addr = base_addr;
-    wd_param.wd_time_us = 0;
-    wd_param.wd_timer_tick_us = 0;
-    psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
-
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_READ;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
-    psa_outvec outvec[1] = {{buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    nvmem_param_t   nvmem_param;
-    psa_handle_t    handle = 0;
-    psa_status_t    status_of_call = PSA_SUCCESS;
-
-    nvmem_param.nvmem_fn_type = NVMEM_WRITE;
-    nvmem_param.base = base;
-    nvmem_param.offset = offset;
-    nvmem_param.size = size;
-    psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
-
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
-    if (PSA_HANDLE_IS_VALID(handle))
-    {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
-        if (status_of_call != PSA_SUCCESS)
-            return PAL_STATUS_ERROR;
-
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_driver_ns_intf.c
deleted file mode 100644
index 338df6c..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/common/pal_driver_ns_intf.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_uart.h"
-#include "pal_nvmem.h"
-#include "pal_wd_cmsdk.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    pal_uart_pl011_init(uart_base_addr);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    pal_uart_pl011_print(str, data);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    return(pal_wd_cmsdk_init(base_addr,time_us, timer_tick_us));
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    return(pal_wd_cmsdk_enable(base_addr));
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    return (pal_wd_cmsdk_disable(base_addr));
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_read(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_write(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while(1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_config.h
deleted file mode 100644
index 6f3eca7..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_config.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/*
- * \file pal_crypto_config.h
- *
- * \brief Configuration options for crypto tests (set of defines)
- *
- *  This set of compile-time options may be used to enable
- *  or disable features selectively for crypto test suite
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_H_
-#define _PAL_CRYPTO_CONFIG_H_
-/**
- * \def ARCH_TEST_RSA
- *
- * Enable the RSA public-key cryptosystem.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_RSA
-#define ARCH_TEST_RSA_1024
-#define ARCH_TEST_RSA_2048
-#define ARCH_TEST_RSA_3072
-
-/**
- * \def  ARCH_TEST_ECC
- * \def  ARCH_TEST_ECC_CURVE_SECPXXXR1
- *
- * Enable the elliptic curve
- * Enable specific curves within the Elliptic Curve
- * module.  By default all supported curves are enabled.
- *
- * Requires: ARCH_TEST_ECC
- * Comment macros to disable the curve
- */
-#define ARCH_TEST_ECC
-#define ARCH_TEST_ECC_CURVE_SECP192R1
-#define ARCH_TEST_ECC_CURVE_SECP224R1
-#define ARCH_TEST_ECC_CURVE_SECP256R1
-#define ARCH_TEST_ECC_CURVE_SECP384R1
-
-/**
- * \def ARCH_TEST_AES
- *
- * Enable the AES block cipher.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_AES
-#define ARCH_TEST_AES_128
-#define ARCH_TEST_AES_192
-#define ARCH_TEST_AES_256
-#define ARCH_TEST_AES_512
-
-/**
- * \def  ARCH_TEST_DES
- *
- * Enable the DES block cipher.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-//#define ARCH_TEST_DES
-//#define ARCH_TEST_DES_1KEY
-//#define ARCH_TEST_DES_2KEY
-//#define ARCH_TEST_DES_3KEY
-
-/**
- * \def  ARCH_TEST_RAW
- *
- * A "key" of this type cannot be used for any cryptographic operation.
- * Applications may use this type to store arbitrary data in the keystore.
- */
-#define ARCH_TEST_RAW
-
-/**
- * \def ARCH_TEST_CIPER
- *
- * Enable the generic cipher layer.
- */
-
-#define ARCH_TEST_CIPER
-
-/**
- * \def ARCH_TEST_ARC4
- *
- * Enable the ARC4 key type.
- */
-//#define ARCH_TEST_ARC4
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CTR
- *
- * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CTR
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CFB
- *
- * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CFB
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CBC
- *
- * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CBC
-
-/**
- * \def ARCH_TEST_CTR_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CTR
- */
-#define ARCH_TEST_CTR_AES
-
-/**
- * \def ARCH_TEST_CBC_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_AES
-#define ARCH_TEST_CBC_AES_NO_PADDING
-
-/**
- * \def ARCH_TEST_CBC_NO_PADDING
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_NO_PADDING
-
-/**
- * \def ARCH_TEST_CFB_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CFB
- */
-#define ARCH_TEST_CFB_AES
-
-/**
- * \def ARCH_TEST_PKCS1V15_*
- *
- * Enable support for PKCS#1 v1.5 encoding.
- * Enable support for PKCS#1 v1.5 operations.
- * Enable support for RSA-OAEP
- *
- * Requires: ARCH_TEST_RSA, ARCH_TEST_PKCS1V15
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_PKCS1V15
-#define ARCH_TEST_RSA_PKCS1V15_SIGN
-#define ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-#define ARCH_TEST_RSA_PKCS1V15_CRYPT
-#define ARCH_TEST_RSA_OAEP
-
-/**
- * \def ARCH_TEST_CBC_PKCS7
- *
- * Requires: ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_PKCS7
-
-/**
- * \def ARCH_TEST_ASYMMETRIC_ENCRYPTION
- *
- * Enable support for Asymmetric encryption algorithms
- */
-#define ARCH_TEST_ASYMMETRIC_ENCRYPTION
-
-/**
- * \def ARCH_TEST_HASH
- *
- * Enable the hash algorithm.
- */
-#define ARCH_TEST_HASH
-
-/**
- * \def  ARCH_TEST_HMAC
- *
- * The key policy determines which underlying hash algorithm the key can be
- * used for.
- *
- * Requires: ARCH_TEST_HASH
- */
-#define ARCH_TEST_HMAC
-
-/**
- * \def ARCH_TEST_MDX
- * \def ARCH_TEST_SHAXXX
- *
- * Enable the MDX algorithm.
- * Enable the SHAXXX algorithm.
- *
- * Requires: ARCH_TEST_HASH
- *
- * Comment macros to disable the types
- */
-//#define ARCH_TEST_MD2
-//#define ARCH_TEST_MD4
-//#define ARCH_TEST_MD5
-//#define ARCH_TEST_RIPEMD160
-//#define ARCH_TEST_SHA1
-#define ARCH_TEST_SHA224
-#define ARCH_TEST_SHA256
-#define ARCH_TEST_SHA384
-#define ARCH_TEST_SHA512
-//#define ARCH_TEST_SHA512_224
-//#define ARCH_TEST_SHA512_256
-//#define ARCH_TEST_SHA3_224
-//#define ARCH_TEST_SHA3_256
-//#define ARCH_TEST_SHA3_384
-//#define ARCH_TEST_SHA3_512
-
-/**
- * \def ARCH_TEST_HKDF
- *
- * Enable the HKDF algorithm (RFC 5869).
- *
- * Requires: ARCH_TEST_HASH
-*/
-#define ARCH_TEST_HKDF
-
-/**
- * \def ARCH_TEST_xMAC
- *
- * Enable the xMAC (Cipher/Hash/G-based Message Authentication Code) mode for block
- * ciphers.
- * Requires: ARCH_TEST_AES or ARCH_TEST_DES
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CMAC
-//#define ARCH_TEST_GMAC
-#define ARCH_TEST_HMAC
-
-/**
- * \def ARCH_TEST_CCM
- *
- * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
- *
- * Requires: ARCH_TEST_AES
- */
-#define ARCH_TEST_CCM
-
-/**
- * \def ARCH_TEST_GCM
- *
- * Enable the Galois/Counter Mode (GCM) for AES.
- *
- * Requires: ARCH_TEST_AES
- *
- */
-#define ARCH_TEST_GCM
-
-/**
- * \def ARCH_TEST_TRUNCATED_MAC
- *
- * Enable support for RFC 6066 truncated HMAC in SSL.
- *
- * Comment this macro to disable support for truncated HMAC in SSL
- */
-#define ARCH_TEST_TRUNCATED_MAC
-
-
-/**
- * \def ARCH_TEST_ECDH
- *
- * Enable the elliptic curve Diffie-Hellman library.
- *
- * Requires: ARCH_TEST_ECC
- */
-#define ARCH_TEST_ECDH
-
-/**
- * \def ARCH_TEST_ECDSA
- *
- * Enable the elliptic curve DSA library.
- * Requires: ARCH_TEST_ECC
- */
-#define ARCH_TEST_ECDSA
-
-/**
- * \def ARCH_TEST_DETERMINISTIC_ECDSA
- *
- * Enable deterministic ECDSA (RFC 6979).
-*/
-#define ARCH_TEST_DETERMINISTIC_ECDSA
-
-/**
- * \def ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
- *
- * Enable ECC support for asymmetric API.
-*/
-//#define ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
-#include "pal_crypto_config_check.h"
-
-#endif /* _PAL_CRYPTO_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index 443e0bc..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 2a28f39..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 7bad480..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 671dfa0..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index 91be54d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 559a24c..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index ea2cf93..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index faf3f49..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index dd41690..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 3ab7ebb..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index 133cfa9..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index abfdc5d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 6db6aac..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/pal_config.h
similarity index 75%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/pal_config.h
index b8ddc57..0c956f5 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an521/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/pal_config.h
@@ -30,9 +30,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +46,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -74,24 +68,4 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
 #endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/pal_driver_ipc_intf.c
similarity index 79%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ipc_intf.c
copy to api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/pal_driver_ipc_intf.c
index 950c8ba..d06b383 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_driver_ipc_intf.c
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/pal_driver_ipc_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,7 +16,6 @@
 **/
 
 #include "pal_common.h"
-#include "pal_client_api_intf.h"
 
 /**
     @brief    - This function initializes the UART
@@ -33,11 +32,11 @@
                          {&uart_base_addr, sizeof(uart_base_addr)},
                          {NULL, 0}};
 
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
+    print_handle = psa_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
     if (PSA_HANDLE_IS_VALID(print_handle))
     {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
+        status_of_call = psa_call(print_handle, 0, data, 3, NULL, 0);
+        psa_close(print_handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -56,10 +55,10 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     int             string_len = 0;
-    char            *p = str;
+    const char      *p = str;
     psa_handle_t    print_handle = 0;
     psa_status_t    status_of_call = PSA_SUCCESS;
     uart_fn_type_t  uart_fn = UART_PRINT;
@@ -74,11 +73,11 @@
                           {str, string_len+1},
                           {&data, sizeof(data)}};
 
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
+    print_handle = psa_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
     if (PSA_HANDLE_IS_VALID(print_handle))
     {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
+        status_of_call = psa_call(print_handle, 0, data1, 3, NULL, 0);
+        psa_close(print_handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -109,11 +108,11 @@
     wd_param.wd_timer_tick_us = timer_tick_us;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -142,11 +141,11 @@
     wd_param.wd_timer_tick_us = 0;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -175,11 +174,11 @@
     wd_param.wd_timer_tick_us = 0;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)}};
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -212,11 +211,11 @@
     psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)}};
     psa_outvec outvec[1] = {{buffer, size}};
 
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
+    handle = psa_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, outvec, 1);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -248,11 +247,11 @@
     nvmem_param.size = size;
     psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size}};
 
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
+    handle = psa_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 2, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -265,18 +264,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index ee9b13d..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index 0dd07c5..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index a338cdf..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.c
index 1dfd963..334c200 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.c
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.c
@@ -1,5 +1,5 @@
  /** @file
-  * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+  * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
   * SPDX-License-Identifier : Apache-2.0
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
@@ -33,7 +33,7 @@
               - data     : Value for format specifier
 **/
 
-void pal_print(char *str, int32_t data)
+void pal_print(const char *str, int32_t data)
 {
   pal_uart_pl011_print(str, data);
 }
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.h
index cef34ca..6cad0e3 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.h
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_a/spe/pal_driver_intf.h
@@ -1,5 +1,5 @@
  /** @file
-  * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+  * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
   * SPDX-License-Identifier : Apache-2.0
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,7 @@
 #include "pal_wd_cmsdk.h"
 
 void pal_uart_init(uint32_t uart_base_addr);
-void pal_print(char *str, int32_t data);
+void pal_print(const char *str, int32_t data);
 int pal_nvmem_write(addr_t base, uint32_t offset, void *buffer, int size);
 int pal_nvmem_read(addr_t base, uint32_t offset, void *buffer, int size);
 int pal_wd_timer_init(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cfg b/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cfg
index fbf0022..404b7cb 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cfg
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cfg
@@ -40,20 +40,6 @@
 nvmem.0.end = 0x30017BFF;
 nvmem.0.permission = TYPE_READ_WRITE;
 
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x281E0000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file
-dut.0.ns_start_addr_of_combine_test_binary = 0x281F0000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
-
-
 // ###################################################################
 // Following Target configuration parameters are required for IPC tests
 // only. Avoid updating them if you are running dev_apis tests.
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cmake b/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cmake
index 5388ca1..95dcaa9 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cmake
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_a/target.cmake
@@ -33,8 +33,7 @@
 	list(APPEND PAL_SRC_C_NSPE
 		# driver functionalities are implemented as RoT-services
 		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_ipc_intf.c
 	)
 	list(APPEND PAL_SRC_C_DRIVER_SP
 		# Driver files will be compiled as part of driver partition
@@ -43,40 +42,14 @@
 		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
-else()
-	list(APPEND PAL_SRC_C_NSPE
-		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
 endif()
-if(${SUITE} STREQUAL "CRYPTO")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_encode.c
-	)
+
+if((${SUITE} STREQUAL "CRYPTO") OR
+   (${SUITE} STREQUAL "STORAGE") OR
+   (${SUITE} STREQUAL "PROTECTED_STORAGE") OR
+   (${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR
+   (${SUITE} STREQUAL "INITIAL_ATTESTATION"))
+	message(FATAL_ERROR "For Functional API - use -DTARGET=tgt_dev_apis_tfm_musca_a instead")
 endif()
 
 # Create NSPE library
@@ -95,15 +68,7 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
-
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
-	${PSA_QCBOR_INCLUDE_PATH}
-)
-endif()
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_empty_intf.c
deleted file mode 100644
index b11cae2..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_empty_intf.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return 0;
-}
-
-/**
- * @brief - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return PSA_VERSION_NONE;
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return PSA_NULL_HANDLE;
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return (PSA_SUCCESS - 1);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param handle Handle for the connection.
- * @return void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    return;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_intf.c
deleted file mode 100644
index 7f13ec7..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_intf.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_client_api_intf.h"
-
-/**
- * @brief   - Retrieve the version of the PSA Framework API that is implemented.
- * This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_framework_version(void)
-{
-    return psa_framework_version();
-}
-
-/**
- * @brief   - Retrieve the version of a Root of Trust Service by its SID.
- * This is a wrapper API for the psa_version API.
- * @param - sid The Root of Trust Service ID
- * @return - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust
- *           Service not present on the system.
- *           Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-
-uint32_t pal_ipc_version(uint32_t sid)
-{
-    return psa_version(sid);
-}
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- * @param   - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version)
-{
-    return psa_connect(sid, version);
-}
-
-/**
- * @brief Call a connected Root of Trust Service.
- * This is a wrapper API for the psa_call API.
- * The caller must provide an array of ::psa_invec_t structures as the input payload.
- *
- * @param  -handle   Handle for the connection.
- * @param  -type     Request type.
- * @param  -in_vec   Array of psa_invec structures.
- * @param  -in_len   Number of psa_invec structures in in_vec.
- * @param  -out_vec  Array of psa_outvec structures for optional Root of Trust Service response.
- * @param  -out_len  Number of psa_outvec structures in out_vec.
- * @return -psa_status_t
- *          Note - Return -1 if PSA IPC is not implemented.
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len)
-{
-    return psa_call(handle, type, in_vec, in_len, out_vec, out_len);
-}
-
-/**
- * @brief Close a connection to a Root of Trust Service.
- * This is a wrapper API for the psa_close API.
- * Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service so it can clean up resources.
- *
- * @param  - handle Handle for the connection.
- * @return - void
- */
-
-void pal_ipc_close(psa_handle_t handle)
-{
-    psa_close(handle);
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_intf.h
deleted file mode 100644
index 0f8090a..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_client_api_intf.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CLIENT_API_H_
-#define _PAL_CLIENT_API_H_
-
-#include "pal_common.h"
-
-uint32_t pal_ipc_framework_version(void);
-uint32_t pal_ipc_version(uint32_t sid);
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-void pal_ipc_close(psa_handle_t handle);
-#endif /* _PAL_CLIENT_API_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_config.h
deleted file mode 100644
index 3af5cdb..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_config.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CONFIG_H_
-#define _PAL_CONFIG_H_
-
-/* Define PSA test suite dependent macros for non-cmake build */
-#if !defined(PSA_CMAKE_BUILD)
-
-/* Print verbosity = TEST */
-#define VERBOSE 3
-
-/* NSPE or SPE VAL build? */
-#define VAL_NSPE_BUILD
-
-/* NSPE or SPE TEST build? */
-#define NONSECURE_TEST_BUILD
-
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
-/* If not defined, skip watchdog programming */
-#define WATCHDOG_AVAILABLE
-
-/* Are Dynamic memory APIs available to secure partition? */
-#define SP_HEAP_MEM_SUPP
-
-/* PSA Isolation level supported by platform */
-#define PLATFORM_PSA_ISOLATION_LEVEL 3
-#endif /* PSA_CMAKE_BUILD */
-
-/* Version of crypto spec used in attestation */
-#define CRYPTO_VERSION_BETA3
-
-/* Use hardcoded public key */
-//#define PLATFORM_OVERRIDE_ATTEST_PK
-
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
-/*
- * Include of PSA defined Header files
- */
-#ifdef IPC
-/* psa/client.h: Contains the PSA Client API elements */
-#include "psa/client.h"
-
-/*
- * psa_manifest/sid.h:  Macro definitions derived from manifest files that map from RoT Service
- * names to Service IDs (SIDs). Partition manifest parse build tool must provide the implementation
- * of this file.
-*/
-#include "psa_manifest/sid.h"
-
-/*
- * psa_manifest/pid.h: Secure Partition IDs
- * Macro definitions that map from Secure Partition names to Secure Partition IDs.
- * Partition manifest parse build tool must provide the implementation of this file.
-*/
-#include "psa_manifest/pid.h"
-#endif
-
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
-#endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_driver_ns_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_driver_ns_intf.c
deleted file mode 100644
index 7ad6ce8..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_driver_ns_intf.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_common.h"
-#include "pal_uart.h"
-#include "pal_nvmem.h"
-#include "pal_wd_cmsdk.h"
-
-/**
-    @brief    - This function initializes the UART
-    @param    - uart base addr
-    @return   - SUCCESS/FAILURE
-**/
-int pal_uart_init_ns(uint32_t uart_base_addr)
-{
-    pal_uart_pl011_init(uart_base_addr);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief    - This function parses the input string and writes bytes into UART TX FIFO
-    @param    - str      : Input String
-              - data     : Value for format specifier
-    @return   - SUCCESS/FAILURE
-**/
-
-int pal_print_ns(char *str, int32_t data)
-{
-    pal_uart_pl011_print(str, data);
-    return PAL_STATUS_SUCCESS;
-}
-
-/**
-    @brief           - Initializes an hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-                     - time_us         : Time in micro seconds
-                     - timer_tick_us   : Number of ticks per micro second
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
-{
-    return pal_wd_cmsdk_init(base_addr, time_us, timer_tick_us);
-}
-
-/**
-    @brief           - Enables a hardware watchdog timer
-    @param           - base_addr       : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_enable_ns(addr_t base_addr)
-{
-    return pal_wd_cmsdk_enable(base_addr);
-}
-
-/**
-    @brief           - Disables a hardware watchdog timer
-    @param           - base_addr  : Base address of the watchdog module
-    @return          - SUCCESS/FAILURE
-**/
-int pal_wd_timer_disable_ns(addr_t base_addr)
-{
-    return pal_wd_cmsdk_disable(base_addr);
-}
-
-/**
-    @brief    - Reads from given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_read_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_read(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
-    @brief    - Writes into given non-volatile address.
-    @param    - base    : Base address of nvmem
-                offset  : Offset
-                buffer  : Pointer to source address
-                size    : Number of bytes
-    @return   - SUCCESS/FAILURE
-**/
-int pal_nvmem_write_ns(addr_t base, uint32_t offset, void *buffer, int size)
-{
-    if (nvmem_write(base, offset, buffer, size))
-    {
-        return PAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return PAL_STATUS_ERROR;
-    }
-}
-
-/**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
- *   @brief    - Terminates the simulation at the end of all tests completion.
- *               By default, it put cpus into power down mode.
- *   @param    - void
- *   @return   - void
-**/
-void pal_terminate_simulation(void)
-{
-    /* Add logic to terminate the simluation */
-
-    while (1)
-    {
-        asm volatile("WFI");
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_config.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_config.h
deleted file mode 100644
index aaa1bc5..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_config.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/*
- * \file pal_crypto_config.h
- *
- * \brief Configuration options for crypto tests (set of defines)
- *
- *  This set of compile-time options may be used to enable
- *  or disable features selectively for crypto test suite
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_H_
-#define _PAL_CRYPTO_CONFIG_H_
-/**
- * \def ARCH_TEST_RSA
- *
- * Enable the RSA public-key cryptosystem.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_RSA
-#define ARCH_TEST_RSA_1024
-#define ARCH_TEST_RSA_2048
-#define ARCH_TEST_RSA_3072
-
-/**
- * \def  ARCH_TEST_ECC
- * \def  ARCH_TEST_ECC_CURVE_SECPXXXR1
- *
- * Enable the elliptic curve
- * Enable specific curves within the Elliptic Curve
- * module.  By default all supported curves are enabled.
- *
- * Requires: ARCH_TEST_ECC
- * Comment macros to disable the curve
- */
-#define ARCH_TEST_ECC
-#define ARCH_TEST_ECC_CURVE_SECP192R1
-#define ARCH_TEST_ECC_CURVE_SECP224R1
-#define ARCH_TEST_ECC_CURVE_SECP256R1
-#define ARCH_TEST_ECC_CURVE_SECP384R1
-
-/**
- * \def ARCH_TEST_AES
- *
- * Enable the AES block cipher.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_AES
-#define ARCH_TEST_AES_128
-#define ARCH_TEST_AES_192
-#define ARCH_TEST_AES_256
-#define ARCH_TEST_AES_512
-
-/**
- * \def  ARCH_TEST_DES
- *
- * Enable the DES block cipher.
- * By default all supported keys are enabled.
- *
- * Comment macros to disable the types
- */
-//#define ARCH_TEST_DES
-//#define ARCH_TEST_DES_1KEY
-//#define ARCH_TEST_DES_2KEY
-//#define ARCH_TEST_DES_3KEY
-
-/**
- * \def  ARCH_TEST_RAW
- *
- * A "key" of this type cannot be used for any cryptographic operation.
- * Applications may use this type to store arbitrary data in the keystore.
- */
-#define ARCH_TEST_RAW
-
-/**
- * \def ARCH_TEST_CIPER
- *
- * Enable the generic cipher layer.
- */
-
-#define ARCH_TEST_CIPER
-
-/**
- * \def ARCH_TEST_ARC4
- *
- * Enable the ARC4 key type.
- */
-//#define ARCH_TEST_ARC4
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CTR
- *
- * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CTR
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CFB
- *
- * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CFB
-
-/**
- * \def ARCH_TEST_CIPER_MODE_CBC
- *
- * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
- *
- * Requires: ARCH_TEST_CIPER
- */
-#define ARCH_TEST_CIPER_MODE_CBC
-
-/**
- * \def ARCH_TEST_CTR_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CTR
- */
-#define ARCH_TEST_CTR_AES
-
-/**
- * \def ARCH_TEST_CBC_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_AES
-#define ARCH_TEST_CBC_AES_NO_PADDING
-
-/**
- * \def ARCH_TEST_CBC_NO_PADDING
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_NO_PADDING
-
-/**
- * \def ARCH_TEST_CFB_AES
- *
- * Requires: ARCH_TEST_CIPER, ARCH_TEST_AES, ARCH_TEST_CIPER_MODE_CFB
- */
-#define ARCH_TEST_CFB_AES
-
-/**
- * \def ARCH_TEST_PKCS1V15_*
- *
- * Enable support for PKCS#1 v1.5 encoding.
- * Enable support for PKCS#1 v1.5 operations.
- * Enable support for RSA-OAEP
- *
- * Requires: ARCH_TEST_RSA, ARCH_TEST_PKCS1V15
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_PKCS1V15
-#define ARCH_TEST_RSA_PKCS1V15_SIGN
-#define ARCH_TEST_RSA_PKCS1V15_SIGN_RAW
-#define ARCH_TEST_RSA_PKCS1V15_CRYPT
-#define ARCH_TEST_RSA_OAEP
-
-/**
- * \def ARCH_TEST_CBC_PKCS7
- *
- * Requires: ARCH_TEST_CIPER_MODE_CBC
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CBC_PKCS7
-
-/**
- * \def ARCH_TEST_ASYMMETRIC_ENCRYPTION
- *
- * Enable support for Asymmetric encryption algorithms
- */
-#define ARCH_TEST_ASYMMETRIC_ENCRYPTION
-
-/**
- * \def ARCH_TEST_HASH
- *
- * Enable the hash algorithm.
- */
-#define ARCH_TEST_HASH
-
-/**
- * \def  ARCH_TEST_HMAC
- *
- * The key policy determines which underlying hash algorithm the key can be
- * used for.
- *
- * Requires: ARCH_TEST_HASH
- */
-#define ARCH_TEST_HMAC
-
-/**
- * \def ARCH_TEST_MDX
- * \def ARCH_TEST_SHAXXX
- *
- * Enable the MDX algorithm.
- * Enable the SHAXXX algorithm.
- *
- * Requires: ARCH_TEST_HASH
- *
- * Comment macros to disable the types
- */
-//#define ARCH_TEST_MD2
-//#define ARCH_TEST_MD4
-//#define ARCH_TEST_MD5
-//#define ARCH_TEST_RIPEMD160
-//#define ARCH_TEST_SHA1
-#define ARCH_TEST_SHA224
-#define ARCH_TEST_SHA256
-#define ARCH_TEST_SHA384
-#define ARCH_TEST_SHA512
-//#define ARCH_TEST_SHA512_224
-//#define ARCH_TEST_SHA512_256
-//#define ARCH_TEST_SHA3_224
-//#define ARCH_TEST_SHA3_256
-//#define ARCH_TEST_SHA3_384
-//#define ARCH_TEST_SHA3_512
-
-/**
- * \def ARCH_TEST_HKDF
- *
- * Enable the HKDF algorithm (RFC 5869).
- *
- * Requires: ARCH_TEST_HASH
-*/
-#define ARCH_TEST_HKDF
-
-/**
- * \def ARCH_TEST_xMAC
- *
- * Enable the xMAC (Cipher/Hash/G-based Message Authentication Code) mode for block
- * ciphers.
- * Requires: ARCH_TEST_AES or ARCH_TEST_DES
- *
- * Comment macros to disable the types
- */
-#define ARCH_TEST_CMAC
-//#define ARCH_TEST_GMAC
-#define ARCH_TEST_HMAC
-
-/**
- * \def ARCH_TEST_CCM
- *
- * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
- *
- * Requires: ARCH_TEST_AES
- */
-#define ARCH_TEST_CCM
-
-/**
- * \def ARCH_TEST_GCM
- *
- * Enable the Galois/Counter Mode (GCM) for AES.
- *
- * Requires: ARCH_TEST_AES
- *
- */
-#define ARCH_TEST_GCM
-
-/**
- * \def ARCH_TEST_TRUNCATED_MAC
- *
- * Enable support for RFC 6066 truncated HMAC in SSL.
- *
- * Comment this macro to disable support for truncated HMAC in SSL
- */
-#define ARCH_TEST_TRUNCATED_MAC
-
-
-/**
- * \def ARCH_TEST_ECDH
- *
- * Enable the elliptic curve Diffie-Hellman library.
- *
- * Requires: ARCH_TEST_ECC
- */
-#define ARCH_TEST_ECDH
-
-/**
- * \def ARCH_TEST_ECDSA
- *
- * Enable the elliptic curve DSA library.
- * Requires: ARCH_TEST_ECC
- */
-#define ARCH_TEST_ECDSA
-
-/**
- * \def ARCH_TEST_DETERMINISTIC_ECDSA
- *
- * Enable deterministic ECDSA (RFC 6979).
-*/
-#define ARCH_TEST_DETERMINISTIC_ECDSA
-
-/**
- * \def ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
- *
- * Enable ECC support for asymmetric API.
-*/
-//#define ARCH_TEST_ECC_ASYMMETRIC_API_SUPPORT
-#include "pal_crypto_config_check.h"
-
-#endif /* _PAL_CRYPTO_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_config_check.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_config_check.h
deleted file mode 100644
index f75cc1b..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_config_check.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-/**
- * \file pal_crypto_config_check.h
- *
- * \brief Consistency checks for configuration options
- *
- */
-
-#ifndef _PAL_CRYPTO_CONFIG_CHECK_H_
-#define _PAL_CRYPTO_CONFIG_CHECK_H_
-
-#if defined(ARCH_TEST_RSA_1024) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_1024 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_2048) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_2048 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_3072) && !defined(ARCH_TEST_RSA)
-#error "ARCH_TEST_RSA_3072 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP192R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP192R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP224R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP224R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP256R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP256R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECC_CURVE_SECP384R1) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECC_CURVE_SECP384R1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_128) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_128 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_256) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_AES_512) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_AES_512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_1KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_1KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_2KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_2KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_DES_3KEY) && !defined(ARCH_TEST_DES)
-#error "ARCH_TEST_DES_3KEY defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CTR) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CTR defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CFB) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CFB defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CIPER_MODE_CBC) && !defined(ARCH_TEST_CIPER)
-#error "ARCH_TEST_CIPER_MODE_CBC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CTR_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CTR))
-#error "ARCH_TEST_CTR_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_AES) || defined(ARCH_TEST_CBC_AES_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_AES defined, but not all prerequisites"
-#endif
-
-#if (defined(ARCH_TEST_CBC_NO_PADDING)) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_CIPER_MODE_CBC))
-#error "ARCH_TEST_CBC_NO_PADDING defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CFB_AES) &&\
-    (!defined(ARCH_TEST_CIPER) || !defined(ARCH_TEST_AES) || !defined(ARCH_TEST_CIPER_MODE_CFB))
-#error "ARCH_TEST_CFB_AES defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_SIGN_RAW) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_SIGN_RAW defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RSA_PKCS1V15_CRYPT) &&\
-    (!defined(ARCH_TEST_RSA) || !defined(ARCH_TEST_PKCS1V15))
-#error "ARCH_TEST_RSA_PKCS1V15_CRYPT defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CBC_PKCS7) && !defined(ARCH_TEST_CIPER_MODE_CBC)
-#error "ARCH_TEST_CBC_PKCS7 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD2) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD2 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD4) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD4 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_MD5) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_MD5 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_RIPEMD160) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_RIPEMD160 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA1) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA1 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA512_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA512_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_224) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_224 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_256) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_384) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_SHA3_512) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_SHA3_256 defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HKDF) && !defined(ARCH_TEST_HASH)
-#error "ARCH_TEST_HKDF defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_HMAC) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_HMAC defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_CCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_CCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_GCM) && !defined(ARCH_TEST_AES)
-#error "ARCH_TEST_GCM defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDH) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDH defined, but not all prerequisites"
-#endif
-
-#if defined(ARCH_TEST_ECDSA) && !defined(ARCH_TEST_ECC)
-#error "ARCH_TEST_ECDSA defined, but not all prerequisites"
-#endif
-
-#endif /* _PAL_CRYPTO_CONFIG_CHECK_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_empty_intf.c
deleted file mode 100644
index 6c1e9ab..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_intf.c
deleted file mode 100644
index 61beb44..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_intf.c
+++ /dev/null
@@ -1,516 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_crypto_intf.h"
-
-#define  PAL_KEY_SLOT_COUNT  32
-
-/**
-    @brief    - This API will call the requested crypto function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_crypto_function(int type, va_list valist)
-{
-    int                              i;
-    psa_status_t                     status;
-    uint8_t                         *buffer, *ciphertext, *plaintext;
-    const uint8_t                   *nonce, *additional_data, *salt, *peer;
-    size_t                          *length, size, ciphertext_size, nonce_length;
-    size_t                           salt_length, peer_length, additional_data_length;
-#ifdef NOT_SUPPORTED
-    size_t                          *tag_length, plaintext_size;
-    psa_aead_operation_t            *aead_operation;
-#endif
-    psa_key_attributes_t            *attributes;
-    psa_key_handle_t                *handle, key_handle;
-    psa_key_type_t                  *key_type_out, key_type;
-    psa_key_usage_t                 *usage_out, usage;
-    psa_key_id_t                    *key_id_out, key_id;
-    psa_key_lifetime_t              *key_lifetime_out, key_lifetime;
-    psa_algorithm_t                 *key_alg_out, key_alg, alg;
-    psa_hash_operation_t            *hash_operation, *target_operation;
-    psa_mac_operation_t             *mac_operation;
-    psa_cipher_operation_t          *cipher_operation;
-    psa_key_derivation_operation_t  *derive_operation;
-    psa_key_derivation_step_t        step;
-
-    switch (type)
-    {
-        case PAL_CRYPTO_INIT:
-            return psa_crypto_init();
-        case PAL_CRYPTO_GENERATE_RANDOM:
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, int);
-            return psa_generate_random(buffer, size);
-        case PAL_CRYPTO_IMPORT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            buffer = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            status = psa_import_key(attributes, buffer, size, handle);
-            return status;
-        case PAL_CRYPTO_SET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type = va_arg(valist, psa_key_type_t);
-            psa_set_key_type(attributes, key_type);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            size = va_arg(valist, size_t);
-            psa_set_key_bits(attributes, size);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ATTRIBUTES:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            return psa_get_key_attributes(key_handle, attributes);
-        case PAL_CRYPTO_GET_KEY_TYPE:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_type_out = va_arg(valist, psa_key_type_t *);
-            *key_type_out = psa_get_key_type(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage = va_arg(valist, psa_key_usage_t);
-            psa_set_key_usage_flags(attributes, usage);
-            return 0;
-        case PAL_CRYPTO_RESET_KEY_ATTRIBUTES:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            psa_reset_key_attributes(attributes);
-            return 0;
-        case PAL_CRYPTO_EXPORT_PUBLIC_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            buffer = (uint8_t *)(va_arg(valist, uint8_t *));
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t *);
-            return psa_export_public_key(key_handle, buffer, size, length);
-        case PAL_CRYPTO_SET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id = va_arg(valist, psa_key_id_t);
-            psa_set_key_id(attributes, key_id);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime = va_arg(valist, psa_key_lifetime_t);
-            psa_set_key_lifetime(attributes, key_lifetime);
-            return 0;
-        case PAL_CRYPTO_SET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg = va_arg(valist, psa_algorithm_t);
-            psa_set_key_algorithm(attributes, key_alg);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ID:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_id_out = va_arg(valist, psa_key_id_t *);
-            *key_id_out = psa_get_key_id(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_LIFETIME:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_lifetime_out = va_arg(valist, psa_key_lifetime_t *);
-            *key_lifetime_out = psa_get_key_lifetime(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_USAGE_FLAGS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            usage_out = va_arg(valist, psa_key_usage_t *);
-            *usage_out = psa_get_key_usage_flags(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_ALGORITHM:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            key_alg_out = va_arg(valist, psa_algorithm_t *);
-            *key_alg_out = psa_get_key_algorithm(attributes);
-            return 0;
-        case PAL_CRYPTO_GET_KEY_BITS:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            length = va_arg(valist, size_t *);
-            *length = psa_get_key_bits(attributes);
-            return 0;
-        case PAL_CRYPTO_DESTROY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_destroy_key(key_handle);
-        case PAL_CRYPTO_HASH_SETUP:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_hash_setup(hash_operation, alg);
-        case PAL_CRYPTO_HASH_UPDATE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_update(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_VERIFY:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_verify(hash_operation, buffer, size);
-        case PAL_CRYPTO_HASH_FINISH:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_finish(hash_operation, buffer, size, length);
-        case PAL_CRYPTO_HASH_ABORT:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_abort(hash_operation);
-#ifdef NOT_SUPPORTED
-        case PAL_CRYPTO_HASH_COMPUTE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_hash_compute(alg, plaintext, plaintext_size, buffer, size, length);
-        case PAL_CRYPTO_HASH_COMPARE:
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_hash_compare(alg, plaintext, plaintext_size, buffer, size);
-#endif
-        case PAL_CRYPTO_HASH_CLONE:
-            hash_operation = va_arg(valist, psa_hash_operation_t*);
-            target_operation = va_arg(valist, psa_hash_operation_t*);
-            return psa_hash_clone(hash_operation, target_operation);
-        case PAL_CRYPTO_GENERATE_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_generate_key(attributes, handle);
-        case PAL_CRYPTO_AEAD_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_encrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, plaintext, size, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            nonce = va_arg(valist, const uint8_t *);
-            nonce_length = va_arg(valist, size_t);
-            additional_data = va_arg(valist, const uint8_t *);
-            additional_data_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_decrypt(key_handle, alg, nonce, nonce_length, additional_data,
-            additional_data_length, ciphertext, ciphertext_size, plaintext, size, length);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_AEAD_ENCRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_encrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_DECRYPT_SETUP:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_aead_decrypt_setup(aead_operation, key_handle, alg);
-        case PAL_CRYPTO_AEAD_GENERATE_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_generate_nonce(aead_operation, buffer, size, length);
-        case PAL_CRYPTO_AEAD_SET_NONCE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_set_nonce(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_SET_LENGTHS:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            size = va_arg(valist, size_t);
-            plaintext_size = va_arg(valist, size_t);
-            return psa_aead_set_lengths(aead_operation, size, plaintext_size);
-        case PAL_CRYPTO_AEAD_UPDATE_AD:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_update_ad(aead_operation, buffer, size);
-        case PAL_CRYPTO_AEAD_UPDATE:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_aead_update(aead_operation, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_AEAD_FINISH:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            tag_length = (size_t *)va_arg(valist, size_t*);
-            return psa_aead_finish(aead_operation, ciphertext, ciphertext_size, length, buffer,
-            size, tag_length);
-        case PAL_CRYPTO_AEAD_VERIFY:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_aead_verify(aead_operation, plaintext, plaintext_size, length, buffer, size);
-        case PAL_CRYPTO_AEAD_ABORT:
-            aead_operation = va_arg(valist, psa_aead_operation_t *);
-            return psa_aead_abort(aead_operation);
-#endif
-        case PAL_CRYPTO_MAC_SIGN_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_sign_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_UPDATE:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_update(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_SIGN_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = (size_t *)va_arg(valist, size_t*);
-            return psa_mac_sign_finish(mac_operation, buffer, size, length);
-        case PAL_CRYPTO_MAC_VERIFY_SETUP:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_mac_verify_setup(mac_operation, key_handle, alg);
-        case PAL_CRYPTO_MAC_VERIFY_FINISH:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_mac_verify_finish(mac_operation, buffer, size);
-        case PAL_CRYPTO_MAC_ABORT:
-            mac_operation = va_arg(valist, psa_mac_operation_t*);
-            return psa_mac_abort(mac_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_MAC_COMPUTE:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_mac_compute(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size, length);
-        case PAL_CRYPTO_MAC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t*);
-            plaintext_size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t*);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_mac_verify(key_handle, alg, plaintext, plaintext_size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_ASYMMTERIC_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_encrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_ASYMMTERIC_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            salt = va_arg(valist, const uint8_t *);
-            salt_length = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_decrypt(key_handle, alg, plaintext, size, salt, salt_length,
-            ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_encrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_cipher_decrypt_setup(cipher_operation, key_handle, alg);
-        case PAL_CRYPTO_CIPHER_GENERATE_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_generate_iv(cipher_operation, buffer, size, length);
-        case PAL_CRYPTO_CIPHER_SET_IV:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_cipher_set_iv(cipher_operation, buffer, size);
-        case PAL_CRYPTO_CIPHER_UPDATE:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_update(cipher_operation, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_FINISH:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_finish(cipher_operation, ciphertext, ciphertext_size, length);
-        case PAL_CRYPTO_CIPHER_ABORT:
-            cipher_operation =  va_arg(valist, psa_cipher_operation_t *);
-            return psa_cipher_abort(cipher_operation);
-#ifdef NO_SUPPORT
-        case PAL_CRYPTO_CIPHER_ENCRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_encrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_CIPHER_DECRYPT:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            plaintext = va_arg(valist, uint8_t *);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_cipher_decrypt(key_handle, alg, plaintext, size, ciphertext, ciphertext_size,
-            length);
-#endif
-        case PAL_CRYPTO_ASYMMTERIC_SIGN:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_asymmetric_sign(key_handle, alg, buffer, size, ciphertext, ciphertext_size,
-            length);
-        case PAL_CRYPTO_ASYMMTERIC_VERIFY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            alg = va_arg(valist, psa_algorithm_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            ciphertext = va_arg(valist, uint8_t *);
-            ciphertext_size = va_arg(valist, size_t);
-            return psa_asymmetric_verify(key_handle, alg, buffer, size, ciphertext,
-            ciphertext_size);
-        case PAL_CRYPTO_RAW_KEY_AGREEMENT:
-            alg = va_arg(valist, psa_algorithm_t);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            length = va_arg(valist, size_t*);
-            return psa_raw_key_agreement(alg, key_handle, peer, peer_length, buffer, size, length);
-        case PAL_CRYPTO_COPY_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_copy_key(key_handle, attributes, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SETUP:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            alg = va_arg(valist, psa_algorithm_t);
-            return psa_key_derivation_setup(derive_operation, alg);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_input_bytes(derive_operation, step, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_key_derivation_input_key(derive_operation, step, key_handle);
-        case PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            step = (psa_key_derivation_step_t)va_arg(valist, int);
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            peer = va_arg(valist, uint8_t*);
-            peer_length = va_arg(valist, size_t);
-            return psa_key_derivation_key_agreement(derive_operation, step, key_handle, peer,
-            peer_length);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            buffer = va_arg(valist, uint8_t*);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_output_bytes(derive_operation, buffer, size);
-        case PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY:
-            attributes = va_arg(valist, psa_key_attributes_t *);
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_key_derivation_output_key(attributes, derive_operation, handle);
-        case PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            size = va_arg(valist, size_t);
-            return psa_key_derivation_set_capacity(derive_operation, size);
-        case PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            length = va_arg(valist, size_t *);
-            return psa_key_derivation_get_capacity(derive_operation, length);
-        case PAL_CRYPTO_KEY_DERIVATION_ABORT:
-            derive_operation = va_arg(valist, psa_key_derivation_operation_t *);
-            return psa_key_derivation_abort(derive_operation);
-        case PAL_CRYPTO_OPEN_KEY:
-            key_id = va_arg(valist, psa_key_id_t);
-            handle = (psa_key_handle_t *)va_arg(valist, int *);
-            return psa_open_key(key_id, handle);
-        case PAL_CRYPTO_CLOSE_KEY:
-            key_handle = (psa_key_handle_t)va_arg(valist, int);
-            return psa_close_key(key_handle);
-        case PAL_CRYPTO_FREE:
-            for (i = 0; i < PAL_KEY_SLOT_COUNT; i++)
-                psa_destroy_key(i);
-            return 0;
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_intf.h
deleted file mode 100644
index 83071ce..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/crypto/pal_crypto_intf.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_CRYPTO_INTF_H_
-#define _PAL_CRYPTO_INTF_H_
-
-#include "pal_common.h"
-
-enum crypto_function_code {
-    PAL_CRYPTO_INIT                             = 0x1,
-    PAL_CRYPTO_GENERATE_RANDOM                  = 0x2,
-    PAL_CRYPTO_IMPORT_KEY                       = 0x3,
-    PAL_CRYPTO_EXPORT_KEY                       = 0x4,
-    PAL_CRYPTO_EXPORT_PUBLIC_KEY                = 0x5,
-    PAL_CRYPTO_DESTROY_KEY                      = 0x6,
-    PAL_CRYPTO_HASH_SETUP                       = 0x7,
-    PAL_CRYPTO_HASH_UPDATE                      = 0x8,
-    PAL_CRYPTO_HASH_VERIFY                      = 0x9,
-    PAL_CRYPTO_HASH_FINISH                      = 0xA,
-    PAL_CRYPTO_HASH_ABORT                       = 0xB,
-    PAL_CRYPTO_GENERATE_KEY                     = 0xC,
-    PAL_CRYPTO_AEAD_ENCRYPT                     = 0xD,
-    PAL_CRYPTO_AEAD_DECRYPT                     = 0xE,
-    PAL_CRYPTO_MAC_SIGN_SETUP                   = 0xF,
-    PAL_CRYPTO_MAC_UPDATE                       = 0x10,
-    PAL_CRYPTO_MAC_SIGN_FINISH                  = 0x11,
-    PAL_CRYPTO_MAC_VERIFY_SETUP                 = 0x12,
-    PAL_CRYPTO_MAC_VERIFY_FINISH                = 0x13,
-    PAL_CRYPTO_MAC_ABORT                        = 0x14,
-    PAL_CRYPTO_ASYMMTERIC_ENCRYPT               = 0x15,
-    PAL_CRYPTO_ASYMMTERIC_DECRYPT               = 0x16,
-    PAL_CRYPTO_CIPHER_ENCRYPT_SETUP             = 0x17,
-    PAL_CRYPTO_CIPHER_DECRYPT_SETUP             = 0x18,
-    PAL_CRYPTO_CIPHER_GENERATE_IV               = 0x19,
-    PAL_CRYPTO_CIPHER_SET_IV                    = 0x1A,
-    PAL_CRYPTO_CIPHER_UPDATE                    = 0x1B,
-    PAL_CRYPTO_CIPHER_FINISH                    = 0x1C,
-    PAL_CRYPTO_CIPHER_ABORT                     = 0x1D,
-    PAL_CRYPTO_ASYMMTERIC_SIGN                  = 0x1E,
-    PAL_CRYPTO_ASYMMTERIC_VERIFY                = 0x1F,
-    PAL_CRYPTO_COPY_KEY                         = 0x20,
-    PAL_CRYPTO_SET_KEY_TYPE                     = 0x21,
-    PAL_CRYPTO_SET_KEY_BITS                     = 0x22,
-    PAL_CRYPTO_GET_KEY_ATTRIBUTES               = 0x23,
-    PAL_CRYPTO_GET_KEY_TYPE                     = 0x24,
-    PAL_CRYPTO_SET_KEY_USAGE_FLAGS              = 0x25,
-    PAL_CRYPTO_RESET_KEY_ATTRIBUTES             = 0x26,
-    PAL_CRYPTO_SET_KEY_ID                       = 0x27,
-    PAL_CRYPTO_SET_KEY_LIFETIME                 = 0x28,
-    PAL_CRYPTO_SET_KEY_ALGORITHM                = 0x29,
-    PAL_CRYPTO_GET_KEY_ID                       = 0x2A,
-    PAL_CRYPTO_GET_KEY_LIFETIME                 = 0x2B,
-    PAL_CRYPTO_GET_KEY_USAGE_FLAGS              = 0x2C,
-    PAL_CRYPTO_GET_KEY_ALGORITHM                = 0x2D,
-    PAL_CRYPTO_GET_KEY_BITS                     = 0x2E,
-    PAL_CRYPTO_HASH_COMPUTE                     = 0x2F,
-    PAL_CRYPTO_HASH_COMPARE                     = 0x30,
-    PAL_CRYPTO_KEY_DERIVATION_SETUP             = 0x31,
-    PAL_CRYPTO_KEY_DERIVATION_ABORT             = 0x32,
-    PAL_CRYPTO_RAW_KEY_AGREEMENT                = 0x33,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES       = 0x34,
-    PAL_CRYPTO_KEY_DERIVATION_INPUT_KEY         = 0x35,
-    PAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT     = 0x36,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES      = 0x37,
-    PAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY        = 0x38,
-    PAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY      = 0x39,
-    PAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY      = 0x3A,
-    PAL_CRYPTO_HASH_CLONE                       = 0x3B,
-    PAL_CRYPTO_MAC_COMPUTE                      = 0x3C,
-    PAL_CRYPTO_MAC_VERIFY                       = 0x3D,
-    PAL_CRYPTO_CIPHER_ENCRYPT                   = 0x3F,
-    PAL_CRYPTO_CIPHER_DECRYPT                   = 0x40,
-    PAL_CRYPTO_OPEN_KEY                         = 0x41,
-    PAL_CRYPTO_CLOSE_KEY                        = 0x42,
-    PAL_CRYPTO_AEAD_ENCRYPT_SETUP               = 0x43,
-    PAL_CRYPTO_AEAD_DECRYPT_SETUP               = 0x44,
-    PAL_CRYPTO_AEAD_GENERATE_NONCE              = 0x45,
-    PAL_CRYPTO_AEAD_SET_NONCE                   = 0x46,
-    PAL_CRYPTO_AEAD_SET_LENGTHS                 = 0X47,
-    PAL_CRYPTO_AEAD_UPDATE_AD                   = 0x48,
-    PAL_CRYPTO_AEAD_UPDATE                      = 0x49,
-    PAL_CRYPTO_AEAD_FINISH                      = 0x4A,
-    PAL_CRYPTO_AEAD_VERIFY                      = 0x4B,
-    PAL_CRYPTO_AEAD_ABORT                       = 0x4C,
-    PAL_CRYPTO_FREE                             = 0xFE,
-};
-
-int32_t pal_crypto_function(int type, va_list valist);
-#endif /* _PAL_CRYPTO_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.c
deleted file mode 100644
index e7ec66b..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "pal_attestation_crypto.h"
-
-static uint32_t         public_key_registered;
-static psa_key_handle_t public_key_handle;
-
-static inline struct q_useful_buf_c useful_buf_head(struct q_useful_buf_c buf,
-                                                  size_t amount)
-{
-    return UsefulBuf_Head(buf, amount);
-}
-
-static psa_algorithm_t cose_hash_alg_id_to_psa(int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t status;
-
-    switch (cose_hash_alg_id)
-    {
-    case COSE_ALG_SHA256_PROPRIETARY:
-        status = PSA_ALG_SHA_256;
-        break;
-    default:
-        status = PSA_ALG_MD4;
-        break;
-    }
-
-    return status;
-}
-
-static int32_t hash_alg_id_from_sig_alg_id(int32_t cose_sig_alg_id)
-{
-    switch (cose_sig_alg_id)
-    {
-        case COSE_ALGORITHM_ES256:
-            return COSE_ALG_SHA256_PROPRIETARY;
-        default:
-            return INT32_MAX;
-    }
-}
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id)
-{
-    psa_algorithm_t      psa_alg;
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Map the algorithm ID */
-    psa_alg = cose_hash_alg_id_to_psa(cose_hash_alg_id);
-
-    /* Actually do the hash set up */
-    status = psa_hash_setup(psa_hash, psa_alg);
-
-    return status;
-
-}
-
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash)
-{
-    if (data_to_hash.ptr == NULL) {
-        /* No data was passed in to be hashed indicating the mode of use is
-         * the computation of the size of hash. This mode is hashing is used
-         * by t_cose when it is requested to compute the size of the signed
-         * data it might compute, which is in turn used to compute the
-         * size of a would be token. When computing the size, the size
-         * like this, there is nothing to do in update()
-         */
-        return;
-    }
-
-    /* Actually hash the data */
-    psa_hash_update(psa_hash, data_to_hash.ptr, data_to_hash.len);
-}
-
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result)
-{
-    psa_status_t         status = PSA_ERROR_GENERIC_ERROR;
-
-    /* Actually finish up the hash */
-    status = psa_hash_finish(psa_hash, buffer_to_hold_result.ptr,
-                                       buffer_to_hold_result.len, &(hash_result->len));
-    hash_result->ptr = buffer_to_hold_result.ptr;
-
-    return status;
-
-}
-
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash)
-{
-    psa_status_t            status = PSA_ERROR_GENERIC_ERROR;
-    psa_hash_operation_t    psa_hash = PSA_HASH_OPERATION_INIT;
-
-    status = pal_cose_crypto_hash_start(&psa_hash, COSE_ALG_SHA256_PROPRIETARY);
-    if (status != PSA_SUCCESS)
-        goto Done;
-
-    pal_cose_crypto_hash_update(&psa_hash, bytes_to_hash);
-
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-    if (status != PSA_SUCCESS)
-        goto Done;
-Done:
-    return status;
-}
-
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload)
-{
-    uint32_t                    status;
-    QCBOREncodeContext          cbor_encode_ctx;
-    struct q_useful_buf_c       tbs_first_part;
-    QCBORError                  qcbor_result;
-    int32_t                     hash_alg_id;
-    UsefulBuf_MAKE_STACK_UB    (buffer_for_TBS_first_part, T_COSE_SIZE_OF_TBS);
-    psa_hash_operation_t        psa_hash = PSA_HASH_OPERATION_INIT;
-
-    /* This builds the CBOR-format to-be-signed bytes */
-    QCBOREncode_Init(&cbor_encode_ctx, buffer_for_TBS_first_part);
-    QCBOREncode_OpenArray(&cbor_encode_ctx);
-
-    /* context */
-    QCBOREncode_AddSZString(&cbor_encode_ctx, COSE_SIG_CONTEXT_STRING_SIGNATURE1);
-
-    /* body_protected */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, protected_headers);
-
-    /* sign_protected is not used for Sign1 */
-    /* external_aad */
-    QCBOREncode_AddBytes(&cbor_encode_ctx, NULL_USEFUL_BUF_C);
-
-    /* The short fake payload. */
-    QCBOREncode_AddBytesLenOnly(&cbor_encode_ctx, payload);
-    QCBOREncode_CloseArray(&cbor_encode_ctx);
-
-    /* Get the result and convert it to struct q_useful_buf_c representation */
-    qcbor_result = QCBOREncode_Finish(&cbor_encode_ctx, &tbs_first_part);
-    if (qcbor_result)
-    {
-        /* Mainly means that the protected_headers were too big
-         * (which should never happen)
-         */
-        status = PAL_ATTEST_ERR_SIGN_STRUCT;
-        goto Done;
-    }
-
-    /* Start the hashing */
-    hash_alg_id = hash_alg_id_from_sig_alg_id(cose_alg_id);
-
-    /* Don't check hash_alg_id for failure. pal_cose_crypto_hash_start()
-     * will handle it properly
-     */
-    status = pal_cose_crypto_hash_start(&psa_hash, hash_alg_id);
-    if (status)
-        goto Done;
-
-    /* This is hashing of the first part, all the CBOR
-     * except the payload.
-     */
-    pal_cose_crypto_hash_update(&psa_hash, useful_buf_head(tbs_first_part, tbs_first_part.len));
-
-    /* Hash the payload, the second part. */
-    pal_cose_crypto_hash_update(&psa_hash, payload);
-
-    /* Finish the hash and set up to return it */
-    status = pal_cose_crypto_hash_finish(&psa_hash, buffer_for_hash, hash);
-
-Done:
-    return status;
-}
-
-static int32_t pal_attest_get_public_key(uint8_t *public_key_buff, size_t public_key_buf_size,
-                                       size_t *public_key_len, psa_ecc_curve_t *elliptic_curve_type)
-{
-    int32_t     status = PAL_ATTEST_ERROR;
-
-#ifdef PLATFORM_OVERRIDE_ATTEST_PK
-    if (public_key_buf_size < (attest_key.pubx_key_size + attest_key.puby_key_size + 1))
-        return PAL_ATTEST_ERR_SMALL_BUFFER;
-
-    *public_key_len = (attest_key.pubx_key_size + attest_key.puby_key_size + 1);
-    *elliptic_curve_type = PSA_ECC_CURVE_SECP256R1;
-    memcpy(public_key_buff, (void *)&attest_public_key, *public_key_len);
-    status = PSA_SUCCESS;
-#else
-    status = tfm_initial_attest_get_public_key(public_key_buff,
-                                               public_key_buf_size,
-                                               public_key_len,
-                                               elliptic_curve_type);
-#endif
-
-    return status;
-}
-
-static uint32_t pal_import_attest_key(psa_algorithm_t key_alg)
-{
-    psa_status_t     status             = PAL_ATTEST_ERROR;
-    psa_key_usage_t  usage              = PSA_KEY_USAGE_VERIFY;
-    psa_ecc_curve_t  ecc_curve;
-    psa_key_type_t   attest_key_type;
-    size_t           public_key_size;
-    uint8_t          public_key_buff[ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH] = {0};
-
-#if defined(CRYPTO_VERSION_BETA1) || defined(CRYPTO_VERSION_BETA2)
-    psa_key_policy_t policy;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Setup the key policy for public key */
-        policy = psa_key_policy_init();
-        psa_key_policy_set_usage(&policy, usage, key_alg);
-
-        status = psa_allocate_key(&public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        status = psa_set_key_policy(public_key_handle, &policy);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        /* Import the public key */
-        status = psa_import_key(public_key_handle,
-                                attest_key_type,
-                                public_key_buff,
-                                public_key_size);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-
-#elif defined(CRYPTO_VERSION_BETA3)
-    psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
-
-    if (!public_key_registered)
-    {
-        status = pal_attest_get_public_key(public_key_buff,
-                                           sizeof(public_key_buff),
-                                           &public_key_size,
-                                           &ecc_curve);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        if (ecc_curve == USHRT_MAX)
-            return PAL_ATTEST_ERROR;
-
-        /* Set key type for public key */
-        attest_key_type = PSA_KEY_TYPE_ECC_PUBLIC_KEY(ecc_curve);
-
-        /* Set the attributes for the public key */
-        psa_set_key_type(&attributes, attest_key_type);
-        psa_set_key_bits(&attributes, public_key_size);
-        psa_set_key_usage_flags(&attributes, usage);
-        psa_set_key_algorithm(&attributes, key_alg);
-        psa_set_key_bits(&attributes, 0);
-
-        /* Import the public key */
-        status = psa_import_key(&attributes,
-                                public_key_buff,
-                                public_key_size,
-                                &public_key_handle);
-        if (status != PSA_SUCCESS)
-            return PAL_ATTEST_ERR_KEY_FAIL;
-
-        public_key_registered = 1;
-    }
-#endif
-
-    return status;
-}
-
-static uint32_t pal_destroy_attest_key(void)
-{
-    psa_status_t     status;
-
-    if (!public_key_registered)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    status =  psa_destroy_key(public_key_handle);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    public_key_registered = 0;
-
-    return PAL_ATTEST_SUCCESS;
-}
-
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id,
-                                   struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature)
-{
-    int32_t status = PAL_ATTEST_ERROR;
-    psa_algorithm_t key_alg = PSA_ALG_ECDSA(PSA_ALG_SHA_256);
-
-    /* Register the attestation public key */
-    status = pal_import_attest_key(key_alg);
-    if (status != PAL_ATTEST_SUCCESS)
-        return status;
-
-    /* Verify the signature */
-    status = psa_asymmetric_verify(public_key_handle,
-                                   key_alg, token_hash.ptr, token_hash.len,
-                                   signature.ptr, signature.len);
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_SIGNATURE_FAIL;
-
-    /* Unregister the attestation public key */
-    status = pal_destroy_attest_key();
-    if (status != PSA_SUCCESS)
-        return PAL_ATTEST_ERR_KEY_FAIL;
-
-    return PAL_ATTEST_SUCCESS;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.h
deleted file mode 100644
index 9ca9637..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_crypto.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_CRYPTO_H_
-#define _PAL_ATTESTATION_CRYPTO_H_
-
-#include "pal_attestation_eat.h"
-
-#define ATTEST_PUBLIC_KEY_SLOT                  4
-#define ECC_CURVE_SECP256R1_PULBIC_KEY_LENGTH   (1 + 2 * PSA_BITS_TO_BYTES(256))
-
-typedef struct {
-    uint8_t  *pubx_key;
-    size_t    pubx_key_size;
-    uint8_t  *puby_key;
-    size_t    puby_key_size;
-} ecc_key_t;
-
-struct ecc_public_key_t {
-    const uint8_t a;
-    uint8_t public_key[]; /* X-coordinate || Y-coordinate */
-};
-
-static const struct ecc_public_key_t attest_public_key = {
-     /* Constant byte */
-     0x04,
-     /* X-coordinate */
-     {0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-      0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-      0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-      0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F,
-     /* Y-coordinate */
-      0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-      0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-      0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-      0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64},
-};
-
-static const uint8_t initial_attestation_public_x_key[] = {
-    0x79, 0xEB, 0xA9, 0x0E, 0x8B, 0xF4, 0x50, 0xA6,
-    0x75, 0x15, 0x76, 0xAD, 0x45, 0x99, 0xB0, 0x7A,
-    0xDF, 0x93, 0x8D, 0xA3, 0xBB, 0x0B, 0xD1, 0x7D,
-    0x00, 0x36, 0xED, 0x49, 0xA2, 0xD0, 0xFC, 0x3F
-};
-
-static const uint8_t initial_attestation_public_y_key[] = {
-    0xBF, 0xCD, 0xFA, 0x89, 0x56, 0xB5, 0x68, 0xBF,
-    0xDB, 0x86, 0x73, 0xE6, 0x48, 0xD8, 0xB5, 0x8D,
-    0x92, 0x99, 0x55, 0xB1, 0x4A, 0x26, 0xC3, 0x08,
-    0x0F, 0x34, 0x11, 0x7D, 0x97, 0x1D, 0x68, 0x64
-};
-
-/* Initialize the structure with given public key */
-static const ecc_key_t attest_key = {
-        (uint8_t *)initial_attestation_public_x_key,
-        sizeof(initial_attestation_public_x_key),
-        (uint8_t *)initial_attestation_public_y_key,
-        sizeof(initial_attestation_public_y_key)
-};
-
-int32_t pal_cose_crypto_hash_start(psa_hash_operation_t *psa_hash, int32_t cose_hash_alg_id);
-void pal_cose_crypto_hash_update(psa_hash_operation_t *psa_hash,
-                                 struct q_useful_buf_c data_to_hash);
-int32_t pal_cose_crypto_hash_finish(psa_hash_operation_t *psa_hash,
-                                    struct q_useful_buf buffer_to_hold_result,
-                                    struct q_useful_buf_c *hash_result);
-int pal_create_sha256(struct q_useful_buf_c bytes_to_hash, struct q_useful_buf buffer_for_hash,
-                      struct q_useful_buf_c *hash);
-uint32_t pal_compute_hash(int32_t cose_alg_id, struct q_useful_buf buffer_for_hash,
-                          struct q_useful_buf_c *hash, struct q_useful_buf_c protected_headers,
-                          struct q_useful_buf_c payload);
-uint32_t pal_crypto_pub_key_verify(int32_t cose_algorithm_id, struct q_useful_buf_c token_hash,
-                                   struct q_useful_buf_c signature);
-#endif /* _PAL_ATTESTATION_CRYPTO_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_eat.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_eat.h
deleted file mode 100644
index fa61d6a..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_eat.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_EAT_H_
-#define _PAL_ATTESTATION_EAT_H_
-
-#include "qcbor.h"
-#include "pal_common.h"
-
-#define PAL_ATTEST_MIN_ERROR              30
-
-#define COSE_ALGORITHM_ES256             -7
-#define COSE_ALG_SHA256_PROPRIETARY      -72000
-
-#define USEFUL_BUF_MAKE_STACK_UB UsefulBuf_MAKE_STACK_UB
-
-#define COSE_SIG_CONTEXT_STRING_SIGNATURE1 "Signature1"
-
-/* Private value. Intentionally not documented for Doxygen.
- * This is the size allocated for the encoded protected headers.  It
- * needs to be big enough for make_protected_header() to succeed. It
- * currently sized for one header with an algorithm ID up to 32 bits
- * long -- one byte for the wrapping map, one byte for the label, 5
- * bytes for the ID. If this is made accidentially too small, QCBOR will
- * only return an error, and not overrun any buffers.
- *
- * 9 extra bytes are added, rounding it up to 16 total, in case some
- * other protected header is to be added.
- */
-#define T_COSE_SIGN1_MAX_PROT_HEADER (1+1+5+9)
-
-/**
- * This is the size of the first part of the CBOR encoded TBS
- * bytes. It is around 20 bytes. See create_tbs_hash().
- */
-#define T_COSE_SIZE_OF_TBS \
-    1 + /* For opening the array */ \
-    sizeof(COSE_SIG_CONTEXT_STRING_SIGNATURE1) + /* "Signature1" */ \
-    2 + /* Overhead for encoding string */ \
-    T_COSE_SIGN1_MAX_PROT_HEADER + /* entire protected headers */ \
-    3 * (/* 3 NULL bstrs for fields not used */ \
-        1 /* size of a NULL bstr */  \
-    )
-#define NULL_USEFUL_BUF_C  NULLUsefulBufC
-
-enum attestation_error_code {
-    PAL_ATTEST_SUCCESS = 0,
-    PAL_ATTEST_TOKEN_ERR_CBOR_FORMATTING = PAL_ATTEST_MIN_ERROR,
-    PAL_ATTEST_TOKEN_CHALLENGE_MISMATCH,
-    PAL_ATTEST_TOKEN_NOT_SUPPORTED,
-    PAL_ATTEST_TOKEN_NOT_ALL_MANDATORY_CLAIMS,
-    PAL_ATTEST_HASH_LENGTH_MISMATCH,
-    PAL_ATTEST_HASH_MISMATCH,
-    PAL_ATTEST_HASH_FAIL,
-    PAL_ATTEST_HASH_UNSUPPORTED,
-    PAL_ATTEST_HASH_BUFFER_SIZE,
-    PAL_ATTEST_ERR_PROTECTED_HEADERS,
-    PAL_ATTEST_ERR_SIGN_STRUCT,
-    PAL_ATTEST_ERR_KEY_FAIL,
-    PAL_ATTEST_ERR_SIGNATURE_FAIL,
-    PAL_ATTEST_ERR_CBOR_STRUCTURE,
-    PAL_ATTEST_ERR_SMALL_BUFFER,
-    PAL_ATTEST_ERROR,
-};
-
-#endif /* _PAL_ATTESTATION_EAT_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_empty_intf.c
deleted file mode 100644
index 99c9466..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.c
deleted file mode 100644
index 009b79f..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_attestation_intf.h"
-
-/**
-    @brief    - This API will call the requested attestation function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-int32_t pal_attestation_function(int type, va_list valist)
-{
-    uint8_t                *challenge, *token;
-    size_t                  challenge_size, *token_size, token_buffer_size;
-    int32_t                 cose_algorithm_id;
-    struct q_useful_buf     buffer_for_hash;
-    struct q_useful_buf_c  *hash, payload, protected_headers, token_hash, signature;
-
-    switch (type)
-    {
-        case PAL_INITIAL_ATTEST_GET_TOKEN:
-            challenge = va_arg(valist, uint8_t*);
-            challenge_size = va_arg(valist, size_t);
-            token = va_arg(valist, uint8_t*);
-            token_buffer_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token(challenge, challenge_size, token, token_buffer_size,
-            token_size);
-        case PAL_INITIAL_ATTEST_GET_TOKEN_SIZE:
-            challenge_size = va_arg(valist, size_t);
-            token_size = va_arg(valist, size_t*);
-            return psa_initial_attest_get_token_size(challenge_size, token_size);
-        case PAL_INITIAL_ATTEST_COMPUTE_HASH:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            buffer_for_hash = va_arg(valist, struct q_useful_buf);
-            hash = va_arg(valist, struct q_useful_buf_c*);
-            protected_headers = va_arg(valist, struct q_useful_buf_c);
-            payload = va_arg(valist, struct q_useful_buf_c);
-            return pal_compute_hash(cose_algorithm_id, buffer_for_hash, hash,
-                                    protected_headers, payload);
-        case PAL_INITIAL_ATTEST_VERIFY_WITH_PK:
-            cose_algorithm_id = va_arg(valist, int32_t);
-            token_hash = va_arg(valist, struct q_useful_buf_c);
-            signature = va_arg(valist, struct q_useful_buf_c);
-            return pal_crypto_pub_key_verify(cose_algorithm_id, token_hash, signature);
-        default:
-            return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.h
deleted file mode 100644
index 235d578..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/initial_attestation/pal_attestation_intf.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_ATTESTATION_INTF_H_
-#define _PAL_ATTESTATION_INTF_H_
-
-#include "pal_attestation_crypto.h"
-
-enum attestation_function_code {
-    PAL_INITIAL_ATTEST_GET_TOKEN        = 0x1,
-    PAL_INITIAL_ATTEST_GET_TOKEN_SIZE   = 0x2,
-    PAL_INITIAL_ATTEST_VERIFY_TOKEN     = 0x3,
-    PAL_INITIAL_ATTEST_COMPUTE_HASH     = 0x4,
-    PAL_INITIAL_ATTEST_VERIFY_WITH_PK   = 0x5,
-};
-
-int32_t pal_attestation_function(int type, va_list valist);
-#endif /* _PAL_ATTESTATION_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
deleted file mode 100644
index fa0ceb3..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
deleted file mode 100644
index 31269ee..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_internal_trusted_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_its_function(int type, va_list valist)
-{
-    psa_storage_uid_t           uid;
-    uint32_t                    data_size, offset;
-    const void                  *p_write_data;
-    void                        *p_read_data;
-    size_t                      *p_data_length;
-    psa_storage_create_flags_t  its_create_flags;
-    struct psa_storage_info_t   *its_p_info;
-
-    switch (type)
-    {
-    case PAL_ITS_SET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        data_size = va_arg(valist, uint32_t);
-        p_write_data = va_arg(valist, const void*);
-        its_create_flags = va_arg(valist, psa_storage_create_flags_t);
-        return psa_its_set(uid, data_size, p_write_data, its_create_flags);
-    case PAL_ITS_GET:
-        uid = va_arg(valist, psa_storage_uid_t);
-        offset = va_arg(valist, uint32_t);
-        data_size = va_arg(valist, uint32_t);
-        p_read_data = va_arg(valist, void*);
-        p_data_length = va_arg(valist, size_t*);
-        return psa_its_get(uid, offset, data_size, p_read_data, p_data_length);
-    case PAL_ITS_GET_INFO:
-        uid = va_arg(valist, psa_storage_uid_t);
-        its_p_info = va_arg(valist, struct psa_storage_info_t*);
-        return psa_its_get_info(uid, its_p_info);
-    case PAL_ITS_REMOVE:
-        uid = va_arg(valist, psa_storage_uid_t);
-        return psa_its_remove(uid);
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
deleted file mode 100644
index 82d0ccf..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-#define _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum its_function_code {
-    PAL_ITS_SET                         = 0x1,
-    PAL_ITS_GET                         = 0x2,
-    PAL_ITS_GET_INFO                    = 0x3,
-    PAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t pal_its_function(int type, va_list valist);
-#endif /* _PAL_INTERNAL_TRUSTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/pal_config.h
similarity index 75%
copy from api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h
copy to api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/pal_config.h
index 3af5cdb..5dc14f1 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_an539/nspe/common/pal_config.h
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/pal_config.h
@@ -30,9 +30,6 @@
 /* NSPE or SPE TEST build? */
 #define NONSECURE_TEST_BUILD
 
-/* Combine test archive or binary? */
-#define TEST_COMBINE_ARCHIVE
-
 /* If not defined, skip watchdog programming */
 #define WATCHDOG_AVAILABLE
 
@@ -49,9 +46,6 @@
 /* Use hardcoded public key */
 //#define PLATFORM_OVERRIDE_ATTEST_PK
 
-/* Platform specific max UID's size */
-#define PLATFORM_MAX_UID_SIZE 512
-
 /*
  * Include of PSA defined Header files
  */
@@ -74,24 +68,4 @@
 #include "psa_manifest/pid.h"
 #endif
 
-#ifdef CRYPTO
-/* psa/crypto.h: Contains the PSA Crypto API elements */
-#include "psa/crypto.h"
-#endif
-
-#ifdef INTERNAL_TRUSTED_STORAGE
-/* psa/internal_trusted_storage.h: Contains the PSA ITS API elements */
-#include "psa/internal_trusted_storage.h"
-#endif
-
-#ifdef PROTECTED_STORAGE
-/* psa/protected_storage.h: Contains the PSA PS API elements */
-#include "psa/protected_storage.h"
-#endif
-
-#ifdef INITIAL_ATTESTATION
-/* psa/initial_attestation.h: Contains the PSA Initial Attestation API elements */
-#include "psa/initial_attestation.h"
-#endif
-
 #endif /* _PAL_CONFIG_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_driver_ipc_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/pal_driver_ipc_intf.c
similarity index 80%
rename from api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_driver_ipc_intf.c
rename to api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/pal_driver_ipc_intf.c
index bfe1e98..0a41625 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/common/pal_driver_ipc_intf.c
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/pal_driver_ipc_intf.c
@@ -16,7 +16,6 @@
 **/
 
 #include "pal_common.h"
-#include "pal_client_api_intf.h"
 
 /**
     @brief    - This function initializes the UART
@@ -33,11 +32,11 @@
                          {&uart_base_addr, sizeof(uart_base_addr)},
                          {NULL, 0} };
 
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
+    print_handle = psa_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
     if (PSA_HANDLE_IS_VALID(print_handle))
     {
-        status_of_call = pal_ipc_call(print_handle, 0, data, 3, NULL, 0);
-        pal_ipc_close(print_handle);
+        status_of_call = psa_call(print_handle, 0, data, 3, NULL, 0);
+        psa_close(print_handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -56,10 +55,10 @@
     @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data)
+int pal_print_ns(const char *str, int32_t data)
 {
     int             string_len = 0;
-    char            *p = str;
+    const char      *p = str;
     psa_handle_t    print_handle = 0;
     psa_status_t    status_of_call = PSA_SUCCESS;
     uart_fn_type_t  uart_fn = UART_PRINT;
@@ -74,11 +73,11 @@
                           {str, string_len+1},
                           {&data, sizeof(data)} };
 
-    print_handle = pal_ipc_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
+    print_handle = psa_connect(DRIVER_UART_SID, DRIVER_UART_VERSION);
     if (PSA_HANDLE_IS_VALID(print_handle))
     {
-        status_of_call = pal_ipc_call(print_handle, 0, data1, 3, NULL, 0);
-        pal_ipc_close(print_handle);
+        status_of_call = psa_call(print_handle, 0, data1, 3, NULL, 0);
+        psa_close(print_handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -109,11 +108,11 @@
     wd_param.wd_timer_tick_us = timer_tick_us;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)} };
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -142,11 +141,11 @@
     wd_param.wd_timer_tick_us = 0;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)} };
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -175,11 +174,11 @@
     wd_param.wd_timer_tick_us = 0;
     psa_invec invec[1] = {{&wd_param, sizeof(wd_param)} };
 
-    handle = pal_ipc_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
+    handle = psa_connect(DRIVER_WATCHDOG_SID, DRIVER_WATCHDOG_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -212,11 +211,11 @@
     psa_invec invec[1] = {{&nvmem_param, sizeof(nvmem_param)} };
     psa_outvec outvec[1] = {{buffer, size} };
 
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
+    handle = psa_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 1, outvec, 1);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 1, outvec, 1);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -248,11 +247,11 @@
     nvmem_param.size = size;
     psa_invec invec[2] = {{&nvmem_param, sizeof(nvmem_param)}, {buffer, size} };
 
-    handle = pal_ipc_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
+    handle = psa_connect(DRIVER_NVMEM_SID, DRIVER_NVMEM_VERSION);
     if (PSA_HANDLE_IS_VALID(handle))
     {
-        status_of_call = pal_ipc_call(handle, 0, invec, 2, NULL, 0);
-        pal_ipc_close(handle);
+        status_of_call = psa_call(handle, 0, invec, 2, NULL, 0);
+        psa_close(handle);
         if (status_of_call != PSA_SUCCESS)
             return PAL_STATUS_ERROR;
 
@@ -265,18 +264,6 @@
 }
 
 /**
- *   @brief    - This function will read peripherals using SPI commands
- *   @param    - addr : address of the peripheral
- *               data : read buffer
- *               len  : length of the read buffer in bytes
- *   @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-    return 0xFF;
-}
-
-/**
  *   @brief    - Terminates the simulation at the end of all tests completion.
  *               By default, it put cpus into power down mode.
  *   @param    - void
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_empty_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_empty_intf.c
deleted file mode 100644
index bfd4b47..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_empty_intf.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include <stdarg.h>
-#include "pal_common.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    return PAL_STATUS_ERROR;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.c
deleted file mode 100644
index cc01027..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-
-#include "pal_protected_storage_intf.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type    : function code
-                valist  : variable argument list
-    @return   - error status
-**/
-uint32_t pal_ps_function(int type, va_list valist)
-{
-    psa_storage_uid_t          uid;
-    uint32_t                   data_size, size, offset;
-    const void                 *p_write_data;
-    void                       *p_read_data;
-    size_t                     *p_data_length;
-    psa_storage_create_flags_t ps_create_flags;
-    struct psa_storage_info_t  *ps_p_info;
-
-    switch (type)
-    {
-     case PAL_PS_SET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_set(uid, data_size, p_write_data, ps_create_flags);
-     case PAL_PS_GET:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_read_data = va_arg(valist, void*);
-         p_data_length = va_arg(valist, size_t*);
-         return psa_ps_get(uid, offset, data_size, p_read_data, p_data_length);
-     case PAL_PS_GET_INFO:
-         uid = va_arg(valist, psa_storage_uid_t);
-         ps_p_info = va_arg(valist, struct psa_storage_info_t*);
-         return psa_ps_get_info(uid, ps_p_info);
-     case PAL_PS_REMOVE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         return psa_ps_remove(uid);
-     case PAL_PS_CREATE:
-         uid = va_arg(valist, psa_storage_uid_t);
-         size = va_arg(valist, uint32_t);
-         ps_create_flags = va_arg(valist, psa_storage_create_flags_t);
-         return psa_ps_create(uid, size, ps_create_flags);
-     case PAL_PS_SET_EXTENDED:
-         uid = va_arg(valist, psa_storage_uid_t);
-         offset = va_arg(valist, uint32_t);
-         data_size = va_arg(valist, uint32_t);
-         p_write_data = va_arg(valist, const void*);
-         return psa_ps_set_extended(uid, offset, data_size, p_write_data);
-     case PAL_PS_GET_SUPPORT:
-         return psa_ps_get_support();
-    default:
-        return PAL_STATUS_UNSUPPORTED_FUNC;
-    }
-
-    return PAL_STATUS_UNSUPPORTED_FUNC;
-}
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.h
deleted file mode 100644
index 53d7c6c..0000000
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/nspe/protected_storage/pal_protected_storage_intf.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _PAL_PROTECTED_STORAGE_INTF_H_
-#define _PAL_PROTECTED_STORAGE_INTF_H_
-
-#include "pal_common.h"
-
-enum ps_function_code {
-    PAL_PS_SET                          = 0x1,
-    PAL_PS_GET                          = 0x2,
-    PAL_PS_GET_INFO                     = 0x3,
-    PAL_PS_REMOVE                       = 0x4,
-    PAL_PS_CREATE                       = 0x5,
-    PAL_PS_SET_EXTENDED                 = 0x6,
-    PAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t pal_ps_function(int type, va_list valist);
-#endif /* _PAL_PROTECTED_STORAGE_INTF_H_ */
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.c b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.c
index 5c6b487..862da18 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.c
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.c
@@ -33,7 +33,7 @@
               - data     : Value for format specifier
 **/
 
-void pal_print(char *str, int32_t data)
+void pal_print(const char *str, int32_t data)
 {
   pal_uart_pl011_print(str, data);
 }
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.h b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.h
index 5153aaf..41972a7 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.h
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/spe/pal_driver_intf.h
@@ -23,7 +23,7 @@
 #include "pal_wd_cmsdk.h"
 
 void pal_uart_init(uint32_t uart_base_addr);
-void pal_print(char *str, int32_t data);
+void pal_print(const char *str, int32_t data);
 int pal_nvmem_write(addr_t base, uint32_t offset, void *buffer, int size);
 int pal_nvmem_read(addr_t base, uint32_t offset, void *buffer, int size);
 int pal_wd_timer_init(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cfg b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cfg
index ef21df1..2e5ac7f 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cfg
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cfg
@@ -40,20 +40,6 @@
 nvmem.0.end = 0x3003FBFF;
 nvmem.0.permission = TYPE_READ_WRITE;
 
-// Miscellaneous - Test scatter info
-dut.num = 1;
-
-// Start address of 12KB NS memory for test ELF
-dut.0.ns_test_addr = 0x281E0000;
-
-// Start address of combine_test_binary in memory. Memory can be main memory or secondary memory.
-// Size of combine_test_binary = Summation of size of each test ELF file
-dut.0.ns_start_addr_of_combine_test_binary = 0x281F0000;
-
-// Is combine_test_binary available in RAM?
-dut.0.combine_test_binary_in_ram = AVAILABLE;
-
-
 // ###################################################################
 // Following Target configuration parameters are required for IPC tests
 // only. Avoid updating them if you are running dev_apis tests.
diff --git a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cmake b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cmake
index 745ef75..4b1aaa7 100644
--- a/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cmake
+++ b/api-tests/platform/targets/tgt_ff_tfm_musca_b1/target.cmake
@@ -33,8 +33,7 @@
 	list(APPEND PAL_SRC_C_NSPE
 		# driver functionalities are implemented as RoT-services
 		# and secure and non-secure clients will call to these RoT-services to get appropriate driver services.
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ipc_intf.c
+		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_ipc_intf.c
 	)
 	list(APPEND PAL_SRC_C_DRIVER_SP
 		# Driver files will be compiled as part of driver partition
@@ -43,40 +42,14 @@
 		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
 		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
 	)
-else()
-	list(APPEND PAL_SRC_C_NSPE
-		# driver files will be compiled as part of NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_client_api_empty_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common/pal_driver_ns_intf.c
-		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
-		${PSA_ROOT_DIR}/platform/drivers/uart/pl011/pal_uart.c
-		${PSA_ROOT_DIR}/platform/drivers/watchdog/cmsdk/pal_wd_cmsdk.c
-	)
 endif()
-if(${SUITE} STREQUAL "CRYPTO")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto/pal_crypto_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "PROTECTED_STORAGE")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage/pal_protected_storage_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage/pal_internal_trusted_storage_intf.c
-	)
-endif()
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-	list(APPEND PAL_SRC_C_NSPE
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_intf.c
-		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation/pal_attestation_crypto.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/UsefulBuf.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/ieee754.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_decode.c
-                ${CMAKE_CURRENT_BINARY_DIR}/${PSA_TARGET_QCBOR}/src/qcbor_encode.c
-	)
+
+if((${SUITE} STREQUAL "CRYPTO") OR
+   (${SUITE} STREQUAL "STORAGE") OR
+   (${SUITE} STREQUAL "PROTECTED_STORAGE") OR
+   (${SUITE} STREQUAL "INTERNAL_TRUSTED_STORAGE") OR
+   (${SUITE} STREQUAL "INITIAL_ATTESTATION"))
+	message(FATAL_ERROR "For Functional API - use -DTARGET=tgt_dev_apis_tfm_musca_b1 instead")
 endif()
 
 # Create NSPE library
@@ -95,15 +68,7 @@
 
 target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
 	${PAL_DRIVER_INCLUDE_PATHS}
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/protected_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/internal_trusted_storage
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/initial_attestation
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
-
-if(${SUITE} STREQUAL "INITIAL_ATTESTATION")
-target_include_directories(${PSA_TARGET_PAL_NSPE_LIB} PRIVATE
-	${PSA_QCBOR_INCLUDE_PATH}
-)
-endif()
diff --git a/api-tests/tools/scripts/gen_tests_list.py b/api-tests/tools/scripts/gen_tests_list.py
index 064d1f7..22727fb 100644
--- a/api-tests/tools/scripts/gen_tests_list.py
+++ b/api-tests/tools/scripts/gen_tests_list.py
@@ -54,7 +54,7 @@
 	suite_test_end_number      = sys.maxsize
 
 # Dictionary to hold the mapping between suite and the base number
-suite_with_base_dict = {"ipc":0, "crypto":1, "protected_storage":2, "internal_trusted_storage":3, "initial_attestation":4}
+suite_with_base_dict = {"ipc":0, "crypto":1, "internal_trusted_storage":2, "protected_storage":2, "storage":2, "initial_attestation":3}
 
 def gen_test_list():
 	"""
@@ -64,7 +64,7 @@
 		with open(testsuite_db_file, mode='r') as i_f:
 			for line in i_f:
 				if (('test_' == line[0:5]) and
-                                    (int(line[6:9]) >= suite_test_start_number) and
+				    (int(line[6:9]) >= suite_test_start_number) and
 				    (int(line[6:9]) <= suite_test_end_number)):
 					if ((panic_tests_included == 1) and ("panic" not in line)):
 						o_f.write(line)
@@ -92,10 +92,7 @@
 		for line in i_f:
 			line = line.strip()
 			test_num = int(line[6:9]) + (max_test_per_suite * suite_with_base_dict[suite])
-			if (suite == "protected_storage"):
-				uniq_test_string = 'p'+line[6:9]
-			else:
-				uniq_test_string = line[5:9]
+			uniq_test_string = line[5:9]
 			o_f1.write("\t{%d, &test_entry_%s},\n" %(test_num, uniq_test_string))
 			o_f2.write("void test_entry_%s(val_api_t *val_api, psa_api_t *psa_api);\n" %(uniq_test_string))
 	print("Non-secure test entry symbol list:\n\t%s,\n\t%s" %(test_entry_list, test_entry_fn_declare_list))
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index f7ba5f0..1fb6266 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -85,9 +85,8 @@
 #define VAL_MAX_TEST_PER_COMP                200
 #define VAL_FF_BASE                            0
 #define VAL_CRYPTO_BASE                        1
-#define VAL_PROTECTED_STORAGE_BASE             2
-#define VAL_INTERNAL_TRUSTED_STORAGE_BASE      3
-#define VAL_INITIAL_ATTESTATION_BASE           4
+#define VAL_STORAGE_BASE                       2
+#define VAL_INITIAL_ATTESTATION_BASE           3
 
 #define VAL_GET_COMP_NUM(test_id)      \
    ((test_id - (test_id % VAL_MAX_TEST_PER_COMP)) / VAL_MAX_TEST_PER_COMP)
diff --git a/api-tests/val/common/val_target.h b/api-tests/val/common/val_target.h
index b450a33..1d4f421 100644
--- a/api-tests/val/common/val_target.h
+++ b/api-tests/val/common/val_target.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -48,7 +48,6 @@
 typedef enum _GROUP_CONFIG_ID_ {
   GROUP_SOC_PERIPHERAL      = 0x1,
   GROUP_MEMORY              = 0x2,
-  GROUP_MISCELLANEOUS       = 0x3,
   GROUP_MAX                 = 0xFF,
 } group_cfg_id_t;
 
@@ -68,11 +67,6 @@
   MEMORY_DRIVER_PARTITION_MMIO    = 0x5,
 } memory_cfg_id_t;
 
-typedef enum _MISCELLANEOUS_CONFIG_ID_ {
-  MISCELLANEOUS_BOOT         = 0x1,
-  MISCELLANEOUS_DUT          = 0x2
-} miscellaneous_cfg_id_t;
-
 /**
   Assign group type to each system component
 **/
@@ -84,8 +78,6 @@
   NSPE_MMIO                = GROUP_MEMORY,
   SERVER_PARTITION_MMIO    = GROUP_MEMORY,
   DRIVER_PARTITION_MMIO    = GROUP_MEMORY,
-  BOOT                     = GROUP_MISCELLANEOUS,
-  DUT                      = GROUP_MISCELLANEOUS,
 } comp_group_assign_t;
 
 /**
@@ -174,22 +166,6 @@
   dev_attr_t  attribute;
 } soc_peripheral_desc_t;
 
-/**
-  System Miscellaneous Information
-**/
-
-typedef struct _MISCELLANEOUS_INFO_HDR_ {
-    cfg_type_t cfg_type;
-    uint32_t   num;
-} miscellaneous_hdr_t;
-
-typedef struct _MISCELLANEOUS_INFO_DESC_ {
-    cfg_type_t              cfg_type;
-    addr_t                  ns_start_addr_of_combine_test_binary;
-    is_available_t          combine_test_binary_in_ram;
-    addr_t                  ns_test_addr;
-} miscellaneous_desc_t;
-
 /*val target config read apis */
 #ifdef VAL_NSPE_BUILD
 STATIC_DECLARE val_status_t val_target_get_config(cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
diff --git a/api-tests/val/nspe/pal_interfaces_ns.h b/api-tests/val/nspe/pal_interfaces_ns.h
index e017d19..55f8796 100644
--- a/api-tests/val/nspe/pal_interfaces_ns.h
+++ b/api-tests/val/nspe/pal_interfaces_ns.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,73 +22,6 @@
 #include <stdarg.h>
 
 /**
-    @brief    - This function will read peripherals using SPI commands
-    @param    - addr : address of the peripheral
-              - data : read buffer
-              - len  : length of the read buffer in bytes
-    @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len);
-
-/**
- * @brief    - Retrieve the version of the PSA Framework API that is implemented.
- *             This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-uint32_t pal_ipc_framework_version(void);
-
-/**
- * @brief    - Retrieve the version of a Root of Trust Service by its SID.
- *             This is a wrapper API for the psa_version API.
- * @param    - sid The Root of Trust Service ID
- * @return   - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust Service
- *             not present on the system.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-uint32_t pal_ipc_version(uint32_t sid);
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- *          - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-
-/**
- * @brief  - Call a connected Root of Trust Service.
- *          This is a wrapper API for the psa_call API. The caller must provide an array of
- *          psa_invec_t structures as the input payload.
- * @param  - handle:   Handle for the connection.
- *         - type:     Request type
- *         - in_vec:   Array of psa_invec structures.
- *         - in_len:   Number of psa_invec structures in in_vec.
- *         - out_vec:  Array of psa_outvec structures for optional Root of Trust Service response.
- *         - out_len:  Number of psa_outvec structures in out_vec.
- * @return - psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-
-/**
- * @brief - Close a connection to a Root of Trust Service.
- *          This is a wrapper API for the psa_close API.
- *          Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service
- *          so it can clean up resources.
- * @param - handle Handle for the connection.
- * @return - void
- */
-void pal_ipc_close(psa_handle_t handle);
-/**
     @brief    - This function initializes the UART
     @param    - uart base addr
     @return   - SUCCESS/FAILURE
@@ -102,7 +35,7 @@
  *   @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data);
+int pal_print_ns(const char *str, int32_t data);
 
 /**
  *   @brief           - Initializes an hardware watchdog timer
@@ -186,4 +119,11 @@
  *   @return   - void
 **/
 void pal_terminate_simulation(void);
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void);
 #endif
diff --git a/api-tests/val/nspe/val_dispatcher.c b/api-tests/val/nspe/val_dispatcher.c
index d6a2f1a..8debcac 100644
--- a/api-tests/val/nspe/val_dispatcher.c
+++ b/api-tests/val/nspe/val_dispatcher.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,98 +26,6 @@
 
 /* gloabls */
 addr_t          g_test_info_addr;
-uint32_t        combine_test_binary_in_ram;
-addr_t          combine_test_binary_addr;
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-static const unsigned char elf_magic_header[ELF_IDENT] = {
-    /* 0x7f, 'E', 'L', 'F' */
-    0x7f, 0x45, 0x4c, 0x46,
-    /* Only 32-bit objects  */
-    0x01,
-    /* Only LSB data. */
-    0x01,
-    /* Only ELF version 1. */
-    0x01,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0
-};
-
-/**
-    @brief    - This API will copy the length of data from addr to *data
-    @param    - addr : address to be read
-                data pointer : address to which data will be copied
-                len  : length of data to be copy in bytes
-    @return   - error status
-**/
-val_status_t val_mem_copy(addr_t addr, uint8_t *data, uint32_t len)
-{
-    if (combine_test_binary_in_ram)
-    {
-        memcpy((void*)data, (void *)addr, len);
-        return VAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return val_spi_read(addr, data, len);
-    }
-}
-
-
-/**
-    @brief    - This function parses ELF header, entry address(test info addreess)
-                and program headers. Copies the loadable segments to system memory.
-    @return   - Returns Success/Failure
-**/
-int val_copy_elf(uint32_t saddr, uint32_t *info_addr)
-{
-    elf_header_t     test_elfh;
-    elf_pheader_t    test_ph;
-    int              i;
-
-    if (0 != val_mem_copy(saddr, (uint8_t *)&test_elfh, sizeof(elf_header_t)))
-    {
-        val_print(PRINT_ERROR, "Error: read failure for Test ELF header\n", 0);
-        return -1;
-    }
-
-    /* validate ELF header */
-    if (0 != memcmp(&test_elfh.e_ident, &elf_magic_header, ELF_IDENT))
-    {
-        val_print(PRINT_ERROR, "Fail: Test ELF header validation\n", 0);
-        return -1;
-    }
-
-    for (i = 0; i < test_elfh.e_phnum; i++)
-    {
-        /* Read the program header */
-        if (0 != val_mem_copy((saddr + test_elfh.e_phoff + (sizeof(elf_pheader_t)*i)),
-                            (uint8_t *)&test_ph, sizeof(elf_pheader_t)))
-        {
-            val_print(PRINT_ERROR, "Error: reading Test program header\n", 0);
-            return -1;
-        }
-
-        /* Load the program to physical RAM */
-        if (0 != val_mem_copy((saddr + test_ph.p_offset),
-                            (uint8_t *)test_ph.p_paddr, test_ph.p_filesz))
-        {
-            val_print(PRINT_ERROR, "Error: reading Test program header\n", 0);
-            return -1;
-        }
-    }
-
-    *info_addr = test_elfh.e_entry;
-    return 0;
-}
-#endif
 
 /**
     @brief        - This function reads the test ELFs from RAM or secondary storage and loads into
@@ -128,98 +36,6 @@
 **/
 val_status_t val_test_load(test_id_t *test_id, test_id_t test_id_prev)
 {
-#if !defined(TEST_COMBINE_ARCHIVE)
-    test_header_t   test_header;
-    addr_t          flash_addr = combine_test_binary_addr;
-
-    /*
-     * The combined Test ELF binary:
-     *
-     * ----------------------
-     * | Custom Test Header*|
-     * |--------------------|
-     * | Test-1 Image       |
-     * ----------------------
-     * | Custom Test Header*|
-     * ----------------------
-     * | Test-2 Image       |
-     * |--------------------|
-     * | Custom Test Header*|
-     *          :
-     *          :
-     * ----------------------
-     * | END Marker         |
-     * ----------------------
-     *
-     */
-
-    if (test_id_prev != VAL_INVALID_TEST_ID)
-    {
-        /* Jump to last test run + 1 */
-        do
-        {
-            if (val_mem_copy(flash_addr, (uint8_t *)&test_header, sizeof(test_header_t)))
-            {
-                val_print(PRINT_ERROR, "Error: reading Test program header\n", 0);
-                return VAL_STATUS_LOAD_ERROR;
-            }
-
-            if (test_header.start_marker == VAL_TEST_END_MARKER)
-            {
-                val_print(PRINT_DEBUG, "\n\nNo more valid tests found. Exiting..", 0);
-                *test_id = VAL_INVALID_TEST_ID;
-                return VAL_STATUS_SUCCESS;
-            }
-
-            if (test_header.start_marker != VAL_TEST_START_MARKER)
-            {
-                flash_addr += 0x4;
-                continue;
-            }
-
-            if ((test_header.start_marker == VAL_TEST_START_MARKER)
-                    && (test_header.test_id == test_id_prev))
-            {
-                flash_addr += (sizeof(test_header_t) + test_header.elf_size);
-                break;
-            }
-
-            flash_addr += (sizeof(test_header_t) + test_header.elf_size);
-        } while(1);
-    }
-
-    if (val_mem_copy(flash_addr, (uint8_t *)&test_header, sizeof(test_header_t)))
-    {
-        val_print(PRINT_ERROR, "\n\nError: reading custom Test header", 0);
-        return VAL_STATUS_LOAD_ERROR;
-    }
-
-    if (test_header.start_marker == VAL_TEST_END_MARKER)
-    {
-        val_print(PRINT_DEBUG, "\n\nNo more valid tests found. Exiting.", 0);
-        *test_id = VAL_INVALID_TEST_ID;
-        return VAL_STATUS_SUCCESS;
-    }
-
-    if (test_header.start_marker != VAL_TEST_START_MARKER)
-    {
-        val_print(PRINT_ERROR, "\n\nError: No valid test binary found. Exiting.", 0);
-        *test_id = VAL_INVALID_TEST_ID;
-        return VAL_STATUS_LOAD_ERROR;
-    }
-
-    flash_addr += sizeof(test_header_t);
-    if (val_copy_elf(flash_addr, &g_test_info_addr))
-    {
-        val_print(PRINT_ERROR, "Error: loading Test program\n", 0);
-        return VAL_STATUS_LOAD_ERROR;
-    }
-
-    *test_id = test_header.test_id;
-    return VAL_STATUS_SUCCESS;
-
-#else /* TEST_COMBINE_ARCHIVE */
-
     int             i;
     val_test_info_t test_list[] = {
 #include "test_entry_list.inc"
@@ -251,7 +67,6 @@
     *test_id = VAL_INVALID_TEST_ID;
     val_print(PRINT_ERROR, "\n\nError: No more valid tests found. Exiting.", 0);
     return VAL_STATUS_LOAD_ERROR;
-#endif /* TEST_COMBINE_ARCHIVE */
 }
 
 /**
@@ -262,11 +77,7 @@
 **/
 val_status_t val_get_test_entry_addr(addr_t *paddr)
 {
-#if !defined(TEST_COMBINE_ARCHIVE)
-    *paddr = (addr_t)(((val_test_info_t *)g_test_info_addr)->entry_addr);
-#else
     *paddr = g_test_info_addr;
-#endif
     return VAL_STATUS_SUCCESS;
 }
 
@@ -298,10 +109,8 @@
             return "IPC Suite";
         case VAL_CRYPTO_BASE:
             return "Crypto Suite";
-        case VAL_PROTECTED_STORAGE_BASE:
-            return "Protected Storage Suite";
-        case VAL_INTERNAL_TRUSTED_STORAGE_BASE:
-            return "Internal Trusted Storage Suite";
+        case VAL_STORAGE_BASE:
+            return "Storage Suite";
         case VAL_INITIAL_ATTESTATION_BASE:
             return "Attestation Suite";
         default:
@@ -320,23 +129,10 @@
 
     test_id_t            test_id;
     val_status_t         status;
-    miscellaneous_desc_t *misc_desc;
     boot_t               boot;
     test_count_t         test_count;
     uint32_t             test_result;
 
-    status = val_target_get_config(TARGET_CONFIG_CREATE_ID(GROUP_MISCELLANEOUS,
-                                    MISCELLANEOUS_DUT, 0),
-                                   (uint8_t **)&misc_desc,
-                                   (uint32_t *)sizeof(miscellaneous_desc_t));
-    if (VAL_ERROR(status))
-    {
-        val_print(PRINT_ERROR, "\n\ttarget config read failed", 0);
-        return status;
-    }
-
-    combine_test_binary_addr   = misc_desc->ns_start_addr_of_combine_test_binary;
-    combine_test_binary_in_ram = misc_desc->combine_test_binary_in_ram;
     do
     {
         status = val_get_boot_flag(&boot.state);
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index 322f166..2438912 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,6 +28,7 @@
 /* globals */
 test_status_buffer_t    g_status_buffer;
 
+#ifdef IPC
 /**
  * @brief Connect to given sid
    @param  -sid : RoT service id
@@ -37,7 +38,7 @@
  */
 val_status_t val_ipc_connect(uint32_t sid, uint32_t version, psa_handle_t *handle )
 {
-    *handle = pal_ipc_connect(sid, version);
+    *handle = psa_connect(sid, version);
 
     if (*handle > 0)
         return VAL_STATUS_SUCCESS;
@@ -66,7 +67,7 @@
 {
     psa_status_t call_status = PSA_SUCCESS;
 
-    call_status = pal_ipc_call(handle, type, in_vec, in_len, out_vec, out_len);
+    call_status = psa_call(handle, type, in_vec, in_len, out_vec, out_len);
 
     if (call_status != PSA_SUCCESS)
     {
@@ -85,8 +86,10 @@
  */
 void val_ipc_close(psa_handle_t handle)
 {
-    pal_ipc_close(handle);
+    psa_close(handle);
 }
+#endif
+
 /**
     @brief    - This function executes given list of tests from non-secure sequentially
                 This covers non-secure to secure IPC API scenario
@@ -95,17 +98,19 @@
     @param    - server_hs  : Initiate a server handshake
     @return   - val_status_t
 **/
-val_status_t val_execute_non_secure_tests(uint32_t test_num, client_test_t *tests_list,
+val_status_t val_execute_non_secure_tests(uint32_t test_num, const client_test_t *tests_list,
                                           bool_t server_hs)
 {
     val_status_t          status = VAL_STATUS_SUCCESS;
     val_status_t          test_status = VAL_STATUS_SUCCESS;
     boot_t                boot;
-    psa_handle_t          handle;
     uint32_t              i = 1;
+#ifdef IPC
+    psa_handle_t          handle;
     test_info_t           test_info;
 
     test_info.test_num = test_num;
+#endif
 
     status = val_get_boot_flag(&boot.state);
     if (VAL_ERROR(status))
@@ -142,7 +147,7 @@
 
             if (i == 1)
                 val_print(PRINT_TEST,"[Info] Executing tests from non-secure\n", 0);
-
+#ifdef IPC
             if (server_hs == TRUE)
             {
                 /* Handshake with server tests */
@@ -160,16 +165,16 @@
                     val_print(PRINT_DEBUG, "[Check %d] START\n", i);
                 }
             }
-
+#endif
             /* Execute client tests */
             test_status = tests_list[i](CALLER_NONSECURE);
-
+#ifdef IPC
             if (server_hs == TRUE)
             {
                 /* Retrive Server test status */
                 status = val_get_secure_test_result(&handle);
             }
-
+#endif
             status = test_status ? test_status:status;
             if (IS_TEST_SKIP(status))
             {
@@ -206,6 +211,8 @@
    }
    return status;
 }
+
+#ifdef IPC
 /**
     @brief    - This function is used to switch to client_partition.c
                 where client tests will be executed to cover secure to secure
@@ -296,19 +303,19 @@
     val_status_t    status = VAL_STATUS_SUCCESS;
     psa_status_t    status_of_call = PSA_SUCCESS;
 
-    *handle = pal_ipc_connect(sid, 1);
+    *handle = psa_connect(sid, 1);
     if (*handle > 0)
     {
         test_data = ((uint32_t)(test_info.test_num) |((uint32_t)(test_info.block_num) << BLOCK_NUM_POS)
                     | ((uint32_t)(TEST_EXECUTE_FUNC) << ACTION_POS));
         psa_invec data[1] = {{&test_data, sizeof(test_data)}};
 
-        status_of_call = pal_ipc_call(*handle, 0, data, 1, NULL, 0);
+        status_of_call = psa_call(*handle, 0, data, 1, NULL, 0);
         if (status_of_call != PSA_SUCCESS)
         {
             status = VAL_STATUS_CALL_FAILED;
             val_print(PRINT_ERROR, "Call to dispatch SF failed. Status=%x\n", status_of_call);
-            pal_ipc_close(*handle);
+            psa_close(*handle);
         }
     }
     else
@@ -337,17 +344,17 @@
     psa_outvec resp = {&status, sizeof(status)};
     psa_invec data[1] = {{&test_data, sizeof(test_data)}};
 
-    status_of_call = pal_ipc_call(*handle, 0, data, 1, &resp, 1);
+    status_of_call = psa_call(*handle, 0, data, 1, &resp, 1);
     if (status_of_call != PSA_SUCCESS)
     {
         status = VAL_STATUS_CALL_FAILED;
         val_print(PRINT_ERROR, "Call to dispatch SF failed. Status=%x\n", status_of_call);
     }
 
-    pal_ipc_close(*handle);
+    psa_close(*handle);
     return status;
 }
-
+#endif
 
 /**
     @brief    - Parses input status for a given test and
@@ -367,31 +374,31 @@
     {
         case TEST_START:
             state = TEST_FAIL;
-            val_print(PRINT_ALWAYS, "TEST RESULT: FAILED (Error Code=0x%x)\n",
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: FAILED (Error Code=0x%x)\n",
                                                     VAL_STATUS_INIT_FAILED);
             break;
 
         case TEST_END:
             state = TEST_PASS;
-            val_print(PRINT_ALWAYS, "TEST RESULT: PASSED \n", 0);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: PASSED\n", 0);
             break;
 
         case TEST_FAIL:
-            val_print(PRINT_ALWAYS, "TEST RESULT: FAILED (Error Code=0x%x) \n", status);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: FAILED (Error Code=0x%x)\n", status);
             break;
 
         case TEST_SKIP:
             state = TEST_SKIP;
-            val_print(PRINT_ALWAYS, "TEST RESULT: SKIPPED (Skip Code=0x%x)\n", status);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: SKIPPED (Skip Code=0x%x)\n", status);
             break;
 
         case TEST_PENDING:
-            val_print(PRINT_ALWAYS, "TEST RESULT: SIM ERROR (Error Code=0x%x)\n", status);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: SIM ERROR (Error Code=0x%x)\n", status);
             break;
 
         default:
             state = TEST_FAIL;
-            val_print(PRINT_ALWAYS, "TEST RESULT: FAILED(Error Code=0x%x)\n", VAL_STATUS_INVALID);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: FAILED(Error Code=0x%x)\n", VAL_STATUS_INVALID);
             break;
 
     }
diff --git a/api-tests/val/nspe/val_framework.h b/api-tests/val/nspe/val_framework.h
index 7e13fb6..01b537b 100644
--- a/api-tests/val/nspe/val_framework.h
+++ b/api-tests/val/nspe/val_framework.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,7 +32,7 @@
 void         val_test_exit(void);
 val_status_t val_get_last_run_test_id(test_id_t *test_id);
 val_status_t val_execute_non_secure_tests(uint32_t test_num,
-                                          client_test_t *tests_list,
+                                          const client_test_t *tests_list,
                                           bool_t server_hs);
 val_status_t val_switch_to_secure_client(uint32_t test_num);
 val_status_t val_execute_secure_test_func(psa_handle_t *handle,
diff --git a/api-tests/val/nspe/val_interfaces.c b/api-tests/val/nspe/val_interfaces.c
index 719f4b0..ca7ba08 100644
--- a/api-tests/val/nspe/val_interfaces.c
+++ b/api-tests/val/nspe/val_interfaces.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,8 +21,7 @@
 #include "val_peripherals.h"
 #include "val_target.h"
 #include "val_crypto.h"
-#include "val_internal_trusted_storage.h"
-#include "val_protected_storage.h"
+#include "val_storage.h"
 #include "val_attestation.h"
 
 /*VAL APIs to be used by test */
@@ -35,12 +34,21 @@
     .err_check_set             = val_err_check_set,
     .target_get_config         = val_target_get_config,
     .execute_non_secure_tests  = val_execute_non_secure_tests,
+#ifdef IPC
     .switch_to_secure_client   = val_switch_to_secure_client,
     .execute_secure_test_func  = val_execute_secure_test_func,
     .get_secure_test_result    = val_get_secure_test_result,
     .ipc_connect               = val_ipc_connect,
     .ipc_call                  = val_ipc_call,
     .ipc_close                 = val_ipc_close,
+#else
+    .switch_to_secure_client   = NULL,
+    .execute_secure_test_func  = NULL,
+    .get_secure_test_result    = NULL,
+    .ipc_connect               = NULL,
+    .ipc_call                  = NULL,
+    .ipc_close                 = NULL,
+#endif
     .nvmem_read                = val_nvmem_read,
     .nvmem_write               = val_nvmem_write,
     .wd_timer_init             = val_wd_timer_init,
@@ -50,15 +58,22 @@
     .set_boot_flag             = val_set_boot_flag,
     .get_boot_flag             = val_get_boot_flag,
     .crypto_function           = val_crypto_function,
-    .its_function              = val_its_function,
-    .ps_function               = val_ps_function,
+    .storage_function          = val_storage_function,
     .attestation_function      = val_attestation_function,
 };
 
 const psa_api_t psa_api = {
-    .framework_version     = pal_ipc_framework_version,
-    .version               = pal_ipc_version,
-    .connect               = pal_ipc_connect,
-    .call                  = pal_ipc_call,
-    .close                 = pal_ipc_close,
+#ifdef IPC
+    .framework_version     = psa_framework_version,
+    .version               = psa_version,
+    .connect               = psa_connect,
+    .call                  = psa_call,
+    .close                 = psa_close,
+#else
+    .framework_version     = NULL,
+    .version               = NULL,
+    .connect               = NULL,
+    .call                  = NULL,
+    .close                 = NULL,
+#endif
 };
diff --git a/api-tests/val/nspe/val_interfaces.h b/api-tests/val/nspe/val_interfaces.h
index 944d4b1..503769f 100644
--- a/api-tests/val/nspe/val_interfaces.h
+++ b/api-tests/val/nspe/val_interfaces.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 /* typedef's */
 typedef struct {
     val_status_t     (*print)                     (print_verbosity_t verbosity,
-                                                   char *string, int32_t data);
+                                                   const char *string, int32_t data);
     val_status_t     (*set_status)                (uint32_t status);
     uint32_t         (*get_status)                (void);
     void             (*test_init)                 (uint32_t test_num,  char8_t *desc,
@@ -33,8 +33,9 @@
     void             (*test_exit)                 (void);
     val_status_t     (*err_check_set)             (uint32_t checkpoint, val_status_t status);
     val_status_t     (*target_get_config)         (cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
-    val_status_t     (*execute_non_secure_tests)  (uint32_t test_num, client_test_t *tests_list,
-                                                                                bool_t server_hs);
+    val_status_t     (*execute_non_secure_tests)  (uint32_t test_num,
+                                                   const client_test_t *tests_list,
+                                                   bool_t server_hs);
     val_status_t     (*switch_to_secure_client)   (uint32_t test_num);
     val_status_t     (*execute_secure_test_func)  (psa_handle_t *handle, test_info_t test_info,
                                                    uint32_t sid);
@@ -57,8 +58,7 @@
     val_status_t     (*set_boot_flag)             (boot_state_t state);
     val_status_t     (*get_boot_flag)             (boot_state_t *state);
     int32_t          (*crypto_function)           (int type, ...);
-    uint32_t         (*its_function)              (int type, ...);
-    uint32_t         (*ps_function)               (int type, ...);
+    int32_t          (*storage_function)          (int type, ...);
     int32_t          (*attestation_function)      (int type, ...);
 } val_api_t;
 
@@ -82,6 +82,40 @@
     test_fptr_t   entry_addr;
 } val_test_info_t;
 
+typedef enum {
+    VAL_TEST_IDX0    = 0x0,
+    VAL_TEST_IDX1    = 0x1,
+    VAL_TEST_IDX2    = 0x2,
+    VAL_TEST_IDX3    = 0x3,
+    VAL_TEST_IDX4    = 0x4,
+    VAL_TEST_IDX5    = 0x5,
+    VAL_TEST_IDX6    = 0x6,
+    VAL_TEST_IDX7    = 0x7,
+    VAL_TEST_IDX8    = 0x8,
+    VAL_TEST_IDX9    = 0x9,
+    VAL_TEST_IDX10   = 0xA,
+    VAL_TEST_IDX11   = 0xB,
+    VAL_TEST_IDX12   = 0xC,
+    VAL_TEST_IDX13   = 0xD,
+    VAL_TEST_IDX14   = 0xE,
+    VAL_TEST_IDX15   = 0xF,
+    VAL_TEST_IDX16   = 0x10,
+    VAL_TEST_IDX17   = 0x11,
+    VAL_TEST_IDX18   = 0x12,
+    VAL_TEST_IDX19   = 0x13,
+    VAL_TEST_IDX20   = 0x14,
+    VAL_TEST_IDX21   = 0x15,
+    VAL_TEST_IDX22   = 0x16,
+    VAL_TEST_IDX23   = 0x17,
+    VAL_TEST_IDX24   = 0x18,
+    VAL_TEST_IDX25   = 0x19,
+    VAL_TEST_IDX26   = 0x1A,
+    VAL_TEST_IDX27   = 0x1B,
+    VAL_TEST_IDX28   = 0x1C,
+    VAL_TEST_IDX29   = 0x1D,
+    VAL_TEST_IDX30   = 0x1E,
+} val_test_index_t;
+
 #include "test_entry_fn_declare_list.inc"
 
 void test_entry(val_api_t *val, psa_api_t *psa);
diff --git a/api-tests/val/nspe/val_internal_trusted_storage.c b/api-tests/val/nspe/val_internal_trusted_storage.c
deleted file mode 100644
index 5c910fd..0000000
--- a/api-tests/val/nspe/val_internal_trusted_storage.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_target.h"
-#include "pal_interfaces_ns.h"
-#include "val_framework.h"
-#include "val_client_defs.h"
-#include "val_internal_trusted_storage.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type : function code
-                ...  : variable number of arguments
-    @return   - Error status
-**/
-uint32_t val_its_function(int type, ...)
-{
-#ifdef INTERNAL_TRUSTED_STORAGE
-    va_list      valist;
-    uint32_t status;
-
-    va_start(valist, type);
-    status = pal_its_function(type, valist);
-    va_end(valist);
-    return status;
-#else
-    return VAL_STATUS_ERROR;
-#endif
-}
diff --git a/api-tests/val/nspe/val_internal_trusted_storage.h b/api-tests/val/nspe/val_internal_trusted_storage.h
deleted file mode 100644
index 2f9384d..0000000
--- a/api-tests/val/nspe/val_internal_trusted_storage.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _VAL_INTERNAL_TRUSTED_STORAGE_H_
-#define _VAL_INTERNAL_TRUSTED_STORAGE_H_
-
-#include "val.h"
-
-#define UID_BASE_VALUE  0
-#define BYTES_TO_BITS(byte)             (byte * 8)
-
-enum its_function_code {
-    VAL_ITS_SET                         = 0x1,
-    VAL_ITS_GET                         = 0x2,
-    VAL_ITS_GET_INFO                    = 0x3,
-    VAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t val_its_function(int type, ...);
-#endif /* _VAL_INTERNAL_TRUSTED_STORAGE_H_ */
diff --git a/api-tests/val/nspe/val_peripherals.c b/api-tests/val/nspe/val_peripherals.c
index e7674f5..40388c1 100644
--- a/api-tests/val/nspe/val_peripherals.c
+++ b/api-tests/val/nspe/val_peripherals.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -56,7 +56,7 @@
               - data     : Value for format specifier
     @return   - val_status_t
 **/
-val_status_t val_print(print_verbosity_t verbosity, char *string, int32_t data)
+val_status_t val_print(print_verbosity_t verbosity, const char *string, int32_t data)
 {
     if ((is_uart_init_done == 0) || (verbosity < VERBOSE))
     {
@@ -65,18 +65,6 @@
     return pal_print_ns(string, data);
 }
 
-/**
-    @brief    - This API will read from slave address via SPI
-    @param    - addr : Slave address
-                data : value read from Slave address
-                len  : length of data to be read in bytes
-    @return   - error status
-**/
-val_status_t val_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-        return pal_spi_read(addr, data, len);
-}
-
 /* Watchdog APIs */
 /**
     @brief    - Initializes the WatchDog Timer instance. This is client interface API of
diff --git a/api-tests/val/nspe/val_peripherals.h b/api-tests/val/nspe/val_peripherals.h
index d1b7538..b90ef34 100644
--- a/api-tests/val/nspe/val_peripherals.h
+++ b/api-tests/val/nspe/val_peripherals.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,8 +21,7 @@
 #include "val.h"
 
 val_status_t val_uart_init(void);
-val_status_t val_print(print_verbosity_t verbosity, char *string, int32_t data);
-val_status_t val_spi_read(addr_t addr, uint8_t *data, uint32_t len);
+val_status_t val_print(print_verbosity_t verbosity, const char *string, int32_t data);
 val_status_t val_nvmem_read(uint32_t offset, void *buffer, int size);
 val_status_t val_nvmem_write(uint32_t offset, void *buffer, int size);
 val_status_t val_wd_timer_init(wd_timeout_type_t timeout_type);
diff --git a/api-tests/val/nspe/val_protected_storage.c b/api-tests/val/nspe/val_protected_storage.c
deleted file mode 100644
index f3869de..0000000
--- a/api-tests/val/nspe/val_protected_storage.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_target.h"
-#include "pal_interfaces_ns.h"
-#include "val_framework.h"
-#include "val_client_defs.h"
-#include "val_protected_storage.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type : function code
-                ...  : variable number of arguments
-    @return   - Error status
-**/
-uint32_t val_ps_function(int type, ...)
-{
-#ifdef PROTECTED_STORAGE
-    va_list      valist;
-    uint32_t status;
-
-    va_start(valist, type);
-    status = pal_ps_function(type, valist);
-    va_end(valist);
-    return status;
-#else
-    return VAL_STATUS_ERROR;
-#endif
-}
diff --git a/api-tests/val/nspe/val_protected_storage.h b/api-tests/val/nspe/val_protected_storage.h
deleted file mode 100644
index 7f05cea..0000000
--- a/api-tests/val/nspe/val_protected_storage.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _VAL_PROTECTED_STORAGE_H_
-#define _VAL_PROTECTED_STORAGE_H_
-
-#include "val.h"
-
-#define UID_BASE_VALUE 0
-#define BYTES_TO_BITS(byte)             (byte * 8)
-
-enum ps_function_code {
-    VAL_PS_SET                          = 0x1,
-    VAL_PS_GET                          = 0x2,
-    VAL_PS_GET_INFO                     = 0x3,
-    VAL_PS_REMOVE                       = 0x4,
-    VAL_PS_CREATE                       = 0x5,
-    VAL_PS_SET_EXTENDED                 = 0x6,
-    VAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t val_ps_function(int type, ...);
-#endif /* _VAL_PROTECTED_STORAGE_H_ */
diff --git a/api-tests/val/nspe/val_storage.c b/api-tests/val/nspe/val_storage.c
new file mode 100644
index 0000000..bc2cc2d
--- /dev/null
+++ b/api-tests/val/nspe/val_storage.c
@@ -0,0 +1,68 @@
+/** @file
+ * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_target.h"
+#include "pal_interfaces_ns.h"
+#include "val_framework.h"
+#include "val_client_defs.h"
+#include "val_peripherals.h"
+#include "val_storage.h"
+
+/**
+    @brief    - This API will call the requested internal trusted storage function
+    @param    - type : function code
+                ...  : variable number of arguments
+    @return   - Error status
+**/
+int32_t val_storage_function(int type, ...)
+{
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE) || defined(PROTECTED_STORAGE)
+    va_list valist;
+    int32_t status;
+
+    va_start(valist, type);
+    switch (type)
+    {
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+        case VAL_ITS_SET:
+        case VAL_ITS_GET:
+        case VAL_ITS_GET_INFO:
+        case VAL_ITS_REMOVE:
+            status = pal_its_function(type, valist);
+            break;
+#endif
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+        case VAL_PS_SET:
+        case VAL_PS_GET:
+        case VAL_PS_GET_INFO:
+        case VAL_PS_REMOVE:
+        case VAL_PS_CREATE:
+        case VAL_PS_SET_EXTENDED:
+        case VAL_PS_GET_SUPPORT:
+            status = pal_ps_function(type, valist);
+            break;
+#endif
+        default:
+            val_print(PRINT_ERROR, "\n\nError: Not a valid ITS or PS function code!", 0);
+            return VAL_STATUS_ERROR;
+    }
+    va_end(valist);
+    return status;
+#else
+    return VAL_STATUS_ERROR;
+#endif
+}
diff --git a/api-tests/val/nspe/val_storage.h b/api-tests/val/nspe/val_storage.h
new file mode 100644
index 0000000..f1f2be2
--- /dev/null
+++ b/api-tests/val/nspe/val_storage.h
@@ -0,0 +1,48 @@
+/** @file
+ * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _VAL_STORAGE_H_
+#define _VAL_STORAGE_H_
+
+#include "val.h"
+
+#define UID_BASE_VALUE  0
+#define BYTES_TO_BITS(byte)             (byte * 8)
+
+typedef enum {
+    VAL_ITS_SET                         = 0x1,
+    VAL_ITS_GET                         = 0x2,
+    VAL_ITS_GET_INFO                    = 0x3,
+    VAL_ITS_REMOVE                      = 0x4,
+    VAL_PS_SET                          = 0x5,
+    VAL_PS_GET                          = 0x6,
+    VAL_PS_GET_INFO                     = 0x7,
+    VAL_PS_REMOVE                       = 0x8,
+    VAL_PS_CREATE                       = 0x9,
+    VAL_PS_SET_EXTENDED                 = 0xA,
+    VAL_PS_GET_SUPPORT                  = 0xB,
+    VAL_API_UNUSED                      = 0xC,
+} storage_function_type_t;
+
+typedef enum {
+    VAL_ITS_FUNCTION                    = 0x0,
+    VAL_PS_FUNCTION                     = 0x1,
+} storage_function_code_t;
+
+int32_t val_storage_function(int type, ...);
+
+#endif /* _VAL_STORAGE_H_ */
diff --git a/api-tests/val/spe/pal_interfaces_s.h b/api-tests/val/spe/pal_interfaces_s.h
index 2ca9e28..19dc925 100644
--- a/api-tests/val/spe/pal_interfaces_s.h
+++ b/api-tests/val/spe/pal_interfaces_s.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -37,7 +37,7 @@
                - data           : Value for Format specifier
     @return    - void
  */
-void pal_print(char *str, int32_t data);
+void pal_print(const char *str, int32_t data);
 
 /**
     @brief           - Initializes an hardware watchdog timer
diff --git a/api-tests/val/spe/val_driver_service_apis.c b/api-tests/val/spe/val_driver_service_apis.c
index 05b14fd..40638d1 100644
--- a/api-tests/val/spe/val_driver_service_apis.c
+++ b/api-tests/val/spe/val_driver_service_apis.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,7 +42,7 @@
                - data            : Value for Format specifier
     @return    - error status
  */
-val_status_t val_print_sf(char *string, int32_t data)
+val_status_t val_print_sf(const char *string, int32_t data)
 {
     if (is_uart_init_done == 1)
     {
diff --git a/api-tests/val/spe/val_driver_service_apis.h b/api-tests/val/spe/val_driver_service_apis.h
index 251a065..69de030 100644
--- a/api-tests/val/spe/val_driver_service_apis.h
+++ b/api-tests/val/spe/val_driver_service_apis.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 #include "val_service_defs.h"
 
 val_status_t val_uart_init_sf(addr_t uart_base_addr);
-val_status_t val_print_sf(char *string, int32_t data);
+val_status_t val_print_sf(const char *string, int32_t data);
 val_status_t val_wd_timer_init_sf(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);
 val_status_t val_wd_timer_enable_sf(addr_t base_addr);
 val_status_t val_wd_timer_disable_sf(addr_t base_addr);
diff --git a/api-tests/val/val_nspe.cmake b/api-tests/val/val_nspe.cmake
index 4494ed2..355ca68 100644
--- a/api-tests/val/val_nspe.cmake
+++ b/api-tests/val/val_nspe.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,9 +24,8 @@
 	${PSA_ROOT_DIR}/val/nspe/val_interfaces.c
 	${PSA_ROOT_DIR}/val/nspe/val_peripherals.c
 	${PSA_ROOT_DIR}/val/common/val_target.c
-	${PSA_ROOT_DIR}/val/nspe/val_protected_storage.c
-	${PSA_ROOT_DIR}/val/nspe/val_internal_trusted_storage.c
 	${PSA_ROOT_DIR}/val/nspe/val_attestation.c
+	${PSA_ROOT_DIR}/val/nspe/val_storage.c
 )
 
 # Create VAL NSPE library
@@ -49,16 +48,12 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
 	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
 	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
 )
 
 if(${WATCHDOG_AVAILABLE} EQUAL 1)
 	target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE WATCHDOG_AVAILABLE)
 endif()
-if(${TEST_COMBINE_ARCHIVE} EQUAL 1)
-	target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE TEST_COMBINE_ARCHIVE)
-endif()
 target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE VAL_NSPE_BUILD)
-target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE TEST_COMBINE_ARCHIVE)
diff --git a/api-tests/val/val_spe.cmake b/api-tests/val/val_spe.cmake
index be1e550..37b8888 100644
--- a/api-tests/val/val_spe.cmake
+++ b/api-tests/val/val_spe.cmake
@@ -58,8 +58,8 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/spe
 	${PSA_ROOT_DIR}/ff/partition
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 # Include paths from platform for driver partition build
@@ -72,16 +72,16 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
 	${PSA_ROOT_DIR}/val/spe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 	${PSA_ROOT_DIR}/ff/partition
 )
 target_include_directories(${PSA_TARGET_SERVER_PARTITION_LIB} PRIVATE
 	${CMAKE_CURRENT_BINARY_DIR}
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/spe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 	${PSA_ROOT_DIR}/ff/partition
 )