diff --git a/api-tests/dev_apis/crypto/test_c001/test_c001.c b/api-tests/dev_apis/crypto/test_c001/test_c001.c
index 0b334fc..4f32416 100644
--- a/api-tests/dev_apis/crypto/test_c001/test_c001.c
+++ b/api-tests/dev_apis/crypto/test_c001/test_c001.c
@@ -27,7 +27,7 @@
     NULL,
 };
 
-int32_t psa_generate_random_without_init_test(security_t caller)
+int32_t psa_generate_random_without_init_test(caller_security_t caller)
 {
     uint8_t         output[GENERATE_SIZE];
     int32_t         status;
@@ -44,7 +44,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_crypto_init_test(security_t caller)
+int32_t psa_crypto_init_test(caller_security_t caller)
 {
     int32_t        status;
 
@@ -57,7 +57,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t multiple_psa_crypto_init_test(security_t caller)
+int32_t multiple_psa_crypto_init_test(caller_security_t caller)
 {
     int32_t         i, status;
 
diff --git a/api-tests/dev_apis/crypto/test_c001/test_c001.h b/api-tests/dev_apis/crypto/test_c001/test_c001.h
index de25766..0c9c4c9 100644
--- a/api-tests/dev_apis/crypto/test_c001/test_c001.h
+++ b/api-tests/dev_apis/crypto/test_c001/test_c001.h
@@ -28,7 +28,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_c001_crypto_list[];
 
-int32_t psa_crypto_init_test(security_t caller);
-int32_t multiple_psa_crypto_init_test(security_t caller);
-int32_t psa_generate_random_without_init_test(security_t caller);
+int32_t psa_crypto_init_test(caller_security_t caller);
+int32_t multiple_psa_crypto_init_test(caller_security_t caller);
+int32_t psa_generate_random_without_init_test(caller_security_t caller);
 #endif /* _TEST_C001_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c002/test_c002.c b/api-tests/dev_apis/crypto/test_c002/test_c002.c
index 63944c9..656aebc 100644
--- a/api-tests/dev_apis/crypto/test_c002/test_c002.c
+++ b/api-tests/dev_apis/crypto/test_c002/test_c002.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_import_key_test(security_t caller)
+int32_t psa_import_key_test(caller_security_t caller)
 {
     int32_t               i, status;
     uint8_t               data[BUFFER_SIZE];
diff --git a/api-tests/dev_apis/crypto/test_c002/test_c002.h b/api-tests/dev_apis/crypto/test_c002/test_c002.h
index d12fb7d..fecfedb 100644
--- a/api-tests/dev_apis/crypto/test_c002/test_c002.h
+++ b/api-tests/dev_apis/crypto/test_c002/test_c002.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c002_crypto_list[];
 
-int32_t psa_import_key_test(security_t caller);
+int32_t psa_import_key_test(caller_security_t caller);
 #endif /* _TEST_C002_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c003/test_c003.c b/api-tests/dev_apis/crypto/test_c003/test_c003.c
index 814513d..47607d8 100644
--- a/api-tests/dev_apis/crypto/test_c003/test_c003.c
+++ b/api-tests/dev_apis/crypto/test_c003/test_c003.c
@@ -29,7 +29,7 @@
 static int      g_test_count = 1;
 static uint8_t  data[BUFFER_SIZE];
 
-int32_t psa_export_key_test(security_t caller)
+int32_t psa_export_key_test(caller_security_t caller)
 {
     int32_t               i, status;
     size_t                length;
diff --git a/api-tests/dev_apis/crypto/test_c003/test_c003.h b/api-tests/dev_apis/crypto/test_c003/test_c003.h
index 96ed12b..3bd4e53 100644
--- a/api-tests/dev_apis/crypto/test_c003/test_c003.h
+++ b/api-tests/dev_apis/crypto/test_c003/test_c003.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c003_crypto_list[];
 
-int32_t psa_export_key_test(security_t caller);
-int32_t psa_export_key_negative_test(security_t caller);
+int32_t psa_export_key_test(caller_security_t caller);
+int32_t psa_export_key_negative_test(caller_security_t caller);
 #endif /* _TEST_C003_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c004/test_c004.c b/api-tests/dev_apis/crypto/test_c004/test_c004.c
index 2eed9a4..00bdfd3 100644
--- a/api-tests/dev_apis/crypto/test_c004/test_c004.c
+++ b/api-tests/dev_apis/crypto/test_c004/test_c004.c
@@ -29,7 +29,7 @@
 static int          g_test_count = 1;
 static uint8_t      data[BUFFER_SIZE];
 
-int32_t test_psa_export_public_key(security_t caller)
+int32_t test_psa_export_public_key(caller_security_t caller)
 {
     int32_t               i, status;
     size_t                length;
diff --git a/api-tests/dev_apis/crypto/test_c004/test_c004.h b/api-tests/dev_apis/crypto/test_c004/test_c004.h
index 518013f..b8f27de 100644
--- a/api-tests/dev_apis/crypto/test_c004/test_c004.h
+++ b/api-tests/dev_apis/crypto/test_c004/test_c004.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c004_crypto_list[];
 
-int32_t test_psa_export_public_key(security_t caller);
+int32_t test_psa_export_public_key(caller_security_t caller);
 #endif /* _TEST_C004_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c005/test_c005.c b/api-tests/dev_apis/crypto/test_c005/test_c005.c
index e14e117..0dabc9d 100644
--- a/api-tests/dev_apis/crypto/test_c005/test_c005.c
+++ b/api-tests/dev_apis/crypto/test_c005/test_c005.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_destroy_key_test(security_t caller)
+int32_t psa_destroy_key_test(caller_security_t caller)
 {
     int32_t               i, status;
     const uint8_t        *key_data;
diff --git a/api-tests/dev_apis/crypto/test_c005/test_c005.h b/api-tests/dev_apis/crypto/test_c005/test_c005.h
index 50cad3d..95e228b 100644
--- a/api-tests/dev_apis/crypto/test_c005/test_c005.h
+++ b/api-tests/dev_apis/crypto/test_c005/test_c005.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c005_crypto_list[];
 
-int32_t psa_destroy_key_test(security_t caller);
+int32_t psa_destroy_key_test(caller_security_t caller);
 #endif /* _TEST_C005_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c006/test_c006.c b/api-tests/dev_apis/crypto/test_c006/test_c006.c
index 61fecdc..594e3eb 100644
--- a/api-tests/dev_apis/crypto/test_c006/test_c006.c
+++ b/api-tests/dev_apis/crypto/test_c006/test_c006.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_compute_test(security_t caller)
+int32_t psa_hash_compute_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c006/test_c006.h b/api-tests/dev_apis/crypto/test_c006/test_c006.h
index c46a0b3..9a1a622 100644
--- a/api-tests/dev_apis/crypto/test_c006/test_c006.h
+++ b/api-tests/dev_apis/crypto/test_c006/test_c006.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c006_crypto_list[];
 
-int32_t psa_hash_compute_test(security_t caller);
+int32_t psa_hash_compute_test(caller_security_t caller);
 #endif /* _TEST_C006_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c007/test_c007.c b/api-tests/dev_apis/crypto/test_c007/test_c007.c
index 1c86caa..895242a 100644
--- a/api-tests/dev_apis/crypto/test_c007/test_c007.c
+++ b/api-tests/dev_apis/crypto/test_c007/test_c007.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_compare_test(security_t caller)
+int32_t psa_hash_compare_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c007/test_c007.h b/api-tests/dev_apis/crypto/test_c007/test_c007.h
index 55918d9..fb5c385 100644
--- a/api-tests/dev_apis/crypto/test_c007/test_c007.h
+++ b/api-tests/dev_apis/crypto/test_c007/test_c007.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c007_crypto_list[];
 
-int32_t psa_hash_compare_test(security_t caller);
+int32_t psa_hash_compare_test(caller_security_t caller);
 #endif /* _TEST_C007_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c008/test_c008.c b/api-tests/dev_apis/crypto/test_c008/test_c008.c
index afd7742..5063c13 100644
--- a/api-tests/dev_apis/crypto/test_c008/test_c008.c
+++ b/api-tests/dev_apis/crypto/test_c008/test_c008.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_key_derivation_setup_test(security_t caller)
+int32_t psa_key_derivation_setup_test(caller_security_t caller)
 {
     int32_t                         i, status;
     int                             num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c008/test_c008.h b/api-tests/dev_apis/crypto/test_c008/test_c008.h
index 7fd8270..c86acf8 100644
--- a/api-tests/dev_apis/crypto/test_c008/test_c008.h
+++ b/api-tests/dev_apis/crypto/test_c008/test_c008.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c008_crypto_list[];
 
-int32_t psa_key_derivation_setup_test(security_t caller);
+int32_t psa_key_derivation_setup_test(caller_security_t caller);
 #endif /* _TEST_C008_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c009/test_c009.c b/api-tests/dev_apis/crypto/test_c009/test_c009.c
index 5410ec4..1288bf6 100644
--- a/api-tests/dev_apis/crypto/test_c009/test_c009.c
+++ b/api-tests/dev_apis/crypto/test_c009/test_c009.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_key_derivation_input_bytes_test(security_t caller)
+int32_t psa_key_derivation_input_bytes_test(caller_security_t caller)
 {
     int32_t                        i, status;
     int                            num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c009/test_c009.h b/api-tests/dev_apis/crypto/test_c009/test_c009.h
index c96f1f6..356ad72 100644
--- a/api-tests/dev_apis/crypto/test_c009/test_c009.h
+++ b/api-tests/dev_apis/crypto/test_c009/test_c009.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c009_crypto_list[];
 
-int32_t psa_key_derivation_input_bytes_test(security_t caller);
+int32_t psa_key_derivation_input_bytes_test(caller_security_t caller);
 #endif /* _TEST_C009_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c010/test_c010.c b/api-tests/dev_apis/crypto/test_c010/test_c010.c
index 041d26b..5455c0a 100644
--- a/api-tests/dev_apis/crypto/test_c010/test_c010.c
+++ b/api-tests/dev_apis/crypto/test_c010/test_c010.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_key_attributes_set_get_test(security_t caller)
+int32_t psa_key_attributes_set_get_test(caller_security_t caller)
 {
     int32_t               i, status;
     psa_key_type_t        get_key_type;
diff --git a/api-tests/dev_apis/crypto/test_c010/test_c010.h b/api-tests/dev_apis/crypto/test_c010/test_c010.h
index eb5bdf7..7159b5a 100644
--- a/api-tests/dev_apis/crypto/test_c010/test_c010.h
+++ b/api-tests/dev_apis/crypto/test_c010/test_c010.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c010_crypto_list[];
 
-int32_t psa_key_attributes_set_get_test(security_t caller);
+int32_t psa_key_attributes_set_get_test(caller_security_t caller);
 #endif /* _TEST_C010_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c011/test_c011.c b/api-tests/dev_apis/crypto/test_c011/test_c011.c
index 4dbc8da..4abab81 100644
--- a/api-tests/dev_apis/crypto/test_c011/test_c011.c
+++ b/api-tests/dev_apis/crypto/test_c011/test_c011.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_setup_test(security_t caller)
+int32_t psa_hash_setup_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c011/test_c011.h b/api-tests/dev_apis/crypto/test_c011/test_c011.h
index 4c49ee9..b16284b 100644
--- a/api-tests/dev_apis/crypto/test_c011/test_c011.h
+++ b/api-tests/dev_apis/crypto/test_c011/test_c011.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c011_crypto_list[];
 
-int32_t psa_hash_setup_test(security_t caller);
-int32_t psa_get_key_lifetime_negative_test(security_t caller);
+int32_t psa_hash_setup_test(caller_security_t caller);
+int32_t psa_get_key_lifetime_negative_test(caller_security_t caller);
 #endif /* _TEST_C011_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c012/test_c012.c b/api-tests/dev_apis/crypto/test_c012/test_c012.c
index 1bce2b3..3e3cc21 100644
--- a/api-tests/dev_apis/crypto/test_c012/test_c012.c
+++ b/api-tests/dev_apis/crypto/test_c012/test_c012.c
@@ -31,7 +31,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_update_test(security_t caller)
+int32_t psa_hash_update_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -76,7 +76,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_hash_update_invalid_handle(security_t caller)
+int32_t psa_hash_update_invalid_handle(caller_security_t caller)
 {
     psa_hash_operation_t    operation;
     uint8_t                 input[] = "Hello World";
@@ -108,7 +108,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_hash_update_with_completed_handle(security_t caller)
+int32_t psa_hash_update_with_completed_handle(caller_security_t caller)
 {
     psa_hash_operation_t    operation;
     uint8_t                 input[] = {0xbd};
diff --git a/api-tests/dev_apis/crypto/test_c012/test_c012.h b/api-tests/dev_apis/crypto/test_c012/test_c012.h
index 6c82797..acbf777 100644
--- a/api-tests/dev_apis/crypto/test_c012/test_c012.h
+++ b/api-tests/dev_apis/crypto/test_c012/test_c012.h
@@ -26,7 +26,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_c012_crypto_list[];
 
-int32_t psa_hash_update_test(security_t caller);
-int32_t psa_hash_update_invalid_handle(security_t caller);
-int32_t psa_hash_update_with_completed_handle(security_t caller);
+int32_t psa_hash_update_test(caller_security_t caller);
+int32_t psa_hash_update_invalid_handle(caller_security_t caller);
+int32_t psa_hash_update_with_completed_handle(caller_security_t caller);
 #endif /* _TEST_C012_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c013/test_c013.c b/api-tests/dev_apis/crypto/test_c013/test_c013.c
index 3072d14..772ea61 100644
--- a/api-tests/dev_apis/crypto/test_c013/test_c013.c
+++ b/api-tests/dev_apis/crypto/test_c013/test_c013.c
@@ -30,7 +30,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_verify_test(security_t caller)
+int32_t psa_hash_verify_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -86,7 +86,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_hash_verify_inactive_operation_handle(security_t caller)
+int32_t psa_hash_verify_inactive_operation_handle(caller_security_t caller)
 {
     psa_hash_operation_t    operation, invalid_operation;
     char                    input = 0xbd;
diff --git a/api-tests/dev_apis/crypto/test_c013/test_c013.h b/api-tests/dev_apis/crypto/test_c013/test_c013.h
index 02e91e6..2e72127 100644
--- a/api-tests/dev_apis/crypto/test_c013/test_c013.h
+++ b/api-tests/dev_apis/crypto/test_c013/test_c013.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c013_crypto_list[];
 
-int32_t psa_hash_verify_test(security_t caller);
-int32_t psa_hash_verify_inactive_operation_handle(security_t caller);
+int32_t psa_hash_verify_test(caller_security_t caller);
+int32_t psa_hash_verify_inactive_operation_handle(caller_security_t caller);
 #endif /* _TEST_C013_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c014/test_c014.c b/api-tests/dev_apis/crypto/test_c014/test_c014.c
index 5a5863e..a35079c 100644
--- a/api-tests/dev_apis/crypto/test_c014/test_c014.c
+++ b/api-tests/dev_apis/crypto/test_c014/test_c014.c
@@ -31,7 +31,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_finish_test(security_t caller)
+int32_t psa_hash_finish_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -97,7 +97,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_hash_finish_inactive_operation_handle(security_t caller)
+int32_t psa_hash_finish_inactive_operation_handle(caller_security_t caller)
 {
     psa_hash_operation_t    operation;
     char                    input = 0xbd;
@@ -145,7 +145,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_hash_finish_invalid_hash_buffer_size(security_t caller)
+int32_t psa_hash_finish_invalid_hash_buffer_size(caller_security_t caller)
 {
     psa_hash_operation_t    operation;
     char                    input = 0xbd;
diff --git a/api-tests/dev_apis/crypto/test_c014/test_c014.h b/api-tests/dev_apis/crypto/test_c014/test_c014.h
index 35dc791..81b92ee 100644
--- a/api-tests/dev_apis/crypto/test_c014/test_c014.h
+++ b/api-tests/dev_apis/crypto/test_c014/test_c014.h
@@ -26,7 +26,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_c014_crypto_list[];
 
-int32_t psa_hash_finish_test(security_t caller);
-int32_t psa_hash_finish_inactive_operation_handle(security_t caller);
-int32_t psa_hash_finish_invalid_hash_buffer_size(security_t caller);
+int32_t psa_hash_finish_test(caller_security_t caller);
+int32_t psa_hash_finish_inactive_operation_handle(caller_security_t caller);
+int32_t psa_hash_finish_invalid_hash_buffer_size(caller_security_t caller);
 #endif /* _TEST_C014_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c015/test_c015.c b/api-tests/dev_apis/crypto/test_c015/test_c015.c
index 3e989e7..cd5c96d 100644
--- a/api-tests/dev_apis/crypto/test_c015/test_c015.c
+++ b/api-tests/dev_apis/crypto/test_c015/test_c015.c
@@ -30,7 +30,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_abort_test(security_t caller)
+int32_t psa_hash_abort_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -73,7 +73,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_hash_abort_before_operation_finish(security_t caller)
+int32_t psa_hash_abort_before_operation_finish(caller_security_t caller)
 {
     psa_hash_operation_t    operation;
     char                    input = 0xbd;
diff --git a/api-tests/dev_apis/crypto/test_c015/test_c015.h b/api-tests/dev_apis/crypto/test_c015/test_c015.h
index 34490be..b3edc26 100644
--- a/api-tests/dev_apis/crypto/test_c015/test_c015.h
+++ b/api-tests/dev_apis/crypto/test_c015/test_c015.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c015_crypto_list[];
 
-int32_t psa_hash_abort_test(security_t caller);
-int32_t psa_hash_abort_before_operation_finish(security_t caller);
+int32_t psa_hash_abort_test(caller_security_t caller);
+int32_t psa_hash_abort_before_operation_finish(caller_security_t caller);
 #endif /* _TEST_C015_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c016/test_c016.c b/api-tests/dev_apis/crypto/test_c016/test_c016.c
index 63fa51c..f1ef9db 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_c016.c
+++ b/api-tests/dev_apis/crypto/test_c016/test_c016.c
@@ -30,7 +30,7 @@
 static int       g_test_count = 1;
 static uint8_t   data[BUFFER_SIZE];
 
-int32_t psa_generate_key_test(security_t caller)
+int32_t psa_generate_key_test(caller_security_t caller)
 {
     int32_t               i, status;
     size_t                length;
diff --git a/api-tests/dev_apis/crypto/test_c016/test_c016.h b/api-tests/dev_apis/crypto/test_c016/test_c016.h
index 3302aa8..86ed985 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_c016.h
+++ b/api-tests/dev_apis/crypto/test_c016/test_c016.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c016_crypto_list[];
 
-int32_t psa_generate_key_test(security_t caller);
+int32_t psa_generate_key_test(caller_security_t caller);
 #endif /* _TEST_C016_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c017/test_c017.c b/api-tests/dev_apis/crypto/test_c017/test_c017.c
index 4536f35..9088ddf 100644
--- a/api-tests/dev_apis/crypto/test_c017/test_c017.c
+++ b/api-tests/dev_apis/crypto/test_c017/test_c017.c
@@ -30,7 +30,7 @@
 static int     g_test_count = 1;
 static uint8_t data[BUFFER_SIZE], changed[BUFFER_SIZE];
 
-int32_t psa_generate_random_test(security_t caller)
+int32_t psa_generate_random_test(caller_security_t caller)
 {
     int         num_checks = sizeof(check1)/sizeof(check1[0]);
     uint32_t    i, j, run;
diff --git a/api-tests/dev_apis/crypto/test_c017/test_c017.h b/api-tests/dev_apis/crypto/test_c017/test_c017.h
index dedf975..aaf24a0 100644
--- a/api-tests/dev_apis/crypto/test_c017/test_c017.h
+++ b/api-tests/dev_apis/crypto/test_c017/test_c017.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c017_crypto_list[];
 
-int32_t psa_generate_random_test(security_t caller);
+int32_t psa_generate_random_test(caller_security_t caller);
 #endif /* _TEST_C017_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c018/test_c018.c b/api-tests/dev_apis/crypto/test_c018/test_c018.c
index e85842d..3c5a2f9 100644
--- a/api-tests/dev_apis/crypto/test_c018/test_c018.c
+++ b/api-tests/dev_apis/crypto/test_c018/test_c018.c
@@ -30,7 +30,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_key_derivation_input_key_test(security_t caller)
+int32_t psa_key_derivation_input_key_test(caller_security_t caller)
 {
     int32_t                        i, status;
     const uint8_t                 *key_data;
@@ -148,7 +148,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_key_derivation_input_key_negative_test(security_t caller)
+int32_t psa_key_derivation_input_key_negative_test(caller_security_t caller)
 {
     int32_t                        i, status;
     int                            num_checks = sizeof(check2)/sizeof(check2[0]);
diff --git a/api-tests/dev_apis/crypto/test_c018/test_c018.h b/api-tests/dev_apis/crypto/test_c018/test_c018.h
index 3d18506..02555ba 100644
--- a/api-tests/dev_apis/crypto/test_c018/test_c018.h
+++ b/api-tests/dev_apis/crypto/test_c018/test_c018.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c018_crypto_list[];
 
-int32_t psa_key_derivation_input_key_test(security_t caller);
-int32_t psa_key_derivation_input_key_negative_test(security_t caller);
+int32_t psa_key_derivation_input_key_test(caller_security_t caller);
+int32_t psa_key_derivation_input_key_negative_test(caller_security_t caller);
 #endif /* _TEST_C018_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c019/test_c019.c b/api-tests/dev_apis/crypto/test_c019/test_c019.c
index 2cd2f48..7593f8c 100644
--- a/api-tests/dev_apis/crypto/test_c019/test_c019.c
+++ b/api-tests/dev_apis/crypto/test_c019/test_c019.c
@@ -29,7 +29,7 @@
 
 static int         g_test_count = 1;
 
-int32_t psa_key_derivation_key_agreement_test(security_t caller)
+int32_t psa_key_derivation_key_agreement_test(caller_security_t caller)
 {
     int                             num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                         i, status;
@@ -94,7 +94,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_key_derivation_key_agreement_negative_test(security_t caller)
+int32_t psa_key_derivation_key_agreement_negative_test(caller_security_t caller)
 {
     int32_t                         i, status;
     int                             num_checks = sizeof(check2)/sizeof(check2[0]);
diff --git a/api-tests/dev_apis/crypto/test_c019/test_c019.h b/api-tests/dev_apis/crypto/test_c019/test_c019.h
index a91daed..40f2a36 100644
--- a/api-tests/dev_apis/crypto/test_c019/test_c019.h
+++ b/api-tests/dev_apis/crypto/test_c019/test_c019.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c019_crypto_list[];
 
-int32_t psa_key_derivation_key_agreement_test(security_t caller);
-int32_t psa_key_derivation_key_agreement_negative_test(security_t caller);
+int32_t psa_key_derivation_key_agreement_test(caller_security_t caller);
+int32_t psa_key_derivation_key_agreement_negative_test(caller_security_t caller);
 #endif /* _TEST_C019_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c020/test_c020.c b/api-tests/dev_apis/crypto/test_c020/test_c020.c
index 7fc0e3f..b4f4037 100644
--- a/api-tests/dev_apis/crypto/test_c020/test_c020.c
+++ b/api-tests/dev_apis/crypto/test_c020/test_c020.c
@@ -30,7 +30,7 @@
 static int      g_test_count = 1;
 static uint8_t  output[BUFFER_SIZE];
 
-int32_t psa_key_derivation_output_bytes_test(security_t caller)
+int32_t psa_key_derivation_output_bytes_test(caller_security_t caller)
 {
     uint32_t                        i, status;
     int                             num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c020/test_c020.h b/api-tests/dev_apis/crypto/test_c020/test_c020.h
index 331108e..3e3cdb3 100644
--- a/api-tests/dev_apis/crypto/test_c020/test_c020.h
+++ b/api-tests/dev_apis/crypto/test_c020/test_c020.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c020_crypto_list[];
 
-int32_t psa_key_derivation_output_bytes_test(security_t caller);
+int32_t psa_key_derivation_output_bytes_test(caller_security_t caller);
 #endif /* _TEST_C020_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c021/test_c021.c b/api-tests/dev_apis/crypto/test_c021/test_c021.c
index 947ed2e..78a3571 100644
--- a/api-tests/dev_apis/crypto/test_c021/test_c021.c
+++ b/api-tests/dev_apis/crypto/test_c021/test_c021.c
@@ -32,7 +32,7 @@
 
 static int      g_test_count = 1;
 
-int32_t psa_key_derivation_output_key_test(security_t caller)
+int32_t psa_key_derivation_output_key_test(caller_security_t caller)
 {
     uint32_t                        i, status;
     int                             num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c021/test_c021.h b/api-tests/dev_apis/crypto/test_c021/test_c021.h
index 7c6ea1d..787fa99 100644
--- a/api-tests/dev_apis/crypto/test_c021/test_c021.h
+++ b/api-tests/dev_apis/crypto/test_c021/test_c021.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c021_crypto_list[];
 
-int32_t psa_key_derivation_output_key_test(security_t caller);
+int32_t psa_key_derivation_output_key_test(caller_security_t caller);
 #endif /* _TEST_C021_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c022/test_c022.c b/api-tests/dev_apis/crypto/test_c022/test_c022.c
index a71e98e..7278a32 100644
--- a/api-tests/dev_apis/crypto/test_c022/test_c022.c
+++ b/api-tests/dev_apis/crypto/test_c022/test_c022.c
@@ -31,7 +31,7 @@
 static int         g_test_count = 1;
 static uint8_t     output[BUFFER_SIZE];
 
-int32_t psa_key_derivation_abort_test(security_t caller)
+int32_t psa_key_derivation_abort_test(caller_security_t caller)
 {
     int32_t                         status;
     psa_key_derivation_operation_t  func = psa_key_derivation_operation_init();
diff --git a/api-tests/dev_apis/crypto/test_c022/test_c022.h b/api-tests/dev_apis/crypto/test_c022/test_c022.h
index 57b7b0c..7823370 100644
--- a/api-tests/dev_apis/crypto/test_c022/test_c022.h
+++ b/api-tests/dev_apis/crypto/test_c022/test_c022.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c022_crypto_list[];
 
-int32_t psa_key_derivation_abort_test(security_t caller);
+int32_t psa_key_derivation_abort_test(caller_security_t caller);
 #endif /* _TEST_C022_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c023/test_c023.c b/api-tests/dev_apis/crypto/test_c023/test_c023.c
index 6d91e2a..5f019a4 100644
--- a/api-tests/dev_apis/crypto/test_c023/test_c023.c
+++ b/api-tests/dev_apis/crypto/test_c023/test_c023.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_key_derivation_set_get_capacity_test(security_t caller)
+int32_t psa_key_derivation_set_get_capacity_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c023/test_c023.h b/api-tests/dev_apis/crypto/test_c023/test_c023.h
index 2e0af10..1fc9fbf 100644
--- a/api-tests/dev_apis/crypto/test_c023/test_c023.h
+++ b/api-tests/dev_apis/crypto/test_c023/test_c023.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c023_crypto_list[];
 
-int32_t psa_key_derivation_set_get_capacity_test(security_t caller);
+int32_t psa_key_derivation_set_get_capacity_test(caller_security_t caller);
 #endif /* _TEST_C023_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c024/test_c024.c b/api-tests/dev_apis/crypto/test_c024/test_c024.c
index 2354ba1..ae709d6 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_c024.c
+++ b/api-tests/dev_apis/crypto/test_c024/test_c024.c
@@ -41,7 +41,7 @@
     return TRUE;
 }
 
-int32_t psa_aead_encrypt_test(security_t caller)
+int32_t psa_aead_encrypt_test(caller_security_t caller)
 {
     int32_t               i, status;
     uint8_t               ciphertext[BUFFER_SIZE];
diff --git a/api-tests/dev_apis/crypto/test_c024/test_c024.h b/api-tests/dev_apis/crypto/test_c024/test_c024.h
index 1e76863..3b61390 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_c024.h
+++ b/api-tests/dev_apis/crypto/test_c024/test_c024.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c024_crypto_list[];
 
-int32_t psa_aead_encrypt_test(security_t caller);
+int32_t psa_aead_encrypt_test(caller_security_t caller);
 
 #endif /* _TEST_C024_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c025/test_c025.c b/api-tests/dev_apis/crypto/test_c025/test_c025.c
index c8a6df4..f71d793 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_c025.c
+++ b/api-tests/dev_apis/crypto/test_c025/test_c025.c
@@ -41,7 +41,7 @@
     return TRUE;
 }
 
-int32_t psa_aead_decrypt_test(security_t caller)
+int32_t psa_aead_decrypt_test(caller_security_t caller)
 {
     int32_t          i, status;
     uint8_t          plaintext[BUFFER_SIZE];
diff --git a/api-tests/dev_apis/crypto/test_c025/test_c025.h b/api-tests/dev_apis/crypto/test_c025/test_c025.h
index 27674cd..1955edd 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_c025.h
+++ b/api-tests/dev_apis/crypto/test_c025/test_c025.h
@@ -26,7 +26,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_c025_crypto_list[];
 
-int32_t psa_aead_decrypt_test(security_t caller);
-int32_t psa_aead_decrypt_negative_test(security_t caller);
+int32_t psa_aead_decrypt_test(caller_security_t caller);
+int32_t psa_aead_decrypt_negative_test(caller_security_t caller);
 
 #endif /* _TEST_C025_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c026/test_c026.c b/api-tests/dev_apis/crypto/test_c026/test_c026.c
index 94fa65f..826866c 100644
--- a/api-tests/dev_apis/crypto/test_c026/test_c026.c
+++ b/api-tests/dev_apis/crypto/test_c026/test_c026.c
@@ -31,7 +31,7 @@
 static int                 g_test_count = 1;
 static psa_mac_operation_t operation;
 
-int32_t psa_mac_sign_setup_test(security_t caller)
+int32_t psa_mac_sign_setup_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
@@ -95,7 +95,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_mac_sign_setup_negative_test(security_t caller)
+int32_t psa_mac_sign_setup_negative_test(caller_security_t caller)
 {
     int                 num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t             i, status;
diff --git a/api-tests/dev_apis/crypto/test_c026/test_c026.h b/api-tests/dev_apis/crypto/test_c026/test_c026.h
index f90449c..fab5a56 100644
--- a/api-tests/dev_apis/crypto/test_c026/test_c026.h
+++ b/api-tests/dev_apis/crypto/test_c026/test_c026.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c026_crypto_list[];
 
-int32_t psa_mac_sign_setup_test(security_t caller);
-int32_t psa_mac_sign_setup_negative_test(security_t caller);
+int32_t psa_mac_sign_setup_test(caller_security_t caller);
+int32_t psa_mac_sign_setup_negative_test(caller_security_t caller);
 #endif /* _TEST_C026_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c027/test_c027.c b/api-tests/dev_apis/crypto/test_c027/test_c027.c
index c4de02b..89bcbf2 100644
--- a/api-tests/dev_apis/crypto/test_c027/test_c027.c
+++ b/api-tests/dev_apis/crypto/test_c027/test_c027.c
@@ -31,7 +31,7 @@
 static int      g_test_count = 1;
 static uint8_t  data[BUFFER_SIZE];
 
-int32_t psa_mac_update_test(security_t caller)
+int32_t psa_mac_update_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
@@ -115,7 +115,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_mac_update_invalid_operator_test(security_t caller)
+int32_t psa_mac_update_invalid_operator_test(caller_security_t caller)
 {
     int32_t             i, status;
     psa_mac_operation_t operation[] = {psa_mac_operation_init(), PSA_MAC_OPERATION_INIT, {0} };
diff --git a/api-tests/dev_apis/crypto/test_c027/test_c027.h b/api-tests/dev_apis/crypto/test_c027/test_c027.h
index 4af68c6..69f72f1 100644
--- a/api-tests/dev_apis/crypto/test_c027/test_c027.h
+++ b/api-tests/dev_apis/crypto/test_c027/test_c027.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c027_crypto_list[];
 
-int32_t psa_mac_update_test(security_t caller);
-int32_t psa_mac_update_invalid_operator_test(security_t caller);
+int32_t psa_mac_update_test(caller_security_t caller);
+int32_t psa_mac_update_invalid_operator_test(caller_security_t caller);
 #endif /* _TEST_C027_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c028/test_c028.c b/api-tests/dev_apis/crypto/test_c028/test_c028.c
index 9599fb4..540af72 100644
--- a/api-tests/dev_apis/crypto/test_c028/test_c028.c
+++ b/api-tests/dev_apis/crypto/test_c028/test_c028.c
@@ -30,7 +30,7 @@
 static int           g_test_count = 1;
 static uint8_t       data[BUFFER_SIZE];
 
-int32_t psa_mac_sign_finish_test(security_t caller)
+int32_t psa_mac_sign_finish_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
diff --git a/api-tests/dev_apis/crypto/test_c028/test_c028.h b/api-tests/dev_apis/crypto/test_c028/test_c028.h
index bebadba..792a1a9 100644
--- a/api-tests/dev_apis/crypto/test_c028/test_c028.h
+++ b/api-tests/dev_apis/crypto/test_c028/test_c028.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c028_crypto_list[];
 
-int32_t psa_mac_sign_finish_test(security_t caller);
+int32_t psa_mac_sign_finish_test(caller_security_t caller);
 #endif /* _TEST_C028_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c029/test_c029.c b/api-tests/dev_apis/crypto/test_c029/test_c029.c
index 816aa10..ee9b7f5 100644
--- a/api-tests/dev_apis/crypto/test_c029/test_c029.c
+++ b/api-tests/dev_apis/crypto/test_c029/test_c029.c
@@ -31,7 +31,7 @@
 static int                 g_test_count = 1;
 static psa_mac_operation_t operation;
 
-int32_t psa_mac_verify_setup_test(security_t caller)
+int32_t psa_mac_verify_setup_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
@@ -96,7 +96,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_mac_verify_setup_negative_test(security_t caller)
+int32_t psa_mac_verify_setup_negative_test(caller_security_t caller)
 {
     int                 num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t             i, status;
diff --git a/api-tests/dev_apis/crypto/test_c029/test_c029.h b/api-tests/dev_apis/crypto/test_c029/test_c029.h
index e12700a..81234fa 100644
--- a/api-tests/dev_apis/crypto/test_c029/test_c029.h
+++ b/api-tests/dev_apis/crypto/test_c029/test_c029.h
@@ -26,7 +26,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_c029_crypto_list[];
 
-int32_t psa_mac_verify_setup_test(security_t caller);
-int32_t psa_mac_verify_setup_negative_test(security_t caller);
+int32_t psa_mac_verify_setup_test(caller_security_t caller);
+int32_t psa_mac_verify_setup_negative_test(caller_security_t caller);
 
 #endif /* _TEST_C029_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c030/test_c030.c b/api-tests/dev_apis/crypto/test_c030/test_c030.c
index 323ee8b..6643c34 100644
--- a/api-tests/dev_apis/crypto/test_c030/test_c030.c
+++ b/api-tests/dev_apis/crypto/test_c030/test_c030.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_mac_verify_finish_test(security_t caller)
+int32_t psa_mac_verify_finish_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
diff --git a/api-tests/dev_apis/crypto/test_c030/test_c030.h b/api-tests/dev_apis/crypto/test_c030/test_c030.h
index eacecd8..defd603 100644
--- a/api-tests/dev_apis/crypto/test_c030/test_c030.h
+++ b/api-tests/dev_apis/crypto/test_c030/test_c030.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c030_crypto_list[];
 
-int32_t psa_mac_verify_finish_test(security_t caller);
+int32_t psa_mac_verify_finish_test(caller_security_t caller);
 #endif /* _TEST_C030_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c031/test_c031.c b/api-tests/dev_apis/crypto/test_c031/test_c031.c
index eaef9bd..909ea11 100644
--- a/api-tests/dev_apis/crypto/test_c031/test_c031.c
+++ b/api-tests/dev_apis/crypto/test_c031/test_c031.c
@@ -31,7 +31,7 @@
 static int         g_test_count = 1;
 static uint8_t     data[BUFFER_SIZE];
 
-int32_t psa_mac_abort_test(security_t caller)
+int32_t psa_mac_abort_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
@@ -89,7 +89,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_mac_abort_before_finish_test(security_t caller)
+int32_t psa_mac_abort_before_finish_test(caller_security_t caller)
 {
     size_t                length;
     psa_algorithm_t       key_alg = PSA_ALG_CMAC;
diff --git a/api-tests/dev_apis/crypto/test_c031/test_c031.h b/api-tests/dev_apis/crypto/test_c031/test_c031.h
index 7582a59..ba716fa 100644
--- a/api-tests/dev_apis/crypto/test_c031/test_c031.h
+++ b/api-tests/dev_apis/crypto/test_c031/test_c031.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c031_crypto_list[];
 
-int32_t psa_mac_abort_test(security_t caller);
-int32_t psa_mac_abort_before_finish_test(security_t caller);
+int32_t psa_mac_abort_test(caller_security_t caller);
+int32_t psa_mac_abort_before_finish_test(caller_security_t caller);
 #endif /* _TEST_C031_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c032/test_c032.c b/api-tests/dev_apis/crypto/test_c032/test_c032.c
index 0b10ef3..c246c0c 100644
--- a/api-tests/dev_apis/crypto/test_c032/test_c032.c
+++ b/api-tests/dev_apis/crypto/test_c032/test_c032.c
@@ -31,7 +31,7 @@
 static int                     g_test_count = 1;
 static psa_cipher_operation_t  operation;
 
-int32_t psa_cipher_encrypt_setup_test(security_t caller)
+int32_t psa_cipher_encrypt_setup_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -129,7 +129,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_cipher_encrypt_setup_negative_test(security_t caller)
+int32_t psa_cipher_encrypt_setup_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c032/test_c032.h b/api-tests/dev_apis/crypto/test_c032/test_c032.h
index f229c1a..f9887a2 100644
--- a/api-tests/dev_apis/crypto/test_c032/test_c032.h
+++ b/api-tests/dev_apis/crypto/test_c032/test_c032.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c032_crypto_list[];
 
-int32_t psa_cipher_encrypt_setup_test(security_t caller);
-int32_t psa_cipher_encrypt_setup_negative_test(security_t caller);
+int32_t psa_cipher_encrypt_setup_test(caller_security_t caller);
+int32_t psa_cipher_encrypt_setup_negative_test(caller_security_t caller);
 #endif /* _TEST_C032_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c033/test_c033.c b/api-tests/dev_apis/crypto/test_c033/test_c033.c
index f1dc46d..c44e115 100644
--- a/api-tests/dev_apis/crypto/test_c033/test_c033.c
+++ b/api-tests/dev_apis/crypto/test_c033/test_c033.c
@@ -31,7 +31,7 @@
 static int                     g_test_count = 1;
 static psa_cipher_operation_t  operation;
 
-int32_t psa_cipher_decrypt_setup_test(security_t caller)
+int32_t psa_cipher_decrypt_setup_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -128,7 +128,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_cipher_decrypt_setup_negative_test(security_t caller)
+int32_t psa_cipher_decrypt_setup_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c033/test_c033.h b/api-tests/dev_apis/crypto/test_c033/test_c033.h
index 5e2aa85..ea045b4 100644
--- a/api-tests/dev_apis/crypto/test_c033/test_c033.h
+++ b/api-tests/dev_apis/crypto/test_c033/test_c033.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c033_crypto_list[];
 
-int32_t psa_cipher_decrypt_setup_test(security_t caller);
-int32_t psa_cipher_decrypt_setup_negative_test(security_t caller);
+int32_t psa_cipher_decrypt_setup_test(caller_security_t caller);
+int32_t psa_cipher_decrypt_setup_negative_test(caller_security_t caller);
 #endif /* _TEST_C033_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c034/test_c034.c b/api-tests/dev_apis/crypto/test_c034/test_c034.c
index eb0f7d8..0017ce0 100644
--- a/api-tests/dev_apis/crypto/test_c034/test_c034.c
+++ b/api-tests/dev_apis/crypto/test_c034/test_c034.c
@@ -30,7 +30,7 @@
 
 static int     g_test_count = 1;
 
-int32_t psa_cipher_generate_iv_test(security_t caller)
+int32_t psa_cipher_generate_iv_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     uint32_t                i, j, iv_sum;
diff --git a/api-tests/dev_apis/crypto/test_c034/test_c034.h b/api-tests/dev_apis/crypto/test_c034/test_c034.h
index 7e94b95..67273ab 100644
--- a/api-tests/dev_apis/crypto/test_c034/test_c034.h
+++ b/api-tests/dev_apis/crypto/test_c034/test_c034.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c034_crypto_list[];
 
-int32_t psa_cipher_generate_iv_test(security_t caller);
+int32_t psa_cipher_generate_iv_test(caller_security_t caller);
 #endif /* _TEST_C034_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c035/test_c035.c b/api-tests/dev_apis/crypto/test_c035/test_c035.c
index 5d6e5c5..8d19a10 100644
--- a/api-tests/dev_apis/crypto/test_c035/test_c035.c
+++ b/api-tests/dev_apis/crypto/test_c035/test_c035.c
@@ -30,7 +30,7 @@
 
 static int     g_test_count = 1;
 
-int32_t psa_cipher_set_iv_test(security_t caller)
+int32_t psa_cipher_set_iv_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c035/test_c035.h b/api-tests/dev_apis/crypto/test_c035/test_c035.h
index aeda8b9..b5a6a49 100644
--- a/api-tests/dev_apis/crypto/test_c035/test_c035.h
+++ b/api-tests/dev_apis/crypto/test_c035/test_c035.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c035_crypto_list[];
 
-int32_t psa_cipher_set_iv_test(security_t caller);
+int32_t psa_cipher_set_iv_test(caller_security_t caller);
 #endif /* _TEST_C035_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c036/test_c036.c b/api-tests/dev_apis/crypto/test_c036/test_c036.c
index ac236f9..64fea25 100644
--- a/api-tests/dev_apis/crypto/test_c036/test_c036.c
+++ b/api-tests/dev_apis/crypto/test_c036/test_c036.c
@@ -33,7 +33,7 @@
 static uint8_t                 input[SIZE_32B];
 static uint8_t                 output[SIZE_32B];
 
-int32_t psa_cipher_update_test(security_t caller)
+int32_t psa_cipher_update_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -128,7 +128,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_cipher_update_negative_test(security_t caller)
+int32_t psa_cipher_update_negative_test(caller_security_t caller)
 {
     int32_t                 i, status;
     psa_cipher_operation_t  operations[] = {psa_cipher_operation_init(),
diff --git a/api-tests/dev_apis/crypto/test_c036/test_c036.h b/api-tests/dev_apis/crypto/test_c036/test_c036.h
index 583c97d..2056762 100644
--- a/api-tests/dev_apis/crypto/test_c036/test_c036.h
+++ b/api-tests/dev_apis/crypto/test_c036/test_c036.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c036_crypto_list[];
 
-int32_t psa_cipher_update_test(security_t caller);
-int32_t psa_cipher_update_negative_test(security_t caller);
+int32_t psa_cipher_update_test(caller_security_t caller);
+int32_t psa_cipher_update_negative_test(caller_security_t caller);
 #endif /* _TEST_C036_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c037/test_c037.c b/api-tests/dev_apis/crypto/test_c037/test_c037.c
index 01b0b34..40ee54b 100644
--- a/api-tests/dev_apis/crypto/test_c037/test_c037.c
+++ b/api-tests/dev_apis/crypto/test_c037/test_c037.c
@@ -33,7 +33,7 @@
 static int        g_test_count = 1;
 static uint8_t    output[SIZE_32B];
 
-int32_t psa_cipher_finish_test(security_t caller)
+int32_t psa_cipher_finish_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c037/test_c037.h b/api-tests/dev_apis/crypto/test_c037/test_c037.h
index e74afef..cf57c40 100644
--- a/api-tests/dev_apis/crypto/test_c037/test_c037.h
+++ b/api-tests/dev_apis/crypto/test_c037/test_c037.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c037_crypto_list[];
 
-int32_t psa_cipher_finish_test(security_t caller);
+int32_t psa_cipher_finish_test(caller_security_t caller);
 #endif /* _TEST_C037_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c038/test_c038.c b/api-tests/dev_apis/crypto/test_c038/test_c038.c
index c4d6bd9..99e008c 100644
--- a/api-tests/dev_apis/crypto/test_c038/test_c038.c
+++ b/api-tests/dev_apis/crypto/test_c038/test_c038.c
@@ -31,7 +31,7 @@
 static int         g_test_count = 1;
 static uint8_t     output[SIZE_32B];
 
-int32_t psa_cipher_abort_test(security_t caller)
+int32_t psa_cipher_abort_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -102,7 +102,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_cipher_abort_before_update_test(security_t caller)
+int32_t psa_cipher_abort_before_update_test(caller_security_t caller)
 {
     size_t                  length;
     psa_algorithm_t         key_alg = PSA_ALG_CBC_NO_PADDING;
diff --git a/api-tests/dev_apis/crypto/test_c038/test_c038.h b/api-tests/dev_apis/crypto/test_c038/test_c038.h
index 0bbabd9..3568e65 100644
--- a/api-tests/dev_apis/crypto/test_c038/test_c038.h
+++ b/api-tests/dev_apis/crypto/test_c038/test_c038.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c038_crypto_list[];
 
-int32_t psa_cipher_abort_test(security_t caller);
-int32_t psa_cipher_abort_before_update_test(security_t caller);
+int32_t psa_cipher_abort_test(caller_security_t caller);
+int32_t psa_cipher_abort_before_update_test(caller_security_t caller);
 #endif /* _TEST_C038_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c039/test_c039.c b/api-tests/dev_apis/crypto/test_c039/test_c039.c
index d93b33c..72648bc 100644
--- a/api-tests/dev_apis/crypto/test_c039/test_c039.c
+++ b/api-tests/dev_apis/crypto/test_c039/test_c039.c
@@ -44,7 +44,7 @@
 static int         g_test_count = 1;
 static uint8_t     output[SIZE_128B];
 
-int32_t psa_asymmetric_encrypt_test(security_t caller)
+int32_t psa_asymmetric_encrypt_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -174,7 +174,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_asymmetric_encrypt_negative_test(security_t caller)
+int32_t psa_asymmetric_encrypt_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c039/test_c039.h b/api-tests/dev_apis/crypto/test_c039/test_c039.h
index 065918d..dd431d3 100644
--- a/api-tests/dev_apis/crypto/test_c039/test_c039.h
+++ b/api-tests/dev_apis/crypto/test_c039/test_c039.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c039_crypto_list[];
 
-int32_t psa_asymmetric_encrypt_test(security_t caller);
-int32_t psa_asymmetric_encrypt_negative_test(security_t caller);
+int32_t psa_asymmetric_encrypt_test(caller_security_t caller);
+int32_t psa_asymmetric_encrypt_negative_test(caller_security_t caller);
 #endif /* _TEST_C039_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c040/test_c040.c b/api-tests/dev_apis/crypto/test_c040/test_c040.c
index 8dba0df..e2490b5 100644
--- a/api-tests/dev_apis/crypto/test_c040/test_c040.c
+++ b/api-tests/dev_apis/crypto/test_c040/test_c040.c
@@ -44,7 +44,7 @@
 static int         g_test_count = 1;
 static uint8_t     output[SIZE_128B];
 
-int32_t psa_asymmetric_decrypt_test(security_t caller)
+int32_t psa_asymmetric_decrypt_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -160,7 +160,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_asymmetric_decrypt_negative_test(security_t caller)
+int32_t psa_asymmetric_decrypt_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c040/test_c040.h b/api-tests/dev_apis/crypto/test_c040/test_c040.h
index 4aa592a..80e95f9 100644
--- a/api-tests/dev_apis/crypto/test_c040/test_c040.h
+++ b/api-tests/dev_apis/crypto/test_c040/test_c040.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c040_crypto_list[];
 
-int32_t psa_asymmetric_decrypt_test(security_t caller);
-int32_t psa_asymmetric_decrypt_negative_test(security_t caller);
+int32_t psa_asymmetric_decrypt_test(caller_security_t caller);
+int32_t psa_asymmetric_decrypt_negative_test(caller_security_t caller);
 #endif /* _TEST_C040_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c041/test_c041.c b/api-tests/dev_apis/crypto/test_c041/test_c041.c
index ea343f3..7f8e2b4 100644
--- a/api-tests/dev_apis/crypto/test_c041/test_c041.c
+++ b/api-tests/dev_apis/crypto/test_c041/test_c041.c
@@ -31,7 +31,7 @@
 static int         g_test_count = 1;
 static uint8_t     signature[SIZE_128B];
 
-int32_t psa_asymmetric_sign_test(security_t caller)
+int32_t psa_asymmetric_sign_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -134,7 +134,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_asymmetric_sign_negative_test(security_t caller)
+int32_t psa_asymmetric_sign_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c041/test_c041.h b/api-tests/dev_apis/crypto/test_c041/test_c041.h
index 326bed6..f761ec6 100644
--- a/api-tests/dev_apis/crypto/test_c041/test_c041.h
+++ b/api-tests/dev_apis/crypto/test_c041/test_c041.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c041_crypto_list[];
 
-int32_t psa_asymmetric_sign_test(security_t caller);
-int32_t psa_asymmetric_sign_negative_test(security_t caller);
+int32_t psa_asymmetric_sign_test(caller_security_t caller);
+int32_t psa_asymmetric_sign_negative_test(caller_security_t caller);
 #endif /* _TEST_C041_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c042/test_c042.c b/api-tests/dev_apis/crypto/test_c042/test_c042.c
index d511f2a..996577d 100644
--- a/api-tests/dev_apis/crypto/test_c042/test_c042.c
+++ b/api-tests/dev_apis/crypto/test_c042/test_c042.c
@@ -30,7 +30,7 @@
 
 static int     g_test_count = 1;
 
-int32_t psa_asymmetric_verify_test(security_t caller)
+int32_t psa_asymmetric_verify_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -116,7 +116,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_asymmetric_verify_negative_test(security_t caller)
+int32_t psa_asymmetric_verify_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c042/test_c042.h b/api-tests/dev_apis/crypto/test_c042/test_c042.h
index fb9c83a..ffa2eaf 100644
--- a/api-tests/dev_apis/crypto/test_c042/test_c042.h
+++ b/api-tests/dev_apis/crypto/test_c042/test_c042.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c042_crypto_list[];
 
-int32_t psa_asymmetric_verify_test(security_t caller);
-int32_t psa_asymmetric_verify_negative_test(security_t caller);
+int32_t psa_asymmetric_verify_test(caller_security_t caller);
+int32_t psa_asymmetric_verify_negative_test(caller_security_t caller);
 #endif /* _TEST_C042_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c043/test_c043.c b/api-tests/dev_apis/crypto/test_c043/test_c043.c
index a9d16c8..89ae1fc 100644
--- a/api-tests/dev_apis/crypto/test_c043/test_c043.c
+++ b/api-tests/dev_apis/crypto/test_c043/test_c043.c
@@ -30,7 +30,7 @@
 static int         g_test_count = 1;
 static uint8_t     output[SIZE_50B];
 
-int32_t psa_raw_key_agreement_test(security_t caller)
+int32_t psa_raw_key_agreement_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
@@ -92,7 +92,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_raw_key_agreement_negative_test(security_t caller)
+int32_t psa_raw_key_agreement_negative_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check2)/sizeof(check2[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c043/test_c043.h b/api-tests/dev_apis/crypto/test_c043/test_c043.h
index ec64a53..136a47b 100644
--- a/api-tests/dev_apis/crypto/test_c043/test_c043.h
+++ b/api-tests/dev_apis/crypto/test_c043/test_c043.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c043_crypto_list[];
 
-int32_t psa_raw_key_agreement_test(security_t caller);
-int32_t psa_raw_key_agreement_negative_test(security_t caller);
+int32_t psa_raw_key_agreement_test(caller_security_t caller);
+int32_t psa_raw_key_agreement_negative_test(caller_security_t caller);
 #endif /* _TEST_C043_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c044/test_c044.c b/api-tests/dev_apis/crypto/test_c044/test_c044.c
index e528d41..60cf422 100644
--- a/api-tests/dev_apis/crypto/test_c044/test_c044.c
+++ b/api-tests/dev_apis/crypto/test_c044/test_c044.c
@@ -30,7 +30,7 @@
 static int g_test_count = 1;
 static uint8_t data[BUFFER_SIZE];
 
-int32_t psa_copy_key_test(security_t caller)
+int32_t psa_copy_key_test(caller_security_t caller)
 {
     uint32_t              length, i;
     const uint8_t        *key_data;
diff --git a/api-tests/dev_apis/crypto/test_c044/test_c044.h b/api-tests/dev_apis/crypto/test_c044/test_c044.h
index ac4a474..caea58b 100644
--- a/api-tests/dev_apis/crypto/test_c044/test_c044.h
+++ b/api-tests/dev_apis/crypto/test_c044/test_c044.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c044_crypto_list[];
 
-int32_t psa_copy_key_test(security_t caller);
+int32_t psa_copy_key_test(caller_security_t caller);
 #endif /* _TEST_C044_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c045/test_c045.c b/api-tests/dev_apis/crypto/test_c045/test_c045.c
index 99b0423..03e06f8 100644
--- a/api-tests/dev_apis/crypto/test_c045/test_c045.c
+++ b/api-tests/dev_apis/crypto/test_c045/test_c045.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_hash_clone_test(security_t caller)
+int32_t psa_hash_clone_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c045/test_c045.h b/api-tests/dev_apis/crypto/test_c045/test_c045.h
index 75f63da..df92d96 100644
--- a/api-tests/dev_apis/crypto/test_c045/test_c045.h
+++ b/api-tests/dev_apis/crypto/test_c045/test_c045.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c045_crypto_list[];
 
-int32_t psa_hash_clone_test(security_t caller);
+int32_t psa_hash_clone_test(caller_security_t caller);
 #endif /* _TEST_C045_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c046/test_c046.c b/api-tests/dev_apis/crypto/test_c046/test_c046.c
index e7ba526..0ed33fa 100644
--- a/api-tests/dev_apis/crypto/test_c046/test_c046.c
+++ b/api-tests/dev_apis/crypto/test_c046/test_c046.c
@@ -30,7 +30,7 @@
 static int           g_test_count = 1;
 static uint8_t       data[BUFFER_SIZE];
 
-int32_t psa_mac_compute_test(security_t caller)
+int32_t psa_mac_compute_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
diff --git a/api-tests/dev_apis/crypto/test_c046/test_c046.h b/api-tests/dev_apis/crypto/test_c046/test_c046.h
index 3fbe054..b0d994e 100644
--- a/api-tests/dev_apis/crypto/test_c046/test_c046.h
+++ b/api-tests/dev_apis/crypto/test_c046/test_c046.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c046_crypto_list[];
 
-int32_t psa_mac_compute_test(security_t caller);
+int32_t psa_mac_compute_test(caller_security_t caller);
 #endif /* _TEST_C046_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c047/test_c047.c b/api-tests/dev_apis/crypto/test_c047/test_c047.c
index a28c9c6..da4d267 100644
--- a/api-tests/dev_apis/crypto/test_c047/test_c047.c
+++ b/api-tests/dev_apis/crypto/test_c047/test_c047.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_mac_verify_test(security_t caller)
+int32_t psa_mac_verify_test(caller_security_t caller)
 {
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t               i, status;
diff --git a/api-tests/dev_apis/crypto/test_c047/test_c047.h b/api-tests/dev_apis/crypto/test_c047/test_c047.h
index 8c47a82..7e36fd3 100644
--- a/api-tests/dev_apis/crypto/test_c047/test_c047.h
+++ b/api-tests/dev_apis/crypto/test_c047/test_c047.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c047_crypto_list[];
 
-int32_t psa_mac_verify_test(security_t caller);
+int32_t psa_mac_verify_test(caller_security_t caller);
 #endif /* _TEST_C047_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c048/test_c048.c b/api-tests/dev_apis/crypto/test_c048/test_c048.c
index 8ae030b..8ad6cd0 100644
--- a/api-tests/dev_apis/crypto/test_c048/test_c048.c
+++ b/api-tests/dev_apis/crypto/test_c048/test_c048.c
@@ -29,7 +29,7 @@
 static int        g_test_count = 1;
 static uint8_t    output[SIZE_32B];
 
-int32_t psa_cipher_encrypt_test(security_t caller)
+int32_t psa_cipher_encrypt_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c048/test_c048.h b/api-tests/dev_apis/crypto/test_c048/test_c048.h
index dbd289e..d0ede7b 100644
--- a/api-tests/dev_apis/crypto/test_c048/test_c048.h
+++ b/api-tests/dev_apis/crypto/test_c048/test_c048.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c048_crypto_list[];
 
-int32_t psa_cipher_encrypt_test(security_t caller);
+int32_t psa_cipher_encrypt_test(caller_security_t caller);
 #endif /* _TEST_C048_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c049/test_c049.c b/api-tests/dev_apis/crypto/test_c049/test_c049.c
index 024abd5..e923582 100644
--- a/api-tests/dev_apis/crypto/test_c049/test_c049.c
+++ b/api-tests/dev_apis/crypto/test_c049/test_c049.c
@@ -29,7 +29,7 @@
 static int        g_test_count = 1;
 static uint8_t    output[SIZE_32B];
 
-int32_t psa_cipher_decrypt_test(security_t caller)
+int32_t psa_cipher_decrypt_test(caller_security_t caller)
 {
     int                     num_checks = sizeof(check1)/sizeof(check1[0]);
     int32_t                 i, status;
diff --git a/api-tests/dev_apis/crypto/test_c049/test_c049.h b/api-tests/dev_apis/crypto/test_c049/test_c049.h
index 93eb031..412a8ae 100644
--- a/api-tests/dev_apis/crypto/test_c049/test_c049.h
+++ b/api-tests/dev_apis/crypto/test_c049/test_c049.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c049_crypto_list[];
 
-int32_t psa_cipher_decrypt_test(security_t caller);
+int32_t psa_cipher_decrypt_test(caller_security_t caller);
 #endif /* _TEST_C049_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c050/test_c050.c b/api-tests/dev_apis/crypto/test_c050/test_c050.c
index 894670a..6b7f1bc 100644
--- a/api-tests/dev_apis/crypto/test_c050/test_c050.c
+++ b/api-tests/dev_apis/crypto/test_c050/test_c050.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_open_key_test(security_t caller)
+int32_t psa_open_key_test(caller_security_t caller)
 {
     int32_t               status, i = 0;
     uint8_t               data[BUFFER_SIZE];
diff --git a/api-tests/dev_apis/crypto/test_c050/test_c050.h b/api-tests/dev_apis/crypto/test_c050/test_c050.h
index 4680a0a..76fc8c5 100644
--- a/api-tests/dev_apis/crypto/test_c050/test_c050.h
+++ b/api-tests/dev_apis/crypto/test_c050/test_c050.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c050_crypto_list[];
 
-int32_t psa_open_key_test(security_t caller);
+int32_t psa_open_key_test(caller_security_t caller);
 #endif /* _TEST_C050_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c051/test_c051.c b/api-tests/dev_apis/crypto/test_c051/test_c051.c
index e87dd92..e9d2bd7 100644
--- a/api-tests/dev_apis/crypto/test_c051/test_c051.c
+++ b/api-tests/dev_apis/crypto/test_c051/test_c051.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_close_key_test(security_t caller)
+int32_t psa_close_key_test(caller_security_t caller)
 {
     int32_t               i, status;
     const uint8_t        *key_data;
diff --git a/api-tests/dev_apis/crypto/test_c051/test_c051.h b/api-tests/dev_apis/crypto/test_c051/test_c051.h
index 552d28a..a539ecc 100644
--- a/api-tests/dev_apis/crypto/test_c051/test_c051.h
+++ b/api-tests/dev_apis/crypto/test_c051/test_c051.h
@@ -26,5 +26,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_c051_crypto_list[];
 
-int32_t psa_close_key_test(security_t caller);
+int32_t psa_close_key_test(caller_security_t caller);
 #endif /* _TEST_C051_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c052/test_c052.c b/api-tests/dev_apis/crypto/test_c052/test_c052.c
index 8e8df06..61cd7bb 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_c052.c
+++ b/api-tests/dev_apis/crypto/test_c052/test_c052.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_encrypt_setup_test(security_t caller)
+int32_t psa_aead_encrypt_setup_test(caller_security_t caller)
 {
     int32_t               i, status;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c052/test_c052.h b/api-tests/dev_apis/crypto/test_c052/test_c052.h
index 20fc744..65e5c5f 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_c052.h
+++ b/api-tests/dev_apis/crypto/test_c052/test_c052.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c052_crypto_list[];
 
-int32_t psa_aead_encrypt_setup_test(security_t caller);
+int32_t psa_aead_encrypt_setup_test(caller_security_t caller);
 
 #endif /* _TEST_C052_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c053/test_c053.c b/api-tests/dev_apis/crypto/test_c053/test_c053.c
index c54b783..8b21504 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_c053.c
+++ b/api-tests/dev_apis/crypto/test_c053/test_c053.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_decrypt_setup_test(security_t caller)
+int32_t psa_aead_decrypt_setup_test(caller_security_t caller)
 {
     int32_t               i, status;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c053/test_c053.h b/api-tests/dev_apis/crypto/test_c053/test_c053.h
index 23afbc1..0f3dde7 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_c053.h
+++ b/api-tests/dev_apis/crypto/test_c053/test_c053.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c053_crypto_list[];
 
-int32_t psa_aead_decrypt_setup_test(security_t caller);
+int32_t psa_aead_decrypt_setup_test(caller_security_t caller);
 
 #endif /* _TEST_C053_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c054/test_c054.c b/api-tests/dev_apis/crypto/test_c054/test_c054.c
index c95b207..553e073 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_c054.c
+++ b/api-tests/dev_apis/crypto/test_c054/test_c054.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_generate_nonce_test(security_t caller)
+int32_t psa_aead_generate_nonce_test(caller_security_t caller)
 {
     int32_t               i, j, status, nonce_sum;
     uint8_t               nonce[SIZE_32B];
diff --git a/api-tests/dev_apis/crypto/test_c054/test_c054.h b/api-tests/dev_apis/crypto/test_c054/test_c054.h
index 11be08b..6560716 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_c054.h
+++ b/api-tests/dev_apis/crypto/test_c054/test_c054.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c054_crypto_list[];
 
-int32_t psa_aead_generate_nonce_test(security_t caller);
+int32_t psa_aead_generate_nonce_test(caller_security_t caller);
 
 #endif /* _TEST_C054_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c055/test_c055.c b/api-tests/dev_apis/crypto/test_c055/test_c055.c
index d67a219..600eb1d 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_c055.c
+++ b/api-tests/dev_apis/crypto/test_c055/test_c055.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_set_nonce_test(security_t caller)
+int32_t psa_aead_set_nonce_test(caller_security_t caller)
 {
     int32_t               i, status;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c055/test_c055.h b/api-tests/dev_apis/crypto/test_c055/test_c055.h
index fc9c9b8..6e4ae3f 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_c055.h
+++ b/api-tests/dev_apis/crypto/test_c055/test_c055.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c055_crypto_list[];
 
-int32_t psa_aead_set_nonce_test(security_t caller);
+int32_t psa_aead_set_nonce_test(caller_security_t caller);
 
 #endif /* _TEST_C055_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c056/test_c056.c b/api-tests/dev_apis/crypto/test_c056/test_c056.c
index c4356c6..5b9f0c7 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_c056.c
+++ b/api-tests/dev_apis/crypto/test_c056/test_c056.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_set_lengths_test(security_t caller)
+int32_t psa_aead_set_lengths_test(caller_security_t caller)
 {
     int32_t               i, status;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c056/test_c056.h b/api-tests/dev_apis/crypto/test_c056/test_c056.h
index ed57bdc..ba639f1 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_c056.h
+++ b/api-tests/dev_apis/crypto/test_c056/test_c056.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c056_crypto_list[];
 
-int32_t psa_aead_set_lengths_test(security_t caller);
+int32_t psa_aead_set_lengths_test(caller_security_t caller);
 
 #endif /* _TEST_C056_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c057/test_c057.c b/api-tests/dev_apis/crypto/test_c057/test_c057.c
index 81cd91d..95dd0f4 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_c057.c
+++ b/api-tests/dev_apis/crypto/test_c057/test_c057.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_update_ad_test(security_t caller)
+int32_t psa_aead_update_ad_test(caller_security_t caller)
 {
     int32_t               i, status;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
diff --git a/api-tests/dev_apis/crypto/test_c057/test_c057.h b/api-tests/dev_apis/crypto/test_c057/test_c057.h
index 7a26ad9..fcbfd89 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_c057.h
+++ b/api-tests/dev_apis/crypto/test_c057/test_c057.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c057_crypto_list[];
 
-int32_t psa_aead_update_ad_test(security_t caller);
+int32_t psa_aead_update_ad_test(caller_security_t caller);
 
 #endif /* _TEST_C057_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c058/test_c058.c b/api-tests/dev_apis/crypto/test_c058/test_c058.c
index 5ab48c9..5b6db96 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_c058.c
+++ b/api-tests/dev_apis/crypto/test_c058/test_c058.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_update_test(security_t caller)
+int32_t psa_aead_update_test(caller_security_t caller)
 {
     int32_t               i, status;
     uint8_t               output[BUFFER_SIZE];
diff --git a/api-tests/dev_apis/crypto/test_c058/test_c058.h b/api-tests/dev_apis/crypto/test_c058/test_c058.h
index 13f7b83..7212975 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_c058.h
+++ b/api-tests/dev_apis/crypto/test_c058/test_c058.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c058_crypto_list[];
 
-int32_t psa_aead_update_test(security_t caller);
+int32_t psa_aead_update_test(caller_security_t caller);
 
 #endif /* _TEST_C058_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c059/test_c059.c b/api-tests/dev_apis/crypto/test_c059/test_c059.c
index 5fb910f..ce94a95 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_c059.c
+++ b/api-tests/dev_apis/crypto/test_c059/test_c059.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_finish_test(security_t caller)
+int32_t psa_aead_finish_test(caller_security_t caller)
 {
     int32_t               i, status;
     uint8_t               output[BUFFER_SIZE], tag[SIZE_128B];
diff --git a/api-tests/dev_apis/crypto/test_c059/test_c059.h b/api-tests/dev_apis/crypto/test_c059/test_c059.h
index bc4dea7..ed18925 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_c059.h
+++ b/api-tests/dev_apis/crypto/test_c059/test_c059.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c059_crypto_list[];
 
-int32_t psa_aead_finish_test(security_t caller);
+int32_t psa_aead_finish_test(caller_security_t caller);
 
 #endif /* _TEST_C059_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c060/test_c060.c b/api-tests/dev_apis/crypto/test_c060/test_c060.c
index 354f3b8..e924a9e 100644
--- a/api-tests/dev_apis/crypto/test_c060/test_c060.c
+++ b/api-tests/dev_apis/crypto/test_c060/test_c060.c
@@ -29,7 +29,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_abort_test(security_t caller)
+int32_t psa_aead_abort_test(caller_security_t caller)
 {
     int32_t               i, status;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
@@ -85,7 +85,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_aead_abort_init_test(security_t caller)
+int32_t psa_aead_abort_init_test(caller_security_t caller)
 {
     int32_t               i, status;
     psa_aead_operation_t  operation[] = {PSA_AEAD_OPERATION_INIT, psa_aead_operation_init(), {0} };
diff --git a/api-tests/dev_apis/crypto/test_c060/test_c060.h b/api-tests/dev_apis/crypto/test_c060/test_c060.h
index 856e188..334d180 100644
--- a/api-tests/dev_apis/crypto/test_c060/test_c060.h
+++ b/api-tests/dev_apis/crypto/test_c060/test_c060.h
@@ -26,7 +26,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_c060_crypto_list[];
 
-int32_t psa_aead_abort_test(security_t caller);
-int32_t psa_aead_abort_init_test(security_t caller);
+int32_t psa_aead_abort_test(caller_security_t caller);
+int32_t psa_aead_abort_init_test(caller_security_t caller);
 
 #endif /* _TEST_C060_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/crypto/test_c061/test_c061.c b/api-tests/dev_apis/crypto/test_c061/test_c061.c
index 9becfed..d1bbe39 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_c061.c
+++ b/api-tests/dev_apis/crypto/test_c061/test_c061.c
@@ -28,7 +28,7 @@
 
 static int g_test_count = 1;
 
-int32_t psa_aead_verify_test(security_t caller)
+int32_t psa_aead_verify_test(caller_security_t caller)
 {
     int32_t               i, status;
     uint8_t               output[BUFFER_SIZE], tag[SIZE_128B];
diff --git a/api-tests/dev_apis/crypto/test_c061/test_c061.h b/api-tests/dev_apis/crypto/test_c061/test_c061.h
index 7b52a25..9ce0ed2 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_c061.h
+++ b/api-tests/dev_apis/crypto/test_c061/test_c061.h
@@ -26,6 +26,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_c061_crypto_list[];
 
-int32_t psa_aead_verify_test(security_t caller);
+int32_t psa_aead_verify_test(caller_security_t caller);
 
 #endif /* _TEST_C061_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c
index 222cd67..83124cc 100644
--- a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c
+++ b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.c
@@ -29,7 +29,7 @@
 
 static int         g_test_count = 1;
 
-int32_t psa_initial_attestation_get_token_test(security_t caller)
+int32_t psa_initial_attestation_get_token_test(caller_security_t caller)
 {
     int         num_checks = sizeof(check1)/sizeof(check1[0]);
     uint32_t    i;
@@ -77,7 +77,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_initial_attestation_get_token_size_test(security_t caller)
+int32_t psa_initial_attestation_get_token_size_test(caller_security_t caller)
 {
     int         num_checks = sizeof(check2)/sizeof(check2[0]);
     uint32_t    i;
diff --git a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h
index 29aae08..432b431 100644
--- a/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h
+++ b/api-tests/dev_apis/initial_attestation/test_a001/test_a001.h
@@ -28,6 +28,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_a001_attestation_list[];
 
-int32_t psa_initial_attestation_get_token_test(security_t caller);
-int32_t psa_initial_attestation_get_token_size_test(security_t caller);
+int32_t psa_initial_attestation_get_token_test(caller_security_t caller);
+int32_t psa_initial_attestation_get_token_size_test(caller_security_t caller);
 #endif /* _TEST_A001_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c
index ed948b7..3459886 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.c
@@ -145,7 +145,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_uid_not_found(security_t caller)
+int32_t psa_sst_uid_not_found(caller_security_t caller)
 {
     int32_t test_status;
     psa_storage_uid_t uid = UID_BASE_VALUE + 6;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h
index 608f92f..eef582a 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_s001.h
@@ -31,5 +31,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_s001_sst_list[];
 
-int32_t psa_sst_uid_not_found(security_t caller);
+int32_t psa_sst_uid_not_found(caller_security_t caller);
 #endif /* _TEST_S001_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c
index ae731ae..bd923db 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.c
@@ -35,7 +35,7 @@
     NULL,
 };
 
-int32_t psa_sst_update_write_once_flag_after_create(security_t caller)
+int32_t psa_sst_update_write_once_flag_after_create(caller_security_t caller)
 {
     uint32_t status, p_data_length = 0;
     psa_storage_uid_t uid = UID_WRITE_ONCE_1;
@@ -87,7 +87,7 @@
 }
 
 
-int32_t psa_sst_create_with_write_once_flag(security_t caller)
+int32_t psa_sst_create_with_write_once_flag(caller_security_t caller)
 {
     uint32_t status, p_data_length = 0;
     psa_storage_uid_t uid = UID_WRITE_ONCE_2;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h
index b571141..e4b339e 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_s002.h
@@ -31,6 +31,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_s002_sst_list[];
 
-int32_t psa_sst_update_write_once_flag_after_create(security_t caller);
-int32_t psa_sst_create_with_write_once_flag(security_t caller);
+int32_t psa_sst_update_write_once_flag_after_create(caller_security_t caller);
+int32_t psa_sst_create_with_write_once_flag(caller_security_t caller);
 #endif /* _TEST_S002_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c b/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c
index 1f7578e..69f7893 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.c
@@ -39,7 +39,7 @@
                                 "Overload storage space\n",
                                 "Overload storage again to verify all previous UID removed\n"};
 
-int32_t psa_sst_insufficient_space(security_t caller)
+int32_t psa_sst_insufficient_space(caller_security_t caller)
 {
     uint32_t status = PSA_SUCCESS;
     psa_storage_uid_t uid;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h b/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h
index dc01392..e022142 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s003/test_s003.h
@@ -31,5 +31,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_s003_sst_list[];
 
-int32_t psa_sst_insufficient_space(security_t caller);
+int32_t psa_sst_insufficient_space(caller_security_t caller);
 #endif /* _TEST_S003_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c
index 60e6b9c..69ecf51 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.c
@@ -37,7 +37,7 @@
 static uint8_t write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x30, 0x50, 0x04, 0x23, 0xF6, 0x07, 0x08, \
                                   0x0D, 0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD};
 
-int32_t psa_sst_get_data_check(security_t caller)
+int32_t psa_sst_get_data_check(caller_security_t caller)
 {
     uint32_t status, j, p_data_length = 0;
 
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h
index b518ec2..85e6c34 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_s004.h
@@ -31,5 +31,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_s004_sst_list[];
 
-int32_t psa_sst_get_data_check(security_t caller);
+int32_t psa_sst_get_data_check(caller_security_t caller);
 #endif /* _TEST_S004_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c
index ae9ea74..51bf8a4 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.c
@@ -65,7 +65,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_apis_check_success_case(security_t caller)
+int32_t psa_sst_apis_check_success_case(caller_security_t caller)
 {
    psa_storage_uid_t uid = UID_BASE_VALUE + 4;
    uint32_t data_len = 0, status = VAL_STATUS_SUCCESS;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h
index 9b472bf..453bb92 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_s005.h
@@ -31,6 +31,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_s005_sst_list[];
 
-int32_t psa_sst_apis_check_success_case(security_t caller);
+int32_t psa_sst_apis_check_success_case(caller_security_t caller);
 
 #endif /* _TEST_S005_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c
index 03850f7..a45351a 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.c
@@ -53,7 +53,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_flags_not_supported(security_t caller)
+int32_t psa_sst_flags_not_supported(caller_security_t caller)
 {
    psa_storage_create_flags_t flag = 0x80000000;
    uint32_t status = VAL_STATUS_SUCCESS;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h
index 8f55aff..8b9b2ba 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_s006.h
@@ -31,6 +31,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_s006_sst_list[];
 
-int32_t psa_sst_flags_not_supported(security_t caller);
+int32_t psa_sst_flags_not_supported(caller_security_t caller);
 
 #endif /* _TEST_S006_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c
index 6bcc2a3..8b03f69 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.c
@@ -37,7 +37,7 @@
   0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
 static uint8_t read_buff[TEST_BUFF_SIZE];
 
-int32_t psa_sst_get_incorrect_size(security_t caller)
+int32_t psa_sst_get_incorrect_size(caller_security_t caller)
 {
     psa_storage_uid_t uid = UID_BASE_VALUE + 5;
     uint32_t status = VAL_STATUS_SUCCESS, p_data_length = 0;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h
index 3ecc429..1fe0b5f 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_s007.h
@@ -31,6 +31,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_s007_sst_list[];
 
-int32_t psa_sst_get_incorrect_size(security_t caller);
+int32_t psa_sst_get_incorrect_size(caller_security_t caller);
 
 #endif /* _TEST_S007_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c
index df44705..9050b8a 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.c
@@ -39,7 +39,7 @@
 static uint8_t write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, \
                                   0x0D, 0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD};
 
-int32_t psa_sst_invalid_offset_failure(security_t caller)
+int32_t psa_sst_invalid_offset_failure(caller_security_t caller)
 {
     uint32_t status, j, p_data_length = 0;
 
@@ -84,7 +84,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_valid_offset_success(security_t caller)
+int32_t psa_sst_valid_offset_success(caller_security_t caller)
 {
     uint32_t status, data_len, offset = TEST_BUFF_SIZE;
     uint32_t p_data_length = 0;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h
index e9dee2c..c4426d8 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s008/test_s008.h
@@ -31,7 +31,7 @@
 extern psa_api_t *psa;
 extern client_test_t test_s008_sst_list[];
 
-int32_t psa_sst_valid_offset_success(security_t caller);
-int32_t psa_sst_invalid_offset_failure(security_t caller);
+int32_t psa_sst_valid_offset_success(caller_security_t caller);
+int32_t psa_sst_invalid_offset_failure(caller_security_t caller);
 
 #endif /* _TEST_S008_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c
index 8b089d5..f3e103c 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.c
@@ -36,7 +36,7 @@
 static uint8_t write_buff[TEST_BUFF_SIZE] = {0x99, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, \
                                   0x0D, 0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD};
 
-int32_t psa_sst_zero_length_check(security_t caller)
+int32_t psa_sst_zero_length_check(caller_security_t caller)
 {
     uint32_t status, p_data_length = 0;
 
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h
index 82f4ded..f1c396a 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_s009.h
@@ -31,6 +31,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_s009_sst_list[];
 
-int32_t psa_sst_zero_length_check(security_t caller);
+int32_t psa_sst_zero_length_check(caller_security_t caller);
 
 #endif /* _TEST_S009_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c
index 7c0ca60..5cff99c 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.c
@@ -34,7 +34,7 @@
 
 static uint8_t write_buff[TEST_BUFF_SIZE] = {0xFF};
 
-int32_t psa_sst_uid_value_zero_check(security_t caller)
+int32_t psa_sst_uid_value_zero_check(caller_security_t caller)
 {
     int32_t status;
     psa_storage_uid_t uid = 0;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h
index 5bda12e..ef4202e 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s010/test_s010.h
@@ -31,5 +31,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_s010_sst_list[];
 
-int32_t psa_sst_uid_value_zero_check(security_t caller);
+int32_t psa_sst_uid_value_zero_check(caller_security_t caller);
 #endif /* _TEST_S010_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_p011.c b/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
index fb1b844..83aa410 100644
--- a/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
+++ b/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
@@ -98,7 +98,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_optional_api_uid_not_found(security_t caller)
+int32_t psa_sst_optional_api_uid_not_found(caller_security_t caller)
 {
     uint32_t status;
     int32_t test_status;
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_p011.h b/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
index 2eec800..73aba0d 100644
--- a/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
+++ b/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
@@ -25,5 +25,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_p011_sst_list[];
 
-int32_t psa_sst_optional_api_uid_not_found(security_t caller);
+int32_t psa_sst_optional_api_uid_not_found(caller_security_t caller);
 #endif /* _TEST_P011_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_p012.c b/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
index 195f6b2..93d786f 100644
--- a/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
+++ b/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
@@ -113,7 +113,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_optional_api_offset_invalid(security_t caller)
+int32_t psa_sst_optional_api_offset_invalid(caller_security_t caller)
 {
     uint32_t status;
     int32_t test_status;
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_p012.h b/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
index 548202d..7754a44 100644
--- a/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
+++ b/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
@@ -25,5 +25,5 @@
 extern psa_api_t *psa;
 extern client_test_t test_p012_sst_list[];
 
-int32_t psa_sst_optional_api_offset_invalid(security_t caller);
+int32_t psa_sst_optional_api_offset_invalid(caller_security_t caller);
 #endif /* _TEST_P012_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test_p013.c b/api-tests/dev_apis/protected_storage/test_p013/test_p013.c
index 628ed72..a5ca612 100644
--- a/api-tests/dev_apis/protected_storage/test_p013/test_p013.c
+++ b/api-tests/dev_apis/protected_storage/test_p013/test_p013.c
@@ -121,7 +121,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_optional_api_success_check(security_t caller)
+int32_t psa_sst_optional_api_success_check(caller_security_t caller)
 {
     uint32_t status;
     int32_t test_status;
diff --git a/api-tests/dev_apis/protected_storage/test_p013/test_p013.h b/api-tests/dev_apis/protected_storage/test_p013/test_p013.h
index 839f2c2..7324776 100644
--- a/api-tests/dev_apis/protected_storage/test_p013/test_p013.h
+++ b/api-tests/dev_apis/protected_storage/test_p013/test_p013.h
@@ -25,6 +25,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_p013_sst_list[];
 
-int32_t psa_sst_optional_api_success_check(security_t caller);
+int32_t psa_sst_optional_api_success_check(caller_security_t caller);
 
 #endif /* _TEST_P013_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test_p014.c b/api-tests/dev_apis/protected_storage/test_p014/test_p014.c
index 970e038..d210c2f 100644
--- a/api-tests/dev_apis/protected_storage/test_p014/test_p014.c
+++ b/api-tests/dev_apis/protected_storage/test_p014/test_p014.c
@@ -71,7 +71,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_optional_api_not_supported_check(security_t caller)
+int32_t psa_sst_optional_api_not_supported_check(caller_security_t caller)
 {
     uint32_t status;
     int32_t test_status;
diff --git a/api-tests/dev_apis/protected_storage/test_p014/test_p014.h b/api-tests/dev_apis/protected_storage/test_p014/test_p014.h
index d97d8ad..7b2b0f0 100644
--- a/api-tests/dev_apis/protected_storage/test_p014/test_p014.h
+++ b/api-tests/dev_apis/protected_storage/test_p014/test_p014.h
@@ -25,6 +25,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_p014_sst_list[];
 
-int32_t psa_sst_optional_api_not_supported_check(security_t caller);
+int32_t psa_sst_optional_api_not_supported_check(caller_security_t caller);
 
 #endif /* _TEST_P014_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test_p015.c b/api-tests/dev_apis/protected_storage/test_p015/test_p015.c
index 4c14fbc..54b45ce 100644
--- a/api-tests/dev_apis/protected_storage/test_p015/test_p015.c
+++ b/api-tests/dev_apis/protected_storage/test_p015/test_p015.c
@@ -30,7 +30,7 @@
 
 static psa_storage_uid_t p_uid = UID_BASE_VALUE + 5;
 
-int32_t psa_sst_create_api_write_once_flag_check(security_t caller)
+int32_t psa_sst_create_api_write_once_flag_check(caller_security_t caller)
 {
     uint32_t status;
 
diff --git a/api-tests/dev_apis/protected_storage/test_p015/test_p015.h b/api-tests/dev_apis/protected_storage/test_p015/test_p015.h
index 16c59b3..2f21d39 100644
--- a/api-tests/dev_apis/protected_storage/test_p015/test_p015.h
+++ b/api-tests/dev_apis/protected_storage/test_p015/test_p015.h
@@ -25,6 +25,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_p015_sst_list[];
 
-int32_t psa_sst_create_api_write_once_flag_check(security_t caller);
+int32_t psa_sst_create_api_write_once_flag_check(caller_security_t caller);
 
 #endif /* _TEST_P015_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_p016.c b/api-tests/dev_apis/protected_storage/test_p016/test_p016.c
index eeaf651..4b79931 100644
--- a/api-tests/dev_apis/protected_storage/test_p016/test_p016.c
+++ b/api-tests/dev_apis/protected_storage/test_p016/test_p016.c
@@ -93,7 +93,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_optional_api_sst_capacity_check(security_t caller)
+int32_t psa_sst_optional_api_sst_capacity_check(caller_security_t caller)
 {
     uint32_t status;
     int32_t test_status;
diff --git a/api-tests/dev_apis/protected_storage/test_p016/test_p016.h b/api-tests/dev_apis/protected_storage/test_p016/test_p016.h
index 06626d0..6e1bf93 100644
--- a/api-tests/dev_apis/protected_storage/test_p016/test_p016.h
+++ b/api-tests/dev_apis/protected_storage/test_p016/test_p016.h
@@ -25,6 +25,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_p016_sst_list[];
 
-int32_t psa_sst_optional_api_sst_capacity_check(security_t caller);
+int32_t psa_sst_optional_api_sst_capacity_check(caller_security_t caller);
 
 #endif /* _TEST_P016_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test_p017.c b/api-tests/dev_apis/protected_storage/test_p017/test_p017.c
index 5327f58..54c7b6b 100644
--- a/api-tests/dev_apis/protected_storage/test_p017/test_p017.c
+++ b/api-tests/dev_apis/protected_storage/test_p017/test_p017.c
@@ -71,7 +71,7 @@
     return VAL_STATUS_SUCCESS;
 }
 
-int32_t psa_sst_optional_api_partial_write_check(security_t caller)
+int32_t psa_sst_optional_api_partial_write_check(caller_security_t caller)
 {
     uint32_t status;
     int32_t test_status;
diff --git a/api-tests/dev_apis/protected_storage/test_p017/test_p017.h b/api-tests/dev_apis/protected_storage/test_p017/test_p017.h
index caa5cb0..61beae7 100644
--- a/api-tests/dev_apis/protected_storage/test_p017/test_p017.h
+++ b/api-tests/dev_apis/protected_storage/test_p017/test_p017.h
@@ -25,6 +25,6 @@
 extern psa_api_t *psa;
 extern client_test_t test_p017_sst_list[];
 
-int32_t psa_sst_optional_api_partial_write_check(security_t caller);
+int32_t psa_sst_optional_api_partial_write_check(caller_security_t caller);
 
 #endif /* _TEST_P017_CLIENT_TESTS_H_ */
diff --git a/api-tests/docs/psa_ipc_testlist.md b/api-tests/docs/psa_ipc_testlist.md
index 2313422..fe0a105 100644
--- a/api-tests/docs/psa_ipc_testlist.md
+++ b/api-tests/docs/psa_ipc_testlist.md
@@ -61,12 +61,12 @@
 | test_i045        | The call to psa_write() is PROGRAMMER ERROR if  invec_idx is greater than PSA_MAX_IOVEC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | [client/server]_test_psa_write_with_invec_greater_than_max_iovec()                                                                                                                       | Call psa_write with invec_idx>PSA_MAX_IOVEC and expect PROGRAMMER ERROR behaviour for API call.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Optional                          | Yes                                      |
 | test_i046        | The call to psa_write() is PROGRAMMER ERROR if  the call attempts to write data past the end of the client output vector                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | [client/server]_test_psa_write_with_size_overflow()                                                                                                                                      | Call psa_write with a size input one byte bigger than allowed size and expect PROGRAMMER ERROR behaviour for API call.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Optional                          | Yes                                      |
 | test_i047        | The call to psa_get() is PROGRAMMER ERROR if  The msg pointer provided is not a valid memory reference                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | [client/server]_test_psa_get_with_invalid_msg_pointer()                                                                                                                                  | Call psa_get with invalid msg pointer and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid pointer is as below:<br />if (ISOLATION_LEVEL > 1)<br />     // PSA RoT Pointer <br />      psa_get(msg_pointer = driver_mmio_base);<br />else<br />      psa_get(msg_pointer = NULL);<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Optional                          | Yes                                      |
-| test_i048        | The call to psa_call() is PROGRAMMER ERROR  if address of in_vec is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | [client/server]_test_psa_call_with_invalid_invec_pointer                                                                                                                                 | Call psa_call with invalid address for invec and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid invec pointer is as below:<br />     if caller == NONSECURE<br />        // PSA RoT pointer<br />        invec_pointer = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           invec_pointer = driver_mmio_base;<br />        else<br />           invec_pointer = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Optional                          | Yes                                      |
-| test_i049        | The call to psa_call() is PROGRAMMER ERROR if  address of out_vec is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | [client/server]_test_psa_call_with_invalid_outvec_pointer()                                                                                                                              | Call psa_call with invalid address for outvec and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid outvec pointer is as below:<br />     if caller == NONSECURE<br />        // PSA RoT pointer<br />        outvec_pointer = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           outvec_pointer = driver_mmio_base;<br />        else<br />           outvec_pointer = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Optional                          | Yes                                      |
-| test_i050        | The call to psa_call() is PROGRAMMER ERROR if psa_invec.base address is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | [client/server]_test_psa_call_with_invalid_invec_base()                                                                                                                                  | Call psa_call with invalid address for psa_invec.base and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid base is as below:<br />     if caller == NONSECURE<br />        // PSA RoT pointer<br />        invalid_base = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           invalid_base = driver_mmio_base;<br />        else<br />           invalid_base = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Optional                          | Yes                                      |
-| test_i051        | The call to psa_call() is PROGRAMMER ERROR if psa_outvec.base address is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | [client/server]_test_psa_call_with_invalid_outvec_base()                                                                                                                                 | Call psa_call with invalid address for psa_outvec.base and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid base is as below:<br />     if caller == NONSECURE<br />        // PSA RoT pointer<br />        invalid_base = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           invalid_base = driver_mmio_base;<br />        else<br />           invalid_base = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Optional                          | Yes                                      |
-| test_i052        | The call to psa_call() is PROGRAMMER ERROR  if psa_invec.base addr is valid but  psa_invec.base+size address is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [client/server]_test_psa_call_with_invalid_invec_end_addr()                                                                                                                              | Call psa_call with valid address for psa_invec.base but (psa_invec.base + psa_invec.size) pointing to invalid address and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of base and size are as below:<br />     if caller == NONSECURE<br />          valid_base = nspe_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - nspe_mmio_region_base + 1);<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />          valid_base = server_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - server_mmio_region_base + 1);<br />                                                                                                                                                                                                                                                                                                                       | Optional                          | Yes                                      |
-| test_i053        | The call to psa_call() is PROGRAMMER ERROR if psa_outvec.base addr is valid but  psa_invec.base+sizeaddress is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | [client/server]_test_psa_call_with_invalid_outvec_end_addr()                                                                                                                             | Call psa_call with valid address for psa_outvec.base but (psa_outvec.base + psa_outvec.size) pointing to invalid address and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of base and size are as below:<br />     if caller == NONSECURE<br />          valid_base = nspe_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - nspe_mmio_region_base + 1);<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />          valid_base = server_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - server_mmio_region_base + 1);<br />                                                                                                                                                                                                                                                                                                                    | Optional                          | Yes                                      |
+| test_i048        | The call to psa_call() is PROGRAMMER ERROR  if address of in_vec is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | [client/server]_test_psa_call_with_invalid_invec_pointer                                                                                                                                 | Call psa_call with invalid address for invec and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid invec pointer is as below:<br />     if caller == CALLER_NONSECURE<br />        // PSA RoT pointer<br />        invec_pointer = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           invec_pointer = driver_mmio_base;<br />        else<br />           invec_pointer = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Optional                          | Yes                                      |
+| test_i049        | The call to psa_call() is PROGRAMMER ERROR if  address of out_vec is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | [client/server]_test_psa_call_with_invalid_outvec_pointer()                                                                                                                              | Call psa_call with invalid address for outvec and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid outvec pointer is as below:<br />     if caller == CALLER_NONSECURE<br />        // PSA RoT pointer<br />        outvec_pointer = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           outvec_pointer = driver_mmio_base;<br />        else<br />           outvec_pointer = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Optional                          | Yes                                      |
+| test_i050        | The call to psa_call() is PROGRAMMER ERROR if psa_invec.base address is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | [client/server]_test_psa_call_with_invalid_invec_base()                                                                                                                                  | Call psa_call with invalid address for psa_invec.base and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid base is as below:<br />     if caller == CALLER_NONSECURE<br />        // PSA RoT pointer<br />        invalid_base = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           invalid_base = driver_mmio_base;<br />        else<br />           invalid_base = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Optional                          | Yes                                      |
+| test_i051        | The call to psa_call() is PROGRAMMER ERROR if psa_outvec.base address is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | [client/server]_test_psa_call_with_invalid_outvec_base()                                                                                                                                 | Call psa_call with invalid address for psa_outvec.base and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of invalid base is as below:<br />     if caller == CALLER_NONSECURE<br />        // PSA RoT pointer<br />        invalid_base = driver_mmio_base;<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />           invalid_base = driver_mmio_base;<br />        else<br />           invalid_base = NULL;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Optional                          | Yes                                      |
+| test_i052        | The call to psa_call() is PROGRAMMER ERROR  if psa_invec.base addr is valid but  psa_invec.base+size address is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [client/server]_test_psa_call_with_invalid_invec_end_addr()                                                                                                                              | Call psa_call with valid address for psa_invec.base but (psa_invec.base + psa_invec.size) pointing to invalid address and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of base and size are as below:<br />     if caller == CALLER_NONSECURE<br />          valid_base = nspe_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - nspe_mmio_region_base + 1);<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />          valid_base = server_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - server_mmio_region_base + 1);<br />                                                                                                                                                                                                                                                                                                                       | Optional                          | Yes                                      |
+| test_i053        | The call to psa_call() is PROGRAMMER ERROR if psa_outvec.base addr is valid but  psa_invec.base+sizeaddress is invalid for client                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | [client/server]_test_psa_call_with_invalid_outvec_end_addr()                                                                                                                             | Call psa_call with valid address for psa_outvec.base but (psa_outvec.base + psa_outvec.size) pointing to invalid address and expect PROGRAMMER ERROR behaviour for API call.<br /> Selection of base and size are as below:<br />     if caller == CALLER_NONSECURE<br />          valid_base = nspe_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - nspe_mmio_region_base + 1);<br /><br />     else<br /><br />        if (ISOLATION_LEVEL > 1)<br />          valid_base = server_mmio_region_base;<br />          invalid_size = (driver_mmio_region_base - server_mmio_region_base + 1);<br />                                                                                                                                                                                                                                                                                                                    | Optional                          | Yes                                      |
 | test_i054        | The call to psa_call() is PROGRAMMER ERROR  if psa_outvec.base is not writable                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | [client/server]_test_psa_call_with_not_writable_outvec_base()                                                                                                                            | Call psa_call with not writable (code address) psa_outvec.base and expect PROGRAMMER ERROR behaviour for API call.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Optional                          | Yes                                      |
 | test_i055        | The call to psa_read() is PROGRAMMER ERROR if the memory reference for buffer is invalid                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | [client/server]_test_psa_read_with_invalid_buffer_addr()                                                                                                                                 | Call psa_read with invalid buffer addr and expect PROGRAMMER ERROR behaviour for API call.<br />Selection of buffer address is as below:<br />if (ISOLATION_LEVEL > 1)<br />          buffer = driver_mmio_region_base;<br />else <br />         buffer = NULL; <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Optional                          | Yes                                      |
 | test_i056        | The call to psa_read() is PROGRAMMER ERROR if the memory reference for buffer is not writable                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | [client/server]_test_psa_read_with_not_writable_buffer_addr()                                                                                                                            | Call psa_read with not writable address (function address- code memory)  and expect PROGRAMMER ERROR behaviour for API call.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Optional                          | Yes                                      |
diff --git a/api-tests/ff/ipc/test_i001/test_i001.c b/api-tests/ff/ipc/test_i001/test_i001.c
index 80185ad..2e30ff6 100644
--- a/api-tests/ff/ipc/test_i001/test_i001.c
+++ b/api-tests/ff/ipc/test_i001/test_i001.c
@@ -32,7 +32,7 @@
     NULL,
 };
 
-int32_t client_test_psa_framework_version(security_t caller)
+int32_t client_test_psa_framework_version(caller_security_t caller)
 {
    int32_t         status = VAL_STATUS_SUCCESS;
 
@@ -49,7 +49,7 @@
    return status;
 }
 
-int32_t client_test_psa_version(security_t caller)
+int32_t client_test_psa_version(caller_security_t caller)
 {
    int32_t         status = VAL_STATUS_SUCCESS;
    uint32_t        version;
@@ -71,8 +71,8 @@
 
    /* psa_version() check for implemented SID but allows only secure connection */
    version = psa->version(SERVER_SECURE_CONNECT_ONLY_SID);
-   if (((caller == NONSECURE) && (version != PSA_VERSION_NONE))
-       || ((caller == SECURE) && (version != 2)))
+   if (((caller == CALLER_NONSECURE) && (version != PSA_VERSION_NONE))
+       || ((caller == CALLER_SECURE) && (version != 2)))
    {
        status = VAL_STATUS_VERSION_API_FAILED;
        val->print(PRINT_ERROR,
diff --git a/api-tests/ff/ipc/test_i001/test_i001.h b/api-tests/ff/ipc/test_i001/test_i001.h
index a42fd97..1defb81 100644
--- a/api-tests/ff/ipc/test_i001/test_i001.h
+++ b/api-tests/ff/ipc/test_i001/test_i001.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i001_client_tests_list[];
 
-int32_t client_test_psa_framework_version(security_t);
-int32_t client_test_psa_version(security_t);
+int32_t client_test_psa_framework_version(caller_security_t);
+int32_t client_test_psa_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i002/test_i002.c b/api-tests/ff/ipc/test_i002/test_i002.c
index abd023f..8bd4858 100644
--- a/api-tests/ff/ipc/test_i002/test_i002.c
+++ b/api-tests/ff/ipc/test_i002/test_i002.c
@@ -38,7 +38,7 @@
     NULL,
 };
 
-int32_t client_test_connection_busy_and_reject(security_t caller)
+int32_t client_test_connection_busy_and_reject(caller_security_t caller)
 {
     int32_t         status = VAL_STATUS_SUCCESS;
     psa_handle_t    handle = 0;
@@ -73,7 +73,7 @@
    return status;
 }
 
-int32_t client_test_accept_and_close_connect(security_t caller)
+int32_t client_test_accept_and_close_connect(caller_security_t caller)
 {
    psa_handle_t     handle = 0;
 
@@ -94,7 +94,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_connect_with_allowed_minor_version_policy(security_t caller)
+int32_t client_test_connect_with_allowed_minor_version_policy(caller_security_t caller)
 {
    psa_handle_t     handle = 0;
    uint32_t         i = 0;
@@ -153,7 +153,7 @@
    return status;
 }
 
-int32_t client_test_psa_call_with_allowed_status_code(security_t caller)
+int32_t client_test_psa_call_with_allowed_status_code(caller_security_t caller)
 {
    int32_t         status = VAL_STATUS_SUCCESS;
    psa_status_t    expected_status_code[] = {PSA_SUCCESS, 1, 2, INT32_MAX, -1, -2, INT32_MIN+128};
@@ -175,7 +175,7 @@
    return status;
 }
 
-int32_t client_test_identity(security_t caller)
+int32_t client_test_identity(caller_security_t caller)
 {
    int32_t         status = VAL_STATUS_SUCCESS;
    psa_handle_t    handle = 0;
@@ -201,13 +201,13 @@
        status = VAL_STATUS_CALL_FAILED;
    }
    /* For NSPE access, identity should be < 0 */
-   else if ((caller == NONSECURE) && ((id_at_connect != id_at_call)
+   else if ((caller == CALLER_NONSECURE) && ((id_at_connect != id_at_call)
             || (id_at_connect >=0) || (id_at_call >=0)))
    {
        status = VAL_STATUS_WRONG_IDENTITY;
    }
    /* For SPE access, identity should be > 0 */
-   else if ((caller == SECURE) && ((id_at_connect != id_at_call)
+   else if ((caller == CALLER_SECURE) && ((id_at_connect != id_at_call)
             || (id_at_connect <=0) || (id_at_call <=0)))
    {
        status = VAL_STATUS_WRONG_IDENTITY;
@@ -217,7 +217,7 @@
    return status;
 }
 
-int32_t client_test_spm_concurrent_connect_limit(security_t caller)
+int32_t client_test_spm_concurrent_connect_limit(caller_security_t caller)
 {
    int32_t         status = VAL_STATUS_SUCCESS;
    psa_handle_t    handle[CONNECT_LIMIT] = {0};
@@ -276,13 +276,13 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_psa_block_behave(security_t caller)
+int32_t client_test_psa_block_behave(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 7] Test PSA_BLOCK\n", 0);
    return (client_test_psa_wait());
 }
 
-int32_t client_test_psa_poll_behave(security_t caller)
+int32_t client_test_psa_poll_behave(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 8] Test PSA_POLL\n", 0);
    return (client_test_psa_wait());
diff --git a/api-tests/ff/ipc/test_i002/test_i002.h b/api-tests/ff/ipc/test_i002/test_i002.h
index a076787..bce864c 100644
--- a/api-tests/ff/ipc/test_i002/test_i002.h
+++ b/api-tests/ff/ipc/test_i002/test_i002.h
@@ -36,12 +36,12 @@
 
 extern client_test_t test_i002_client_tests_list[];
 
-int32_t client_test_connection_busy_and_reject(security_t);
-int32_t client_test_accept_and_close_connect(security_t);
-int32_t client_test_connect_with_allowed_minor_version_policy(security_t);
-int32_t client_test_psa_call_with_allowed_status_code(security_t);
-int32_t client_test_identity(security_t);
-int32_t client_test_spm_concurrent_connect_limit(security_t);
-int32_t client_test_psa_block_behave(security_t);
-int32_t client_test_psa_poll_behave(security_t);
+int32_t client_test_connection_busy_and_reject(caller_security_t);
+int32_t client_test_accept_and_close_connect(caller_security_t);
+int32_t client_test_connect_with_allowed_minor_version_policy(caller_security_t);
+int32_t client_test_psa_call_with_allowed_status_code(caller_security_t);
+int32_t client_test_identity(caller_security_t);
+int32_t client_test_spm_concurrent_connect_limit(caller_security_t);
+int32_t client_test_psa_block_behave(caller_security_t);
+int32_t client_test_psa_poll_behave(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i003/test_i003.c b/api-tests/ff/ipc/test_i003/test_i003.c
index a6ac294..a8e795d 100644
--- a/api-tests/ff/ipc/test_i003/test_i003.c
+++ b/api-tests/ff/ipc/test_i003/test_i003.c
@@ -37,7 +37,7 @@
     NULL,
 };
 
-int32_t client_test_zero_length_invec(security_t caller)
+int32_t client_test_zero_length_invec(caller_security_t caller)
 {
    int32_t              status = VAL_STATUS_SUCCESS;
    psa_handle_t         handle = 0;
@@ -91,7 +91,7 @@
    return status;
 }
 
-int32_t client_test_zero_length_outvec(security_t caller)
+int32_t client_test_zero_length_outvec(caller_security_t caller)
 {
    int32_t              status = VAL_STATUS_SUCCESS;
    psa_handle_t         handle = 0;
@@ -147,7 +147,7 @@
    return status;
 }
 
-int32_t client_test_call_read_and_skip(security_t caller)
+int32_t client_test_call_read_and_skip(caller_security_t caller)
 {
    int32_t              status = VAL_STATUS_SUCCESS;
    int                  data1[2] = {0xaa, 0xbb};
@@ -182,7 +182,7 @@
    return status;
 }
 
-int32_t client_test_call_and_write(security_t caller)
+int32_t client_test_call_and_write(caller_security_t caller)
 {
    int32_t              status = VAL_STATUS_SUCCESS;
    int                  data[4] = {0}, expected_data[4] = {0xaa, 0xbb, 0xcc, 0xeedd}, i;
@@ -242,7 +242,7 @@
    return status;
 }
 
-int32_t client_test_psa_set_rhandle(security_t caller)
+int32_t client_test_psa_set_rhandle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
@@ -275,7 +275,7 @@
    return status;
 }
 
-int32_t client_test_overlapping_vectors(security_t caller)
+int32_t client_test_overlapping_vectors(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i003/test_i003.h b/api-tests/ff/ipc/test_i003/test_i003.h
index b83b219..09e62cd 100644
--- a/api-tests/ff/ipc/test_i003/test_i003.h
+++ b/api-tests/ff/ipc/test_i003/test_i003.h
@@ -33,10 +33,10 @@
 
 extern client_test_t test_i003_client_tests_list[];
 
-int32_t client_test_psa_set_rhandle(security_t);
-int32_t client_test_call_read_and_skip(security_t);
-int32_t client_test_call_and_write(security_t);
-int32_t client_test_zero_length_invec(security_t);
-int32_t client_test_zero_length_outvec(security_t);
-int32_t client_test_overlapping_vectors(security_t);
+int32_t client_test_psa_set_rhandle(caller_security_t);
+int32_t client_test_call_read_and_skip(caller_security_t);
+int32_t client_test_call_and_write(caller_security_t);
+int32_t client_test_zero_length_invec(caller_security_t);
+int32_t client_test_zero_length_outvec(caller_security_t);
+int32_t client_test_overlapping_vectors(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i004/test_i004.c b/api-tests/ff/ipc/test_i004/test_i004.c
index 7f19bab..49f05f1 100644
--- a/api-tests/ff/ipc/test_i004/test_i004.c
+++ b/api-tests/ff/ipc/test_i004/test_i004.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_sid_does_not_exists(security_t caller)
+int32_t client_test_sid_does_not_exists(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
    boot_state_t       boot_state;
@@ -61,7 +61,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -76,7 +76,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_CONNECTION_REFUSED.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
+   if (caller == CALLER_NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i004/test_i004.h b/api-tests/ff/ipc/test_i004/test_i004.h
index fe07c10..6d3aa1f 100644
--- a/api-tests/ff/ipc/test_i004/test_i004.h
+++ b/api-tests/ff/ipc/test_i004/test_i004.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i004_client_tests_list[];
 
-int32_t client_test_sid_does_not_exists(security_t);
+int32_t client_test_sid_does_not_exists(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i005/test_i005.c b/api-tests/ff/ipc/test_i005/test_i005.c
index 2b1d22f..3c67a05 100644
--- a/api-tests/ff/ipc/test_i005/test_i005.c
+++ b/api-tests/ff/ipc/test_i005/test_i005.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_strict_policy_higher_minor_version(security_t caller)
+int32_t client_test_strict_policy_higher_minor_version(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
    boot_state_t       boot_state;
@@ -61,7 +61,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -78,7 +78,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_CONNECTION_REFUSED.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
+   if (caller == CALLER_NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i005/test_i005.h b/api-tests/ff/ipc/test_i005/test_i005.h
index 5931049..2f398d0 100644
--- a/api-tests/ff/ipc/test_i005/test_i005.h
+++ b/api-tests/ff/ipc/test_i005/test_i005.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i005_client_tests_list[];
 
-int32_t client_test_strict_policy_higher_minor_version(security_t);
+int32_t client_test_strict_policy_higher_minor_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i006/test_i006.c b/api-tests/ff/ipc/test_i006/test_i006.c
index 3f1f6eb..452508d 100644
--- a/api-tests/ff/ipc/test_i006/test_i006.c
+++ b/api-tests/ff/ipc/test_i006/test_i006.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_strict_policy_lower_minor_version(security_t caller)
+int32_t client_test_strict_policy_lower_minor_version(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
    boot_state_t       boot_state;
@@ -61,7 +61,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -76,7 +76,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_CONNECTION_REFUSED.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
+   if (caller == CALLER_NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i006/test_i006.h b/api-tests/ff/ipc/test_i006/test_i006.h
index 62d5a4c..e3cd3d1 100644
--- a/api-tests/ff/ipc/test_i006/test_i006.h
+++ b/api-tests/ff/ipc/test_i006/test_i006.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i006_client_tests_list[];
 
-int32_t client_test_strict_policy_lower_minor_version(security_t);
+int32_t client_test_strict_policy_lower_minor_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i007/test_i007.c b/api-tests/ff/ipc/test_i007/test_i007.c
index c90dffc..14a3d64 100644
--- a/api-tests/ff/ipc/test_i007/test_i007.c
+++ b/api-tests/ff/ipc/test_i007/test_i007.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_relax_policy_higher_minor_version(security_t caller)
+int32_t client_test_relax_policy_higher_minor_version(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
    boot_state_t       boot_state;
@@ -61,7 +61,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -76,7 +76,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_CONNECTION_REFUSED.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
+   if (caller == CALLER_NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i007/test_i007.h b/api-tests/ff/ipc/test_i007/test_i007.h
index 26908fb..9392229 100644
--- a/api-tests/ff/ipc/test_i007/test_i007.h
+++ b/api-tests/ff/ipc/test_i007/test_i007.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i007_client_tests_list[];
 
-int32_t client_test_relax_policy_higher_minor_version(security_t);
+int32_t client_test_relax_policy_higher_minor_version(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i008/test_i008.c b/api-tests/ff/ipc/test_i008/test_i008.c
index 785026e..982d1d4 100644
--- a/api-tests/ff/ipc/test_i008/test_i008.c
+++ b/api-tests/ff/ipc/test_i008/test_i008.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_secure_access_only_connection(security_t caller)
+int32_t client_test_secure_access_only_connection(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
@@ -61,7 +61,7 @@
     */
 
    /* Setting boot.state before test check for NS */
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
    {
        status = val->set_boot_flag(BOOT_EXPECTED_NS);
    }
@@ -77,7 +77,7 @@
     */
    handle = psa->connect(SERVER_SECURE_CONNECT_ONLY_SID, 1);
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
    {
        /*
         * If the caller is in the NSPE, it is IMPLEMENTATION DEFINED whether
diff --git a/api-tests/ff/ipc/test_i008/test_i008.h b/api-tests/ff/ipc/test_i008/test_i008.h
index be6cc9f..9eaaf02 100644
--- a/api-tests/ff/ipc/test_i008/test_i008.h
+++ b/api-tests/ff/ipc/test_i008/test_i008.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i008_client_tests_list[];
 
-int32_t client_test_secure_access_only_connection(security_t);
+int32_t client_test_secure_access_only_connection(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i009/test_i009.c b/api-tests/ff/ipc/test_i009/test_i009.c
index 9bb7c5b..5fd1b62 100644
--- a/api-tests/ff/ipc/test_i009/test_i009.c
+++ b/api-tests/ff/ipc/test_i009/test_i009.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_unextern_sid_connection(security_t caller)
+int32_t client_test_unextern_sid_connection(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i009/test_i009.h b/api-tests/ff/ipc/test_i009/test_i009.h
index b8cbc53..661e7ca 100644
--- a/api-tests/ff/ipc/test_i009/test_i009.h
+++ b/api-tests/ff/ipc/test_i009/test_i009.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i009_client_tests_list[];
 
-int32_t client_test_unextern_sid_connection(security_t);
+int32_t client_test_unextern_sid_connection(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i010/test_i010.c b/api-tests/ff/ipc/test_i010/test_i010.c
index 65b06c1..7a2074b 100644
--- a/api-tests/ff/ipc/test_i010/test_i010.c
+++ b/api-tests/ff/ipc/test_i010/test_i010.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_unspecified_policy_with_higher_minor_ver(security_t caller)
+int32_t client_test_unspecified_policy_with_higher_minor_ver(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
    boot_state_t       boot_state;
@@ -62,7 +62,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -81,7 +81,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_CONNECTION_REFUSED.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
+   if (caller == CALLER_NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i010/test_i010.h b/api-tests/ff/ipc/test_i010/test_i010.h
index 7e0eb02..f299f98 100644
--- a/api-tests/ff/ipc/test_i010/test_i010.h
+++ b/api-tests/ff/ipc/test_i010/test_i010.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i010_client_tests_list[];
 
-int32_t client_test_unspecified_policy_with_higher_minor_ver(security_t);
+int32_t client_test_unspecified_policy_with_higher_minor_ver(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i011/test_i011.c b/api-tests/ff/ipc/test_i011/test_i011.c
index 82c5e09..536d04c 100644
--- a/api-tests/ff/ipc/test_i011/test_i011.c
+++ b/api-tests/ff/ipc/test_i011/test_i011.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_unspecified_policy_with_lower_minor_ver(security_t caller)
+int32_t client_test_unspecified_policy_with_lower_minor_ver(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
    boot_state_t       boot_state;
@@ -62,7 +62,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -81,7 +81,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_CONNECTION_REFUSED.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
+   if (caller == CALLER_NONSECURE && handle == PSA_ERROR_CONNECTION_REFUSED)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i011/test_i011.h b/api-tests/ff/ipc/test_i011/test_i011.h
index 8b6f732..3e0b334 100644
--- a/api-tests/ff/ipc/test_i011/test_i011.h
+++ b/api-tests/ff/ipc/test_i011/test_i011.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i011_client_tests_list[];
 
-int32_t client_test_unspecified_policy_with_lower_minor_ver(security_t);
+int32_t client_test_unspecified_policy_with_lower_minor_ver(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i012/test_i012.c b/api-tests/ff/ipc/test_i012/test_i012.c
index 9ddb2fa..0724ced 100644
--- a/api-tests/ff/ipc/test_i012/test_i012.c
+++ b/api-tests/ff/ipc/test_i012/test_i012.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_close_with_invalid_handle(security_t caller)
+int32_t client_test_psa_close_with_invalid_handle(caller_security_t caller)
 {
    boot_state_t       boot_state;
 
@@ -60,7 +60,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -75,7 +75,7 @@
     * a PROGRAMMER ERROR will panic or return with no effect.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i012/test_i012.h b/api-tests/ff/ipc/test_i012/test_i012.h
index d7a2776..fbdd20e 100644
--- a/api-tests/ff/ipc/test_i012/test_i012.h
+++ b/api-tests/ff/ipc/test_i012/test_i012.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i012_client_tests_list[];
 
-int32_t client_test_psa_close_with_invalid_handle(security_t);
+int32_t client_test_psa_close_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i013/test_i013.c b/api-tests/ff/ipc/test_i013/test_i013.c
index 5666c16..9ac96fd 100644
--- a/api-tests/ff/ipc/test_i013/test_i013.c
+++ b/api-tests/ff/ipc/test_i013/test_i013.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_get_with_more_than_one_signal(security_t caller)
+int32_t client_test_psa_get_with_more_than_one_signal(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i013/test_i013.h b/api-tests/ff/ipc/test_i013/test_i013.h
index 8721594..99458c5 100644
--- a/api-tests/ff/ipc/test_i013/test_i013.h
+++ b/api-tests/ff/ipc/test_i013/test_i013.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i013_client_tests_list[];
 
-int32_t client_test_psa_get_with_more_than_one_signal(security_t);
+int32_t client_test_psa_get_with_more_than_one_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i014/test_i014.c b/api-tests/ff/ipc/test_i014/test_i014.c
index 1590dd4..3da7d74 100644
--- a/api-tests/ff/ipc/test_i014/test_i014.c
+++ b/api-tests/ff/ipc/test_i014/test_i014.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_get_called_twice(security_t caller)
+int32_t client_test_psa_get_called_twice(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i014/test_i014.h b/api-tests/ff/ipc/test_i014/test_i014.h
index 939dc4d..e92beb7 100644
--- a/api-tests/ff/ipc/test_i014/test_i014.h
+++ b/api-tests/ff/ipc/test_i014/test_i014.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i014_client_tests_list[];
 
-int32_t client_test_psa_get_called_twice(security_t);
+int32_t client_test_psa_get_called_twice(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i015/test_i015.c b/api-tests/ff/ipc/test_i015/test_i015.c
index f486865..f1854f3 100644
--- a/api-tests/ff/ipc/test_i015/test_i015.c
+++ b/api-tests/ff/ipc/test_i015/test_i015.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_get_with_non_rot_signal(security_t caller)
+int32_t client_test_psa_get_with_non_rot_signal(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i015/test_i015.h b/api-tests/ff/ipc/test_i015/test_i015.h
index f1d4bfb..70b647c 100644
--- a/api-tests/ff/ipc/test_i015/test_i015.h
+++ b/api-tests/ff/ipc/test_i015/test_i015.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i015_client_tests_list[];
 
-int32_t client_test_psa_get_with_non_rot_signal(security_t);
+int32_t client_test_psa_get_with_non_rot_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i016/test_i016.c b/api-tests/ff/ipc/test_i016/test_i016.c
index 5cc7a36..781d317 100644
--- a/api-tests/ff/ipc/test_i016/test_i016.c
+++ b/api-tests/ff/ipc/test_i016/test_i016.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_get_with_unasserted_signal(security_t caller)
+int32_t client_test_psa_get_with_unasserted_signal(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i016/test_i016.h b/api-tests/ff/ipc/test_i016/test_i016.h
index ffb78e1..104803c 100644
--- a/api-tests/ff/ipc/test_i016/test_i016.h
+++ b/api-tests/ff/ipc/test_i016/test_i016.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i016_client_tests_list[];
 
-int32_t client_test_psa_get_with_unasserted_signal(security_t);
+int32_t client_test_psa_get_with_unasserted_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i017/test_i017.c b/api-tests/ff/ipc/test_i017/test_i017.c
index 2253d56..00a9dc3 100644
--- a/api-tests/ff/ipc/test_i017/test_i017.c
+++ b/api-tests/ff/ipc/test_i017/test_i017.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_partition_calling_its_own_rot_service(security_t caller)
+int32_t client_test_partition_calling_its_own_rot_service(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i017/test_i017.h b/api-tests/ff/ipc/test_i017/test_i017.h
index 60e4e87..e5ac1b9 100644
--- a/api-tests/ff/ipc/test_i017/test_i017.h
+++ b/api-tests/ff/ipc/test_i017/test_i017.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i017_client_tests_list[];
 
-int32_t client_test_partition_calling_its_own_rot_service(security_t);
+int32_t client_test_partition_calling_its_own_rot_service(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i018/test_i018.c b/api-tests/ff/ipc/test_i018/test_i018.c
index 4352149..0825ddf 100644
--- a/api-tests/ff/ipc/test_i018/test_i018.c
+++ b/api-tests/ff/ipc/test_i018/test_i018.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_set_rhandle_with_invalid_handle(security_t caller)
+int32_t client_test_psa_set_rhandle_with_invalid_handle(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i018/test_i018.h b/api-tests/ff/ipc/test_i018/test_i018.h
index f8eed0d..14e05bc 100644
--- a/api-tests/ff/ipc/test_i018/test_i018.h
+++ b/api-tests/ff/ipc/test_i018/test_i018.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i018_client_tests_list[];
 
-int32_t client_test_psa_set_rhandle_with_invalid_handle(security_t);
+int32_t client_test_psa_set_rhandle_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i019/test_i019.c b/api-tests/ff/ipc/test_i019/test_i019.c
index 35ba8b9..a123bb2 100644
--- a/api-tests/ff/ipc/test_i019/test_i019.c
+++ b/api-tests/ff/ipc/test_i019/test_i019.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_set_rhandle_with_null_handle(security_t caller)
+int32_t client_test_psa_set_rhandle_with_null_handle(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i019/test_i019.h b/api-tests/ff/ipc/test_i019/test_i019.h
index 39c0065..c4bcfdc 100644
--- a/api-tests/ff/ipc/test_i019/test_i019.h
+++ b/api-tests/ff/ipc/test_i019/test_i019.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i019_client_tests_list[];
 
-int32_t client_test_psa_set_rhandle_with_null_handle(security_t);
+int32_t client_test_psa_set_rhandle_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i020/test_i020.c b/api-tests/ff/ipc/test_i020/test_i020.c
index c316e3d..21d0ab5 100644
--- a/api-tests/ff/ipc/test_i020/test_i020.c
+++ b/api-tests/ff/ipc/test_i020/test_i020.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_reply_with_invalid_connect_status_code(security_t caller)
+int32_t client_test_psa_reply_with_invalid_connect_status_code(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i020/test_i020.h b/api-tests/ff/ipc/test_i020/test_i020.h
index 7b9c1eb..ccad95b 100644
--- a/api-tests/ff/ipc/test_i020/test_i020.h
+++ b/api-tests/ff/ipc/test_i020/test_i020.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i020_client_tests_list[];
 
-int32_t client_test_psa_reply_with_invalid_connect_status_code(security_t);
+int32_t client_test_psa_reply_with_invalid_connect_status_code(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i021/test_i021.c b/api-tests/ff/ipc/test_i021/test_i021.c
index 8927b14..ca7f3ee 100644
--- a/api-tests/ff/ipc/test_i021/test_i021.c
+++ b/api-tests/ff/ipc/test_i021/test_i021.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_irq_routing(security_t caller)
+int32_t client_test_irq_routing(caller_security_t caller)
 {
    psa_handle_t           handle;
    driver_test_fn_id_t    driver_test_fn_id = TEST_INTR_SERVICE;
diff --git a/api-tests/ff/ipc/test_i021/test_i021.h b/api-tests/ff/ipc/test_i021/test_i021.h
index cc76caf..f532c7f 100644
--- a/api-tests/ff/ipc/test_i021/test_i021.h
+++ b/api-tests/ff/ipc/test_i021/test_i021.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i021_client_tests_list[];
 
-int32_t client_test_irq_routing(security_t);
+int32_t client_test_irq_routing(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i022/test_i022.c b/api-tests/ff/ipc/test_i022/test_i022.c
index 0954836..cad50be 100644
--- a/api-tests/ff/ipc/test_i022/test_i022.c
+++ b/api-tests/ff/ipc/test_i022/test_i022.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_reply_with_invalid_handle(security_t caller)
+int32_t client_test_psa_reply_with_invalid_handle(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i022/test_i022.h b/api-tests/ff/ipc/test_i022/test_i022.h
index b67081f..8c5b5e1 100644
--- a/api-tests/ff/ipc/test_i022/test_i022.h
+++ b/api-tests/ff/ipc/test_i022/test_i022.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i022_client_tests_list[];
 
-int32_t client_test_psa_reply_with_invalid_handle(security_t);
+int32_t client_test_psa_reply_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i023/test_i023.c b/api-tests/ff/ipc/test_i023/test_i023.c
index 6c85db2..d81c284 100644
--- a/api-tests/ff/ipc/test_i023/test_i023.c
+++ b/api-tests/ff/ipc/test_i023/test_i023.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_reply_with_null_handle(security_t caller)
+int32_t client_test_psa_reply_with_null_handle(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i023/test_i023.h b/api-tests/ff/ipc/test_i023/test_i023.h
index b0394f1..9029a4b 100644
--- a/api-tests/ff/ipc/test_i023/test_i023.h
+++ b/api-tests/ff/ipc/test_i023/test_i023.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i023_client_tests_list[];
 
-int32_t client_test_psa_reply_with_null_handle(security_t);
+int32_t client_test_psa_reply_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i024/test_i024.c b/api-tests/ff/ipc/test_i024/test_i024.c
index d589c89..70aaf67 100644
--- a/api-tests/ff/ipc/test_i024/test_i024.c
+++ b/api-tests/ff/ipc/test_i024/test_i024.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_handle(security_t caller)
+int32_t client_test_psa_call_with_invalid_handle(caller_security_t caller)
 {
    psa_status_t       status_of_call;
    boot_state_t       boot_state;
@@ -62,7 +62,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -77,7 +77,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i024/test_i024.h b/api-tests/ff/ipc/test_i024/test_i024.h
index 109ba86..701382e 100644
--- a/api-tests/ff/ipc/test_i024/test_i024.h
+++ b/api-tests/ff/ipc/test_i024/test_i024.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i024_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_handle(security_t);
+int32_t client_test_psa_call_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i025/test_i025.c b/api-tests/ff/ipc/test_i025/test_i025.c
index 66d69dd..753d920 100644
--- a/api-tests/ff/ipc/test_i025/test_i025.c
+++ b/api-tests/ff/ipc/test_i025/test_i025.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_null_handle(security_t caller)
+int32_t client_test_psa_call_with_null_handle(caller_security_t caller)
 {
    psa_status_t       status_of_call;
    boot_state_t       boot_state;
@@ -62,7 +62,7 @@
     */
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -77,7 +77,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        return VAL_STATUS_SUCCESS;
    }
diff --git a/api-tests/ff/ipc/test_i025/test_i025.h b/api-tests/ff/ipc/test_i025/test_i025.h
index 2cc58ee..570c5f3 100644
--- a/api-tests/ff/ipc/test_i025/test_i025.h
+++ b/api-tests/ff/ipc/test_i025/test_i025.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i025_client_tests_list[];
 
-int32_t client_test_psa_call_with_null_handle(security_t);
+int32_t client_test_psa_call_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i026/test_i026.c b/api-tests/ff/ipc/test_i026/test_i026.c
index bafd8a9..8ead26d 100644
--- a/api-tests/ff/ipc/test_i026/test_i026.c
+++ b/api-tests/ff/ipc/test_i026/test_i026.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_iovec_more_than_max_limit(security_t caller)
+int32_t client_test_psa_call_with_iovec_more_than_max_limit(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
@@ -79,7 +79,7 @@
    }
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -94,7 +94,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i026/test_i026.h b/api-tests/ff/ipc/test_i026/test_i026.h
index 183a060..7c46712 100644
--- a/api-tests/ff/ipc/test_i026/test_i026.h
+++ b/api-tests/ff/ipc/test_i026/test_i026.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i026_client_tests_list[];
 
-int32_t client_test_psa_call_with_iovec_more_than_max_limit(security_t);
+int32_t client_test_psa_call_with_iovec_more_than_max_limit(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i027/test_i027.c b/api-tests/ff/ipc/test_i027/test_i027.c
index 1f20adc..f12f940 100644
--- a/api-tests/ff/ipc/test_i027/test_i027.c
+++ b/api-tests/ff/ipc/test_i027/test_i027.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_drop_connection(security_t caller)
+int32_t client_test_psa_drop_connection(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
@@ -71,7 +71,7 @@
    }
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -85,7 +85,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        /* Resetting boot.state to catch unwanted reboot */
        if (val->set_boot_flag(BOOT_NOT_EXPECTED))
diff --git a/api-tests/ff/ipc/test_i027/test_i027.h b/api-tests/ff/ipc/test_i027/test_i027.h
index 2996167..827196f 100644
--- a/api-tests/ff/ipc/test_i027/test_i027.h
+++ b/api-tests/ff/ipc/test_i027/test_i027.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i027_client_tests_list[];
 
-int32_t client_test_psa_drop_connection(security_t);
+int32_t client_test_psa_drop_connection(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i028/test_i028.c b/api-tests/ff/ipc/test_i028/test_i028.c
index a5be9d3..cc1d8e0 100644
--- a/api-tests/ff/ipc/test_i028/test_i028.c
+++ b/api-tests/ff/ipc/test_i028/test_i028.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_at_ipc_connect(security_t caller)
+int32_t client_test_psa_read_at_ipc_connect(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i028/test_i028.h b/api-tests/ff/ipc/test_i028/test_i028.h
index 8368fa1..41b207a 100644
--- a/api-tests/ff/ipc/test_i028/test_i028.h
+++ b/api-tests/ff/ipc/test_i028/test_i028.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i028_client_tests_list[];
 
-int32_t client_test_psa_read_at_ipc_connect(security_t);
+int32_t client_test_psa_read_at_ipc_connect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i029/test_i029.c b/api-tests/ff/ipc/test_i029/test_i029.c
index 51d199b..7c997e4 100644
--- a/api-tests/ff/ipc/test_i029/test_i029.c
+++ b/api-tests/ff/ipc/test_i029/test_i029.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_at_ipc_disconnect(security_t caller)
+int32_t client_test_psa_read_at_ipc_disconnect(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i029/test_i029.h b/api-tests/ff/ipc/test_i029/test_i029.h
index 14119bc..48a1b75 100644
--- a/api-tests/ff/ipc/test_i029/test_i029.h
+++ b/api-tests/ff/ipc/test_i029/test_i029.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i029_client_tests_list[];
 
-int32_t client_test_psa_read_at_ipc_disconnect(security_t);
+int32_t client_test_psa_read_at_ipc_disconnect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i030/test_i030.c b/api-tests/ff/ipc/test_i030/test_i030.c
index f6eef92..9b1351a 100644
--- a/api-tests/ff/ipc/test_i030/test_i030.c
+++ b/api-tests/ff/ipc/test_i030/test_i030.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_with_null_handle(security_t caller)
+int32_t client_test_psa_read_with_null_handle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i030/test_i030.h b/api-tests/ff/ipc/test_i030/test_i030.h
index fafb2a8..20af72f 100644
--- a/api-tests/ff/ipc/test_i030/test_i030.h
+++ b/api-tests/ff/ipc/test_i030/test_i030.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i030_client_tests_list[];
 
-int32_t client_test_psa_read_with_null_handle(security_t);
+int32_t client_test_psa_read_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i031/test_i031.c b/api-tests/ff/ipc/test_i031/test_i031.c
index dc22151..0751f06 100644
--- a/api-tests/ff/ipc/test_i031/test_i031.c
+++ b/api-tests/ff/ipc/test_i031/test_i031.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_with_invalid_handle(security_t caller)
+int32_t client_test_psa_read_with_invalid_handle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i031/test_i031.h b/api-tests/ff/ipc/test_i031/test_i031.h
index ceb16f8..6283b61 100644
--- a/api-tests/ff/ipc/test_i031/test_i031.h
+++ b/api-tests/ff/ipc/test_i031/test_i031.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i031_client_tests_list[];
 
-int32_t client_test_psa_read_with_invalid_handle(security_t);
+int32_t client_test_psa_read_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i032/test_i032.c b/api-tests/ff/ipc/test_i032/test_i032.c
index f052783..be3f1f1 100644
--- a/api-tests/ff/ipc/test_i032/test_i032.c
+++ b/api-tests/ff/ipc/test_i032/test_i032.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_with_invec_equal_to_max_iovec(security_t caller)
+int32_t client_test_psa_read_with_invec_equal_to_max_iovec(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i032/test_i032.h b/api-tests/ff/ipc/test_i032/test_i032.h
index 8ea8bd4..48e4d8a 100644
--- a/api-tests/ff/ipc/test_i032/test_i032.h
+++ b/api-tests/ff/ipc/test_i032/test_i032.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i032_client_tests_list[];
 
-int32_t client_test_psa_read_with_invec_equal_to_max_iovec(security_t);
+int32_t client_test_psa_read_with_invec_equal_to_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i033/test_i033.c b/api-tests/ff/ipc/test_i033/test_i033.c
index 1792dfa..e8e803a 100644
--- a/api-tests/ff/ipc/test_i033/test_i033.c
+++ b/api-tests/ff/ipc/test_i033/test_i033.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_with_invec_greater_than_max_iovec(security_t caller)
+int32_t client_test_psa_read_with_invec_greater_than_max_iovec(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i033/test_i033.h b/api-tests/ff/ipc/test_i033/test_i033.h
index 2c65273..b4f74cc 100644
--- a/api-tests/ff/ipc/test_i033/test_i033.h
+++ b/api-tests/ff/ipc/test_i033/test_i033.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i033_client_tests_list[];
 
-int32_t client_test_psa_read_with_invec_greater_than_max_iovec(security_t);
+int32_t client_test_psa_read_with_invec_greater_than_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i034/test_i034.c b/api-tests/ff/ipc/test_i034/test_i034.c
index 742c1aa..f7f14ff 100644
--- a/api-tests/ff/ipc/test_i034/test_i034.c
+++ b/api-tests/ff/ipc/test_i034/test_i034.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_skip_at_ipc_connect(security_t caller)
+int32_t client_test_psa_skip_at_ipc_connect(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i034/test_i034.h b/api-tests/ff/ipc/test_i034/test_i034.h
index 2a7be62..0f0d5b9 100644
--- a/api-tests/ff/ipc/test_i034/test_i034.h
+++ b/api-tests/ff/ipc/test_i034/test_i034.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i034_client_tests_list[];
 
-int32_t client_test_psa_skip_at_ipc_connect(security_t);
+int32_t client_test_psa_skip_at_ipc_connect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i035/test_i035.c b/api-tests/ff/ipc/test_i035/test_i035.c
index ca89abe..1556e7e 100644
--- a/api-tests/ff/ipc/test_i035/test_i035.c
+++ b/api-tests/ff/ipc/test_i035/test_i035.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_skip_at_ipc_disconnect(security_t caller)
+int32_t client_test_psa_skip_at_ipc_disconnect(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i035/test_i035.h b/api-tests/ff/ipc/test_i035/test_i035.h
index 4866463..1312973 100644
--- a/api-tests/ff/ipc/test_i035/test_i035.h
+++ b/api-tests/ff/ipc/test_i035/test_i035.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i035_client_tests_list[];
 
-int32_t client_test_psa_skip_at_ipc_disconnect(security_t);
+int32_t client_test_psa_skip_at_ipc_disconnect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i036/test_i036.c b/api-tests/ff/ipc/test_i036/test_i036.c
index 75eea22..87f6f2a 100644
--- a/api-tests/ff/ipc/test_i036/test_i036.c
+++ b/api-tests/ff/ipc/test_i036/test_i036.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_skip_with_null_handle(security_t caller)
+int32_t client_test_psa_skip_with_null_handle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i036/test_i036.h b/api-tests/ff/ipc/test_i036/test_i036.h
index 6c18e60..7be6f54 100644
--- a/api-tests/ff/ipc/test_i036/test_i036.h
+++ b/api-tests/ff/ipc/test_i036/test_i036.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i036_client_tests_list[];
 
-int32_t client_test_psa_skip_with_null_handle(security_t);
+int32_t client_test_psa_skip_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i037/test_i037.c b/api-tests/ff/ipc/test_i037/test_i037.c
index c6765a2..306990e 100644
--- a/api-tests/ff/ipc/test_i037/test_i037.c
+++ b/api-tests/ff/ipc/test_i037/test_i037.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_skip_with_invalid_handle(security_t caller)
+int32_t client_test_psa_skip_with_invalid_handle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i037/test_i037.h b/api-tests/ff/ipc/test_i037/test_i037.h
index 4dde872..051565f 100644
--- a/api-tests/ff/ipc/test_i037/test_i037.h
+++ b/api-tests/ff/ipc/test_i037/test_i037.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i037_client_tests_list[];
 
-int32_t client_test_psa_skip_with_invalid_handle(security_t);
+int32_t client_test_psa_skip_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i038/test_i038.c b/api-tests/ff/ipc/test_i038/test_i038.c
index a2cf2b8..2cb1f9f 100644
--- a/api-tests/ff/ipc/test_i038/test_i038.c
+++ b/api-tests/ff/ipc/test_i038/test_i038.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_skip_with_invec_equal_to_max_iovec(security_t caller)
+int32_t client_test_psa_skip_with_invec_equal_to_max_iovec(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i038/test_i038.h b/api-tests/ff/ipc/test_i038/test_i038.h
index 3579803..8da20a3 100644
--- a/api-tests/ff/ipc/test_i038/test_i038.h
+++ b/api-tests/ff/ipc/test_i038/test_i038.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i038_client_tests_list[];
 
-int32_t client_test_psa_skip_with_invec_equal_to_max_iovec(security_t);
+int32_t client_test_psa_skip_with_invec_equal_to_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i039/test_i039.c b/api-tests/ff/ipc/test_i039/test_i039.c
index b028f36..2582094 100644
--- a/api-tests/ff/ipc/test_i039/test_i039.c
+++ b/api-tests/ff/ipc/test_i039/test_i039.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_skip_with_invec_greater_than_max_iovec(security_t caller)
+int32_t client_test_psa_skip_with_invec_greater_than_max_iovec(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i039/test_i039.h b/api-tests/ff/ipc/test_i039/test_i039.h
index 853a11a..e9862df 100644
--- a/api-tests/ff/ipc/test_i039/test_i039.h
+++ b/api-tests/ff/ipc/test_i039/test_i039.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i039_client_tests_list[];
 
-int32_t client_test_psa_skip_with_invec_greater_than_max_iovec(security_t);
+int32_t client_test_psa_skip_with_invec_greater_than_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i040/test_i040.c b/api-tests/ff/ipc/test_i040/test_i040.c
index c0746b1..412f0bf 100644
--- a/api-tests/ff/ipc/test_i040/test_i040.c
+++ b/api-tests/ff/ipc/test_i040/test_i040.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_at_ipc_connect(security_t caller)
+int32_t client_test_psa_write_at_ipc_connect(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i040/test_i040.h b/api-tests/ff/ipc/test_i040/test_i040.h
index 6a341a4..de982eb 100644
--- a/api-tests/ff/ipc/test_i040/test_i040.h
+++ b/api-tests/ff/ipc/test_i040/test_i040.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i040_client_tests_list[];
 
-int32_t client_test_psa_write_at_ipc_connect(security_t);
+int32_t client_test_psa_write_at_ipc_connect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i041/test_i041.c b/api-tests/ff/ipc/test_i041/test_i041.c
index cead0f0..bd5060d 100644
--- a/api-tests/ff/ipc/test_i041/test_i041.c
+++ b/api-tests/ff/ipc/test_i041/test_i041.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_at_ipc_disconnect(security_t caller)
+int32_t client_test_psa_write_at_ipc_disconnect(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i041/test_i041.h b/api-tests/ff/ipc/test_i041/test_i041.h
index 2dbd15f..617639b 100644
--- a/api-tests/ff/ipc/test_i041/test_i041.h
+++ b/api-tests/ff/ipc/test_i041/test_i041.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i041_client_tests_list[];
 
-int32_t client_test_psa_write_at_ipc_disconnect(security_t);
+int32_t client_test_psa_write_at_ipc_disconnect(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i042/test_i042.c b/api-tests/ff/ipc/test_i042/test_i042.c
index 65dc153..522f558 100644
--- a/api-tests/ff/ipc/test_i042/test_i042.c
+++ b/api-tests/ff/ipc/test_i042/test_i042.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_with_null_handle(security_t caller)
+int32_t client_test_psa_write_with_null_handle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i042/test_i042.h b/api-tests/ff/ipc/test_i042/test_i042.h
index cbbffc4..fd25e4b 100644
--- a/api-tests/ff/ipc/test_i042/test_i042.h
+++ b/api-tests/ff/ipc/test_i042/test_i042.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i042_client_tests_list[];
 
-int32_t client_test_psa_write_with_null_handle(security_t);
+int32_t client_test_psa_write_with_null_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i043/test_i043.c b/api-tests/ff/ipc/test_i043/test_i043.c
index ea38f4c..aeeea43 100644
--- a/api-tests/ff/ipc/test_i043/test_i043.c
+++ b/api-tests/ff/ipc/test_i043/test_i043.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_with_invalid_handle(security_t caller)
+int32_t client_test_psa_write_with_invalid_handle(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i043/test_i043.h b/api-tests/ff/ipc/test_i043/test_i043.h
index efa051e..e618a3d 100644
--- a/api-tests/ff/ipc/test_i043/test_i043.h
+++ b/api-tests/ff/ipc/test_i043/test_i043.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i043_client_tests_list[];
 
-int32_t client_test_psa_write_with_invalid_handle(security_t);
+int32_t client_test_psa_write_with_invalid_handle(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i044/test_i044.c b/api-tests/ff/ipc/test_i044/test_i044.c
index c22a18b..339d84d 100644
--- a/api-tests/ff/ipc/test_i044/test_i044.c
+++ b/api-tests/ff/ipc/test_i044/test_i044.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_with_invec_equal_to_max_iovec(security_t caller)
+int32_t client_test_psa_write_with_invec_equal_to_max_iovec(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i044/test_i044.h b/api-tests/ff/ipc/test_i044/test_i044.h
index af30852..423b923 100644
--- a/api-tests/ff/ipc/test_i044/test_i044.h
+++ b/api-tests/ff/ipc/test_i044/test_i044.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i044_client_tests_list[];
 
-int32_t client_test_psa_write_with_invec_equal_to_max_iovec(security_t);
+int32_t client_test_psa_write_with_invec_equal_to_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i045/test_i045.c b/api-tests/ff/ipc/test_i045/test_i045.c
index 6448b6d..a046106 100644
--- a/api-tests/ff/ipc/test_i045/test_i045.c
+++ b/api-tests/ff/ipc/test_i045/test_i045.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_with_invec_greater_than_max_iovec(security_t caller)
+int32_t client_test_psa_write_with_invec_greater_than_max_iovec(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i045/test_i045.h b/api-tests/ff/ipc/test_i045/test_i045.h
index 452ab20..66221a8 100644
--- a/api-tests/ff/ipc/test_i045/test_i045.h
+++ b/api-tests/ff/ipc/test_i045/test_i045.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i045_client_tests_list[];
 
-int32_t client_test_psa_write_with_invec_greater_than_max_iovec(security_t);
+int32_t client_test_psa_write_with_invec_greater_than_max_iovec(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i046/test_i046.c b/api-tests/ff/ipc/test_i046/test_i046.c
index f627023..7281286 100644
--- a/api-tests/ff/ipc/test_i046/test_i046.c
+++ b/api-tests/ff/ipc/test_i046/test_i046.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_with_size_overflow(security_t caller)
+int32_t client_test_psa_write_with_size_overflow(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i046/test_i046.h b/api-tests/ff/ipc/test_i046/test_i046.h
index 874be97..340bd12 100644
--- a/api-tests/ff/ipc/test_i046/test_i046.h
+++ b/api-tests/ff/ipc/test_i046/test_i046.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i046_client_tests_list[];
 
-int32_t client_test_psa_write_with_size_overflow(security_t);
+int32_t client_test_psa_write_with_size_overflow(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i047/test_i047.c b/api-tests/ff/ipc/test_i047/test_i047.c
index ab98a95..3271b93 100644
--- a/api-tests/ff/ipc/test_i047/test_i047.c
+++ b/api-tests/ff/ipc/test_i047/test_i047.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_get_with_invalid_msg_pointer(security_t caller)
+int32_t client_test_psa_get_with_invalid_msg_pointer(caller_security_t caller)
 {
    psa_handle_t       handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i047/test_i047.h b/api-tests/ff/ipc/test_i047/test_i047.h
index a062df4..db30d76 100644
--- a/api-tests/ff/ipc/test_i047/test_i047.h
+++ b/api-tests/ff/ipc/test_i047/test_i047.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i047_client_tests_list[];
 
-int32_t client_test_psa_get_with_invalid_msg_pointer(security_t);
+int32_t client_test_psa_get_with_invalid_msg_pointer(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i048/test_i048.c b/api-tests/ff/ipc/test_i048/test_i048.c
index 7e8bb6d..13f6d79 100644
--- a/api-tests/ff/ipc/test_i048/test_i048.c
+++ b/api-tests/ff/ipc/test_i048/test_i048.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_invec_pointer(security_t caller)
+int32_t client_test_psa_call_with_invalid_invec_pointer(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
@@ -77,7 +77,7 @@
    /*
     * Selection of invalid invec pointer:
     *
-    * if caller == NONSECURE
+    * if caller == CALLER_NONSECURE
     *    // PSA RoT pointer
     *    invec_pointer = driver_mmio_region_base;
     * else
@@ -98,7 +98,7 @@
        return status;
    }
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
        invalid_invec = (psa_invec *) memory_desc->start;
    else
    {
@@ -118,7 +118,7 @@
    }
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -133,7 +133,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i048/test_i048.h b/api-tests/ff/ipc/test_i048/test_i048.h
index ee38e79..05101e2 100644
--- a/api-tests/ff/ipc/test_i048/test_i048.h
+++ b/api-tests/ff/ipc/test_i048/test_i048.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i048_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_invec_pointer(security_t);
+int32_t client_test_psa_call_with_invalid_invec_pointer(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i049/test_i049.c b/api-tests/ff/ipc/test_i049/test_i049.c
index f3f1664..db4b1f8 100644
--- a/api-tests/ff/ipc/test_i049/test_i049.c
+++ b/api-tests/ff/ipc/test_i049/test_i049.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_outvec_pointer(security_t caller)
+int32_t client_test_psa_call_with_invalid_outvec_pointer(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
@@ -77,7 +77,7 @@
    /*
     * Selection of invalid outvec pointer:
     *
-    * if caller == NONSECURE
+    * if caller == CALLER_NONSECURE
     *    // PSA RoT pointer
     *    outvec_pointer = driver_mmio_region_base;
     * else
@@ -98,7 +98,7 @@
        return status;
    }
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
        invalid_outvec = (psa_outvec *) memory_desc->start;
    else
    {
@@ -118,7 +118,7 @@
    }
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -133,7 +133,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i049/test_i049.h b/api-tests/ff/ipc/test_i049/test_i049.h
index 8a1e8d0..90aa10b 100644
--- a/api-tests/ff/ipc/test_i049/test_i049.h
+++ b/api-tests/ff/ipc/test_i049/test_i049.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i049_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_outvec_pointer(security_t);
+int32_t client_test_psa_call_with_invalid_outvec_pointer(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i050/test_i050.c b/api-tests/ff/ipc/test_i050/test_i050.c
index 9f616b1..46f09b5 100644
--- a/api-tests/ff/ipc/test_i050/test_i050.c
+++ b/api-tests/ff/ipc/test_i050/test_i050.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_invec_base(security_t caller)
+int32_t client_test_psa_call_with_invalid_invec_base(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
@@ -77,7 +77,7 @@
    /*
     * Selection of invalid invec pointer:
     *
-    * if caller == NONSECURE
+    * if caller == CALLER_NONSECURE
     *    // PSA RoT pointer
     *    invalid_base = driver_mmio_region_base;
     * else
@@ -98,7 +98,7 @@
        return status;
    }
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
        invalid_base = (addr_t *) memory_desc->start;
    else
    {
@@ -118,7 +118,7 @@
    }
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -135,7 +135,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i050/test_i050.h b/api-tests/ff/ipc/test_i050/test_i050.h
index c31a349..0c3e111 100644
--- a/api-tests/ff/ipc/test_i050/test_i050.h
+++ b/api-tests/ff/ipc/test_i050/test_i050.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i050_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_invec_base(security_t);
+int32_t client_test_psa_call_with_invalid_invec_base(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i051/test_i051.c b/api-tests/ff/ipc/test_i051/test_i051.c
index 6a1f875..0183fc9 100644
--- a/api-tests/ff/ipc/test_i051/test_i051.c
+++ b/api-tests/ff/ipc/test_i051/test_i051.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_outvec_base(security_t caller)
+int32_t client_test_psa_call_with_invalid_outvec_base(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
@@ -77,7 +77,7 @@
    /*
     * Selection of invalid outvec pointer:
     *
-    * if caller == NONSECURE
+    * if caller == CALLER_NONSECURE
     *    // PSA RoT pointer
     *    invalid_base = driver_mmio_region_base;
     * else
@@ -98,7 +98,7 @@
        return status;
    }
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
        invalid_base = (addr_t *) memory_desc->start;
    else
    {
@@ -118,7 +118,7 @@
    }
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -135,7 +135,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i051/test_i051.h b/api-tests/ff/ipc/test_i051/test_i051.h
index 38cbdd0..4f76c00 100644
--- a/api-tests/ff/ipc/test_i051/test_i051.h
+++ b/api-tests/ff/ipc/test_i051/test_i051.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i051_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_outvec_base(security_t);
+int32_t client_test_psa_call_with_invalid_outvec_base(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i052/test_i052.c b/api-tests/ff/ipc/test_i052/test_i052.c
index 5b14c37..f90a48f 100644
--- a/api-tests/ff/ipc/test_i052/test_i052.c
+++ b/api-tests/ff/ipc/test_i052/test_i052.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_invec_end_addr(security_t caller)
+int32_t client_test_psa_call_with_invalid_invec_end_addr(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
@@ -78,7 +78,7 @@
    /*
     * Selection of invalid size for psa_invec:
     *
-    * if caller == NONSECURE
+    * if caller == CALLER_NONSECURE
     *    valid_base = nspe_mmio_region_base;
     *    invalid_size = (driver_mmio_region_base - nspe_mmio_region_base + 1);
     * else
@@ -97,7 +97,7 @@
        return status;
    }
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
        memory_cfg_id = MEMORY_NSPE_MMIO;
    else
        memory_cfg_id = MEMORY_SERVER_PARTITION_MMIO;
@@ -116,7 +116,7 @@
    invalid_size = (memory_desc_driver->start - memory_desc->start + 1);
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -133,7 +133,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i052/test_i052.h b/api-tests/ff/ipc/test_i052/test_i052.h
index 62acbb8..32edabc 100644
--- a/api-tests/ff/ipc/test_i052/test_i052.h
+++ b/api-tests/ff/ipc/test_i052/test_i052.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i052_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_invec_end_addr(security_t);
+int32_t client_test_psa_call_with_invalid_invec_end_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i053/test_i053.c b/api-tests/ff/ipc/test_i053/test_i053.c
index 108c24b..025f5cd 100644
--- a/api-tests/ff/ipc/test_i053/test_i053.c
+++ b/api-tests/ff/ipc/test_i053/test_i053.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_invalid_outvec_end_addr(security_t caller)
+int32_t client_test_psa_call_with_invalid_outvec_end_addr(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
@@ -78,7 +78,7 @@
    /*
     * Selection of invalid size for psa_outvec:
     *
-    * if caller == NONSECURE
+    * if caller == CALLER_NONSECURE
     *    valid_base = nspe_mmio_region_base;
     *    invalid_size = (driver_mmio_region_base - nspe_mmio_region_base + 1);
     * else
@@ -97,7 +97,7 @@
        return status;
    }
 
-   if (caller == NONSECURE)
+   if (caller == CALLER_NONSECURE)
        memory_cfg_id = MEMORY_NSPE_MMIO;
    else
        memory_cfg_id = MEMORY_SERVER_PARTITION_MMIO;
@@ -116,7 +116,7 @@
    invalid_size = (memory_desc_driver->start - memory_desc->start + 1);
 
    /* Setting boot.state before test check */
-   boot_state = (caller == NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
+   boot_state = (caller == CALLER_NONSECURE) ? BOOT_EXPECTED_NS : BOOT_EXPECTED_S;
    if (val->set_boot_flag(boot_state))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
@@ -133,7 +133,7 @@
     * a PROGRAMMER ERROR will panic or return PSA_ERROR_PROGRAMMER_ERROR.
     * For SPE caller, it must panic.
     */
-   if (caller == NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
+   if (caller == CALLER_NONSECURE && status_of_call == PSA_ERROR_PROGRAMMER_ERROR)
    {
        psa->close(handle);
        return VAL_STATUS_SUCCESS;
diff --git a/api-tests/ff/ipc/test_i053/test_i053.h b/api-tests/ff/ipc/test_i053/test_i053.h
index 25bfccc..d1780df 100644
--- a/api-tests/ff/ipc/test_i053/test_i053.h
+++ b/api-tests/ff/ipc/test_i053/test_i053.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i053_client_tests_list[];
 
-int32_t client_test_psa_call_with_invalid_outvec_end_addr(security_t);
+int32_t client_test_psa_call_with_invalid_outvec_end_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i054/test_i054.c b/api-tests/ff/ipc/test_i054/test_i054.c
index 80160ca..8f6f25f 100644
--- a/api-tests/ff/ipc/test_i054/test_i054.c
+++ b/api-tests/ff/ipc/test_i054/test_i054.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_call_with_not_writable_outvec_base(security_t caller)
+int32_t client_test_psa_call_with_not_writable_outvec_base(caller_security_t caller)
 {
    int32_t                 status = VAL_STATUS_SUCCESS;
    psa_handle_t            handle = 0;
diff --git a/api-tests/ff/ipc/test_i054/test_i054.h b/api-tests/ff/ipc/test_i054/test_i054.h
index a86d56a..74d4f46 100644
--- a/api-tests/ff/ipc/test_i054/test_i054.h
+++ b/api-tests/ff/ipc/test_i054/test_i054.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i054_client_tests_list[];
 
-int32_t client_test_psa_call_with_not_writable_outvec_base(security_t);
+int32_t client_test_psa_call_with_not_writable_outvec_base(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i055/test_i055.c b/api-tests/ff/ipc/test_i055/test_i055.c
index 033a99a..c5d72a7 100644
--- a/api-tests/ff/ipc/test_i055/test_i055.c
+++ b/api-tests/ff/ipc/test_i055/test_i055.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_with_invalid_buffer_addr(security_t caller)
+int32_t client_test_psa_read_with_invalid_buffer_addr(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    uint8_t            data = 0x11;
diff --git a/api-tests/ff/ipc/test_i055/test_i055.h b/api-tests/ff/ipc/test_i055/test_i055.h
index 5d63951..0bbd7d4 100644
--- a/api-tests/ff/ipc/test_i055/test_i055.h
+++ b/api-tests/ff/ipc/test_i055/test_i055.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i055_client_tests_list[];
 
-int32_t client_test_psa_read_with_invalid_buffer_addr(security_t);
+int32_t client_test_psa_read_with_invalid_buffer_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i056/test_i056.c b/api-tests/ff/ipc/test_i056/test_i056.c
index 7547d33..2b1bee3 100644
--- a/api-tests/ff/ipc/test_i056/test_i056.c
+++ b/api-tests/ff/ipc/test_i056/test_i056.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_read_with_not_writable_buffer_addr(security_t caller)
+int32_t client_test_psa_read_with_not_writable_buffer_addr(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    uint8_t            data = 0x11;
diff --git a/api-tests/ff/ipc/test_i056/test_i056.h b/api-tests/ff/ipc/test_i056/test_i056.h
index 0cf6edc..f93524e 100644
--- a/api-tests/ff/ipc/test_i056/test_i056.h
+++ b/api-tests/ff/ipc/test_i056/test_i056.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i056_client_tests_list[];
 
-int32_t client_test_psa_read_with_not_writable_buffer_addr(security_t);
+int32_t client_test_psa_read_with_not_writable_buffer_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i057/test_i057.c b/api-tests/ff/ipc/test_i057/test_i057.c
index 05967d4..ca43cb9 100644
--- a/api-tests/ff/ipc/test_i057/test_i057.c
+++ b/api-tests/ff/ipc/test_i057/test_i057.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_write_with_invalid_buffer_addr(security_t caller)
+int32_t client_test_psa_write_with_invalid_buffer_addr(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    uint8_t            data = 0x11;
diff --git a/api-tests/ff/ipc/test_i057/test_i057.h b/api-tests/ff/ipc/test_i057/test_i057.h
index 8aba95e..de59b55 100644
--- a/api-tests/ff/ipc/test_i057/test_i057.h
+++ b/api-tests/ff/ipc/test_i057/test_i057.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i057_client_tests_list[];
 
-int32_t client_test_psa_write_with_invalid_buffer_addr(security_t);
+int32_t client_test_psa_write_with_invalid_buffer_addr(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i058/test_i058.c b/api-tests/ff/ipc/test_i058/test_i058.c
index 6639cd0..a9a242e 100644
--- a/api-tests/ff/ipc/test_i058/test_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_i058.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_doorbell_signal(security_t caller)
+int32_t client_test_psa_doorbell_signal(caller_security_t caller)
 {
    int32_t            status = VAL_STATUS_SUCCESS;
    psa_handle_t       handle = 0;
diff --git a/api-tests/ff/ipc/test_i058/test_i058.h b/api-tests/ff/ipc/test_i058/test_i058.h
index 50ba73b..e08e5ae 100644
--- a/api-tests/ff/ipc/test_i058/test_i058.h
+++ b/api-tests/ff/ipc/test_i058/test_i058.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i058_client_tests_list[];
 
-int32_t client_test_psa_doorbell_signal(security_t);
+int32_t client_test_psa_doorbell_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i059/test_i059.c b/api-tests/ff/ipc/test_i059/test_i059.c
index 0f4c3b7..8a4dc77 100644
--- a/api-tests/ff/ipc/test_i059/test_i059.c
+++ b/api-tests/ff/ipc/test_i059/test_i059.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_notify_with_neg_part_id(security_t caller)
+int32_t client_test_psa_notify_with_neg_part_id(caller_security_t caller)
 {
    return VAL_STATUS_SUCCESS;
 }
diff --git a/api-tests/ff/ipc/test_i059/test_i059.h b/api-tests/ff/ipc/test_i059/test_i059.h
index fd306c1..0fc6fdd 100644
--- a/api-tests/ff/ipc/test_i059/test_i059.h
+++ b/api-tests/ff/ipc/test_i059/test_i059.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i059_client_tests_list[];
 
-int32_t client_test_psa_notify_with_neg_part_id(security_t);
+int32_t client_test_psa_notify_with_neg_part_id(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i060/test_i060.c b/api-tests/ff/ipc/test_i060/test_i060.c
index d2f17a4..d9521c4 100644
--- a/api-tests/ff/ipc/test_i060/test_i060.c
+++ b/api-tests/ff/ipc/test_i060/test_i060.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_notify_with_invalid_pos_part_id(security_t caller)
+int32_t client_test_psa_notify_with_invalid_pos_part_id(caller_security_t caller)
 {
    return VAL_STATUS_SUCCESS;
 }
diff --git a/api-tests/ff/ipc/test_i060/test_i060.h b/api-tests/ff/ipc/test_i060/test_i060.h
index 88d1b1b..f9813ed 100644
--- a/api-tests/ff/ipc/test_i060/test_i060.h
+++ b/api-tests/ff/ipc/test_i060/test_i060.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i060_client_tests_list[];
 
-int32_t client_test_psa_notify_with_invalid_pos_part_id(security_t);
+int32_t client_test_psa_notify_with_invalid_pos_part_id(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i061/test_i061.c b/api-tests/ff/ipc/test_i061/test_i061.c
index 4be21a6..c21fe56 100644
--- a/api-tests/ff/ipc/test_i061/test_i061.c
+++ b/api-tests/ff/ipc/test_i061/test_i061.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_clear_at_unasserted_doorbell_sig(security_t caller)
+int32_t client_test_psa_clear_at_unasserted_doorbell_sig(caller_security_t caller)
 {
    return VAL_STATUS_SUCCESS;
 }
diff --git a/api-tests/ff/ipc/test_i061/test_i061.h b/api-tests/ff/ipc/test_i061/test_i061.h
index d7e50a6..efd59e5 100644
--- a/api-tests/ff/ipc/test_i061/test_i061.h
+++ b/api-tests/ff/ipc/test_i061/test_i061.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i061_client_tests_list[];
 
-int32_t client_test_psa_clear_at_unasserted_doorbell_sig(security_t);
+int32_t client_test_psa_clear_at_unasserted_doorbell_sig(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i062/test_i062.c b/api-tests/ff/ipc/test_i062/test_i062.c
index f9ff4cb..ca87dc5 100644
--- a/api-tests/ff/ipc/test_i062/test_i062.c
+++ b/api-tests/ff/ipc/test_i062/test_i062.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_wait_with_unassigned_signal(security_t caller)
+int32_t client_test_psa_wait_with_unassigned_signal(caller_security_t caller)
 {
    return VAL_STATUS_SUCCESS;
 }
diff --git a/api-tests/ff/ipc/test_i062/test_i062.h b/api-tests/ff/ipc/test_i062/test_i062.h
index fdceda8..13555c7 100644
--- a/api-tests/ff/ipc/test_i062/test_i062.h
+++ b/api-tests/ff/ipc/test_i062/test_i062.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i062_client_tests_list[];
 
-int32_t client_test_psa_wait_with_unassigned_signal(security_t);
+int32_t client_test_psa_wait_with_unassigned_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i063/test_i063.c b/api-tests/ff/ipc/test_i063/test_i063.c
index 8853f3d..1678877 100644
--- a/api-tests/ff/ipc/test_i063/test_i063.c
+++ b/api-tests/ff/ipc/test_i063/test_i063.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_wait_signal_mask(security_t caller)
+int32_t client_test_psa_wait_signal_mask(caller_security_t caller)
 {
    psa_handle_t     handle = 0;
 
diff --git a/api-tests/ff/ipc/test_i063/test_i063.h b/api-tests/ff/ipc/test_i063/test_i063.h
index 2afe682..867f186 100644
--- a/api-tests/ff/ipc/test_i063/test_i063.h
+++ b/api-tests/ff/ipc/test_i063/test_i063.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i063_client_tests_list[];
 
-int32_t client_test_psa_wait_signal_mask(security_t);
+int32_t client_test_psa_wait_signal_mask(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i064/test_i064.c b/api-tests/ff/ipc/test_i064/test_i064.c
index f037cfa..9f8cbee 100644
--- a/api-tests/ff/ipc/test_i064/test_i064.c
+++ b/api-tests/ff/ipc/test_i064/test_i064.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_eoi_with_non_intr_signal(security_t caller)
+int32_t client_test_psa_eoi_with_non_intr_signal(caller_security_t caller)
 {
    psa_handle_t           handle;
    driver_test_fn_id_t    driver_test_fn_id = TEST_PSA_EOI_WITH_NON_INTR_SIGNAL;
diff --git a/api-tests/ff/ipc/test_i064/test_i064.h b/api-tests/ff/ipc/test_i064/test_i064.h
index 2f964f1..d26010e 100644
--- a/api-tests/ff/ipc/test_i064/test_i064.h
+++ b/api-tests/ff/ipc/test_i064/test_i064.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i064_client_tests_list[];
 
-int32_t client_test_psa_eoi_with_non_intr_signal(security_t);
+int32_t client_test_psa_eoi_with_non_intr_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i065/test_i065.c b/api-tests/ff/ipc/test_i065/test_i065.c
index 15081fb..dbc492d 100644
--- a/api-tests/ff/ipc/test_i065/test_i065.c
+++ b/api-tests/ff/ipc/test_i065/test_i065.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_eoi_with_unasserted_signal(security_t caller)
+int32_t client_test_psa_eoi_with_unasserted_signal(caller_security_t caller)
 {
    psa_handle_t           handle;
    driver_test_fn_id_t    driver_test_fn_id = TEST_PSA_EOI_WITH_UNASSERTED_SIGNAL;
diff --git a/api-tests/ff/ipc/test_i065/test_i065.h b/api-tests/ff/ipc/test_i065/test_i065.h
index 74289ac..7ea2eb0 100644
--- a/api-tests/ff/ipc/test_i065/test_i065.h
+++ b/api-tests/ff/ipc/test_i065/test_i065.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i065_client_tests_list[];
 
-int32_t client_test_psa_eoi_with_unasserted_signal(security_t);
+int32_t client_test_psa_eoi_with_unasserted_signal(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i066/test_i066.c b/api-tests/ff/ipc/test_i066/test_i066.c
index c452dc0..cb0c1ce 100644
--- a/api-tests/ff/ipc/test_i066/test_i066.c
+++ b/api-tests/ff/ipc/test_i066/test_i066.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_eoi_with_multiple_signals(security_t caller)
+int32_t client_test_psa_eoi_with_multiple_signals(caller_security_t caller)
 {
    psa_handle_t           handle;
    driver_test_fn_id_t    driver_test_fn_id = TEST_PSA_EOI_WITH_MULTIPLE_SIGNALS;
diff --git a/api-tests/ff/ipc/test_i066/test_i066.h b/api-tests/ff/ipc/test_i066/test_i066.h
index bc3b9cf..ce908ae 100644
--- a/api-tests/ff/ipc/test_i066/test_i066.h
+++ b/api-tests/ff/ipc/test_i066/test_i066.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i066_client_tests_list[];
 
-int32_t client_test_psa_eoi_with_multiple_signals(security_t);
+int32_t client_test_psa_eoi_with_multiple_signals(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i067/test_i067.c b/api-tests/ff/ipc/test_i067/test_i067.c
index f1f2228..55af02e 100644
--- a/api-tests/ff/ipc/test_i067/test_i067.c
+++ b/api-tests/ff/ipc/test_i067/test_i067.c
@@ -36,7 +36,7 @@
     NULL,
 };
 
-int32_t client_test_dynamic_mem_alloc_fn(security_t caller)
+int32_t client_test_dynamic_mem_alloc_fn(caller_security_t caller)
 {
   /* Check heap memory support available to secure partition */
 #ifdef SP_HEAP_MEM_SUPP
diff --git a/api-tests/ff/ipc/test_i067/test_i067.h b/api-tests/ff/ipc/test_i067/test_i067.h
index f84da6e..8e40820 100644
--- a/api-tests/ff/ipc/test_i067/test_i067.h
+++ b/api-tests/ff/ipc/test_i067/test_i067.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i067_client_tests_list[];
 
-int32_t client_test_dynamic_mem_alloc_fn(security_t);
+int32_t client_test_dynamic_mem_alloc_fn(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i068/test_i068.c b/api-tests/ff/ipc/test_i068/test_i068.c
index 18b3c87..b5038ce 100644
--- a/api-tests/ff/ipc/test_i068/test_i068.c
+++ b/api-tests/ff/ipc/test_i068/test_i068.c
@@ -55,7 +55,7 @@
 {
 }
 
-int32_t client_test_instr_exec_from_writable_mem(security_t caller)
+int32_t client_test_instr_exec_from_writable_mem(caller_security_t caller)
 {
   val->print(PRINT_TEST, "[Check 1] Test Instr execution from writable memory\n", 0);
 
diff --git a/api-tests/ff/ipc/test_i068/test_i068.h b/api-tests/ff/ipc/test_i068/test_i068.h
index 4426f38..4893548 100644
--- a/api-tests/ff/ipc/test_i068/test_i068.h
+++ b/api-tests/ff/ipc/test_i068/test_i068.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i068_client_tests_list[];
 
-int32_t client_test_instr_exec_from_writable_mem(security_t);
+int32_t client_test_instr_exec_from_writable_mem(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i069/test_i069.c b/api-tests/ff/ipc/test_i069/test_i069.c
index 1955b9d..27706e6 100644
--- a/api-tests/ff/ipc/test_i069/test_i069.c
+++ b/api-tests/ff/ipc/test_i069/test_i069.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_write_to_code_space(security_t caller)
+int32_t client_test_write_to_code_space(caller_security_t caller)
 {
   int32_t *p;
 
diff --git a/api-tests/ff/ipc/test_i069/test_i069.h b/api-tests/ff/ipc/test_i069/test_i069.h
index fbb3e50..64d06b5 100644
--- a/api-tests/ff/ipc/test_i069/test_i069.h
+++ b/api-tests/ff/ipc/test_i069/test_i069.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i069_client_tests_list[];
 
-int32_t client_test_write_to_code_space(security_t);
+int32_t client_test_write_to_code_space(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i070/test_i070.c b/api-tests/ff/ipc/test_i070/test_i070.c
index c9d5ac1..c5d9f94 100644
--- a/api-tests/ff/ipc/test_i070/test_i070.c
+++ b/api-tests/ff/ipc/test_i070/test_i070.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_write_to_const_data(security_t caller)
+int32_t client_test_write_to_const_data(caller_security_t caller)
 {
   const char *string = "This text should be in RO space";
   char       *p;
diff --git a/api-tests/ff/ipc/test_i070/test_i070.h b/api-tests/ff/ipc/test_i070/test_i070.h
index 4189b89..5cc3046 100644
--- a/api-tests/ff/ipc/test_i070/test_i070.h
+++ b/api-tests/ff/ipc/test_i070/test_i070.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i070_client_tests_list[];
 
-int32_t client_test_write_to_const_data(security_t);
+int32_t client_test_write_to_const_data(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i071/test_i071.c b/api-tests/ff/ipc/test_i071/test_i071.c
index 3e7774d..130ebf0 100644
--- a/api-tests/ff/ipc/test_i071/test_i071.c
+++ b/api-tests/ff/ipc/test_i071/test_i071.c
@@ -33,7 +33,7 @@
     NULL,
 };
 
-int32_t client_test_mem_manipulation_fn(security_t caller)
+int32_t client_test_mem_manipulation_fn(caller_security_t caller)
 {
   uint8_t    buffer[BUFF_SIZE] = {0};
   uint8_t    buffer1[BUFF_SIZE] = {0};
diff --git a/api-tests/ff/ipc/test_i071/test_i071.h b/api-tests/ff/ipc/test_i071/test_i071.h
index bf1bacf..a18001b 100644
--- a/api-tests/ff/ipc/test_i071/test_i071.h
+++ b/api-tests/ff/ipc/test_i071/test_i071.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i071_client_tests_list[];
 
-int32_t client_test_mem_manipulation_fn(security_t);
+int32_t client_test_mem_manipulation_fn(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i072/test_i072.c b/api-tests/ff/ipc/test_i072/test_i072.c
index aa586e7..41e2b1a 100644
--- a/api-tests/ff/ipc/test_i072/test_i072.c
+++ b/api-tests/ff/ipc/test_i072/test_i072.c
@@ -55,7 +55,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_nspe_read_app_rot_variable(security_t caller)
+int32_t client_test_nspe_read_app_rot_variable(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
@@ -93,7 +93,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_app_rot_variable(security_t caller)
+int32_t client_test_nspe_write_app_rot_variable(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
diff --git a/api-tests/ff/ipc/test_i072/test_i072.h b/api-tests/ff/ipc/test_i072/test_i072.h
index 586f8e5..565aae7 100644
--- a/api-tests/ff/ipc/test_i072/test_i072.h
+++ b/api-tests/ff/ipc/test_i072/test_i072.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i072_client_tests_list[];
 
-int32_t client_test_nspe_read_app_rot_variable(security_t);
-int32_t client_test_nspe_write_app_rot_variable(security_t);
+int32_t client_test_nspe_read_app_rot_variable(caller_security_t);
+int32_t client_test_nspe_write_app_rot_variable(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i073/test_i073.c b/api-tests/ff/ipc/test_i073/test_i073.c
index 9172ec4..01a0a2a 100644
--- a/api-tests/ff/ipc/test_i073/test_i073.c
+++ b/api-tests/ff/ipc/test_i073/test_i073.c
@@ -55,7 +55,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_nspe_read_app_rot_stack(security_t caller)
+int32_t client_test_nspe_read_app_rot_stack(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
@@ -93,7 +93,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_app_rot_stack(security_t caller)
+int32_t client_test_nspe_write_app_rot_stack(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
diff --git a/api-tests/ff/ipc/test_i073/test_i073.h b/api-tests/ff/ipc/test_i073/test_i073.h
index 1badc21..8cfdbe5 100644
--- a/api-tests/ff/ipc/test_i073/test_i073.h
+++ b/api-tests/ff/ipc/test_i073/test_i073.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i073_client_tests_list[];
 
-int32_t client_test_nspe_read_app_rot_stack(security_t);
-int32_t client_test_nspe_write_app_rot_stack(security_t);
+int32_t client_test_nspe_read_app_rot_stack(caller_security_t);
+int32_t client_test_nspe_write_app_rot_stack(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i074/test_i074.c b/api-tests/ff/ipc/test_i074/test_i074.c
index bc89152..210ab6a 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_i074.c
@@ -60,7 +60,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_nspe_read_app_rot_heap(security_t caller)
+int32_t client_test_nspe_read_app_rot_heap(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint8_t  data = DATA_VALUE;
@@ -98,7 +98,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_app_rot_heap(security_t caller)
+int32_t client_test_nspe_write_app_rot_heap(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint8_t  data = DATA_VALUE;
@@ -129,14 +129,14 @@
    return VAL_STATUS_SUCCESS;
 }
 #else
-int32_t client_test_nspe_read_app_rot_heap(security_t caller)
+int32_t client_test_nspe_read_app_rot_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 1] Test NSPE reading APP-RoT heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
    return RESULT_SKIP(VAL_STATUS_HEAP_NOT_AVAILABLE);
 }
 
-int32_t client_test_nspe_write_app_rot_heap(security_t caller)
+int32_t client_test_nspe_write_app_rot_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 2] Test NSPE writing APP-RoT heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
diff --git a/api-tests/ff/ipc/test_i074/test_i074.h b/api-tests/ff/ipc/test_i074/test_i074.h
index f6d1d8d..ad09a7f 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.h
+++ b/api-tests/ff/ipc/test_i074/test_i074.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i074_client_tests_list[];
 
-int32_t client_test_nspe_read_app_rot_heap(security_t);
-int32_t client_test_nspe_write_app_rot_heap(security_t);
+int32_t client_test_nspe_read_app_rot_heap(caller_security_t);
+int32_t client_test_nspe_write_app_rot_heap(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i075/test_i075.c b/api-tests/ff/ipc/test_i075/test_i075.c
index 62c7b6a..2aed38a 100644
--- a/api-tests/ff/ipc/test_i075/test_i075.c
+++ b/api-tests/ff/ipc/test_i075/test_i075.c
@@ -57,7 +57,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_nspe_read_app_rot_mmio(security_t caller)
+int32_t client_test_nspe_read_app_rot_mmio(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = DATA_VALUE;
@@ -95,7 +95,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_app_rot_mmio(security_t caller)
+int32_t client_test_nspe_write_app_rot_mmio(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = DATA_VALUE;
diff --git a/api-tests/ff/ipc/test_i075/test_i075.h b/api-tests/ff/ipc/test_i075/test_i075.h
index 5cae303..5fcb624 100644
--- a/api-tests/ff/ipc/test_i075/test_i075.h
+++ b/api-tests/ff/ipc/test_i075/test_i075.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i075_client_tests_list[];
 
-int32_t client_test_nspe_read_app_rot_mmio(security_t);
-int32_t client_test_nspe_write_app_rot_mmio(security_t);
+int32_t client_test_nspe_read_app_rot_mmio(caller_security_t);
+int32_t client_test_nspe_write_app_rot_mmio(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i076/test_i076.c b/api-tests/ff/ipc/test_i076/test_i076.c
index 3fc077b..765e502 100644
--- a/api-tests/ff/ipc/test_i076/test_i076.c
+++ b/api-tests/ff/ipc/test_i076/test_i076.c
@@ -71,7 +71,7 @@
    psa->close(*handle);
 }
 
-int32_t client_test_nspe_read_psa_rot_variable(security_t caller)
+int32_t client_test_nspe_read_psa_rot_variable(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
@@ -114,7 +114,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_psa_rot_variable(security_t caller)
+int32_t client_test_nspe_write_psa_rot_variable(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
diff --git a/api-tests/ff/ipc/test_i076/test_i076.h b/api-tests/ff/ipc/test_i076/test_i076.h
index 1e5e11f..2114ac5 100644
--- a/api-tests/ff/ipc/test_i076/test_i076.h
+++ b/api-tests/ff/ipc/test_i076/test_i076.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i076_client_tests_list[];
 
-int32_t client_test_nspe_read_psa_rot_variable(security_t);
-int32_t client_test_nspe_write_psa_rot_variable(security_t);
+int32_t client_test_nspe_read_psa_rot_variable(caller_security_t);
+int32_t client_test_nspe_write_psa_rot_variable(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i077/test_i077.c b/api-tests/ff/ipc/test_i077/test_i077.c
index 5f4e4d7..4cbad88 100644
--- a/api-tests/ff/ipc/test_i077/test_i077.c
+++ b/api-tests/ff/ipc/test_i077/test_i077.c
@@ -72,7 +72,7 @@
 }
 
 
-int32_t client_test_nspe_read_psa_rot_stack(security_t caller)
+int32_t client_test_nspe_read_psa_rot_stack(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
@@ -115,7 +115,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_psa_rot_stack(security_t caller)
+int32_t client_test_nspe_write_psa_rot_stack(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
diff --git a/api-tests/ff/ipc/test_i077/test_i077.h b/api-tests/ff/ipc/test_i077/test_i077.h
index 57a36a8..4a4133c 100644
--- a/api-tests/ff/ipc/test_i077/test_i077.h
+++ b/api-tests/ff/ipc/test_i077/test_i077.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i077_client_tests_list[];
 
-int32_t client_test_nspe_read_psa_rot_stack(security_t);
-int32_t client_test_nspe_write_psa_rot_stack(security_t);
+int32_t client_test_nspe_read_psa_rot_stack(caller_security_t);
+int32_t client_test_nspe_write_psa_rot_stack(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i078/test_i078.c b/api-tests/ff/ipc/test_i078/test_i078.c
index d46365c..c600a9f 100644
--- a/api-tests/ff/ipc/test_i078/test_i078.c
+++ b/api-tests/ff/ipc/test_i078/test_i078.c
@@ -74,7 +74,7 @@
    psa->close(*handle);
 }
 
-int32_t client_test_nspe_read_psa_rot_heap(security_t caller)
+int32_t client_test_nspe_read_psa_rot_heap(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint8_t      data = DATA_VALUE;
@@ -117,7 +117,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_psa_rot_heap(security_t caller)
+int32_t client_test_nspe_write_psa_rot_heap(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint8_t      data = DATA_VALUE;
@@ -146,14 +146,14 @@
    return VAL_STATUS_SUCCESS;
 }
 #else
-int32_t client_test_nspe_read_psa_rot_heap(security_t caller)
+int32_t client_test_nspe_read_psa_rot_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 1] Test NSPE reading PSA-RoT heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
    return RESULT_SKIP(VAL_STATUS_HEAP_NOT_AVAILABLE);
 }
 
-int32_t client_test_nspe_write_psa_rot_heap(security_t caller)
+int32_t client_test_nspe_write_psa_rot_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 2] Test NSPE writing PSA-RoT heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
diff --git a/api-tests/ff/ipc/test_i078/test_i078.h b/api-tests/ff/ipc/test_i078/test_i078.h
index 207f8d3..bc44b59 100644
--- a/api-tests/ff/ipc/test_i078/test_i078.h
+++ b/api-tests/ff/ipc/test_i078/test_i078.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i078_client_tests_list[];
 
-int32_t client_test_nspe_read_psa_rot_heap(security_t);
-int32_t client_test_nspe_write_psa_rot_heap(security_t);
+int32_t client_test_nspe_read_psa_rot_heap(caller_security_t);
+int32_t client_test_nspe_write_psa_rot_heap(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i079/test_i079.c b/api-tests/ff/ipc/test_i079/test_i079.c
index 11c66f8..323a548 100644
--- a/api-tests/ff/ipc/test_i079/test_i079.c
+++ b/api-tests/ff/ipc/test_i079/test_i079.c
@@ -71,7 +71,7 @@
    psa->close(*handle);
 }
 
-int32_t client_test_nspe_read_psa_rot_mmio(security_t caller)
+int32_t client_test_nspe_read_psa_rot_mmio(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE;
@@ -114,7 +114,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_nspe_write_psa_rot_mmio(security_t caller)
+int32_t client_test_nspe_write_psa_rot_mmio(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE;
diff --git a/api-tests/ff/ipc/test_i079/test_i079.h b/api-tests/ff/ipc/test_i079/test_i079.h
index c5ab49c..507d0cb 100644
--- a/api-tests/ff/ipc/test_i079/test_i079.h
+++ b/api-tests/ff/ipc/test_i079/test_i079.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i079_client_tests_list[];
 
-int32_t client_test_nspe_read_psa_rot_mmio(security_t);
-int32_t client_test_nspe_write_psa_rot_mmio(security_t);
+int32_t client_test_nspe_read_psa_rot_mmio(caller_security_t);
+int32_t client_test_nspe_write_psa_rot_mmio(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i080/test_i080.c b/api-tests/ff/ipc/test_i080/test_i080.c
index bd1bd36..4d4915c 100644
--- a/api-tests/ff/ipc/test_i080/test_i080.c
+++ b/api-tests/ff/ipc/test_i080/test_i080.c
@@ -71,7 +71,7 @@
    psa->close(*handle);
 }
 
-int32_t client_test_app_rot_read_psa_rot_variable(security_t caller)
+int32_t client_test_app_rot_read_psa_rot_variable(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
@@ -114,7 +114,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_app_rot_write_psa_rot_variable(security_t caller)
+int32_t client_test_app_rot_write_psa_rot_variable(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
diff --git a/api-tests/ff/ipc/test_i080/test_i080.h b/api-tests/ff/ipc/test_i080/test_i080.h
index fdbe7e9..d45c93c 100644
--- a/api-tests/ff/ipc/test_i080/test_i080.h
+++ b/api-tests/ff/ipc/test_i080/test_i080.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i080_client_tests_list[];
 
-int32_t client_test_app_rot_read_psa_rot_variable(security_t);
-int32_t client_test_app_rot_write_psa_rot_variable(security_t);
+int32_t client_test_app_rot_read_psa_rot_variable(caller_security_t);
+int32_t client_test_app_rot_write_psa_rot_variable(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i081/test_i081.c b/api-tests/ff/ipc/test_i081/test_i081.c
index 42c0765..027f9ae 100644
--- a/api-tests/ff/ipc/test_i081/test_i081.c
+++ b/api-tests/ff/ipc/test_i081/test_i081.c
@@ -72,7 +72,7 @@
 }
 
 
-int32_t client_test_app_rot_read_psa_rot_stack(security_t caller)
+int32_t client_test_app_rot_read_psa_rot_stack(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
@@ -115,7 +115,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_app_rot_write_psa_rot_stack(security_t caller)
+int32_t client_test_app_rot_write_psa_rot_stack(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE1;
diff --git a/api-tests/ff/ipc/test_i081/test_i081.h b/api-tests/ff/ipc/test_i081/test_i081.h
index c62a89b..6410d70 100644
--- a/api-tests/ff/ipc/test_i081/test_i081.h
+++ b/api-tests/ff/ipc/test_i081/test_i081.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i081_client_tests_list[];
 
-int32_t client_test_app_rot_read_psa_rot_stack(security_t);
-int32_t client_test_app_rot_write_psa_rot_stack(security_t);
+int32_t client_test_app_rot_read_psa_rot_stack(caller_security_t);
+int32_t client_test_app_rot_write_psa_rot_stack(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i082/test_i082.c b/api-tests/ff/ipc/test_i082/test_i082.c
index 05e3f84..cb8a085 100644
--- a/api-tests/ff/ipc/test_i082/test_i082.c
+++ b/api-tests/ff/ipc/test_i082/test_i082.c
@@ -74,7 +74,7 @@
    psa->close(*handle);
 }
 
-int32_t client_test_app_rot_read_psa_rot_heap(security_t caller)
+int32_t client_test_app_rot_read_psa_rot_heap(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint8_t      data = DATA_VALUE;
@@ -117,7 +117,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_app_rot_write_psa_rot_heap(security_t caller)
+int32_t client_test_app_rot_write_psa_rot_heap(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint8_t      data = DATA_VALUE;
@@ -146,14 +146,14 @@
    return VAL_STATUS_SUCCESS;
 }
 #else
-int32_t client_test_app_rot_read_psa_rot_heap(security_t caller)
+int32_t client_test_app_rot_read_psa_rot_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 1] Test APP-RoT reading PSA-RoT heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
    return RESULT_SKIP(VAL_STATUS_HEAP_NOT_AVAILABLE);
 }
 
-int32_t client_test_app_rot_write_psa_rot_heap(security_t caller)
+int32_t client_test_app_rot_write_psa_rot_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 2] Test APP-RoT writing PSA-RoT heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
diff --git a/api-tests/ff/ipc/test_i082/test_i082.h b/api-tests/ff/ipc/test_i082/test_i082.h
index accc73f..57c13ab 100644
--- a/api-tests/ff/ipc/test_i082/test_i082.h
+++ b/api-tests/ff/ipc/test_i082/test_i082.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i082_client_tests_list[];
 
-int32_t client_test_app_rot_read_psa_rot_heap(security_t);
-int32_t client_test_app_rot_write_psa_rot_heap(security_t);
+int32_t client_test_app_rot_read_psa_rot_heap(caller_security_t);
+int32_t client_test_app_rot_write_psa_rot_heap(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i083/test_i083.c b/api-tests/ff/ipc/test_i083/test_i083.c
index 9899e3e..dd85cab 100644
--- a/api-tests/ff/ipc/test_i083/test_i083.c
+++ b/api-tests/ff/ipc/test_i083/test_i083.c
@@ -71,7 +71,7 @@
    psa->close(*handle);
 }
 
-int32_t client_test_app_rot_read_psa_rot_mmio(security_t caller)
+int32_t client_test_app_rot_read_psa_rot_mmio(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE;
@@ -114,7 +114,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_app_rot_write_psa_rot_mmio(security_t caller)
+int32_t client_test_app_rot_write_psa_rot_mmio(caller_security_t caller)
 {
    addr_t       psa_rot_addr;
    uint32_t     data = DATA_VALUE;
diff --git a/api-tests/ff/ipc/test_i083/test_i083.h b/api-tests/ff/ipc/test_i083/test_i083.h
index 99496a8..8f584f7 100644
--- a/api-tests/ff/ipc/test_i083/test_i083.h
+++ b/api-tests/ff/ipc/test_i083/test_i083.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i083_client_tests_list[];
 
-int32_t client_test_app_rot_read_psa_rot_mmio(security_t);
-int32_t client_test_app_rot_write_psa_rot_mmio(security_t);
+int32_t client_test_app_rot_read_psa_rot_mmio(caller_security_t);
+int32_t client_test_app_rot_write_psa_rot_mmio(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i084/test_i084.c b/api-tests/ff/ipc/test_i084/test_i084.c
index 933312a..e21acd2 100644
--- a/api-tests/ff/ipc/test_i084/test_i084.c
+++ b/api-tests/ff/ipc/test_i084/test_i084.c
@@ -55,7 +55,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_sp_read_other_sp_variable(security_t caller)
+int32_t client_test_sp_read_other_sp_variable(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
@@ -93,7 +93,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_sp_write_other_sp_variable(security_t caller)
+int32_t client_test_sp_write_other_sp_variable(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
diff --git a/api-tests/ff/ipc/test_i084/test_i084.h b/api-tests/ff/ipc/test_i084/test_i084.h
index 0fa86af..ed1150f 100644
--- a/api-tests/ff/ipc/test_i084/test_i084.h
+++ b/api-tests/ff/ipc/test_i084/test_i084.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i084_client_tests_list[];
 
-int32_t client_test_sp_read_other_sp_variable(security_t);
-int32_t client_test_sp_write_other_sp_variable(security_t);
+int32_t client_test_sp_read_other_sp_variable(caller_security_t);
+int32_t client_test_sp_write_other_sp_variable(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i085/test_i085.c b/api-tests/ff/ipc/test_i085/test_i085.c
index da19a24..f389f00 100644
--- a/api-tests/ff/ipc/test_i085/test_i085.c
+++ b/api-tests/ff/ipc/test_i085/test_i085.c
@@ -55,7 +55,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_sp_read_other_sp_stack(security_t caller)
+int32_t client_test_sp_read_other_sp_stack(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
@@ -93,7 +93,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_sp_write_other_sp_stack(security_t caller)
+int32_t client_test_sp_write_other_sp_stack(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = 0x1234;
diff --git a/api-tests/ff/ipc/test_i085/test_i085.h b/api-tests/ff/ipc/test_i085/test_i085.h
index 80d5bd6..2679593 100644
--- a/api-tests/ff/ipc/test_i085/test_i085.h
+++ b/api-tests/ff/ipc/test_i085/test_i085.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i085_client_tests_list[];
 
-int32_t client_test_sp_read_other_sp_stack(security_t);
-int32_t client_test_sp_write_other_sp_stack(security_t);
+int32_t client_test_sp_read_other_sp_stack(caller_security_t);
+int32_t client_test_sp_write_other_sp_stack(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i086/test_i086.c b/api-tests/ff/ipc/test_i086/test_i086.c
index 370e935..605adb1 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_i086.c
@@ -60,7 +60,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_sp_read_other_sp_heap(security_t caller)
+int32_t client_test_sp_read_other_sp_heap(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint8_t  data = DATA_VALUE;
@@ -98,7 +98,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_sp_write_other_sp_heap(security_t caller)
+int32_t client_test_sp_write_other_sp_heap(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint8_t  data = DATA_VALUE;
@@ -129,14 +129,14 @@
    return VAL_STATUS_SUCCESS;
 }
 #else
-int32_t client_test_sp_read_other_sp_heap(security_t caller)
+int32_t client_test_sp_read_other_sp_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 1] Test SP reading other SP heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
    return RESULT_SKIP(VAL_STATUS_HEAP_NOT_AVAILABLE);
 }
 
-int32_t client_test_sp_write_other_sp_heap(security_t caller)
+int32_t client_test_sp_write_other_sp_heap(caller_security_t caller)
 {
    val->print(PRINT_TEST, "[Check 2] Test SP writing other SP heap\n", 0);
    val->print(PRINT_ERROR, "\tSkipping test as heap memory not supported\n", 0);
diff --git a/api-tests/ff/ipc/test_i086/test_i086.h b/api-tests/ff/ipc/test_i086/test_i086.h
index eb64546..2f729e6 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.h
+++ b/api-tests/ff/ipc/test_i086/test_i086.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i086_client_tests_list[];
 
-int32_t client_test_sp_read_other_sp_heap(security_t);
-int32_t client_test_sp_write_other_sp_heap(security_t);
+int32_t client_test_sp_read_other_sp_heap(caller_security_t);
+int32_t client_test_sp_write_other_sp_heap(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_i087/test_i087.c b/api-tests/ff/ipc/test_i087/test_i087.c
index eb6cbf2..6514fab 100644
--- a/api-tests/ff/ipc/test_i087/test_i087.c
+++ b/api-tests/ff/ipc/test_i087/test_i087.c
@@ -57,7 +57,7 @@
    return VAL_STATUS_SUCCESS;
 }
 
-int32_t client_test_sp_read_other_sp_mmio(security_t caller)
+int32_t client_test_sp_read_other_sp_mmio(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = DATA_VALUE;
@@ -95,7 +95,7 @@
    return VAL_STATUS_SPM_FAILED;
 }
 
-int32_t client_test_sp_write_other_sp_mmio(security_t caller)
+int32_t client_test_sp_write_other_sp_mmio(caller_security_t caller)
 {
    addr_t   app_rot_addr;
    uint32_t data = DATA_VALUE;
diff --git a/api-tests/ff/ipc/test_i087/test_i087.h b/api-tests/ff/ipc/test_i087/test_i087.h
index 450427d..7cf6a82 100644
--- a/api-tests/ff/ipc/test_i087/test_i087.h
+++ b/api-tests/ff/ipc/test_i087/test_i087.h
@@ -33,6 +33,6 @@
 
 extern client_test_t test_i087_client_tests_list[];
 
-int32_t client_test_sp_read_other_sp_mmio(security_t);
-int32_t client_test_sp_write_other_sp_mmio(security_t);
+int32_t client_test_sp_read_other_sp_mmio(caller_security_t);
+int32_t client_test_sp_write_other_sp_mmio(caller_security_t);
 #endif
diff --git a/api-tests/ff/ipc/test_l088/test_l088.c b/api-tests/ff/ipc/test_l088/test_l088.c
index 612c927..e4c1785 100644
--- a/api-tests/ff/ipc/test_l088/test_l088.c
+++ b/api-tests/ff/ipc/test_l088/test_l088.c
@@ -31,7 +31,7 @@
     NULL,
 };
 
-int32_t client_test_psa_rot_lifecycle_state(security_t caller)
+int32_t client_test_psa_rot_lifecycle_state(caller_security_t caller)
 {
    return VAL_STATUS_SUCCESS;
 }
diff --git a/api-tests/ff/ipc/test_l088/test_l088.h b/api-tests/ff/ipc/test_l088/test_l088.h
index e27f8ac..618d613 100644
--- a/api-tests/ff/ipc/test_l088/test_l088.h
+++ b/api-tests/ff/ipc/test_l088/test_l088.h
@@ -33,5 +33,5 @@
 
 extern client_test_t test_i088_client_tests_list[];
 
-int32_t client_test_psa_rot_lifecycle_state(security_t);
+int32_t client_test_psa_rot_lifecycle_state(caller_security_t);
 #endif
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index 3b1a713..f2ccf7a 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -167,9 +167,9 @@
 
 /* enums */
 typedef enum {
-    NONSECURE = 0x0,
-    SECURE    = 0x1,
-} security_t;
+    CALLER_NONSECURE = 0x0,
+    CALLER_SECURE    = 0x1,
+} caller_security_t;
 
 typedef enum {
     TEST_ISOLATION_L1      = 0x1,
@@ -295,6 +295,6 @@
     uint8_t  status;
 } test_status_buffer_t;
 
-typedef int32_t (*client_test_t)(security_t caller);
+typedef int32_t (*client_test_t)(caller_security_t caller);
 typedef int32_t (*server_test_t)(void);
 #endif /* VAL_COMMON_H */
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index 19f8356..57cb0b6 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -159,7 +159,7 @@
             }
 
             /* Execute client tests */
-            test_status = tests_list[i](NONSECURE);
+            test_status = tests_list[i](CALLER_NONSECURE);
 
             if (server_hs == TRUE)
             {
diff --git a/api-tests/val/spe/val_partition_common.h b/api-tests/val/spe/val_partition_common.h
index 76b5c8c..fe32baa 100644
--- a/api-tests/val/spe/val_partition_common.h
+++ b/api-tests/val/spe/val_partition_common.h
@@ -337,7 +337,7 @@
         }
 
         /* Execute client tests */
-        test_status = tests_list[i](SECURE);
+        test_status = tests_list[i](CALLER_SECURE);
 
         /* Retrive Server test status */
         status = val_get_secure_test_result(&handle);
