Test: Remove old SST test suites
This patch removes the old SST test suites which were based on the old
SST APIs and functionalities. It also removes the SST test service
created to be used in combination with sst_ns_ref_access_testsuite.
Change-Id: I1c89a3bd5e841a1368c80d173be5ac6a2421419a
Signed-off-by: Marc Moreno <marc.morenoberengue@arm.com>
diff --git a/CommonConfig.cmake b/CommonConfig.cmake
index f55b72c..e249af4 100644
--- a/CommonConfig.cmake
+++ b/CommonConfig.cmake
@@ -96,7 +96,6 @@
set (TFM_PARTITION_TEST_CORE OFF)
set (CORE_TEST_POSITIVE OFF)
set (CORE_TEST_INTERACTIVE OFF)
-set (TFM_PARTITION_TEST_SST OFF)
set (TEST_FRAMEWORK_S OFF)
set (REFERENCE_PLATFORM OFF)
set (TFM_PARTITION_TEST_SECURE_SERVICES OFF)
@@ -166,10 +165,6 @@
add_definitions(-DTFM_PARTITION_TEST_CORE)
endif()
-if (TFM_PARTITION_TEST_SST)
- add_definitions(-DTFM_PARTITION_TEST_SST)
-endif()
-
if (PSA_API_TEST)
add_definitions(-DPSA_API_TEST_NS)
set(PSA_API_TEST_NS ON)
@@ -236,10 +231,6 @@
set (SST_RAM_FS OFF)
endif()
endif()
-
- if (NOT DEFINED PSA_PROTECTED_STORAGE)
- set (PSA_PROTECTED_STORAGE ON)
- endif()
endif()
if (NOT DEFINED MBEDTLS_DEBUG)
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index ed968a5..5428086 100755
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -220,12 +220,6 @@
embedded_set_target_link_defines(TARGET ${EXE_NAME} DEFINES "TFM_PARTITION_TEST_CORE")
endif()
- if (NOT DEFINED TFM_PARTITION_TEST_SST)
- message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SST is undefined. ")
- elseif (TFM_PARTITION_TEST_SST)
- embedded_set_target_link_defines(TARGET ${EXE_NAME} DEFINES "TFM_PARTITION_TEST_SST")
- endif()
-
if (NOT DEFINED TFM_PARTITION_TEST_SECURE_SERVICES)
message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SECURE_SERVICES is undefined. ")
elseif (TFM_PARTITION_TEST_SECURE_SERVICES)
diff --git a/interface/include/tfm_veneers.h b/interface/include/tfm_veneers.h
index 7fdb9f9..1e03e08 100644
--- a/interface/include/tfm_veneers.h
+++ b/interface/include/tfm_veneers.h
@@ -68,14 +68,6 @@
psa_status_t tfm_spm_core_test_2_get_every_second_byte_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
-/******** TFM_SP_SST_TEST_PARTITION ********/
-psa_status_t tfm_sst_test_service_sfn_setup_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_sst_test_service_sfn_dummy_encrypt_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_sst_test_service_sfn_dummy_decrypt_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
-psa_status_t tfm_sst_test_service_sfn_clean_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
/******** TFM_SP_SECURE_TEST_PARTITION ********/
psa_status_t tfm_tfm_secure_client_service_sfn_run_tests_veneer(struct psa_invec *in_vec, size_t in_len, struct psa_outvec *out_vec, size_t out_len);
diff --git a/platform/ext/target/mps2/an519/armclang/mps2_an519_s.sct b/platform/ext/target/mps2/an519/armclang/mps2_an519_s.sct
index 24d50df..8fa65bf 100644
--- a/platform/ext/target/mps2/an519/armclang/mps2_an519_s.sct
+++ b/platform/ext/target/mps2/an519/armclang/mps2_an519_s.sct
@@ -1,7 +1,7 @@
#! armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -xc
/*
- * Copyright (c) 2017-2018 ARM Limited
+ * Copyright (c) 2017-2019 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -104,13 +104,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION +0 ALIGN 32 {
- *sst_test_service.* (+RO)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION +0 ALIGN 32 {
*tfm_secure_client_service.* (+RO)
@@ -206,15 +199,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION_DATA +0 ALIGN 32 {
- sst_test_service.o (+RW +ZI)
- }
-
- TFM_SP_SST_TEST_PARTITION_STACK +0 ALIGN 128 EMPTY 0x400 {
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION_DATA +0 ALIGN 32 {
*tfm_secure_client_service.* (+RW +ZI)
diff --git a/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld b/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld
index 81dc06f..61bb849 100644
--- a/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld
+++ b/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2018 ARM Limited
+; * Copyright (c) 2018-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
@@ -116,11 +115,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_DATA))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_DATA))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (LOADADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (LOADADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
@@ -168,12 +162,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_STACK))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_STACK))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_STACK))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_BSS))
LONG (SIZEOF(.TFM_SP_SECURE_TEST_PARTITION_BSS))
@@ -297,20 +285,6 @@
Image$$TFM_SP_CORE_TEST_2$$Limit = ADDR(.TFM_SP_CORE_TEST_2) + SIZEOF(.TFM_SP_CORE_TEST_2);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION : ALIGN(32)
- {
- *sst_test_service.*(.text*)
- *sst_test_service.*(.rodata*)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- . = ALIGN(32);
- } > FLASH
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION : ALIGN(32)
{
@@ -640,32 +614,6 @@
Image$$TFM_SP_CORE_TEST_2_STACK$$ZI$$Limit = ADDR(.TFM_SP_CORE_TEST_2_STACK) + SIZEOF(.TFM_SP_CORE_TEST_2_STACK);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION_DATA : ALIGN(32)
- {
- *sst_test_service.*(.data*)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA);
-
- .TFM_SP_SST_TEST_PARTITION_BSS : ALIGN(32)
- {
- *sst_test_service.*(.bss*)
- *sst_test_service.*(COMMON)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS);
-
- .TFM_SP_SST_TEST_PARTITION_STACK : ALIGN(128)
- {
- . += 0x0400;
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK);
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION_DATA : ALIGN(32)
{
diff --git a/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template b/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template
index 715ab82..43c9372 100644
--- a/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template
+++ b/platform/ext/target/mps2/an519/gcc/mps2_an519_s.ld.template
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2018 ARM Limited
+; * Copyright (c) 2018-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
diff --git a/platform/ext/target/mps2/an521/armclang/mps2_an521_s.sct b/platform/ext/target/mps2/an521/armclang/mps2_an521_s.sct
index eaa08b1..d745f4c 100644
--- a/platform/ext/target/mps2/an521/armclang/mps2_an521_s.sct
+++ b/platform/ext/target/mps2/an521/armclang/mps2_an521_s.sct
@@ -1,7 +1,7 @@
#! armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -xc
/*
- * Copyright (c) 2017-2018 ARM Limited
+ * Copyright (c) 2017-2019 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -104,13 +104,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION +0 ALIGN 32 {
- *sst_test_service.* (+RO)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION +0 ALIGN 32 {
*tfm_secure_client_service.* (+RO)
@@ -206,15 +199,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION_DATA +0 ALIGN 32 {
- sst_test_service.o (+RW +ZI)
- }
-
- TFM_SP_SST_TEST_PARTITION_STACK +0 ALIGN 128 EMPTY 0x400 {
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION_DATA +0 ALIGN 32 {
*tfm_secure_client_service.* (+RW +ZI)
diff --git a/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld b/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld
index 257ff3c..ea78e05 100644
--- a/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld
+++ b/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2017-2018 ARM Limited
+; * Copyright (c) 2017-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
@@ -116,11 +115,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_DATA))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_DATA))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (LOADADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (LOADADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
@@ -168,12 +162,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_STACK))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_STACK))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_STACK))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_BSS))
LONG (SIZEOF(.TFM_SP_SECURE_TEST_PARTITION_BSS))
@@ -297,20 +285,6 @@
Image$$TFM_SP_CORE_TEST_2$$Limit = ADDR(.TFM_SP_CORE_TEST_2) + SIZEOF(.TFM_SP_CORE_TEST_2);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION : ALIGN(32)
- {
- *sst_test_service.*(.text*)
- *sst_test_service.*(.rodata*)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- . = ALIGN(32);
- } > FLASH
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION : ALIGN(32)
{
@@ -640,32 +614,6 @@
Image$$TFM_SP_CORE_TEST_2_STACK$$ZI$$Limit = ADDR(.TFM_SP_CORE_TEST_2_STACK) + SIZEOF(.TFM_SP_CORE_TEST_2_STACK);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION_DATA : ALIGN(32)
- {
- *sst_test_service.*(.data*)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA);
-
- .TFM_SP_SST_TEST_PARTITION_BSS : ALIGN(32)
- {
- *sst_test_service.*(.bss*)
- *sst_test_service.*(COMMON)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS);
-
- .TFM_SP_SST_TEST_PARTITION_STACK : ALIGN(128)
- {
- . += 0x0400;
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK);
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION_DATA : ALIGN(32)
{
diff --git a/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template b/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template
index 7ea5e14..704d7a7 100644
--- a/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template
+++ b/platform/ext/target/mps2/an521/gcc/mps2_an521_s.ld.template
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2017-2018 ARM Limited
+; * Copyright (c) 2017-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
diff --git a/platform/ext/target/musca_a/Device/Source/armclang/musca_s.sct b/platform/ext/target/musca_a/Device/Source/armclang/musca_s.sct
index 87ec826..87157b3 100755
--- a/platform/ext/target/musca_a/Device/Source/armclang/musca_s.sct
+++ b/platform/ext/target/musca_a/Device/Source/armclang/musca_s.sct
@@ -1,7 +1,7 @@
#! armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -xc
/*
- * Copyright (c) 2018 ARM Limited
+ * Copyright (c) 2018-2019 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -104,13 +104,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION +0 ALIGN 32 {
- *sst_test_service.* (+RO)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION +0 ALIGN 32 {
*tfm_secure_client_service.* (+RO)
@@ -206,15 +199,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION_DATA +0 ALIGN 32 {
- sst_test_service.o (+RW +ZI)
- }
-
- TFM_SP_SST_TEST_PARTITION_STACK +0 ALIGN 128 EMPTY 0x400 {
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION_DATA +0 ALIGN 32 {
*tfm_secure_client_service.* (+RW +ZI)
diff --git a/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld b/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld
index 81dc06f..61bb849 100644
--- a/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld
+++ b/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2018 ARM Limited
+; * Copyright (c) 2018-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
@@ -116,11 +115,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_DATA))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_DATA))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (LOADADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (LOADADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
@@ -168,12 +162,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_STACK))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_STACK))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_STACK))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_BSS))
LONG (SIZEOF(.TFM_SP_SECURE_TEST_PARTITION_BSS))
@@ -297,20 +285,6 @@
Image$$TFM_SP_CORE_TEST_2$$Limit = ADDR(.TFM_SP_CORE_TEST_2) + SIZEOF(.TFM_SP_CORE_TEST_2);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION : ALIGN(32)
- {
- *sst_test_service.*(.text*)
- *sst_test_service.*(.rodata*)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- . = ALIGN(32);
- } > FLASH
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION : ALIGN(32)
{
@@ -640,32 +614,6 @@
Image$$TFM_SP_CORE_TEST_2_STACK$$ZI$$Limit = ADDR(.TFM_SP_CORE_TEST_2_STACK) + SIZEOF(.TFM_SP_CORE_TEST_2_STACK);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION_DATA : ALIGN(32)
- {
- *sst_test_service.*(.data*)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA);
-
- .TFM_SP_SST_TEST_PARTITION_BSS : ALIGN(32)
- {
- *sst_test_service.*(.bss*)
- *sst_test_service.*(COMMON)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS);
-
- .TFM_SP_SST_TEST_PARTITION_STACK : ALIGN(128)
- {
- . += 0x0400;
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK);
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION_DATA : ALIGN(32)
{
diff --git a/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template b/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template
index 715ab82..43c9372 100644
--- a/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template
+++ b/platform/ext/target/musca_a/Device/Source/gcc/musca_s.ld.template
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2018 ARM Limited
+; * Copyright (c) 2018-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
diff --git a/platform/ext/target/musca_b1/Device/Source/armclang/musca_s.sct b/platform/ext/target/musca_b1/Device/Source/armclang/musca_s.sct
index e39cf5f..124a033 100644
--- a/platform/ext/target/musca_b1/Device/Source/armclang/musca_s.sct
+++ b/platform/ext/target/musca_b1/Device/Source/armclang/musca_s.sct
@@ -1,7 +1,7 @@
#! armclang --target=arm-arm-none-eabi -march=armv8-m.main -E -xc
/*
- * Copyright (c) 2018 ARM Limited
+ * Copyright (c) 2018-2019 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -104,13 +104,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION +0 ALIGN 32 {
- *sst_test_service.* (+RO)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION +0 ALIGN 32 {
*tfm_secure_client_service.* (+RO)
@@ -206,15 +199,6 @@
}
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- TFM_SP_SST_TEST_PARTITION_DATA +0 ALIGN 32 {
- sst_test_service.o (+RW +ZI)
- }
-
- TFM_SP_SST_TEST_PARTITION_STACK +0 ALIGN 128 EMPTY 0x400 {
- }
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
TFM_SP_SECURE_TEST_PARTITION_DATA +0 ALIGN 32 {
*tfm_secure_client_service.* (+RW +ZI)
diff --git a/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld b/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld
index df43677..13b4a15 100644
--- a/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld
+++ b/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2009-2018 ARM Limited
+; * Copyright (c) 2009-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
@@ -116,11 +115,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_DATA))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_DATA))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (LOADADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_DATA))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (LOADADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_DATA))
@@ -168,12 +162,6 @@
LONG (ADDR(.TFM_SP_CORE_TEST_2_STACK))
LONG (SIZEOF(.TFM_SP_CORE_TEST_2_STACK))
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS))
- LONG (ADDR(.TFM_SP_SST_TEST_PARTITION_STACK))
- LONG (SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK))
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
LONG (ADDR(.TFM_SP_SECURE_TEST_PARTITION_BSS))
LONG (SIZEOF(.TFM_SP_SECURE_TEST_PARTITION_BSS))
@@ -297,20 +285,6 @@
Image$$TFM_SP_CORE_TEST_2$$Limit = ADDR(.TFM_SP_CORE_TEST_2) + SIZEOF(.TFM_SP_CORE_TEST_2);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION : ALIGN(32)
- {
- *sst_test_service.*(.text*)
- *sst_test_service.*(.rodata*)
- *(TFM_SP_SST_TEST_PARTITION_ATTR_FN)
- . = ALIGN(32);
- } > FLASH
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$RO$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION);
- Image$$TFM_SP_SST_TEST_PARTITION$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION) + SIZEOF(.TFM_SP_SST_TEST_PARTITION);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION : ALIGN(32)
{
@@ -640,32 +614,6 @@
Image$$TFM_SP_CORE_TEST_2_STACK$$ZI$$Limit = ADDR(.TFM_SP_CORE_TEST_2_STACK) + SIZEOF(.TFM_SP_CORE_TEST_2_STACK);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- .TFM_SP_SST_TEST_PARTITION_DATA : ALIGN(32)
- {
- *sst_test_service.*(.data*)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$RW$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_DATA) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_DATA);
-
- .TFM_SP_SST_TEST_PARTITION_BSS : ALIGN(32)
- {
- *sst_test_service.*(.bss*)
- *sst_test_service.*(COMMON)
- . = ALIGN(32);
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS);
- Image$$TFM_SP_SST_TEST_PARTITION_DATA$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_BSS) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_BSS);
-
- .TFM_SP_SST_TEST_PARTITION_STACK : ALIGN(128)
- {
- . += 0x0400;
- } > RAM AT> FLASH
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Base = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK);
- Image$$TFM_SP_SST_TEST_PARTITION_STACK$$ZI$$Limit = ADDR(.TFM_SP_SST_TEST_PARTITION_STACK) + SIZEOF(.TFM_SP_SST_TEST_PARTITION_STACK);
-
-#endif /* TFM_PARTITION_TEST_SST */
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
.TFM_SP_SECURE_TEST_PARTITION_DATA : ALIGN(32)
{
diff --git a/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template b/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template
index 12dc121..9a30f32 100644
--- a/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template
+++ b/platform/ext/target/musca_b1/Device/Source/gcc/musca_s.ld.template
@@ -1,5 +1,5 @@
;/*
-; * Copyright (c) 2009-2018 ARM Limited
+; * Copyright (c) 2009-2019 ARM Limited
; *
; * Licensed under the Apache License, Version 2.0 (the "License");
; * you may not use this file except in compliance with the License.
@@ -45,7 +45,6 @@
* veneer objects are explicitly declared here as extern, so the linker includes
* the veneers in the resulting binary.
*/
-EXTERN(sst_test_service_veneer_setup)
EXTERN(tfm_secure_client_service_veneer_run_tests)
SECTIONS
diff --git a/secure_fw/CMakeLists.txt b/secure_fw/CMakeLists.txt
index 16ec640..a79727f 100644
--- a/secure_fw/CMakeLists.txt
+++ b/secure_fw/CMakeLists.txt
@@ -175,12 +175,6 @@
embedded_set_target_link_defines(TARGET ${EXE_NAME} DEFINES "TFM_PARTITION_TEST_CORE")
endif()
- if (NOT DEFINED TFM_PARTITION_TEST_SST)
- message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SST is undefined. ")
- elseif (TFM_PARTITION_TEST_SST)
- embedded_set_target_link_defines(TARGET ${EXE_NAME} DEFINES "TFM_PARTITION_TEST_SST")
- endif()
-
if (NOT DEFINED TFM_PARTITION_TEST_SECURE_SERVICES)
message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SECURE_SERVICES is undefined. ")
elseif (TFM_PARTITION_TEST_SECURE_SERVICES)
diff --git a/secure_fw/ns_callable/tfm_veneers.c b/secure_fw/ns_callable/tfm_veneers.c
index c3df282..c87fe30 100644
--- a/secure_fw/ns_callable/tfm_veneers.c
+++ b/secure_fw/ns_callable/tfm_veneers.c
@@ -63,14 +63,6 @@
psa_status_t spm_core_test_2_get_every_second_byte(struct psa_invec *, size_t, struct psa_outvec *, size_t);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
-/******** TFM_SP_SST_TEST_PARTITION ********/
-psa_status_t sst_test_service_sfn_setup(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_test_service_sfn_dummy_encrypt(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_test_service_sfn_dummy_decrypt(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_test_service_sfn_clean(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
/******** TFM_SP_SECURE_TEST_PARTITION ********/
psa_status_t tfm_secure_client_service_sfn_run_tests(struct psa_invec *, size_t, struct psa_outvec *, size_t);
@@ -141,14 +133,6 @@
TFM_VENEER_FUNCTION(TFM_SP_CORE_TEST_2, spm_core_test_2_get_every_second_byte)
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
-/******** TFM_SP_SST_TEST_PARTITION ********/
-TFM_VENEER_FUNCTION(TFM_SP_SST_TEST_PARTITION, sst_test_service_sfn_setup)
-TFM_VENEER_FUNCTION(TFM_SP_SST_TEST_PARTITION, sst_test_service_sfn_dummy_encrypt)
-TFM_VENEER_FUNCTION(TFM_SP_SST_TEST_PARTITION, sst_test_service_sfn_dummy_decrypt)
-TFM_VENEER_FUNCTION(TFM_SP_SST_TEST_PARTITION, sst_test_service_sfn_clean)
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
/******** TFM_SP_SECURE_TEST_PARTITION ********/
TFM_VENEER_FUNCTION(TFM_SP_SECURE_TEST_PARTITION, tfm_secure_client_service_sfn_run_tests)
diff --git a/secure_fw/services/tfm_partition_defs.inc b/secure_fw/services/tfm_partition_defs.inc
index bba652c..2fe3ac6 100644
--- a/secure_fw/services/tfm_partition_defs.inc
+++ b/secure_fw/services/tfm_partition_defs.inc
@@ -28,14 +28,10 @@
#define TFM_SP_CORE_TEST_2_ID (TFM_SP_BASE + 6)
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
-#define TFM_SP_SST_TEST_PARTITION_ID (TFM_SP_BASE + 7)
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
-#define TFM_SP_SECURE_TEST_PARTITION_ID (TFM_SP_BASE + 8)
+#define TFM_SP_SECURE_TEST_PARTITION_ID (TFM_SP_BASE + 7)
#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */
-#define TFM_MAX_USER_PARTITIONS (9)
+#define TFM_MAX_USER_PARTITIONS (8)
#endif /* __TFM_PARTITION_DEFS_INC__ */
diff --git a/secure_fw/services/tfm_partition_list.inc b/secure_fw/services/tfm_partition_list.inc
index 260dbc6..7d3aadc 100644
--- a/secure_fw/services/tfm_partition_list.inc
+++ b/secure_fw/services/tfm_partition_list.inc
@@ -46,12 +46,6 @@
PARTITION_ADD_INIT_FUNC(TFM_SP_CORE_TEST_2, core_test_2_init);
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
-/******** TFM_SP_SST_TEST_PARTITION ********/
-PARTITION_DECLARE(TFM_SP_SST_TEST_PARTITION, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
-PARTITION_ADD_INIT_FUNC(TFM_SP_SST_TEST_PARTITION, sst_test_service_init);
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
/******** TFM_SP_SECURE_TEST_PARTITION ********/
PARTITION_DECLARE(TFM_SP_SECURE_TEST_PARTITION, SPM_PART_FLAG_SECURE | SPM_PART_FLAG_TRUSTED);
diff --git a/secure_fw/services/tfm_sfid_list.inc b/secure_fw/services/tfm_sfid_list.inc
index 5d08aa6..4cc6b0a 100644
--- a/secure_fw/services/tfm_sfid_list.inc
+++ b/secure_fw/services/tfm_sfid_list.inc
@@ -78,14 +78,6 @@
{spm_core_test_2_get_every_second_byte, TFM_CORE_TEST_2_SFN_GET_EVERY_SECOND_BYTE},
#endif /* TFM_PARTITION_TEST_CORE */
-#ifdef TFM_PARTITION_TEST_SST
- /******** TFM_SP_SST_TEST_PARTITION ********/
- {sst_test_service_sfn_setup, TFM_SST_TEST_SFN_SETUP_SFID},
- {sst_test_service_sfn_dummy_encrypt, TFM_SST_TEST_SFN_DUMMY_ENCRYPT_SFID},
- {sst_test_service_sfn_dummy_decrypt, TFM_SST_TEST_SFN_DUMMY_DECRYPT_SFID},
- {sst_test_service_sfn_clean, TFM_SST_TEST_SFN_CLEAN_SFID},
-#endif /* TFM_PARTITION_TEST_SST */
-
#ifdef TFM_PARTITION_TEST_SECURE_SERVICES
/******** TFM_SP_SECURE_TEST_PARTITION ********/
{tfm_secure_client_service_sfn_run_tests, TFM_SECURE_CLIENT_SFN_RUN_TESTS_SFID},
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7198c64..de280ab 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+# Copyright (c) 2017-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -80,7 +80,6 @@
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/framework/test_framework_integ_test.h
${CMAKE_CURRENT_SOURCE_DIR}/suites/sst/non_secure/os_wrapper.h
- ${CMAKE_CURRENT_SOURCE_DIR}/test_services/tfm_sst_test_service/sst_test_service.h
${CMAKE_CURRENT_SOURCE_DIR}/test_services/tfm_secure_client_service/tfm_secure_client_service.h
DESTINATION tfm/test/inc)
diff --git a/test/framework/non_secure_suites.c b/test/framework/non_secure_suites.c
index 9c1489d..f7e1f07 100644
--- a/test/framework/non_secure_suites.c
+++ b/test/framework/non_secure_suites.c
@@ -34,24 +34,9 @@
#else /* TFM_LVL == 3 */
#ifdef SERVICES_TEST_NS
- /* List test cases which compliant with level 1 isolation */
+ /* List test cases which are compliant with level 1 isolation */
-#ifdef PSA_PROTECTED_STORAGE
{®ister_testsuite_ns_psa_ps_interface, 0, 0, 0},
-#else /* PSA_PROTECTED_STORAGE */
- /* Non-secure SST test cases */
- {®ister_testsuite_ns_sst_interface, 0, 0, 0},
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
- {®ister_testsuite_ns_sst_policy, 0, 0, 0},
-
-#ifdef TFM_PARTITION_TEST_SST
- /* Non-secure SST referenced access testsuite */
- {®ister_testsuite_ns_sst_ref_access, 0, 0, 0},
-#endif /* TFM_PARTITION_TEST_SST */
-
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-#endif /* PSA_PROTECTED_STORAGE */
/* Non-secure Audit Logging test cases */
{®ister_testsuite_ns_audit_interface, 0, 0, 0},
diff --git a/test/framework/secure_suites.c b/test/framework/secure_suites.c
index 7006d44..b2572fd 100644
--- a/test/framework/secure_suites.c
+++ b/test/framework/secure_suites.c
@@ -27,9 +27,8 @@
#else /* TFM_LVL == 3 */
#ifdef SERVICES_TEST_S
- /* List test cases which compliant with level 1 isolation */
+ /* List test cases which are compliant with level 1 isolation */
-#ifdef PSA_PROTECTED_STORAGE
{®ister_testsuite_s_psa_ps_interface, 0, 0, 0},
{®ister_testsuite_s_psa_ps_reliability, 0, 0, 0},
@@ -37,12 +36,6 @@
{®ister_testsuite_s_rollback_protection, 0, 0, 0},
#endif
-#else /* PSA_PROTECTED_STORAGE */
- /* Secure SST test cases */
- {®ister_testsuite_s_sst_sec_interface, 0, 0, 0},
-
-#endif /* PSA_PROTECTED_STORAGE */
-
/* Secure Audit Logging test cases */
{®ister_testsuite_s_audit_interface, 0, 0, 0},
diff --git a/test/suites/sst/CMakeLists.inc b/test/suites/sst/CMakeLists.inc
index 09b7e01..51e1bcf 100644
--- a/test/suites/sst/CMakeLists.inc
+++ b/test/suites/sst/CMakeLists.inc
@@ -27,58 +27,21 @@
if (NOT DEFINED ENABLE_SECURE_STORAGE_SERVICE_TESTS)
message(FATAL_ERROR "Incomplete build configuration: ENABLE_SECURE_STORAGE_SERVICE_TESTS is undefined. ")
elseif (ENABLE_SECURE_STORAGE_SERVICE_TESTS)
- list(APPEND ALL_SRC_C_NS "${SECURE_STORAGE_TEST_DIR}/non_secure/ns_test_helpers.c")
+ list(APPEND ALL_SRC_C_NS "${SECURE_STORAGE_TEST_DIR}/non_secure/ns_test_helpers.c"
+ "${SECURE_STORAGE_TEST_DIR}/non_secure/psa_ps_ns_interface_testsuite.c")
- if (NOT DEFINED PSA_PROTECTED_STORAGE)
- message(FATAL_ERROR "Incomplete build configuration: PSA_PROTECTED_STORAGE is undefined.")
+ list(APPEND ALL_SRC_C_S "${SECURE_STORAGE_TEST_DIR}/secure/psa_ps_s_interface_testsuite.c"
+ "${SECURE_STORAGE_TEST_DIR}/secure/psa_ps_s_reliability_testsuite.c")
- elseif (PSA_PROTECTED_STORAGE)
- list(APPEND ALL_SRC_C_S "${SECURE_STORAGE_TEST_DIR}/secure/psa_ps_s_interface_testsuite.c"
- "${SECURE_STORAGE_TEST_DIR}/secure/psa_ps_s_reliability_testsuite.c")
+ if (SST_ROLLBACK_PROTECTION AND SST_ENCRYPTION AND TFM_LVL EQUAL 1)
+ list(APPEND ALL_SRC_C_S "${SECURE_STORAGE_TEST_DIR}/secure/sst_rollback_protection_testsuite.c"
+ "${SECURE_STORAGE_TEST_DIR}/secure/nv_counters/test_sst_nv_counters.c")
+ endif()
- if (SST_ROLLBACK_PROTECTION AND SST_ENCRYPTION AND TFM_LVL EQUAL 1)
- list(APPEND ALL_SRC_C_S "${SECURE_STORAGE_TEST_DIR}/secure/sst_rollback_protection_testsuite.c"
- "${SECURE_STORAGE_TEST_DIR}/secure/nv_counters/test_sst_nv_counters.c")
- endif()
-
- list(APPEND ALL_SRC_C_NS "${SECURE_STORAGE_TEST_DIR}/non_secure/psa_ps_ns_interface_testsuite.c")
-
- set_property(SOURCE ${ALL_SRC_C_S} APPEND PROPERTY COMPILE_DEFINITIONS PSA_PROTECTED_STORAGE)
- set_property(SOURCE ${ALL_SRC_C_NS} APPEND PROPERTY COMPILE_DEFINITIONS PSA_PROTECTED_STORAGE)
-
- if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
- message(FATAL_ERROR "Incomplete build configuration: TFM_NS_CLIENT_IDENTIFICATION is undefined.")
- elseif (TFM_NS_CLIENT_IDENTIFICATION)
- set_property(SOURCE ${ALL_SRC_C_NS} APPEND PROPERTY COMPILE_DEFINITIONS TFM_NS_CLIENT_IDENTIFICATION)
- endif()
-
- else()
- list(APPEND ALL_SRC_C_S "${SECURE_STORAGE_TEST_DIR}/secure/sst_sec_interface_testsuite.c")
-
- if (SST_ROLLBACK_PROTECTION AND SST_ENCRYPTION AND TFM_LVL EQUAL 1)
- list(APPEND ALL_SRC_C_S "${SECURE_STORAGE_TEST_DIR}/secure/sst_rollback_protection_testsuite.c"
- "${SECURE_STORAGE_TEST_DIR}/secure/nv_counters/test_sst_nv_counters.c")
- endif()
-
- list(APPEND ALL_SRC_C_NS "${SECURE_STORAGE_TEST_DIR}/non_secure/sst_ns_interface_testsuite.c")
-
- if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
- message(FATAL_ERROR "Incomplete build configuration: TFM_NS_CLIENT_IDENTIFICATION is undefined.")
- elseif (TFM_NS_CLIENT_IDENTIFICATION)
- list(APPEND ALL_SRC_C_NS "${SECURE_STORAGE_TEST_DIR}/non_secure/sst_policy_testsuite.c")
- set_property(SOURCE ${ALL_SRC_C_NS} APPEND PROPERTY COMPILE_DEFINITIONS TFM_NS_CLIENT_IDENTIFICATION)
- endif()
-
- if (NOT DEFINED TFM_PARTITION_TEST_SST)
- message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SST is undefined.")
- elseif (TFM_PARTITION_TEST_SST AND TFM_NS_CLIENT_IDENTIFICATION)
- list(APPEND ALL_SRC_C_NS "${SECURE_STORAGE_TEST_DIR}/non_secure/sst_ns_ref_access_testsuite.c")
- endif()
-
- if (SST_ENABLE_PARTIAL_ASSET_RW)
- set_property(SOURCE ${ALL_SRC_C_S} APPEND PROPERTY COMPILE_DEFINITIONS SST_ENABLE_PARTIAL_ASSET_RW)
- set_property(SOURCE ${ALL_SRC_C_NS} APPEND PROPERTY COMPILE_DEFINITIONS SST_ENABLE_PARTIAL_ASSET_RW)
- endif()
+ if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
+ message(FATAL_ERROR "Incomplete build configuration: TFM_NS_CLIENT_IDENTIFICATION is undefined.")
+ elseif (TFM_NS_CLIENT_IDENTIFICATION)
+ set_property(SOURCE ${ALL_SRC_C_NS} APPEND PROPERTY COMPILE_DEFINITIONS TFM_NS_CLIENT_IDENTIFICATION)
endif()
if (NOT SST_RAM_FS AND NOT REFERENCE_PLATFORM)
diff --git a/test/suites/sst/non_secure/sst_ns_interface_testsuite.c b/test/suites/sst/non_secure/sst_ns_interface_testsuite.c
deleted file mode 100644
index efa7a74..0000000
--- a/test/suites/sst/non_secure/sst_ns_interface_testsuite.c
+++ /dev/null
@@ -1,2088 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_ns_tests.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "ns_test_helpers.h"
-#include "secure_fw/services/secure_storage/assets/sst_asset_defs.h"
-#include "test/framework/test_framework_helpers.h"
-#include "psa_sst_api.h"
-
-/* Test suite defines */
-#define INVALID_ASSET_ID 0xFFFF
-#define INVALID_THREAD_NAME "Thread_INVALID"
-
-#define READ_BUF_SIZE 14UL
-#define WRITE_BUF_SIZE 5UL
-
-/* Define default asset's token */
-#define ASSET_TOKEN NULL
-#define ASSET_TOKEN_SIZE 0
-
-/* Memory bounds to check */
-#define ROM_ADDR_LOCATION 0x00000000
-#define DEV_ADDR_LOCATION 0x40000000
-#define SECURE_ADDR_LOCATION 0x30000000
-#define NON_EXIST_ADDR_LOCATION 0xFFFFFFFF
-
-/* Test data sized to fill the SHA224 and AES KEY 192 assets */
-#define READ_DATA_SHA224 "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-#define WRITE_DATA_SHA224 "TEST_DATA_ONE_TWO_THREE_FOUR"
-#define BUF_SIZE_SHA224 (SST_ASSET_MAX_SIZE_SHA224_HASH + 1)
-
-#define BUF_SIZE_AES_KEY_192 (SST_ASSET_MAX_SIZE_AES_KEY_192 + 1)
-#define READ_DATA_AES_KEY_192 "XXXXXXXXXXXXXXXXXXXXXXXX"
-#define WRITE_DATA_AES_KEY_192_1 "TEST_DATA_ONE_TWO_THREE_"
-#define WRITE_DATA_AES_KEY_192_2 "ABCDEFGHIJKLMNOPQRSTUVWY"
-
-/* Define used for bounds checking type tests */
-#define BUFFER_SIZE_PLUS_ONE (BUFFER_SIZE + 1)
-
-/* Define test suite for asset manager tests */
-/* List of tests */
-static void tfm_sst_test_1001(struct test_result_t *ret);
-static void tfm_sst_test_1002(struct test_result_t *ret);
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-static void tfm_sst_test_1003(struct test_result_t *ret);
-static void tfm_sst_test_1004(struct test_result_t *ret);
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-static void tfm_sst_test_1005(struct test_result_t *ret);
-static void tfm_sst_test_1006(struct test_result_t *ret);
-static void tfm_sst_test_1007(struct test_result_t *ret);
-static void tfm_sst_test_1008(struct test_result_t *ret);
-static void tfm_sst_test_1009(struct test_result_t *ret);
-static void tfm_sst_test_1010(struct test_result_t *ret);
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-static void tfm_sst_test_1011(struct test_result_t *ret);
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-static void tfm_sst_test_1012(struct test_result_t *ret);
-static void tfm_sst_test_1013(struct test_result_t *ret);
-static void tfm_sst_test_1014(struct test_result_t *ret);
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-static void tfm_sst_test_1015(struct test_result_t *ret);
-static void tfm_sst_test_1016(struct test_result_t *ret);
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-static void tfm_sst_test_1017(struct test_result_t *ret);
-static void tfm_sst_test_1018(struct test_result_t *ret);
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-static void tfm_sst_test_1019(struct test_result_t *ret);
-static void tfm_sst_test_1020(struct test_result_t *ret);
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-static void tfm_sst_test_1021(struct test_result_t *ret);
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
-static void tfm_sst_test_1022(struct test_result_t *ret);
-static void tfm_sst_test_1023(struct test_result_t *ret);
-static void tfm_sst_test_1024(struct test_result_t *ret);
-static void tfm_sst_test_1025(struct test_result_t *ret);
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-static void tfm_sst_test_1026(struct test_result_t *ret);
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
-static void tfm_sst_test_1027(struct test_result_t *ret);
-
-static struct test_t asset_veeners_tests[] = {
- {&tfm_sst_test_1001, "TFM_SST_TEST_1001",
- "Create interface", {0} },
- {&tfm_sst_test_1002, "TFM_SST_TEST_1002",
- "Get attributes interface", {0} },
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
- {&tfm_sst_test_1003, "TFM_SST_TEST_1003",
- "Create with invalid thread name", {0} },
- {&tfm_sst_test_1004, "TFM_SST_TEST_1004",
- "Get attributes with invalid thread name", {0} },
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
- {&tfm_sst_test_1005, "TFM_SST_TEST_1005",
- "Get attributes with null attributes struct pointer", {0} },
- {&tfm_sst_test_1006, "TFM_SST_TEST_1006",
- "Write interface", {0} },
- {&tfm_sst_test_1007, "TFM_SST_TEST_1007",
- "Write with invalid thread name", {0} },
- {&tfm_sst_test_1008, "TFM_SST_TEST_1008",
- "Write with null buffer pointers", {0} },
- {&tfm_sst_test_1009, "TFM_SST_TEST_1009",
- "Write beyond end of asset", {0} },
- {&tfm_sst_test_1010, "TFM_SST_TEST_1010",
- "Read interface", {0} },
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
- {&tfm_sst_test_1011, "TFM_SST_TEST_1011",
- "Read with invalid thread name", {0} },
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
- {&tfm_sst_test_1012, "TFM_SST_TEST_1012",
- "Read with null buffer pointers", {0} },
- {&tfm_sst_test_1013, "TFM_SST_TEST_1013",
- "Read beyond current size of asset", {0} },
- {&tfm_sst_test_1014, "TFM_SST_TEST_1014",
- "Delete interface", {0} },
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
- {&tfm_sst_test_1015, "TFM_SST_TEST_1015",
- "Delete with invalid thread name", {0} },
- {&tfm_sst_test_1016, "TFM_SST_TEST_1016",
- "Delete with block compaction", {0} },
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
- {&tfm_sst_test_1017, "TFM_SST_TEST_1017",
- "Write and partial reads", {0} },
- {&tfm_sst_test_1018, "TFM_SST_TEST_1018",
- "Write more data than asset max size", {0} },
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- {&tfm_sst_test_1019, "TFM_SST_TEST_1019",
- "Append data to an asset", {0} },
- {&tfm_sst_test_1020, "TFM_SST_TEST_1020",
- "Append data to an asset until EOF", {0} },
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
- {&tfm_sst_test_1021, "TFM_SST_TEST_1021",
- "Write data to two assets alternately", {0} },
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
- {&tfm_sst_test_1022, "TFM_SST_TEST_1022",
- "Access an illegal location: ROM", {0} },
- {&tfm_sst_test_1023, "TFM_SST_TEST_1023",
- "Access an illegal location: device memory", {0} },
- {&tfm_sst_test_1024, "TFM_SST_TEST_1024",
- "Access an illegal location: non-existant memory", {0} },
- {&tfm_sst_test_1025, "TFM_SST_TEST_1025",
- "Access an illegal location: secure memory", {0} },
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- {&tfm_sst_test_1026, "TFM_SST_TEST_1026",
- "Write data to the middle of an existing asset", {0} },
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
- {&tfm_sst_test_1027, "TFM_SST_TEST_1027",
- "Basic test to verify set and get attributes functionality", {0} },
-};
-
-void register_testsuite_ns_sst_interface(struct test_suite_t *p_test_suite)
-{
- uint32_t list_size;
-
- list_size = (sizeof(asset_veeners_tests) / sizeof(asset_veeners_tests[0]));
-
- set_testsuite("SST non-secure interface tests (TFM_SST_TEST_1XXX)",
- asset_veeners_tests, list_size, p_test_suite);
-
-#ifdef SST_SHOW_FLASH_WARNING
- TEST_LOG("\r\n**WARNING** The SST regression tests reduce the life of the "
- "flash memory as they write/erase multiple times the memory. \r\n"
- "Please, set the SST_RAM_FS flag to use RAM instead of flash."
- "\r\n\r\n");
-#endif
-}
-
-/**
- * \note List of relations between thread name, client ID and permissions
- *
- * Asset permissions: SST_ASSET_ID_AES_KEY_192
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|--------------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, READ, WRITE
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ
- * Thread_C | SST_CLIENT_ID_2 | REFERENCE
- *
- * Asset permissions: SST_ASSET_ID_SHA224_HASH
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|--------------------
- * Thread_A | SST_CLIENT_ID_0 | NONE
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ, WRITE
- * Thread_C | SST_CLIENT_ID_2 | NONE
- *
- * Asset permissions: SST_ASSET_ID_SHA384_HASH
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|--------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, WRITE
- * Thread_B | SST_CLIENT_ID_1 | NONE
- * Thread_C | SST_CLIENT_ID_2 | NONE
- */
-
-/**
- * \brief Tests create function against:
- * - Valid client ID and asset ID
- * - Invalid asset ID
- */
-TFM_SST_NS_TEST(1001, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Checks write permissions in create function */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Attempts to create the asset a second time */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Should not fail to create an already-created asset");
- return;
- }
-
- /* Calls create with invalid asset ID */
- err = psa_sst_create(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should fail for invalid ASSET ID");
- return;
- }
-
- /* Calls delete asset to clean up SST area for next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests get attributes function against:
- * - Valid client ID and attributes struct pointer
- * - Invalid client ID
- */
-TFM_SST_NS_TEST(1002, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- enum psa_sst_err_t err;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Calls get information with valid client ID and
- * attributes struct pointer
- */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Thread_A should read the information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current != 0) {
- TEST_FAIL("Asset current size should be 0 as it is only created");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_AES_KEY_192) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- /* Calls get_attributes with invalid asset ID */
- err = psa_sst_get_info(INVALID_ASSET_ID, ASSET_TOKEN,
- ASSET_TOKEN_SIZE, &asset_info);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Get information function should fail for an invalid "
- "asset ID");
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-/**
- * \brief Tests create function with an invalid thread name.
- */
-TFM_SST_NS_TEST(1003, INVALID_THREAD_NAME)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Calls create function with an invalid thread name */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should not succeed with an invalid thread name");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Creates asset with an authorised client ID.
- */
-static void tfm_sst_test_1004_task_1(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Calls get attributes function with an invalid thread name.
- */
-static void tfm_sst_test_1004_task_2(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- enum psa_sst_err_t err;
-
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Get info should not succeed with invalid thread name");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Deletes asset to clean up the SST area for the next test.
- */
-static void tfm_sst_test_1004_task_3(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests get attributes function with an invalid thread name.
- */
-static void tfm_sst_test_1004(struct test_result_t *ret)
-{
- /* Creates asset with an authorised client ID */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1004_task_1);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Calls get attributes function with an invalid thread name */
- tfm_sst_run_test(INVALID_THREAD_NAME, ret, tfm_sst_test_1004_task_2);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1004_task_3);
-}
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-/**
- * \brief Tests get attributes function with a null attributes struct pointer.
- */
-TFM_SST_NS_TEST(1005, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Calls get information with a null struct info pointer */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE, NULL);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Get info function should fail for a null "
- "struct attributes pointer");
- return;
- }
-
- /* Calls delete asset to clean up SST area for next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function against:
- * - Valid client ID and data pointer
- * - Invalid client ID
- */
-TFM_SST_NS_TEST(1006, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should work correctly");
- return;
- }
-
- /* Calls get information with valid client ID and
- * attributes struct pointer
- */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Thread_A should read the information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Asset current size should be size of the write data");
- return;
- }
-
- /* Calls write function with invalid client ID */
- err = psa_sst_write(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Invalid asset ID should not write in the asset");
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Creates asset with an authorised client ID.
- */
-static void tfm_sst_test_1007_task_1(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Calls write function with an invalid thread name.
- */
-static void tfm_sst_test_1007_task_2(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data = {0};
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should not succeed with an invalid thread name");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Deletes asset to clean up the SST area for the next test.
- */
-static void tfm_sst_test_1007_task_3(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function with an invalid thread name.
- */
-static void tfm_sst_test_1007(struct test_result_t *ret)
-{
- /* Creates asset with an authorised client ID */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1007_task_1);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Calls write function with an invalid thread name */
- tfm_sst_run_test(INVALID_THREAD_NAME, ret, tfm_sst_test_1007_task_2);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1007_task_3);
-}
-
-/**
- * \brief Tests read function with:
- * - Null write data pointer
- */
-TFM_SST_NS_TEST(1008, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = NULL;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write function with data pointer set to NULL */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail with data pointer set to NULL");
- return;
- }
-
- /* Calls delete asset to clean up SST area for next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function with offset + write data size larger than max
- * asset size.
- */
-TFM_SST_NS_TEST(1009, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[SST_ASSET_MAX_SIZE_AES_KEY_192] = {0};
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Attempts to write beyond end of asset starting from a valid offset */
- io_data.data = wrt_data;
- io_data.size = BUFFER_PLUS_PADDING_SIZE;
- io_data.offset = 0;
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Writing beyond end of asset should not succeed");
- return;
- }
-
- /* Attempts to write to an offset beyond the end of the asset */
- io_data.size = 1;
- io_data.offset = SST_ASSET_MAX_SIZE_AES_KEY_192;
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Write to an offset beyond end of asset should not succeed");
- return;
- }
-
- /* Calls delete asset to clean up SST area for next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read function against:
- * - Valid client ID and data pointer
- * - Invalid asset ID
- */
-TFM_SST_NS_TEST(1010, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should work correctly");
- return;
- }
-
- /* Sets data structure for read*/
- io_data.data = read_data + HALF_PADDING_SIZE;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Read data from the asset */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should work correctly");
- return;
- }
-
- if (memcmp(read_data, "XXXX", HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal pre-data");
- return;
- }
-
- if (memcmp((read_data+HALF_PADDING_SIZE), wrt_data, WRITE_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- if (memcmp((read_data+(HALF_PADDING_SIZE+WRITE_BUF_SIZE)), "XXXX",
- HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal post-data");
- return;
- }
-
- /* Calls read with invalid asset ID */
- err = psa_sst_read(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail when read is called with an invalid "
- "asset ID");
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-/**
- * \brief Creates asset with an authorised client ID.
- */
-static void tfm_sst_test_1011_task_1(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Calls read function with an invalid thread name.
- */
-static void tfm_sst_test_1011_task_2(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = 1;
- io_data.offset = 0;
-
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should not succeed with an invalid thread name");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Deletes asset to clean up the SST area for the next test.
- */
-static void tfm_sst_test_1011_task_3(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read function with an invalid thread name.
- */
-static void tfm_sst_test_1011(struct test_result_t *ret)
-{
- /* Creates asset with an authorised client ID */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1011_task_1);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Calls read function with an invalid thread name */
- tfm_sst_run_test(INVALID_THREAD_NAME, ret, tfm_sst_test_1011_task_2);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1011_task_3);
-}
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-/**
- * \brief Tests read function with:
- * - Null read data pointer
- */
-TFM_SST_NS_TEST(1012, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- io_data.data = NULL;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls read with null read data pointer */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read with read data pointer set to NULL should fail");
- return;
- }
-
- /* Calls delete asset to clean up SST area for next test */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read function with offset + read data size larger than current
- * asset size.
- */
-TFM_SST_NS_TEST(1013, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- struct psa_sst_asset_info_t asset_info;
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should work correctly");
- return;
- }
-
- /* Gets current asset information */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Thread_A should read the information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current == 0) {
- TEST_FAIL("Asset current size should be bigger than 0");
- return;
- }
-
- /* Attempts to read beyond the current size starting from a valid offset */
- io_data.data = read_data;
- io_data.size = WRITE_BUF_SIZE + 1;
- io_data.offset = 0;
-
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Read beyond current size should not succeed");
- return;
- }
-
- /* Attempts to read from an offset beyond the current size of the asset */
- io_data.size = 1;
- io_data.offset = asset_info.size_current;
-
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Read from an offset beyond current size should not succeed");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests delete function with:
- * - Valid client ID
- * - Invalid asset ID
- */
-TFM_SST_NS_TEST(1014, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Creates assset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should not fail as thread has"
- " write permissions");
- return;
- }
-
- /* Calls delete with a deleted asset ID */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("The delete action should fail as asset was deleted");
- return;
- }
-
- /* Calls delete asset with invalid asset ID */
- err = psa_sst_delete(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("The delete action should fail as asset ID is not valid");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-/**
- * \brief Creates asset with an authorised client ID.
- */
-static void tfm_sst_test_1015_task_1(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Calls delete function with an invalid thread name.
- */
-static void tfm_sst_test_1015_task_2(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Delete should not succeed with an invalid thread name");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Deletes asset to clean up the SST area for the next test.
- */
-static void tfm_sst_test_1015_task_3(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests delete function with an invalid thread name.
- */
-static void tfm_sst_test_1015(struct test_result_t *ret)
-{
- /* Creates asset with an authorised client ID */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1015_task_1);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Calls delete function with an invalid thread name */
- tfm_sst_run_test(INVALID_THREAD_NAME, ret, tfm_sst_test_1015_task_2);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- /* Deletes asset to clean up the SST area for the next test */
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1015_task_3);
-}
-
-/**
- * \brief Tests data block compact feature.
- * Create asset 2 to locate it at the beginning of the block. Then,
- * create asset 1 to be located after asset 2. Write data on asset
- * 1 and remove asset 2. If delete works correctly, when the code
- * reads back the asset 1 data, the data must be correct.
- */
-static void tfm_sst_test_1016_task_1(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA384_HASH;
- enum psa_sst_err_t err;
-
- /* Creates asset 2 first to locate it at the beginning of the data block */
- err = psa_sst_create(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1016_task_2(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_SHA224_HASH;
- struct sst_test_buf_t io_data;
- enum psa_sst_err_t err;
- uint8_t wrt_data[BUF_SIZE_SHA224] = WRITE_DATA_SHA224;
-
- /* Creates asset 1 */
- err = psa_sst_create(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_B");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH;
- io_data.offset = 0;
-
- /* Writes data into asset 1 */
- err = psa_sst_write(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should not fail for Thread_B");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1016_task_3(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA384_HASH;
- enum psa_sst_err_t err;
-
- /* Deletes asset 2. After the delete call, asset 1 should be at the
- * beginning of the block.
- */
- err = psa_sst_delete(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1016_task_4(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[BUF_SIZE_SHA224] = READ_DATA_SHA224;
- uint8_t wrt_data[BUF_SIZE_SHA224] = WRITE_DATA_SHA224;
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH;
- io_data.offset = 0;
-
- /* If the compact worked as expected, the test should be able to read back
- * the data from asset 1 correctly.
- */
- err = psa_sst_read(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail for Thread_B");
- return;
- }
-
- if (memcmp(read_data, wrt_data, BUF_SIZE_SHA224) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1016(struct test_result_t *ret)
-{
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1016_task_1);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_B", ret, tfm_sst_test_1016_task_2);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1016_task_3);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_B", ret, tfm_sst_test_1016_task_4);
-}
-
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-
-/**
- * \brief Tests write and partial reads.
- */
-TFM_SST_NS_TEST(1017, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint32_t i;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should works correctly");
- return;
- }
-
- /* Sets data structure for read*/
- io_data.data = (read_data + HALF_PADDING_SIZE);
- io_data.size = 1;
- io_data.offset = 0;
-
-
- for (i = 0; i < WRITE_BUF_SIZE; i++) {
- /* Read data from the asset */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- if (err != PSA_SST_ERR_SUCCESS) {
-#else
- if (io_data.offset != 0 && err != PSA_SST_ERR_PARAM_ERROR) {
-#endif
- TEST_FAIL("Read did not behave correctly");
- return;
- }
-
- /* Increases data pointer and offset */
- io_data.data++;
- io_data.offset++;
- }
-
-
- if (memcmp(read_data, "XXXX", HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal pre-data");
- return;
- }
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- if (memcmp((read_data + HALF_PADDING_SIZE), wrt_data,
- WRITE_BUF_SIZE) != 0) {
-#else
- /* Read should fail if no partial asset rw except when offset 0 */
- if (memcmp((read_data + HALF_PADDING_SIZE), "DXXXX",
- WRITE_BUF_SIZE) != 0) {
-#endif
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- if (memcmp((read_data + (HALF_PADDING_SIZE + WRITE_BUF_SIZE)), "XXXX",
- HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal post-data");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function against a write call where data size is
- * bigger than the maximum asset size.
- */
-TFM_SST_NS_TEST(1018, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[BUF_SIZE_AES_KEY_192] = {0};
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_B");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = (SST_ASSET_MAX_SIZE_AES_KEY_192 + 1);
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Should have failed asset write of too large");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-/**
- * \brief Tests write function against multiple writes.
- */
-TFM_SST_NS_TEST(1019, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data[WRITE_BUF_SIZE+1] = "Hello";
- uint8_t wrt_data2[WRITE_BUF_SIZE+1] = "World";
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 1 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data2;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data 2 in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 2 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = WRITE_BUF_SIZE * 2;
- io_data.offset = 0;
-
- /* Reads back the data */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, "HelloWorldXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function against multiple writes until the end of asset.
- */
-TFM_SST_NS_TEST(1020, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[BUF_SIZE_AES_KEY_192] = READ_DATA_AES_KEY_192;
- uint8_t wrt_data[BUF_SIZE_AES_KEY_192] = WRITE_DATA_AES_KEY_192_1;
- uint8_t wrt_data2[BUF_SIZE_AES_KEY_192] = WRITE_DATA_AES_KEY_192_2;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 1 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data2;
- io_data.size = (SST_ASSET_MAX_SIZE_AES_KEY_192 - WRITE_BUF_SIZE) + 1;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Write data 2 should have failed as this write tries to "
- "write more bytes that the max size");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data + WRITE_BUF_SIZE;
- io_data.size = SST_ASSET_MAX_SIZE_AES_KEY_192 - WRITE_BUF_SIZE;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 3 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = SST_ASSET_MAX_SIZE_AES_KEY_192;
- io_data.offset = 0;
-
- /* Read back the data */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, wrt_data, BUF_SIZE_AES_KEY_192) != 0) {
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef TFM_NS_CLIENT_IDENTIFICATION
-/**
- * \brief Tests writing data to two assets alternately before read-back.
- */
-static void tfm_sst_test_1021_task_1(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Creates asset 1 */
- err = psa_sst_create(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_2(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
-
- /* Creates asset 2 */
- err = psa_sst_create(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_B");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_3(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[WRITE_BUF_SIZE+1] = "Hello";
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in asset 1 */
- err = psa_sst_write(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_4(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data2[3] = "Hi";
-
- /* Writes data 2 in asset 2 */
- /* Sets data structure */
- io_data.data = wrt_data2;
- io_data.size = 2;
- io_data.offset = 0;
-
- err = psa_sst_write(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for Thread_B");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_5(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data3[WRITE_BUF_SIZE+1] = "World";
-
- /* Sets data structure */
- io_data.data = wrt_data3;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data 3 in asset 1 */
- err = psa_sst_write(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_6(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data4[WRITE_BUF_SIZE+1] = "12345";
-
- /* Sets data structure */
- io_data.data = wrt_data4;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 2;
-
- /* Writes data 4 in asset 2 */
- err = psa_sst_write(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for Thread_B");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_7(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
-
- /* Sets data structure */
- io_data.data = read_data;
- /* size of wrt_data + wrt_data3 */
- io_data.size = WRITE_BUF_SIZE + WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Read back the asset 1 */
- err = psa_sst_read(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail for Thread_A");
- return;
- }
-
- if (memcmp(read_data, "HelloWorldXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_8(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = 2 + WRITE_BUF_SIZE; /* size of wrt_data2 + wrt_data4 */
- io_data.offset = 0;
-
- /* Read back the asset 1 */
- err = psa_sst_read(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, "Hi12345XXXXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021_task_9(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Calls delete asset 1 */
- err = psa_sst_delete(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-static void tfm_sst_test_1021(struct test_result_t *ret)
-{
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1021_task_1);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_B", ret, tfm_sst_test_1021_task_2);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1021_task_3);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_B", ret, tfm_sst_test_1021_task_4);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1021_task_5);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_B", ret, tfm_sst_test_1021_task_6);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1021_task_7);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_B", ret, tfm_sst_test_1021_task_8);
- if (ret->val != TEST_PASSED) {
- return;
- }
-
- tfm_sst_run_test("Thread_A", ret, tfm_sst_test_1021_task_9);
-}
-#endif /* TFM_NS_CLIENT_IDENTIFICATION */
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
-/**
- * \brief Tests read from and write to an illegal location: ROM.
- */
-TFM_SST_NS_TEST(1022, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)ROM_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a ROM address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a ROM address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- /* Deletes asset to clean up the SST area */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read from and write to an illegal location: device memory.
- */
-TFM_SST_NS_TEST(1023, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)DEV_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a device address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a device address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- /* Deletes asset to clean up the SST area */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read from and write to an illegal location: non-existant memory.
- */
-TFM_SST_NS_TEST(1024, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)NON_EXIST_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a non-existing address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a non-existing address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- /* Deletes asset to clean up the SST area */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read from and write to an illegal location: secure memory.
- */
-TFM_SST_NS_TEST(1025, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)SECURE_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a secure address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a secure address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- /* Deletes asset to clean up the SST area */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-/**
- * \brief Tests write data to the middle of an existing asset
- */
-TFM_SST_NS_TEST(1026, "Thread_A")
-{
- struct psa_sst_asset_info_t asset_info;
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data_1[WRITE_BUF_SIZE] = "AAAA";
- uint8_t wrt_data_2[2] = "B";
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data_1;
- io_data.size = (WRITE_BUF_SIZE - 1);
- io_data.offset = 0;
-
- /* Write data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("First write should not fail");
- return;
- }
-
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Thread_A should read the information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current != (WRITE_BUF_SIZE - 1)) {
- TEST_FAIL("Current size should be equal to write size");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data_2;
- io_data.size = 1;
- io_data.offset = 1;
-
- /* Write data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Second write should not fail");
- return;
- }
-
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Thread_A should read the information of this asset");
- return;
- }
-
- /* Checks that the asset's current size has not changed */
- if (asset_info.size_current != (WRITE_BUF_SIZE - 1)) {
- TEST_FAIL("Current size should not have changed");
- return;
- }
-
- io_data.data = (read_data + HALF_PADDING_SIZE);
- io_data.size = (WRITE_BUF_SIZE - 1);
- io_data.offset = 0;
-
- /* Calls read with a non-existing address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail");
- return;
- }
-
- /* Checks that the asset contains write_data_1 with the second character
- * overwritten with write_data_2.
- */
- if (memcmp(read_data, "XXXXABAAXXXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer is incorrect");
- return;
- }
-
- /* Checks that offset can not be bigger than current asset's size */
- io_data.data = wrt_data_2;
- io_data.size = 1;
- io_data.offset = (asset_info.size_current + 1);
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Write must fail if the offset is bigger than the current"
- " asset's size");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
-/**
- * \brief Basic test to verify set and get attributes functionality.
- */
-TFM_SST_NS_TEST(1027, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_attrs_t wrt_attrs;
- struct psa_sst_asset_attrs_t read_attrs = {
- .attrs = 0,
- .validity.start = 0,
- .validity.end = 0 };
- enum psa_sst_err_t err;
-
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail");
- return;
- }
-
- wrt_attrs.attrs = (PSA_SST_ASSET_ATTR_ENCRYPT | PSA_SST_ASSET_ATTR_DECRYPT |
- PSA_SST_ASSET_ATTR_SIGN | PSA_SST_ASSET_ATTR_VERIFY);
- wrt_attrs.validity.start = 0;
- wrt_attrs.validity.end = 0;
-
- err = psa_sst_set_attributes(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &wrt_attrs);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Set attributes should not fail");
- return;
- }
-
- err = psa_sst_get_attributes(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &read_attrs);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get attributes should not fail");
- return;
- }
-
- /* Compare asset attributes */
- if (memcmp(&wrt_attrs, &read_attrs, PSA_SST_ASSET_ATTR_SIZE) != 0) {
- TEST_FAIL("Attributes are differents");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
diff --git a/test/suites/sst/non_secure/sst_ns_ref_access_testsuite.c b/test/suites/sst/non_secure/sst_ns_ref_access_testsuite.c
deleted file mode 100644
index 05d7ec5..0000000
--- a/test/suites/sst/non_secure/sst_ns_ref_access_testsuite.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_ns_tests.h"
-
-#include <string.h>
-
-#include "ns_test_helpers.h"
-#include "secure_fw/services/secure_storage/assets/sst_asset_defs.h"
-#include "test/framework/test_framework_helpers.h"
-#include "test/test_services/tfm_sst_test_service/sst_test_service_api.h"
-
-#define DATA "TEST_DATA_ONE_TWO_THREE_FOUR_FIVE"
-#define BUF_SIZE (sizeof(DATA))
-
-/* List of tests */
-static void tfm_sst_test_5001(struct test_result_t *ret);
-static void tfm_sst_test_5002(struct test_result_t *ret);
-static void tfm_sst_test_5003(struct test_result_t *ret);
-static void tfm_sst_test_5004(struct test_result_t *ret);
-
-static struct test_t sst_ref_access_tests[] = {
- { &tfm_sst_test_5001, "TFM_SST_TEST_5001",
- "Setup the SST test service at the start of the tests", { 0 } },
- { &tfm_sst_test_5002, "TFM_SST_TEST_5002",
- "Access by reference with correct permissions", { 0 } },
- { &tfm_sst_test_5003, "TFM_SST_TEST_5003",
- "Access by reference with incorrect permissions", { 0 } },
- { &tfm_sst_test_5004, "TFM_SST_TEST_5004",
- "Clean up the SST test service at the end of the tests", { 0 } },
-};
-
-void register_testsuite_ns_sst_ref_access(struct test_suite_t *p_test_suite)
-{
- uint32_t list_size;
-
- list_size = sizeof(sst_ref_access_tests) / sizeof(sst_ref_access_tests[0]);
-
- set_testsuite("SST referenced access tests (TFM_SST_TEST_5XXX)",
- sst_ref_access_tests, list_size, p_test_suite);
-}
-
-/**
- * \note List of relations between thread name, client ID and permissions
- *
- * Asset permissions: SST_ASSET_ID_AES_KEY_128
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|--------------------
- * Thread_A | SST_CLIENT_ID_0 | NONE
- * Thread_D | SST_CLIENT_ID_3 | REFERENCE
- *
- */
-
-/**
- * \brief Tests the set-up of the SST test service
- */
-TFM_SST_NS_TEST(5001, "Thread_D")
-{
- enum psa_sst_err_t err;
-
- err = sst_test_service_setup();
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Failed to setup the SST test service");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Test SST referenced access with correct permissions
- */
-TFM_SST_NS_TEST(5002, "Thread_D")
-{
- enum psa_sst_err_t err;
- uint16_t key_uuid = SST_ASSET_ID_AES_KEY_128;
- uint8_t buf[BUF_SIZE] = DATA;
-
- err = sst_test_service_dummy_encrypt(key_uuid, buf, BUF_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Encryption should be successful for Thread_D");
- return;
- }
-
- if (memcmp(buf, DATA, BUF_SIZE) == 0) {
- TEST_FAIL("Contents of buf should have changed");
- return;
- }
-
- err = sst_test_service_dummy_decrypt(key_uuid, buf, BUF_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Decryption should be successful for Thread_D");
- return;
- }
-
- if (memcmp(buf, DATA, BUF_SIZE) != 0) {
- TEST_FAIL("Contents of buf should be the same as the original "
- "contents");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Test SST referenced access with incorrect permissions
- */
-TFM_SST_NS_TEST(5003, "Thread_A")
-{
- enum psa_sst_err_t err;
- uint16_t key_uuid = SST_ASSET_ID_AES_KEY_128;
- uint8_t buf[BUF_SIZE] = DATA;
-
- err = sst_test_service_dummy_encrypt(key_uuid, buf, BUF_SIZE);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Encryption should not be successful for Thread_A");
- return;
- }
-
- err = sst_test_service_dummy_decrypt(key_uuid, buf, BUF_SIZE);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Decryption should not be successful for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Clean the SST referenced access service at the end of the tests
- */
-TFM_SST_NS_TEST(5004, "Thread_D")
-{
- enum psa_sst_err_t err;
-
- err = sst_test_service_clean();
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Cleaning of the SST referenced access service failed");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
diff --git a/test/suites/sst/non_secure/sst_ns_tests.h b/test/suites/sst/non_secure/sst_ns_tests.h
index b742fc9..7cfddc8 100644
--- a/test/suites/sst/non_secure/sst_ns_tests.h
+++ b/test/suites/sst/non_secure/sst_ns_tests.h
@@ -21,27 +21,6 @@
*/
void register_testsuite_ns_psa_ps_interface(struct test_suite_t *p_test_suite);
-/**
- * \brief Register testsuite for the SST tests.
- *
- * \param[in] p_test_suite The test suite to be executed.
- */
-void register_testsuite_ns_sst_interface(struct test_suite_t *p_test_suite);
-
-/**
- * \brief Register testsuite for the non-secure SST referenced access tests.
- *
- * \param[in] p_test_suite The test suite to be executed.
- */
-void register_testsuite_ns_sst_ref_access(struct test_suite_t *p_test_suite);
-
-/**
- * \brief Register testsuite for the SST policy tests.
- *
- * \param[in] p_test_suite The test suite to be executed.
- */
-void register_testsuite_ns_sst_policy(struct test_suite_t *p_test_suite);
-
#ifdef __cplusplus
}
#endif
diff --git a/test/suites/sst/non_secure/sst_policy_testsuite.c b/test/suites/sst/non_secure/sst_policy_testsuite.c
deleted file mode 100644
index cb3c10f..0000000
--- a/test/suites/sst/non_secure/sst_policy_testsuite.c
+++ /dev/null
@@ -1,775 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_ns_tests.h"
-
-#include <string.h>
-
-#include "ns_test_helpers.h"
-#include "secure_fw/services/secure_storage/assets/sst_asset_defs.h"
-#include "test/framework/test_framework_helpers.h"
-#include "psa_sst_api.h"
-
-/* Define default asset's token */
-#define ASSET_TOKEN NULL
-#define ASSET_TOKEN_SIZE 0
-
-/* The tests in this test suite cover access to an asset when the clients
- * has:
- * - REFERENCE/READ/WRITE permissions,
- * - REFERENCE/READ permissions,
- * - REFERENCE/WRITE permissions,
- * - REFERENCE permission,
- * - no permissions (NONE).
- *
- * In each case, every function in the SST API is tested for correct access
- * policy.
- */
-
-/**
- * \note List of relations between thread name, client ID and permissions.
- *
- * Asset permissions: SST_ASSET_ID_AES_KEY_192
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, READ, WRITE
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ
- * Thread_C | SST_CLIENT_ID_2 | REFERENCE
- *
- * Asset permissions: SST_ASSET_ID_SHA224_HASH
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------
- * Thread_A | SST_CLIENT_ID_0 | NONE
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ, WRITE
- * Thread_C | SST_CLIENT_ID_2 | NONE
- *
- * Asset permissions: SST_ASSET_ID_SHA384_HASH
- *
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, WRITE
- * Thread_B | SST_CLIENT_ID_1 | NONE
- * Thread_C | SST_CLIENT_ID_2 | NONE
- */
-
-/* Test suite defines */
-/* Each thread has different write data so that the tests can verify the correct
- * thread's data is stored in the asset.
- */
-#define WRITE_DATA_A "AAAA"
-#define WRITE_DATA_B "BBBB"
-#define WRITE_DATA_C "CCCC"
-
-/* Original contents of the read buffer */
-#define READ_DATA "XXXXXXXXXXXXX"
-
-/* Contents of the read buffer after reading back write_data */
-#define RESULT_DATA(write_data) ("XXXX" write_data "\0XXXX")
-
-/* Sizes of the read and write buffers */
-#define WRITE_BUF_SIZE (sizeof(WRITE_DATA_A))
-#define READ_BUF_SIZE (sizeof(READ_DATA))
-
-/* Define test suite for SST policy tests */
-/* List of tests */
-static void tfm_sst_test_4001(struct test_result_t *ret);
-static void tfm_sst_test_4002(struct test_result_t *ret);
-static void tfm_sst_test_4003(struct test_result_t *ret);
-static void tfm_sst_test_4004(struct test_result_t *ret);
-static void tfm_sst_test_4005(struct test_result_t *ret);
-static void tfm_sst_test_4006(struct test_result_t *ret);
-static void tfm_sst_test_4007(struct test_result_t *ret);
-static void tfm_sst_test_4008(struct test_result_t *ret);
-static void tfm_sst_test_4009(struct test_result_t *ret);
-static void tfm_sst_test_4010(struct test_result_t *ret);
-
-static struct test_t policy_tests[] = {
- { &tfm_sst_test_4001, "TFM_SST_TEST_4001",
- "Check policy for AES_KEY_192 from Thread_A", {0} },
- { &tfm_sst_test_4002, "TFM_SST_TEST_4002",
- "Check policy for AES_KEY_192 from Thread_C", {0} },
- { &tfm_sst_test_4003, "TFM_SST_TEST_4003",
- "Check policy for AES_KEY_192 from Thread_B", {0} },
- { &tfm_sst_test_4004, "TFM_SST_TEST_4004",
- "Delete AES_KEY_192 from Thread_A", {0} },
- { &tfm_sst_test_4005, "TFM_SST_TEST_4005",
- "Check policy for SHA224_HASH from Thread_B", {0} },
- { &tfm_sst_test_4006, "TFM_SST_TEST_4006",
- "Check policy for SHA224_HASH from Thread_C", {0} },
- { &tfm_sst_test_4007, "TFM_SST_TEST_4007",
- "Delete SHA224_HASH from Thread_B", {0} },
- { &tfm_sst_test_4008, "TFM_SST_TEST_4008",
- "Check policy for SHA384_HASH from Thread_A", {0} },
- { &tfm_sst_test_4009, "TFM_SST_TEST_4009",
- "Check policy for SHA384_HASH from Thread_C", {0} },
- { &tfm_sst_test_4010, "TFM_SST_TEST_4010",
- "Delete SHA384_HASH from Thread_A", {0} },
-};
-
-void register_testsuite_ns_sst_policy(struct test_suite_t *p_test_suite)
-{
- uint32_t list_size = (sizeof(policy_tests) / sizeof(policy_tests[0]));
-
- set_testsuite("SST policy tests (TFM_SST_TEST_4XXX)",
- policy_tests, list_size, p_test_suite);
-}
-
-/**
- * \brief Tests policy for SST_ASSET_ID_AES_KEY_192 with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, READ, WRITE
- */
-TFM_SST_NS_TEST(4001, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_C;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* The create function requires WRITE permission */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* The write function requires WRITE permission */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should not fail for Thread_A");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + HALF_PADDING_SIZE;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* The read function requires READ permission */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail for Thread_A");
- return;
- }
-
- /* Checks correct data was read-back */
- if (memcmp(read_data, RESULT_DATA(WRITE_DATA_C), READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer contains incorrect data");
- return;
- }
-
- /* The get information function requires any permission other than NONE */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail for Thread_A");
- return;
- }
-
- /* Checks attributes are correct */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Current size of the asset is incorrect");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_AES_KEY_192) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests policy for SST_ASSET_ID_AES_KEY_192 with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|------------
- * Thread_C | SST_CLIENT_ID_2 | REFERENCE
- */
-TFM_SST_NS_TEST(4002, "Thread_C")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_A;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* Create should fail as Thread_C does not have WRITE permission */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should not succeed for Thread_C");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- /* Increases offset so that current size will change if write succeeds */
- buf.offset = 1;
-
- /* Write should fail as Thread_C does not have WRITE permission */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should not succeed for Thread_C");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + 3;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Read should fail as Thread_C does not have READ permission */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should not succeed for Thread_C");
- return;
- }
-
- /* Checks read_data has not been changed by the call to read */
- if (memcmp(read_data, READ_DATA, READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer should not have changed");
- return;
- }
-
- /* Get information should succeed as Thread_C has at least one permission */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail for Thread_C");
- return;
- }
-
- /* Checks attributes are correct */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Current size of the asset is incorrect");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_AES_KEY_192) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- /* Delete should fail as Thread_C does not have WRITE permission */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Delete should not succeed for Thread_C");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests policy for SST_ASSET_ID_AES_KEY_192 with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|----------------
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ
- */
-TFM_SST_NS_TEST(4003, "Thread_B")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_B;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* Create should fail as Thread_B does not have WRITE permission */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should not succeed for Thread_B");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- /* Increases offset so that current size will change if write succeeds */
- buf.offset = 2;
-
- /* Write should fail as Thread_B does not have WRITE permission */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should not succeed for Thread_B");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + HALF_PADDING_SIZE;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Read should succeed as Thread_B has READ permission */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail for Thread_B");
- return;
- }
-
- /* Checks correct data was read-back. It should still be Thread_A's data as
- * Thread_B does not have write permission.
- */
- if (memcmp(read_data, RESULT_DATA(WRITE_DATA_C), READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer contains incorrect data");
- return;
- }
-
- /* Get attributes should succeed as Thread_B has at least one permission */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail for Thread_B");
- return;
- }
-
- /* Checks attributes are correct */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Current size of the asset is incorrect");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_AES_KEY_192) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- /* Delete should fail as Thread_B does not have WRITE permission */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Delete should not succeed for Thread_B");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests delete policy for SST_ASSET_ID_AES_KEY_192 with the
- * following permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, READ, WRITE
- *
- * This test is performed last so that the asset still exists during the
- * preceeding test cases.
- */
-TFM_SST_NS_TEST(4004, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests policy for SST_ASSET_ID_SHA224_HASH with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------------
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ, WRITE
- */
-TFM_SST_NS_TEST(4005, "Thread_B")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- struct psa_sst_asset_info_t asset_info;
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_B;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* Create should succeed as Thread_B has WRITE permission */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_B");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Write should succeed as Thread_B has WRITE permission */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should not fail for Thread_B");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + HALF_PADDING_SIZE;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Read should succeed as Thread_B has READ permission */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail for Thread_B");
- return;
- }
-
- /* Checks correct data was read-back */
- if (memcmp(read_data, RESULT_DATA(WRITE_DATA_B), READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer contains incorrect data");
- return;
- }
-
- /* Get information should succeed as Thread_B has at least one permission */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail for Thread_B");
- return;
- }
-
- /* Checks attributes are correct */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Current size of the asset is incorrect");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_SHA224_HASH) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests policy for SST_ASSET_ID_SHA224_HASH with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|------------
- * Thread_C | SST_CLIENT_ID_2 | NONE
- */
-TFM_SST_NS_TEST(4006, "Thread_C")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- struct psa_sst_asset_info_t asset_info = { 0 };
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_A;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* Create should fail as Thread_C has no permissions */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should not succeed for Thread_C");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* The write function uses a valid asset ID, obtained by the previous test,
- * to check that Thread_C cannot perform the write without the proper access
- * permissions even if it has a valid asset ID. So the write should fail as
- * Thread_C has no permissions.
- */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should not succeed for Thread_C");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + 3;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Read should fail as Thread_C has no permissions */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should not succeed for Thread_C");
- return;
- }
-
- /* Checks read_data has not been changed by the call to read */
- if (memcmp(read_data, READ_DATA, READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer should not have changed");
- return;
- }
-
- /* Get information should fail as Thread_C has no permissions */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Get information should not succeed for Thread_C");
- return;
- }
-
- /* Checks attributes have not been changed by the call to get attributes */
- if (asset_info.size_current != 0) {
- TEST_FAIL("Current size of the asset should not have changed");
- return;
- }
-
- if (asset_info.size_max != 0) {
- TEST_FAIL("Max size of the asset should not have changed");
- return;
- }
-
- /* Delete should fail as Thread_C has no permissions */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Delete should not succeed for Thread_C");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests delete policy for SST_ASSET_ID_SHA224_HASH with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------------
- * Thread_B | SST_CLIENT_ID_1 | REFERENCE, READ, WRITE
- *
- * This test is performed last so that the asset still exists during the
- * preceeding test cases.
- */
-TFM_SST_NS_TEST(4007, "Thread_B")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
-
- /* Delete should succeed as Thread_B has WRITE permission */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail for Thread_B");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests policy for SST_ASSET_ID_SHA384_HASH with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, WRITE
- */
-TFM_SST_NS_TEST(4008, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA384_HASH;
- struct psa_sst_asset_info_t asset_info;
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_C;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* Create should succeed as Thread_A has WRITE permission */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for Thread_A");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Write should succeed as Thread_A has WRITE permission */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should not fail for Thread_A");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + HALF_PADDING_SIZE;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Read should fail as Thread_A does not have READ permission */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should not succeed for Thread_A");
- return;
- }
-
- /* Checks read_data has not been changed by the call to read */
- if (memcmp(read_data, READ_DATA, READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer should not have changed");
- return;
- }
-
- /* Get information should succeed as Thread_A has at least one permission */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail for Thread_A");
- return;
- }
-
- /* Checks attributes are correct */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Current size of the asset is incorrect");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_SHA384_HASH) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-
-/**
- * \brief Tests policy for SST_ASSET_ID_SHA384_HASH with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|------------
- * Thread_C | SST_CLIENT_ID_2 | NONE
- */
-TFM_SST_NS_TEST(4009, "Thread_C")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA384_HASH;
- struct psa_sst_asset_info_t asset_info = { 0 };
- struct sst_test_buf_t buf;
- enum psa_sst_err_t err;
- uint8_t write_data[WRITE_BUF_SIZE] = WRITE_DATA_A;
- uint8_t read_data[READ_BUF_SIZE] = READ_DATA;
-
- /* Create should fail as Thread_C has no permissions */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should not succeed for Thread_C");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = write_data;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* The write function uses a valid asset ID, obtained by the previous test,
- * to check that Thread_C cannot perform the write without the proper access
- * permissions even if it has a valid asset ID. So the write should fail as
- * Thread_C has no permissions.
- */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should not succeed for Thread_C");
- return;
- }
-
- /* Sets the sst_test_buf_t structure */
- buf.data = read_data + HALF_PADDING_SIZE;
- buf.size = WRITE_BUF_SIZE;
- buf.offset = 0;
-
- /* Read should fail as Thread_C has no permissions */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- buf.size, buf.offset, buf.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should not succeed for Thread_C");
- return;
- }
-
- /* Checks read_data has not been changed by the call to read */
- if (memcmp(read_data, READ_DATA, READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer should not have changed");
- return;
- }
-
- /* Get information should fail as Thread_C has no permissions */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Get information should not succeed for Thread_C");
- return;
- }
-
- /* Checks attributes have not been changed by the call to get attributes */
- if (asset_info.size_current != 0) {
- TEST_FAIL("Current size of the asset should not have changed");
- return;
- }
-
- if (asset_info.size_max != 0) {
- TEST_FAIL("Max size of the asset should not have changed");
- return;
- }
-
- /* Delete should fail as Thread_C has no permissions */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Delete should not succeed for Thread_C");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests delete policy for SST_ASSET_ID_SHA384_HASH with the following
- * permissions:
- * THREAD NAME | CLIENT_ID | Permissions
- * ------------|-----------------|-----------------
- * Thread_A | SST_CLIENT_ID_0 | REFERENCE, WRITE
- *
- * This test is performed last so that the asset still exists during the
- * preceeding test cases.
- */
-TFM_SST_NS_TEST(4010, "Thread_A")
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA384_HASH;
- enum psa_sst_err_t err;
-
- /* Delete should succeed as Thread_A has WRITE permission */
- err = psa_sst_delete(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Delete should not fail for Thread_A");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
diff --git a/test/suites/sst/secure/sst_sec_interface_testsuite.c b/test/suites/sst/secure/sst_sec_interface_testsuite.c
deleted file mode 100644
index 130b9e3..0000000
--- a/test/suites/sst/secure/sst_sec_interface_testsuite.c
+++ /dev/null
@@ -1,1544 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_tests.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "test/framework/test_framework_helpers.h"
-#include "secure_fw/services/secure_storage/assets/sst_asset_defs.h"
-#include "secure_fw/services/secure_storage/sst_object_system.h"
-#include "psa_sst_api.h"
-#include "s_test_helpers.h"
-
-/* Test suite defines */
-#define INVALID_ASSET_ID 0xFFFF
-#define READ_BUF_SIZE 14UL
-#define WRITE_BUF_SIZE 5UL
-
-/* Memory bounds to check */
-#define ROM_ADDR_LOCATION 0x10000000
-#define DEV_ADDR_LOCATION 0x50000000
-#define NON_EXIST_ADDR_LOCATION 0xFFFFFFFF
-
-/* Test data sized to fill the SHA224 asset */
-#define READ_DATA_SHA224 "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-#define WRITE_DATA_SHA224_1 "TEST_DATA_ONE_TWO_THREE_FOUR"
-#define WRITE_DATA_SHA224_2 "(ABCDEFGHIJKLMNOPQRSTUVWXYZ)"
-#define BUF_SIZE_SHA224 (SST_ASSET_MAX_SIZE_SHA224_HASH + 1)
-
-/* Define used for bounds checking type tests */
-#define BUFFER_SIZE_PLUS_ONE (BUFFER_SIZE + 1)
-
-/* Define default asset's token */
-#define ASSET_TOKEN NULL
-#define ASSET_TOKEN_SIZE 0
-
-/* Define test suite for asset manager tests */
-/* List of tests */
-static void tfm_sst_test_2001(struct test_result_t *ret);
-static void tfm_sst_test_2002(struct test_result_t *ret);
-static void tfm_sst_test_2003(struct test_result_t *ret);
-static void tfm_sst_test_2004(struct test_result_t *ret);
-static void tfm_sst_test_2005(struct test_result_t *ret);
-static void tfm_sst_test_2006(struct test_result_t *ret);
-static void tfm_sst_test_2007(struct test_result_t *ret);
-static void tfm_sst_test_2008(struct test_result_t *ret);
-static void tfm_sst_test_2009(struct test_result_t *ret);
-static void tfm_sst_test_2010(struct test_result_t *ret);
-static void tfm_sst_test_2011(struct test_result_t *ret);
-static void tfm_sst_test_2012(struct test_result_t *ret);
-static void tfm_sst_test_2013(struct test_result_t *ret);
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-static void tfm_sst_test_2014(struct test_result_t *ret);
-static void tfm_sst_test_2015(struct test_result_t *ret);
-static void tfm_sst_test_2016(struct test_result_t *ret);
-#endif
-static void tfm_sst_test_2017(struct test_result_t *ret);
-static void tfm_sst_test_2018(struct test_result_t *ret);
-static void tfm_sst_test_2019(struct test_result_t *ret);
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-static void tfm_sst_test_2020(struct test_result_t *ret);
-#endif
-
-static struct test_t write_tests[] = {
- {&tfm_sst_test_2001, "TFM_SST_TEST_2001",
- "Create interface", {0} },
- {&tfm_sst_test_2002, "TFM_SST_TEST_2002",
- "Get information interface", {0} },
- {&tfm_sst_test_2003, "TFM_SST_TEST_2003",
- "Get information with null attributes struct pointer", {0} },
- {&tfm_sst_test_2004, "TFM_SST_TEST_2004",
- "Write interface", {0} },
- {&tfm_sst_test_2005, "TFM_SST_TEST_2005",
- "Write with null buffer pointers", {0} },
- {&tfm_sst_test_2006, "TFM_SST_TEST_2006",
- "Write beyond end of asset", {0} },
- {&tfm_sst_test_2007, "TFM_SST_TEST_2007",
- "Read interface", {0} },
- {&tfm_sst_test_2008, "TFM_SST_TEST_2008",
- "Read with null buffer pointers", {0} },
- {&tfm_sst_test_2009, "TFM_SST_TEST_2009",
- "Read beyond current size of asset", {0} },
- {&tfm_sst_test_2010, "TFM_SST_TEST_2010",
- "Delete interface", {0} },
- {&tfm_sst_test_2011, "TFM_SST_TEST_2011",
- "Write and partial reads", {0} },
- {&tfm_sst_test_2012, "TFM_SST_TEST_2012",
- "Write partial data in an asset and reload secure storage area", {0} },
- {&tfm_sst_test_2013, "TFM_SST_TEST_2013",
- "Write more data than asset max size", {0} },
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- {&tfm_sst_test_2014, "TFM_SST_TEST_2014",
- "Append data to an asset", {0} },
- {&tfm_sst_test_2015, "TFM_SST_TEST_2015",
- "Append data to an asset until EOF", {0} },
- {&tfm_sst_test_2016, "TFM_SST_TEST_2016",
- "Write data to two assets alternately", {0} },
-#endif
- {&tfm_sst_test_2017, "TFM_SST_TEST_2017",
- "Access an illegal location: ROM", {0} },
- {&tfm_sst_test_2018, "TFM_SST_TEST_2018",
- "Access an illegal location: device memory", {0} },
- {&tfm_sst_test_2019, "TFM_SST_TEST_2019",
- "Access an illegal location: non-existant memory", {0} },
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- {&tfm_sst_test_2020, "TFM_SST_TEST_2020",
- "Write data to the middle of an existing asset", {0} },
-#endif
-};
-
-void register_testsuite_s_sst_sec_interface(struct test_suite_t *p_test_suite)
-{
- uint32_t list_size = (sizeof(write_tests) / sizeof(write_tests[0]));
-
- set_testsuite("SST secure interface tests (TFM_SST_TEST_2XXX)",
- write_tests, list_size, p_test_suite);
-
-#ifdef SST_SHOW_FLASH_WARNING
- TEST_LOG("\r\n**WARNING** The SST regression tests reduce the life of the "
- "flash memory as they write/erase multiple times the memory. \r\n"
- "Please, set the SST_RAM_FS flag to use RAM instead of flash."
- "\r\n\r\n");
-#endif
-}
-
-/**
- * \brief Tests create function against:
- * - Valid client ID and asset ID
- * - Invalid asset ID
- * - Invalid client ID
- */
-static void tfm_sst_test_2001(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Checks write permissions in create function */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Attempts to create the asset a second time */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Should not fail to create an already-created asset");
- return;
- }
-
- /* Calls create with invalid asset ID */
- err = psa_sst_create(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should fail for invalid ASSET ID");
- return;
- }
-
-#ifdef INVALID_CLIENT_ID_TEST
- /* Calls create with invalid client ID */
- /* FIXME: Add test help call to change the client ID to an invalid one */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Create should fail for invalid client ID");
- return;
- }
-#endif
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests get attributes function against:
- * - Valid client ID and attributes struct pointer
- * - Invalid client ID
- * - Invalid asset ID
- * - Invalid client ID
- */
-static void tfm_sst_test_2002(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- enum psa_sst_err_t err;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Calls get_attributes with valid client ID and
- * attributes struct pointer
- */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Client S_CLIENT_ID should be able to read the "
- "information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current != 0) {
- TEST_FAIL("Asset current size should be 0 as it is only created");
- return;
- }
-
- if (asset_info.size_max != SST_ASSET_MAX_SIZE_AES_KEY_192) {
- TEST_FAIL("Max size of the asset is incorrect");
- return;
- }
-
- /* Calls get information with invalid asset ID */
- err = psa_sst_get_info(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get attributes function should fail for an invalid "
- "asset ID");
- return;
- }
-
-#ifdef INVALID_CLIENT_ID_TEST
- /* Calls get_attributes with invalid client ID */
- /* FIXME: Add test help call to change the client ID to an invalid one */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information function should fail for an invalid "
- "client ID");
- return;
- }
-#endif
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests get attributes function with an invalid attributes struct
- * pointer.
- */
-static void tfm_sst_test_2003(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Calls get information with invalid struct attributes pointer */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE, NULL);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Get information function should fail for an invalid "
- "struct info pointer");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function against:
- * - Valid client ID and data pointer
- * - Invalid asset ID
- * - Invalid client ID
- */
-static void tfm_sst_test_2004(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should works correctly");
- return;
- }
-
- /* Calls get information with valid client ID and
- * attributes struct pointer
- */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Client S_CLIENT_ID should be able to read the "
- "information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current != WRITE_BUF_SIZE) {
- TEST_FAIL("Asset current size should be size of the write data");
- return;
- }
-
- /* Calls write function with invalid asset ID */
- err = psa_sst_write(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Invalid asset ID should not write in the file");
- return;
- }
-
-#ifdef INVALID_CLIENT_ID_TEST
- /* Calls write function with invalid client ID */
- /* FIXME: Add test help call to change the client ID to an invalid one */
- err = tfm_sst_veneer_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Invalid client ID should not write in the file");
- return;
- }
-#endif
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function with:
- * - Null write buffer pointer
- */
-static void tfm_sst_test_2005(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = NULL;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write function with data pointer set to NULL */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail with data pointer set to NULL");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function with offset + write data size larger than max
- * asset size.
- */
-static void tfm_sst_test_2006(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[BUFFER_PLUS_PADDING_SIZE] = {0};
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Attempts to write beyond end of asset starting from a valid offset */
- io_data.data = wrt_data;
- io_data.size = BUFFER_SIZE_PLUS_ONE;
- io_data.offset = 0;
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Writing beyond end of asset should not succeed");
- return;
- }
-
- /* Attempts to write to an offset beyond the end of the asset */
- io_data.size = 1;
- io_data.offset = SST_ASSET_MAX_SIZE_AES_KEY_192;
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write to an offset beyond end of asset should not succeed");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read function against:
- * - Valid client ID and data pointer
- * - Invalid asset ID
- * - Invalid client ID
- */
-static void tfm_sst_test_2007(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should works correctly");
- return;
- }
-
- /* Sets data structure for read*/
- io_data.data = read_data + HALF_PADDING_SIZE;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Read data from the asset */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should works correctly");
- return;
- }
-
- if (memcmp(read_data, "XXXX", HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal pre-data");
- return;
- }
-
- if (memcmp((read_data+HALF_PADDING_SIZE), wrt_data, WRITE_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- if (memcmp((read_data+HALF_PADDING_SIZE+WRITE_BUF_SIZE), "XXXX",
- HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal post-data");
- return;
- }
-
- /* Calls read with invalid asset ID */
- err = psa_sst_read(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail when read is called with an invalid "
- "asset ID");
- return;
- }
-
-#ifdef INVALID_CLIENT_ID_TEST
- /* Calls read with invalid client ID */
- /* FIXME: Add test help call to change the client ID to an invalid one */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail when read is called with an invalid "
- "client ID");
- return;
- }
-#endif
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read function with:
- * - Null read buffer pointer
- */
-static void tfm_sst_test_2008(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- io_data.data = NULL;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls read with invalid data pointer */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read with read data pointer set to NULL should fail");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read function with offset + read data size larger than current
- * asset size.
- */
-static void tfm_sst_test_2009(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- struct psa_sst_asset_info_t asset_info;
- uint8_t data[BUFFER_SIZE_PLUS_ONE] = {0};
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = data;
- io_data.size = SST_ASSET_MAX_SIZE_AES_KEY_192;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should works correctly");
- return;
- }
-
- /* Gets current asset information */
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Client S_CLIENT_ID should be able to read the "
- "information of this asset");
- return;
- }
-
- /* Checks attributes */
- if (asset_info.size_current == 0) {
- TEST_FAIL("Asset current size should be bigger than 0");
- return;
- }
-
- /* Attempts to read beyond the current size starting from a valid offset */
- io_data.data = data;
- io_data.size = BUFFER_SIZE_PLUS_ONE;
- io_data.offset = 0;
-
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read beyond current size should not succeed");
- return;
- }
-
- /* Attempts to read from an offset beyond the current size of the asset */
- io_data.size = 1;
- io_data.offset = asset_info.size_current;
-
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE, io_data.size,
- io_data.offset, io_data.data);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read from an offset beyond current size should not succeed");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests delete function against:
- * - Valid client ID
- * - Invalid client ID
- * - Invalid asset ID
- * - Remove first asset in the data block and check if
- * next asset's data is compacted correctly.
- */
-static void tfm_sst_test_2010(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_SHA224_HASH;
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA384_HASH;
- struct sst_test_buf_t io_data;
- enum psa_sst_err_t err;
- uint8_t read_data[BUF_SIZE_SHA224] = READ_DATA_SHA224;
- uint8_t wrt_data[BUF_SIZE_SHA224] = WRITE_DATA_SHA224_1;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates assset */
- err = psa_sst_create(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
-#ifdef INVALID_CLIENT_ID_TEST
- /* Calls delete asset with invalid client ID */
- /* FIXME: Add test help call to change the client ID to an invalid one */
- err = psa_sst_delete(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("The delete action should fail if an invalid client "
- "ID is provided");
- return;
- }
-#endif
-
- /* Calls delete asset */
- err = psa_sst_delete(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- /* Calls delete with a deleted asset ID */
- err = psa_sst_delete(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("The delete action should fail as ID is not valid");
- return;
- }
-
- /* Calls delete asset with invalid asset ID */
- err = psa_sst_delete(INVALID_ASSET_ID, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("The delete action should fail if an invalid asset ID "
- "is provided");
- return;
- }
-
- /***** Test data block compact feature *****/
- /* Create asset 2 to locate it at the beginning of the block. Then,
- * create asset 1 to be located after asset 2. Write data on asset
- * 1 and remove asset 2. If delete works correctly, when the code
- * reads back the asset 1 data, the data must be correct.
- */
-
- /* Creates assset 2 first to locate it at the beginning of the
- * data block
- */
- err = psa_sst_create(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Creates asset 1 to locate it after the asset 2 in the data block */
- err = psa_sst_create(SST_ASSET_ID_SHA224_HASH,
- ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH;
- io_data.offset = 0;
-
- /* Writes data in asset 1 */
- err = psa_sst_write(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for client S_CLIENT_ID");
- return;
- }
-
- /* Deletes asset 2. It means that after the delete call, asset 1 should be
- * at the beginning of the block.
- */
- err = psa_sst_delete(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("The delete action should work correctly");
- return;
- }
-
- /* If compact works as expected, the code should be able to read back
- * correctly the data from asset 1
- */
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH;
- io_data.offset = 0;
-
- /* Read back the asset 1 */
- err = psa_sst_read(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, wrt_data, BUF_SIZE_SHA224) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write and partial reads.
- */
-static void tfm_sst_test_2011(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint32_t i;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should works correctly");
- return;
- }
-
- /* Sets data structure for read */
- io_data.data = read_data + HALF_PADDING_SIZE;
- io_data.size = 1;
- io_data.offset = 0;
-
- for (i = 0; i < WRITE_BUF_SIZE ; i++) {
- /* Read data from the asset */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- if (err != PSA_SST_ERR_SUCCESS) {
-#else
- if (io_data.offset != 0 && err != PSA_SST_ERR_PARAM_ERROR) {
-#endif
- TEST_FAIL("Read did not behave correctly");
- return;
- }
-
- /* Increases data pointer and offset */
- io_data.data++;
- io_data.offset++;
- }
-
- if (memcmp(read_data, "XXXX", HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal pre-data");
- return;
- }
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
- if (memcmp((read_data+HALF_PADDING_SIZE), wrt_data, WRITE_BUF_SIZE) != 0) {
-#else
- /* Only the first read ("D") is from a valid offset (0) */
- if (memcmp((read_data+HALF_PADDING_SIZE), "DXXXX", WRITE_BUF_SIZE) != 0) {
-#endif
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- if (memcmp((read_data+HALF_PADDING_SIZE+WRITE_BUF_SIZE), "XXXX",
- HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal post-data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests correct behaviour when data is written in the secure storage
- * area and the secure_fs_perpare is called after it.
- * The expected behaviour is to read back the data wrote
- * before the seconds perpare call.
- */
-static void tfm_sst_test_2012(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data[WRITE_BUF_SIZE] = "DATA";
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write should works correctly");
- return;
- }
-
- /* Calls prepare again to simulate reinitialization */
- err = sst_am_prepare();
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Saved system should have been preparable");
- return;
- }
-
- /* Sets data structure */
- io_data.data = read_data + HALF_PADDING_SIZE;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Reads back the data after the prepare */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, "XXXX", HALF_PADDING_SIZE)) {
- TEST_FAIL("Read buffer contains illegal pre-data");
- return;
- }
-
- if (memcmp((read_data+HALF_PADDING_SIZE), wrt_data, WRITE_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- if (memcmp((read_data+HALF_PADDING_SIZE+WRITE_BUF_SIZE), "XXXX",
- HALF_PADDING_SIZE) != 0) {
- TEST_FAIL("Read buffer contains illegal post-data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function against a write call where data size is
- * bigger than the maximum assert size.
- */
-static void tfm_sst_test_2013(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t wrt_data[BUF_SIZE_SHA224] = {0};
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH + 1;
- io_data.offset = 0;
-
- /* Writes data in the asset when data size is bigger than asset size */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Should have failed asset write of too large");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-/**
- * \brief Tests write function against multiple writes.
- */
-static void tfm_sst_test_2014(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data[WRITE_BUF_SIZE+1] = "Hello";
- uint8_t wrt_data2[WRITE_BUF_SIZE+1] = "World";
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 1 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data2;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data 2 in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 2 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = WRITE_BUF_SIZE * 2;
- io_data.offset = 0;
-
- /* Read back the data */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- /* The X is used to check that the number of bytes read was exactly the
- * number requested
- */
- if (memcmp(read_data, "HelloWorldXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has read incorrect data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests write function against multiple writes until the end of asset.
- */
-static void tfm_sst_test_2015(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[BUF_SIZE_SHA224] = READ_DATA_SHA224;
- uint8_t wrt_data[BUF_SIZE_SHA224] = WRITE_DATA_SHA224_1;
- uint8_t wrt_data2[BUF_SIZE_SHA224] = WRITE_DATA_SHA224_2;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 1 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data2;
- io_data.size = (SST_ASSET_MAX_SIZE_SHA224_HASH - WRITE_BUF_SIZE) + 1;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err == PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 2 should have failed as this write tries to "
- "write more bytes than the max size");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data + WRITE_BUF_SIZE;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH - WRITE_BUF_SIZE;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data in the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data 3 failed");
- return;
- }
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = SST_ASSET_MAX_SIZE_SHA224_HASH;
- io_data.offset = 0;
-
- /* Read back the data */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, wrt_data, BUF_SIZE_SHA224) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests writing data to two assets alternately before read-back.
- */
-static void tfm_sst_test_2016(struct test_result_t *ret)
-{
- const uint32_t asset_uuid_1 = SST_ASSET_ID_AES_KEY_192;
- const uint32_t asset_uuid_2 = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t wrt_data[WRITE_BUF_SIZE+1] = "Hello";
- uint8_t wrt_data2[3] = "Hi";
- uint8_t wrt_data3[WRITE_BUF_SIZE+1] = "World";
- uint8_t wrt_data4[WRITE_BUF_SIZE+1] = "12345";
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset 1 */
- err = psa_sst_create(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Creates asset 2 */
- err = psa_sst_create(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 0;
-
- /* Writes data in asset 1 */
- err = psa_sst_write(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data2;
- io_data.size = 2;
- io_data.offset = 0;
-
- /* Writes data 2 in asset 2 */
- err = psa_sst_write(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data3;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = WRITE_BUF_SIZE;
-
- /* Writes data 3 in asset 1 */
- err = psa_sst_write(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = wrt_data4;
- io_data.size = WRITE_BUF_SIZE;
- io_data.offset = 2;
-
- /* Writes data 4 in asset 2 */
- err = psa_sst_write(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Write data should work for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = WRITE_BUF_SIZE * 2; /* size of wrt_data + wrt_data3 */
- io_data.offset = 0;
-
- /* Read back the asset 1 */
- err = psa_sst_read(asset_uuid_1, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, "HelloWorldXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- /* Resets read buffer content to a known data */
- memset(read_data, 'X', READ_BUF_SIZE - 1);
-
- /* Sets data structure */
- io_data.data = read_data;
- io_data.size = 2 + WRITE_BUF_SIZE; /* size of wrt_data2 + wrt_data4 */
- io_data.offset = 0;
-
- /* Read back the asset 2 */
- err = psa_sst_read(asset_uuid_2, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Incorrect number of bytes read back");
- return;
- }
-
- if (memcmp(read_data, "Hi12345XXXXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer has incorrect data");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
-
-/**
- * \brief Tests read from and write to an illegal location: ROM.
- */
-static void tfm_sst_test_2017(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)ROM_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a ROM address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a ROM address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read from and write to an illegal location: device memory.
- */
-static void tfm_sst_test_2018(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)DEV_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a device address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a device address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-/**
- * \brief Tests read from and write to an illegal location: non-existant memory.
- */
-static void tfm_sst_test_2019(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_SHA224_HASH;
- enum psa_sst_err_t err;
- struct sst_test_buf_t io_data;
-
- /* Prepares test context */
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- /* Creates asset */
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail for client S_CLIENT_ID");
- return;
- }
-
- /* Sets data structure */
- io_data.data = (uint8_t *)NON_EXIST_ADDR_LOCATION;
- io_data.size = 1;
- io_data.offset = 0;
-
- /* Calls write with a non-existing address location */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Write should fail for an illegal location");
- return;
- }
-
- /* Calls read with a non-existing address location */
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_ASSET_NOT_FOUND) {
- TEST_FAIL("Read should fail for an illegal location");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-
-#ifdef SST_ENABLE_PARTIAL_ASSET_RW
-/**
- * \brief Writes data to the middle of an existing asset.
- */
-static void tfm_sst_test_2020(struct test_result_t *ret)
-{
- const uint32_t asset_uuid = SST_ASSET_ID_AES_KEY_192;
- struct psa_sst_asset_info_t asset_info;
- struct sst_test_buf_t io_data;
- enum psa_sst_err_t err;
- uint8_t read_data[READ_BUF_SIZE] = "XXXXXXXXXXXXX";
- uint8_t write_data_1[WRITE_BUF_SIZE] = "AAAA";
- uint8_t write_data_2[2] = "B";
-
- if (prepare_test_ctx(ret) != 0) {
- TEST_FAIL("Prepare test context should not fail");
- return;
- }
-
- err = psa_sst_create(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Create should not fail");
- return;
- }
-
- io_data.data = write_data_1;
- io_data.size = (WRITE_BUF_SIZE - 1);
- io_data.offset = 0;
-
- /* Writes write_data_1 to the asset */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("First write should not fail");
- return;
- }
-
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail");
- return;
- }
-
- /* Checks that the asset's current size is equal to the size of the write
- * data.
- */
- if (asset_info.size_current != WRITE_BUF_SIZE - 1) {
- TEST_FAIL("Current size should be equal to write size");
- return;
- }
-
- io_data.data = write_data_2;
- io_data.size = 1;
- io_data.offset = 1;
-
- /* Overwrites the second character in the asset with write_data_2 */
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Second write should not fail");
- return;
- }
-
- err = psa_sst_get_info(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- &asset_info);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Get information should not fail");
- return;
- }
-
- /* Checks that the asset's current size has not changed */
- if (asset_info.size_current != (WRITE_BUF_SIZE - 1)) {
- TEST_FAIL("Current size should not have changed");
- return;
- }
-
- io_data.data = (read_data + HALF_PADDING_SIZE);
- io_data.size = (WRITE_BUF_SIZE - 1);
- io_data.offset = 0;
-
- err = psa_sst_read(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_SUCCESS) {
- TEST_FAIL("Read should not fail");
- return;
- }
-
- /* Checks that the asset contains write_data_1 with the second character
- * overwritten with write_data_2.
- */
- if (memcmp(read_data, "XXXXABAAXXXXX", READ_BUF_SIZE) != 0) {
- TEST_FAIL("Read buffer is incorrect");
- return;
- }
-
- /* Checks that offset can not be bigger than current asset's size */
- io_data.data = write_data_2;
- io_data.size = 1;
- io_data.offset = (asset_info.size_current + 1);
-
- err = psa_sst_write(asset_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- io_data.size, io_data.offset, io_data.data);
- if (err != PSA_SST_ERR_PARAM_ERROR) {
- TEST_FAIL("Write must fail if the offset is bigger than the current"
- " asset's size");
- return;
- }
-
- ret->val = TEST_PASSED;
-}
-#endif /* SST_ENABLE_PARTIAL_ASSET_RW */
diff --git a/test/suites/sst/secure/sst_tests.h b/test/suites/sst/secure/sst_tests.h
index 4ee5a4b..cf0e98e 100644
--- a/test/suites/sst/secure/sst_tests.h
+++ b/test/suites/sst/secure/sst_tests.h
@@ -22,13 +22,6 @@
void register_testsuite_s_psa_ps_interface(struct test_suite_t *p_test_suite);
/**
- * \brief Register testsuite for the sst interface tests.
- *
- * \param[in] p_test_suite The test suite to be executed.
- */
-void register_testsuite_s_sst_sec_interface(struct test_suite_t *p_test_suite);
-
-/**
* \brief Register testsuite for the sst reliability tests.
*
* \param[in] p_test_suite The test suite to be executed.
diff --git a/test/test_services/CMakeLists.inc b/test/test_services/CMakeLists.inc
index 0fe8c4b..7006095 100644
--- a/test/test_services/CMakeLists.inc
+++ b/test/test_services/CMakeLists.inc
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+# Copyright (c) 2017-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -38,16 +38,6 @@
list(APPEND ALL_SRC_C_S "${CORE_TEST_DIR}/tfm_core_test_2/tfm_ss_core_test_2.c")
endif()
-if (NOT DEFINED TFM_PARTITION_TEST_SST)
- message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SST is undefined. ")
-elseif (TFM_PARTITION_TEST_SST)
- list(APPEND ALL_SRC_C_S "${CORE_TEST_DIR}/tfm_sst_test_service/sst_test_service.c"
- "${CORE_TEST_DIR}/tfm_sst_test_service/sst_test_service_veneers.c"
- )
-
- list(APPEND ALL_SRC_C_NS "${CORE_TEST_DIR}/tfm_sst_test_service/sst_test_service_api.c")
-endif()
-
if (NOT DEFINED TFM_PARTITION_TEST_SECURE_SERVICES)
message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_TEST_SECURE_SERVICES is undefined. ")
elseif (TFM_PARTITION_TEST_SECURE_SERVICES)
diff --git a/test/test_services/tfm_sst_test_service/manifest.yaml b/test/test_services/tfm_sst_test_service/manifest.yaml
deleted file mode 100644
index e6b26b0..0000000
--- a/test/test_services/tfm_sst_test_service/manifest.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-#-------------------------------------------------------------------------------
-
-{
- "name": "TFM_SST_TEST",
- "tfm_partition_name": "TFM_SP_SST_TEST_PARTITION",
- "type": "TRUSTED",
- "tfm_trusted": true,
- "priority": "NORMAL",
- "id": "0x00000004",
- "entry_point": "main",
- "stack_size": "0x0400",
- "heap_size": "0x0400",
- "tfm_init_symbol": "sst_test_service_init",
- "secure_functions": [
- {
- "sfid": "TFM_SST_TEST_SFN_SETUP_SFID",
- "signal": "TFM_SST_TEST_SFN_SETUP",
- "tfm_symbol": "sst_test_service_sfn_setup",
- "non_secure_clients": true,
- "minor_version": 1,
- "minor_policy": "strict"
- },
- {
- "sfid": "TFM_SST_TEST_SFN_DUMMY_ENCRYPT_SFID",
- "signal": "TFM_SST_TEST_SFN_DUMMY_ENCRYPT",
- "tfm_symbol": "sst_test_service_sfn_dummy_encrypt",
- "non_secure_clients": true,
- "minor_version": 1,
- "minor_policy": "strict"
- },
- {
- "sfid": "TFM_SST_TEST_SFN_DUMMY_DECRYPT_SFID",
- "signal": "TFM_SST_TEST_SFN_DUMMY_DECRYPT",
- "tfm_symbol": "sst_test_service_sfn_dummy_decrypt",
- "non_secure_clients": true,
- "minor_version": 1,
- "minor_policy": "strict"
- },
- {
- "sfid": "TFM_SST_TEST_SFN_CLEAN_SFID",
- "signal": "TFM_SST_TEST_SFN_CLEAN",
- "tfm_symbol": "sst_test_service_sfn_clean",
- "non_secure_clients": true,
- "minor_version": 1,
- "minor_policy": "strict"
- }
- ],
- "source_files": [
- "sst_test_service.c"
- ],
- "tfm_linker_pattern": {
- "object_list": [
- "*sst_test_service.*"
- ]
- }
-}
diff --git a/test/test_services/tfm_sst_test_service/sst_test_service.c b/test/test_services/tfm_sst_test_service/sst_test_service.c
deleted file mode 100644
index 5588921..0000000
--- a/test/test_services/tfm_sst_test_service/sst_test_service.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_test_service.h"
-
-#include "secure_fw/core/tfm_secure_api.h"
-#include "secure_fw/services/secure_storage/assets/sst_asset_defs.h"
-#include "secure_fw/services/secure_storage/sst_asset_management.h"
-#include "secure_fw/services/secure_storage/sst_utils.h"
-#include "psa_sst_api.h"
-
-#define SST_TEST_SERVICE_KEY { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, \
- 0xDE, 0xAD, 0xBE, 0xEF, 0xBA, 0xAD, 0xF0, 0x0D, }
-#define SST_TEST_SERVICE_KEY_SIZE SST_ASSET_MAX_SIZE_AES_KEY_128
-
-/* Define default asset's token */
-#define ASSET_TOKEN NULL
-#define ASSET_TOKEN_SIZE 0
-
-/**
- * \brief Service initialisation function. No special initialisation is
- * required.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_init(void)
-{
- return PSA_SST_ERR_SUCCESS;
-}
-
-enum psa_sst_err_t sst_test_service_sfn_setup(void)
-{
- enum psa_sst_err_t err;
- const uint32_t key_uuid = SST_ASSET_ID_AES_KEY_128;
- static uint8_t key_data[SST_TEST_SERVICE_KEY_SIZE] = SST_TEST_SERVICE_KEY;
-
-
- /* Create the key asset using our secure app ID */
- err = psa_sst_create(key_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
- if (err != PSA_SST_ERR_SUCCESS) {
- return err;
- }
-
- /* Write the key to the asset using our secure app ID */
- err = psa_sst_write(key_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE,
- SST_TEST_SERVICE_KEY_SIZE, 0, key_data);
-
- return err;
-}
-
-enum psa_sst_err_t sst_test_service_sfn_dummy_encrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size)
-{
- enum psa_sst_err_t err;
- uint32_t i;
- uint8_t key_data[SST_TEST_SERVICE_KEY_SIZE];
- int32_t client_id;
-
- if (tfm_core_get_caller_client_id(&client_id) != TFM_SUCCESS) {
- return PSA_SST_ERR_SYSTEM_ERROR;
- }
-
- /* Read the key from the asset using the non-secure caller's client ID */
- err = psa_sst_reference_read(client_id, key_uuid, ASSET_TOKEN,
- ASSET_TOKEN_SIZE, SST_TEST_SERVICE_KEY_SIZE,
- 0, key_data);
- if (err != PSA_SST_ERR_SUCCESS) {
- return err;
- }
-
- /* Check the buffer is valid memory for the client that supplied it */
- err = sst_utils_memory_bound_check(buf, buf_size, client_id,
- TFM_MEMORY_ACCESS_RW);
- if (err != PSA_SST_ERR_SUCCESS) {
- return PSA_SST_ERR_PARAM_ERROR;
- }
-
- /* Encrypt the data (very badly) using the key from secure storage */
- for (i = 0; i < buf_size; i++) {
- buf[i] ^= key_data[i % SST_TEST_SERVICE_KEY_SIZE];
- }
-
- return PSA_SST_ERR_SUCCESS;
-}
-
-enum psa_sst_err_t sst_test_service_sfn_dummy_decrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size)
-{
- /* In the current implementation encrypt and decrypt are the same
- * operation.
- */
- return sst_test_service_sfn_dummy_encrypt(key_uuid, buf, buf_size);
-}
-
-enum psa_sst_err_t sst_test_service_sfn_clean(void)
-{
- enum psa_sst_err_t err;
- const uint32_t key_uuid = SST_ASSET_ID_AES_KEY_128;
-
- /* Delete the key asset using our secure app ID */
- err = psa_sst_delete(key_uuid, ASSET_TOKEN, ASSET_TOKEN_SIZE);
-
- return err;
-}
diff --git a/test/test_services/tfm_sst_test_service/sst_test_service.h b/test/test_services/tfm_sst_test_service/sst_test_service.h
deleted file mode 100644
index d283576..0000000
--- a/test/test_services/tfm_sst_test_service/sst_test_service.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __SST_TEST_SERVICE_H__
-#define __SST_TEST_SERVICE_H__
-
-#include <stdint.h>
-#include "tfm_sst_defs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Sets-up the SST test service so that it is ready for test functions to
- * be called.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_sfn_setup(void);
-
-/**
- * \brief Performs a dummy encryption on the supplied buffer, using the key
- * stored in the asset with the given UUID.
- *
- * \param[in] key_uuid UUID of asset containing key
- * \param[in,out] buf Plaintext buffer
- * \param[in] buf_size Size of buf
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_sfn_dummy_encrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size);
-
-/**
- * \brief Performs a dummy decryption on the supplied buffer, using the key
- * stored in the asset with the given UUID.
- *
- * \param[in] key_uuid UUID of asset containing key
- * \param[in,out] buf Ciphertext buffer
- * \param[in] buf_size Size of buf
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_sfn_dummy_decrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size);
-
-/**
- * \brief Cleans the secure storage used by the SST test service.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_sfn_clean(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __SST_TEST_SERVICE_H__ */
diff --git a/test/test_services/tfm_sst_test_service/sst_test_service_api.c b/test/test_services/tfm_sst_test_service/sst_test_service_api.c
deleted file mode 100644
index 40e6370..0000000
--- a/test/test_services/tfm_sst_test_service/sst_test_service_api.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_test_service_api.h"
-#include "sst_test_service_veneers.h"
-
-enum psa_sst_err_t sst_test_service_setup(void)
-{
- return sst_test_service_veneer_setup();
-}
-
-enum psa_sst_err_t sst_test_service_dummy_encrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size)
-{
- return sst_test_service_veneer_dummy_encrypt(key_uuid, buf, buf_size);
-}
-
-enum psa_sst_err_t sst_test_service_dummy_decrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size)
-{
- return sst_test_service_veneer_dummy_decrypt(key_uuid, buf, buf_size);
-}
-
-enum psa_sst_err_t sst_test_service_clean(void)
-{
- return sst_test_service_veneer_clean();
-}
diff --git a/test/test_services/tfm_sst_test_service/sst_test_service_api.h b/test/test_services/tfm_sst_test_service/sst_test_service_api.h
deleted file mode 100644
index 09f6909..0000000
--- a/test/test_services/tfm_sst_test_service/sst_test_service_api.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __SST_TEST_SERVICE_API_H__
-#define __SST_TEST_SERVICE_API_H__
-
-#include <stdint.h>
-#include "tfm_sst_defs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Sets-up the SST test service so that it is ready for test functions to
- * be called.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_setup(void);
-
-/**
- * \brief Performs a dummy encryption on the supplied buffer, using the key
- * stored in the asset with the given UUID.
- *
- * \param[in] key_uuid UUID of asset containing key
- * \param[in,out] buf Plaintext buffer
- * \param[in] buf_size Size of buf
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_dummy_encrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size);
-
-/**
- * \brief Performs a dummy decryption on the supplied buffer, using the key
- * stored in the asset with the given UUID.
- *
- * \param[in] key_uuid UUID of asset containing key
- * \param[in,out] buf Ciphertext buffer
- * \param[in] buf_size Size of buf
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_dummy_decrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size);
-
-/**
- * \brief Cleans the secure storage used by the SST test service.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_clean(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __SST_TEST_SERVICE_API_H__ */
diff --git a/test/test_services/tfm_sst_test_service/sst_test_service_veneers.c b/test/test_services/tfm_sst_test_service/sst_test_service_veneers.c
deleted file mode 100644
index fcbb709..0000000
--- a/test/test_services/tfm_sst_test_service/sst_test_service_veneers.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include "sst_test_service_veneers.h"
-
-#include "sst_test_service.h"
-#include "secure_fw/core/tfm_secure_api.h"
-#include "secure_fw/spm/spm_partition_defs.h"
-
-__tfm_secure_gateway_attributes__
-enum psa_sst_err_t sst_test_service_veneer_setup(void)
-{
- TFM_CORE_SFN_REQUEST(TFM_SP_SST_TEST_PARTITION_ID,
- sst_test_service_sfn_setup,
- 0, 0, 0, 0);
-}
-
-__tfm_secure_gateway_attributes__
-enum psa_sst_err_t sst_test_service_veneer_dummy_encrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size)
-{
- TFM_CORE_SFN_REQUEST(TFM_SP_SST_TEST_PARTITION_ID,
- sst_test_service_sfn_dummy_encrypt,
- key_uuid, buf, buf_size, 0);
-}
-
-__tfm_secure_gateway_attributes__
-enum psa_sst_err_t sst_test_service_veneer_dummy_decrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size)
-{
- TFM_CORE_SFN_REQUEST(TFM_SP_SST_TEST_PARTITION_ID,
- sst_test_service_sfn_dummy_decrypt,
- key_uuid, buf, buf_size, 0);
-}
-
-__tfm_secure_gateway_attributes__
-enum psa_sst_err_t sst_test_service_veneer_clean(void)
-{
- TFM_CORE_SFN_REQUEST(TFM_SP_SST_TEST_PARTITION_ID,
- sst_test_service_sfn_clean,
- 0, 0, 0, 0);
-}
diff --git a/test/test_services/tfm_sst_test_service/sst_test_service_veneers.h b/test/test_services/tfm_sst_test_service/sst_test_service_veneers.h
deleted file mode 100644
index de5cd59..0000000
--- a/test/test_services/tfm_sst_test_service/sst_test_service_veneers.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __SST_TEST_SERVICE_VENEERS_H__
-#define __SST_TEST_SERVICE_VENEERS_H__
-
-#include <stdint.h>
-#include "tfm_sst_defs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Sets-up the SST test service so that it is ready for test functions to
- * be called.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_veneer_setup(void);
-
-/**
- * \brief Performs a dummy encryption on the supplied buffer, using the key
- * stored in the asset with the given UUID.
- *
- * \param[in] key_uuid UUID of asset containing key
- * \param[in,out] buf Plaintext buffer
- * \param[in] buf_size Size of buf
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_veneer_dummy_encrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size);
-/**
- * \brief Performs a dummy decryption on the supplied buffer, using the key
- * stored in the asset with the given UUID.
- *
- * \param[in] key_uuid UUID of asset containing key
- * \param[in,out] buf Ciphertext buffer
- * \param[in] buf_size Size of buf
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_veneer_dummy_decrypt(uint32_t key_uuid,
- uint8_t *buf,
- uint32_t buf_size);
-/**
- * \brief Cleans the secure storage used by the SST test service.
- *
- * \return Returns error code as specified in \ref psa_sst_err_t
- */
-enum psa_sst_err_t sst_test_service_veneer_clean(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __SST_TEST_SERVICE_VENEERS_H__ */
diff --git a/tools/tfm_manifest_list.yaml b/tools/tfm_manifest_list.yaml
index c06a13e..15486d5 100644
--- a/tools/tfm_manifest_list.yaml
+++ b/tools/tfm_manifest_list.yaml
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2018, Arm Limited. All rights reserved.
+# Copyright (c) 2018-2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -70,15 +70,6 @@
"version_minor": 1
},
{
- "name": "TFM SST Test Service",
- "short_name": "TFM_SST_Test",
- "manifest": "test/test_services/tfm_sst_test_service/manifest.yaml",
- "tfm_extensions": true,
- "conditional": "TFM_PARTITION_TEST_SST",
- "version_major": 0,
- "version_minor": 1
- },
- {
"name": "TFM Secure Client Service",
"short_name": "TFM_Secure_Client",
"manifest": "test/test_services/tfm_secure_client_service/manifest.yaml",