Alinging return codes and optional PS api support
diff --git a/api-specs/include/protected_storage.h b/api-specs/include/protected_storage.h
index 9fdb1cd..8b13d97 100644
--- a/api-specs/include/protected_storage.h
+++ b/api-specs/include/protected_storage.h
@@ -37,7 +37,7 @@
 typedef uint64_t psa_ps_uid_t;
 
 #define PSA_PS_FLAG_NONE        0
-#define PSA_PS_FLAG_WRITE_ONCE (1 << 0) /**< The data associated with the uid will not be able to be modified or deleted. Intended to be used to set bits in `psa_eps_create_flags_t`*/
+#define PSA_PS_FLAG_WRITE_ONCE (1 << 0) /**< The data associated with the uid will not be able to be modified or deleted. Intended to be used to set bits in `psa_ps_create_flags_t`*/
 
 /**
  * \brief A container for metadata associated with a specific uid
@@ -57,32 +57,39 @@
 #define PSA_PS_ERROR_INSUFFICIENT_SPACE        4   /**<    The operation failed because there was insufficient space on the storage medium */
 #define PSA_PS_ERROR_STORAGE_FAILURE           6   /**<    The operation failed because the physical storage has failed (Fatal error) */
 #define PSA_PS_ERROR_BAD_POINTER               7   /**<    The operation failed because one of the provided pointers is invalid, for example is `NULL` or references memory the caller cannot access */
-#define PSA_PS_ERROR_KEY_NOT_FOUND             8   /**<    The operation failed because the provided key value was not found in the storage */
+#define PSA_PS_ERROR_UID_NOT_FOUND             8   /**<    The operation failed because the provided uid value was not found in the storage */
 #define PSA_PS_ERROR_INCORRECT_SIZE            9   /**<    The operation failed because the data associated with provided key is not the same size as `data_size`, or `offset+data_size` is too large for the data, but `offset` is less than the size */
 #define PSA_PS_ERROR_OFFSET_INVALID           10   /**<    The operation failed because an offset was supplied that is invalid for the existing data associated with the uid. For example, offset  is greater that the size of the data */
+#define PSA_PS_ERROR_INVALID_ARGUMENT         11   /**<    The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.) */
+#define PSA_PS_ERROR_DATA_CORRUPT             12   /**<    The operation failed because data was corrupt when attempting to get the key */
+#define PSA_PS_ERROR_AUTH_FAILED              13   /**<    The operation failed because of an authentication failure when attempting to get the key */
+#define PSA_PS_ERROR_OPERATION_FAILED         14   /**<    The operation failed because of an unspecified/internal failure */
+#define PSA_PS_ERROR_INVALID_KEY              15   /**<    The associated UID does not exist or the provided properties do no match the existing UID */
+#define PSA_PS_ERROR_NOT_SUPPORTED            16   /**<    The returning function is not supported in this implementation of the API */
 
+/** Flag indicating that \ref psa_ps_create and \ref psa_ps_set_extended are supported */
+#define PSA_PS_SUPPORT_SET_EXTENDED (1 << 0)
 
 /**
  * \brief create a new or modify an existing key/value pair
  *
  * \param[in] uid           the identifier for the data
  * \param[in] data_length   The size in bytes of the data in `p_data`
- * \param[in] p_data        A buffer containing the data 
+ * \param[in] p_data        A buffer containing the data
  * \param[in] create_flags  The flags indicating the properties of the data
- * 
+ *
  * \return      A status indicating the success/failure of the operation
- 
- * \retval      PSA_PS_SUCCESS                              The operation completed successfully
- * \retval      PSA_PS_ERROR_WRITE_ONCE                     The operation failed because the provided uid value was already created with PSA_PS_WRITE_ONCE_FLAG
- * \retval      PSA_PS_ERROR_FLAGS_NOT_SUPPORTED            The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid
- * \retval      PSA_PS_ERROR_FLAGS_SET_AFTER_CREATE         The operation failed because a non-zero `create_flags` was provided for a previously created uid
- * \retval      PSA_PS_ERROR_INSUFFICIENT_SPACE             The operation failed because there was insufficient space on the storage medium
- * \retval      PSA_PS_ERROR_STORAGE_FAILURE                The operation failed because the physical storage has failed (Fatal error)
- * \retval      PSA_PS_ERROR_BAD_POINTER                    The operation failed because one of the provided pointers(`p_data`) 
- *                                                          is invalid, for example is `NULL` or references memory the caller cannot access
+
+ * \retval      PSA_PS_SUCCESS                     The operation completed successfully
+ * \retval      PSA_PS_ERROR_WRITE_ONCE            The operation failed because the provided uid value was already created with PSA_PS_WRITE_ONCE_FLAG
+ * \retval      PSA_PS_ERROR_INVALID_ARGUMENT      The operation The operation failed because one or more of the given arguments were invalid.
+ * \retval      PSA_PS_ERROR_FLAGS_NOT_SUPPORTED   The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid
+ * \retval      PSA_PS_ERROR_INSUFFICIENT_SPACE    The operation failed because there was insufficient space on the storage medium
+ * \retval      PSA_PS_ERROR_STORAGE_FAILURE       The operation failed because the physical storage has failed (Fatal error)
+ * \retval      PSA_PS_ERROR_OPERATION_FAILED      The operation failed because of an unspecified internal failure
  */
-psa_ps_status_t psa_ps_set( psa_ps_uid_t uid, uint32_t data_length,
-                            const void *p_data, psa_ps_create_flags_t create_flags );
+psa_ps_status_t psa_ps_set(psa_ps_uid_t uid, uint32_t data_length,
+                           const void *p_data, psa_ps_create_flags_t create_flags);
 
 /**
  * \brief Retrieve the value for a provided uid
@@ -91,49 +98,51 @@
  * \param[in] data_offset       The offset within the data associated with the `uid` to start retrieving data
  * \param[in] data_length       The amount of data to read (and the minimum allocated size of the `p_data` buffer)
  * \param[out] p_data           The buffer where the data will be placed upon successful completion
- * 
+ *
  * \return      A status indicating the success/failure of the operation
  *
- * \retval      PSA_PS_SUCCESS                      The operation completed successfully
- * \retval      PSA_PS_ERROR_KEY_NOT_FOUND          The operation failed because the provided uid value was not found in the storage
- * \retval      PSA_PS_ERROR_INCORRECT_SIZE        The operation failed because the data associated with provided uid is not the same size as `data_size`
- * \retval      PSA_PS_ERROR_STORAGE_FAILURE        The operation failed because the physical storage has failed (Fatal error)
- * \retval      PSA_PS_ERROR_BAD_POINTER            The operation failed because one of the provided pointers(`p_data`)
- *                                                  is invalid, for example is `NULL` or references memory the caller cannot access
- * \retval      PSA_PS_ERROR_OFFSET_INVALID         The operation failed because an offset was supplied that is invalid for the existing data associated with the 
- *                                                  uid. For example, offset + size is invalid
- * \retval      PSA_PS_ERROR_OFFSET_NOT_SUPPORTED   A non-zero offset was supplied, but the implementation does not support offsets
+ * \retval      PSA_PS_ERROR_INVALID_ARGUMENT   The operation The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.)
+ * \retval      PSA_PS_ERROR_UID_NOT_FOUND      The operation failed because the provided uid value was not found in the storage
+ * \retval      PSA_PS_ERROR_INCORRECT_SIZE     The operation failed because the data associated with provided uid is not the same size as `data_size`
+ * \retval      PSA_PS_ERROR_STORAGE_FAILURE    The operation failed because the physical storage has failed (Fatal error)
+ * \retval      PSA_PS_ERROR_OPERATION_FAILED   The operation failed because of an unspecified internal failure
+ * \retval      PSA_PS_ERROR_DATA_CORRUPT       The operation failed because of an authentication failure when attempting to get the key
+ * \retval      PSA_PS_ERROR_AUTH_FAILED        The operation failed because of an unspecified internal failure
  */
-psa_ps_status_t psa_ps_get( psa_ps_uid_t uid, uint32_t data_offset,
-                            uint32_t data_length, void *p_data );
+psa_ps_status_t psa_ps_get(psa_ps_uid_t uid, uint32_t data_offset,
+                           uint32_t data_length, void *p_data );
 
 /**
  * \brief Retrieve the metadata about the provided uid
- * 
+ *
  * \param[in] uid           The identifier for the data
  * \param[out] p_info       A pointer to the `psa_ps_info_t` struct that will be populated with the metadata
- * 
+ *
  * \return      A status indicating the success/failure of the operation
- * 
- * \retval      PSA_PS_SUCCESS                  The operation completed successfully
- * \retval      PSA_PS_ERROR_KEY_NOT_FOUND      The operation failed because the provided uid value was not found in the storage
+ *
+ * \retval      PSA_PS_ERROR_SUCCESS            The operation completed successfully
+ * \retval      PSA_PS_ERROR_INVALID_ARGUMENT   The operation The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.)
+ * \retval      PSA_PS_ERROR_UID_NOT_FOUND      The operation failed because the provided uid value was not found in the storage
  * \retval      PSA_PS_ERROR_STORAGE_FAILURE    The operation failed because the physical storage has failed (Fatal error)
- * \retval      PSA_PS_ERROR_BAD_POINTER        The operation failed because one of the provided pointers(`p_info`)
- *                                              is invalid, for example is `NULL` or references memory the caller cannot access
+ * \retval      PSA_PS_ERROR_OPERATION_FAILED   The operation failed because of an unspecified internal failure
+ * \retval      PSA_PS_ERROR_DATA_CORRUPT       The operation failed because of an authentication failure when attempting to get the key
+ * \retval      PSA_PS_ERROR_AUTH_FAILED        The operation failed because of an unspecified internal failure
  */
 psa_ps_status_t psa_ps_get_info( psa_ps_uid_t uid, struct psa_ps_info_t *p_info);
 
 /**
  * \brief Remove the provided uid and its associated data from the storage
- * 
+ *
  * \param[in] uid   The identifier for the data to be removed
- * 
+ *
  * \return  A status indicating the success/failure of the operation
- * 
+ *
  * \retval      PSA_PS_SUCCESS                  The operation completed successfully
- * \retval      PSA_PS_ERROR_KEY_NOT_FOUND      The operation failed because the provided uid value was not found in the storage
+ * \retval      PSA_PS_ERROR_INVALID_ARGUMENT   The operation The operation failed because one or more of the given arguments were invalid (null pointer, wrong flags etc.)
+ * \retval      PSA_PS_ERROR_UID_NOT_FOUND      The operation failed because the provided uid value was not found in the storage
  * \retval      PSA_PS_ERROR_WRITE_ONCE         The operation failed because the provided uid value was created with psa_eps_WRITE_ONCE_FLAG
  * \retval      PSA_PS_ERROR_STORAGE_FAILURE    The operation failed because the physical storage has failed (Fatal error)
+ * \retval      PSA_PS_ERROR_OPERATION_FAILED   The operation failed because of an unspecified internal failure
  */
 psa_ps_status_t psa_ps_remove( psa_ps_uid_t uid);
 
@@ -141,10 +150,14 @@
  *  Creates an asset based on the given identifier, the maximum size and
  *  creation flags. This create allocates the space in the secure storage
  *  area without setting any data in the asset.
+ * 
  *  It is only necessary to call this function for items that will be written
  *  with the \ref psa_ps_set_extended function. If only the \ref psa_ps_set function
  *  is needed, calls to this function are redundant.
  * 
+ *  If the \ref PSA_PS_FLAG_WRITE_ONCE flag is passed, implementations should
+ *  return \ref PSA_PS_ERROR_FLAGS_NOT_SUPPORTED.
+ * 
  *  This function is optional. Not all PSA Protected Storage Implementations
  *  will implement this function. Consult the documentation of your chosen
  *  platform to determine if it is present.
@@ -161,17 +174,18 @@
  * \retval PSA_PS_ERROR_STORAGE_FAILURE     The create action has a physical storage error
  * \retval PSA_PS_ERROR_INSUFFICIENT_SPACE  The maximum size is bigger of the current available space
  * \retval PSA_PS_ERROR_FLAGS_NOT_SUPPORTED One or more create_flags are not valid or supported
- * \retval PSA_PS_ERROR_INVALID_KEY         The the asset exists and the input paramters are not the same as the existing asset
+ * \retval PSA_PS_ERROR_INVALID_KEY         The asset exists and the input paramters are not the same as the existing asset
+ * \retval PSA_PS_ERROR_NOT_SUPPORTED       The implementation of the API does not support this function
  */
-psa_its_status_t psa_ps_create( psa_ps_uid_t uid, uint32_t size,
-                                psa_ps_create_flags_t create_flags);
+psa_ps_status_t psa_ps_create( psa_ps_uid_t uid, uint32_t size,
+                               psa_ps_create_flags_t create_flags);
 
 /**
  * Sets partial data into an asset based on the given identifier, data_offset,
  * data length and p_data.
  * 
- *  Before calling this function, the asset must have been created with a cal
- *  to \ref psa_ps_create
+ *  Before calling this function, the asset must have been created with a call
+ *  to \ref psa_ps_create.
  *
  *  This function is optional. Not all PSA Protected Storage Implementations
  *  will implement this function. Consult the documentation of your chosen
@@ -192,8 +206,18 @@
  *                                          is too large
  * \retval PSA_PS_ERROR_BAD_POINTER         If p_data is NULL or references memory the caller cannot access
  * \retval PSA_PS_ERROR_INVALID_KEY         If the asset does not exist
+ * \retval PSA_PS_ERROR_NOT_SUPPORTED       The implementation of the API does not support this function
  */
-psa_its_status_t psa_ps_set_extended( psa_ps_uid_t uid, uint32_t data_offset,
-                                      uint32_t data_length, const void *p_data);
+psa_ps_status_t psa_ps_set_extended( psa_ps_uid_t uid, uint32_t data_offset,
+                                     uint32_t data_length, const void *p_data);
+
+/**
+ *  Returns a bitmask with flags set for all of the optional features supported 
+ * by the implementation.
+ * 
+ * Currently defined flags are limited to:
+ * - \ref PSA_PS_SUPPORT_SET_EXTENDED
+ */
+uint32_t psa_ps_get_support();
 
 #endif // __PROTECTED_STORAGE_H__
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h
index 906cb19..21a1409 100644
--- a/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s001/test_ps_data.h
@@ -34,13 +34,13 @@
  "This is dummy for index0", 0, 0
 },
 {
- "Call the get api when no uid is set", VAL_PS_GET, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call the get api when no uid is set", VAL_PS_GET, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
- "Call the get_info api when no uid is set", VAL_PS_GET_INFO, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call the get_info api when no uid is set", VAL_PS_GET_INFO, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
- "Call the remove api when no uid is set", VAL_PS_REMOVE, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call the remove api when no uid is set", VAL_PS_REMOVE, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
  "Create a valid storage entity with uid1", VAL_PS_SET, PSA_PS_SUCCESS
@@ -52,25 +52,25 @@
  "Remove uid1", VAL_PS_REMOVE, PSA_PS_SUCCESS
 },
 {
- "Call get api for uid1", VAL_PS_GET, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call get api for uid1", VAL_PS_GET, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
- "Call get_info api for uid1", VAL_PS_GET_INFO, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call get_info api for uid1", VAL_PS_GET_INFO, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
- "Call remove api for uid1", VAL_PS_REMOVE, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call remove api for uid1", VAL_PS_REMOVE, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
  "Create a valid storage entity again with uid1", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "Call get api for uid not same as uid1 or uid2", VAL_PS_GET, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call get api for uid not same as uid1 or uid2", VAL_PS_GET, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
- "Call get_info for uid not same as uid1 or uid2", VAL_PS_GET_INFO, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call get_info for uid not same as uid1 or uid2", VAL_PS_GET_INFO, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
- "Call remove api for uid not same as uid1 or uid2", VAL_PS_REMOVE, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call remove api for uid not same as uid1 or uid2", VAL_PS_REMOVE, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
  "Remove uid1", VAL_PS_REMOVE, PSA_PS_SUCCESS
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h
index 0179c96..51f0478 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_its_data.h
@@ -48,7 +48,7 @@
  "Index not used as check for get info flag",0,0
 },
 {
- "validate the data using get api", VAL_ITS_GET, PSA_ITS_SUCCESS
+ "Validate the data using get api", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
  "Index not used",0,0
@@ -72,16 +72,16 @@
  "Index not used",0,0
 },
 {
- " storage should not be removed after WRITE_ONCE flag", VAL_ITS_REMOVE, PSA_ITS_ERROR_WRITE_ONCE
+ "Storage should not be removed after WRITE_ONCE flag", VAL_ITS_REMOVE, PSA_ITS_ERROR_WRITE_ONCE
 },
 {
  "Create a valid storage with different uid and flag value WRITE_ONCE ", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "storage should not be removed", VAL_ITS_REMOVE, PSA_ITS_ERROR_WRITE_ONCE
+ "Storage should not be removed", VAL_ITS_REMOVE, PSA_ITS_ERROR_WRITE_ONCE
 },
 {
- "validate the data using get api after flag change", VAL_ITS_GET, PSA_ITS_SUCCESS
+ "Validate the data using get api after flag change", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
  "Index not used",0,0
@@ -96,10 +96,10 @@
  "Index not used as check for get info flag",0,0
 },
 {
- "try to set different size for same uid and flag value ", VAL_ITS_SET, PSA_ITS_ERROR_WRITE_ONCE
+ "Try to set different size for same uid and flag value ", VAL_ITS_SET, PSA_ITS_ERROR_WRITE_ONCE
 },
 {
- "storage should not be removed", VAL_ITS_REMOVE, PSA_ITS_ERROR_WRITE_ONCE
+ "Storage should not be removed", VAL_ITS_REMOVE, PSA_ITS_ERROR_WRITE_ONCE
 },
 {
  "Call the get_info api to validate the flag change", VAL_ITS_GET_INFO, PSA_ITS_SUCCESS
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h
index df4ce83..8d09551 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s002/test_ps_data.h
@@ -48,7 +48,7 @@
  "Index not used as check for get info flag",0,0
 },
 {
- "validate the data using get api", VAL_PS_GET, PSA_PS_SUCCESS
+ "Validate the data using get api", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
@@ -66,22 +66,22 @@
  "Index not used as check for get info flag",0,0
 },
 {
- "validate the data using get api after flag change", VAL_PS_GET, PSA_PS_SUCCESS
+ "Validate the data using get api after flag change", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
 },
 {
- " storage should not be removed after WRITE_ONCE flag", VAL_PS_REMOVE, PSA_PS_ERROR_WRITE_ONCE
+ "Storage should not be removed after WRITE_ONCE flag", VAL_PS_REMOVE, PSA_PS_ERROR_WRITE_ONCE
 },
 {
  "Create a valid storage with different uid and flag value WRITE_ONCE ", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "storage should not be removed", VAL_PS_REMOVE, PSA_PS_ERROR_WRITE_ONCE
+ "Storage should not be removed", VAL_PS_REMOVE, PSA_PS_ERROR_WRITE_ONCE
 },
 {
- "validate the data using get api after flag change", VAL_PS_GET, PSA_PS_SUCCESS
+ "Validate the data using get api after flag change", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
@@ -96,7 +96,7 @@
  "Index not used as check for get info flag",0,0
 },
 {
- "try to set different size for same uid and flag value ", VAL_PS_SET, PSA_PS_ERROR_WRITE_ONCE
+ "Try to set different size for same uid and flag value ", VAL_PS_SET, PSA_PS_ERROR_WRITE_ONCE
 },
 {
  "storage should not be removed", VAL_PS_REMOVE, PSA_PS_ERROR_WRITE_ONCE
@@ -111,7 +111,7 @@
  "Index not used as check for get info flag",0,0
 },
 {
- "validate the data using get api after flag change", VAL_PS_GET, PSA_PS_SUCCESS
+ "Validate the data using get api after flag change", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
@@ -120,6 +120,9 @@
  "Setting flag to zero for uid should fail ", VAL_PS_SET, PSA_PS_ERROR_WRITE_ONCE
 },
 {
+ "Storage should not be removed", VAL_PS_REMOVE, PSA_PS_ERROR_WRITE_ONCE
+},
+{
  "Check that the WRITE_ONCE flag is preserved", VAL_PS_GET_INFO, PSA_PS_SUCCESS
 },
 {
@@ -129,4 +132,4 @@
  "Index not used as check for get info flag",0,0
 },
 };
-#endif /* _TEST_S001_PS_DATA_TESTS_H_ */
+#endif /* _TEST_S002_PS_DATA_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 38a568f..2232a57 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
@@ -26,6 +26,7 @@
 
 #define TEST_BUFF_SIZE 256
 #define NUM_ITERATIONS 5
+#define TEST_BASE_UID_VALUE 20
 
 client_test_t test_s003_sst_list[] = {
     NULL,
@@ -46,21 +47,27 @@
     for (i = 0 ; i < NUM_ITERATIONS; i++)
     {
         val->print(PRINT_TEST, "[Check %d] Overload storage space\n", i + 1 );
-        for (uid = 1; status == PSA_SST_SUCCESS; uid++)
+        for (uid = TEST_BASE_UID_VALUE; status == PSA_SST_SUCCESS; uid++)
         {
             val->print(PRINT_INFO, "Setting 0x%x bytes for ", TEST_BUFF_SIZE);
-            val->print(PRINT_INFO, "UID 0x%x\n", uid);
+            val->print(PRINT_INFO, "UID %d\n", uid);
             status = SST_FUNCTION(s003_data[1].api, uid, TEST_BUFF_SIZE, write_buff, 0);
+            if (status != PSA_SST_SUCCESS)
+            {
+                val->print(PRINT_TEST, "UID %d set failed, Storage Space is exhausted\n", uid);
+                break;
+            }
         }
         TEST_ASSERT_EQUAL(status, s003_data[1].status, TEST_CHECKPOINT_NUM(1));
 
         /* Store number of set()s it took to saturate the storage */
-        count = uid;
-        results[i] = uid - 1;
+        count = uid - TEST_BASE_UID_VALUE;
+        results[i] = uid - TEST_BASE_UID_VALUE;
 
         val->print(PRINT_TEST, "Remove all registered UIDs\n", 0);
-        for (uid = 1; uid < count; uid++)
+        for (uid = TEST_BASE_UID_VALUE; uid < count + TEST_BASE_UID_VALUE; uid++)
         {
+            val->print(PRINT_INFO, "Removing UID %d\n", uid);
             status = SST_FUNCTION(s003_data[2].api, uid);
             if (status != PSA_SST_SUCCESS)
                 return VAL_STATUS_ERROR;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h
index ab29232..6ec9467 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s004/test_its_data.h
@@ -36,7 +36,7 @@
  "Create a valid storage entity ", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "validate the data using get api after set api failure", VAL_ITS_GET, PSA_ITS_SUCCESS
+ "Validate the data using get api after set api failure", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
  "Index not used",0,0
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h
index 5c7693f..5e7cc9c 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_its_data.h
@@ -38,13 +38,13 @@
  "Create a valid storage entity ", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "validate the data using get api", VAL_ITS_GET, PSA_ITS_SUCCESS
+ "Validate the data using get api", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
  "Index not used",0,0
 },
 {
- "validate the data attributes get_info api", VAL_ITS_GET_INFO, PSA_ITS_SUCCESS
+ "Validate the data attributes get_info api", VAL_ITS_GET_INFO, PSA_ITS_SUCCESS
 },
 {
  "Index not used",0,0
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h
index a928ed1..55770f5 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s005/test_ps_data.h
@@ -38,13 +38,13 @@
  "Create a valid storage entity ", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "validate the data using get api", VAL_PS_GET, PSA_PS_SUCCESS
+ "Validate the data using get api", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
 },
 {
- "validate the data attributes get_info api", VAL_PS_GET_INFO, PSA_PS_SUCCESS
+ "Validate the data attributes get_info api", VAL_PS_GET_INFO, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
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 6e8b0b4..d372172 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
@@ -72,7 +72,7 @@
 
     /* Calling SET function with BASE  uid_value , data_len zero and valid data pointer */
     val->print(PRINT_TEST, "[Check 1] Set UID with data length zero and call storage apis\n", 0);
-    if (psa_sst_apis_check(UID_BASE_VALUE, data_len, write_buff, flag))
+    if (psa_sst_apis_check(UID_BASE_VALUE + 1, data_len, write_buff, flag))
     {
         val->print(PRINT_ERROR, "Data Len = %d\n", data_len);
         val->print(PRINT_ERROR, "Create Flag value =  %d\n", flag);
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h
index e6ddd35..4468340 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_its_data.h
@@ -39,7 +39,7 @@
  "Create a valid storage entity with different flag values ", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "validate the flag value get_info api", VAL_ITS_GET_INFO, PSA_ITS_SUCCESS
+ "Validate the flag value get_info api", VAL_ITS_GET_INFO, PSA_ITS_SUCCESS
 },
 {
  "Index not used",0,0
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h
index 400723b..6ec89ee 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s006/test_ps_data.h
@@ -39,7 +39,7 @@
  "Create a valid storage entity with different flag values ", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "validate the flag value get_info api", VAL_PS_GET_INFO, PSA_PS_SUCCESS
+ "Validate the flag value get_info api", VAL_PS_GET_INFO, PSA_PS_SUCCESS
 },
 {
  "Index not used",0,0
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry.c b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry.c
index 9dbc1df..5d25221 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry.c
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_entry.c
@@ -20,7 +20,7 @@
 #include "test_s007.h"
 
 #define TEST_NUM  VAL_CREATE_TEST_ID(VAL_STORAGE_BASE, 7)
-#define TEST_DESC "Flag set after create error check\n"
+#define TEST_DESC "Incorrect Size error check\n"
 
 TEST_PUBLISH(TEST_NUM, test_entry);
 val_api_t *val = NULL;
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h
index 90c4931..c06d951 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_its_data.h
@@ -28,31 +28,36 @@
     psa_its_status_t        status;
 } test_data;
 
-static psa_its_create_flags_t flag;
 static test_data s007_data[] = {
 {
  "This is dummy for index0", 0, 0
 },
 {
- "Create a valid storage entity with non-zero flag value", VAL_ITS_SET, PSA_ITS_SUCCESS
+ "Create a valid storage entity", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "try to change the flag value with another non-zero value", VAL_ITS_SET, PSA_ITS_ERROR_FLAGS_SET_AFTER_CREATE
+ "Increase the length of storage", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "try to change the flag value with zero value", VAL_ITS_SET, PSA_ITS_ERROR_FLAGS_SET_AFTER_CREATE
+ "Try to access old length", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
- "Remove the storage entity ", VAL_ITS_REMOVE, PSA_ITS_SUCCESS
+ "Try to access valid length less than set length ", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
- "Create a valid storage entity with zero flag value", VAL_ITS_SET, PSA_ITS_SUCCESS
+ "This is dummy for index5", 0, 0
 },
 {
- "try to change the flag value with  non-zero value", VAL_ITS_SET, PSA_ITS_SUCCESS
+ "Decrease the length of storage", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "try to change the flag again to zero value", VAL_ITS_SET, PSA_ITS_ERROR_FLAGS_SET_AFTER_CREATE
+ "Try to access old length", VAL_ITS_GET, PSA_ITS_ERROR_INCORRECT_SIZE
+},
+{
+ "Try to access old length", VAL_ITS_GET, PSA_ITS_ERROR_INCORRECT_SIZE
+},
+{
+ "Try to access data with correct length", VAL_ITS_GET, PSA_ITS_SUCCESS
 },
 {
  "Remove the storage entity ", VAL_ITS_REMOVE, PSA_ITS_SUCCESS
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h
index 6757c9a..ff2601f 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s007/test_ps_data.h
@@ -28,31 +28,36 @@
     psa_ps_status_t        status;
 } test_data;
 
-static psa_ps_create_flags_t flag;
 static test_data s007_data[] = {
 {
  "This is dummy for index0", 0, 0
 },
 {
- "Create a valid storage entity with non-zero flag value", VAL_PS_SET, PSA_PS_SUCCESS
+ "Create a valid storage entity", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "try to change the flag value with another non-zero value", VAL_PS_SET, PSA_PS_ERROR_FLAGS_SET_AFTER_CREATE
+ "Increase the length of storage", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "try to change the flag value with zero value", VAL_PS_SET, PSA_PS_ERROR_FLAGS_SET_AFTER_CREATE
+ "Try to access old length", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
- "Remove the storage entity ", VAL_PS_REMOVE, PSA_PS_SUCCESS
+ "Try to access valid length less than set length ", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
- "Create a valid storage entity with zero flag value", VAL_PS_SET, PSA_PS_SUCCESS
+ "This is dummy for index5", 0, 0
 },
 {
- "try to change the flag value with  non-zero value", VAL_PS_SET, PSA_PS_SUCCESS
+ "Decrease the length of storage", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "try to change the flag again to zero value", VAL_PS_SET, PSA_PS_ERROR_FLAGS_SET_AFTER_CREATE
+ "Try to access old length", VAL_PS_GET, PSA_PS_ERROR_INCORRECT_SIZE
+},
+{
+ "Try to access old length", VAL_PS_GET, PSA_PS_ERROR_INCORRECT_SIZE
+},
+{
+ "Try to access data with correct length", VAL_PS_GET, PSA_PS_SUCCESS
 },
 {
  "Remove the storage entity ", VAL_PS_REMOVE, PSA_PS_SUCCESS
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 a520837..4dabb0c 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
@@ -28,51 +28,56 @@
 
 client_test_t test_s007_sst_list[] = {
     NULL,
-    psa_sst_api_flag_set_after_create,
+    psa_sst_get_incorrect_size,
     NULL,
 };
 
 static uint8_t write_buff[TEST_BUFF_SIZE] = {
   0x00, 0x01, 0x02, 0x03, 0x04, 0x23, 0xF6, 0x07, 0x08, 0x0D, 0x0A, 0x1B, 0x0C, 0x5D, 0x0E,\
   0x70, 0xA1, 0xFF, 0xFF, 0x14, 0x73, 0x46, 0x97, 0xE8, 0xDD, 0xCA, 0x0B, 0x3C, 0x0D, 0x2E};
+static uint8_t read_buff[TEST_BUFF_SIZE];
 
-int32_t psa_sst_api_flag_set_after_create(security_t caller)
+int32_t psa_sst_get_incorrect_size(security_t caller)
 {
     psa_sst_uid_t uid = UID_BASE_VALUE + 10;
     uint32_t status = VAL_STATUS_SUCCESS;
 
-    flag = 0x0000100;
     /* Set the uid with the data_len and data_buff */
-    status = SST_FUNCTION(s007_data[1].api, uid, TEST_BUFF_SIZE/2, write_buff, flag);
+    status = SST_FUNCTION(s007_data[1].api, uid, TEST_BUFF_SIZE/2, write_buff, 0);
     TEST_ASSERT_EQUAL(status, s007_data[1].status, TEST_CHECKPOINT_NUM(1));
 
-    /* Call set for same uid and different non-zero flag value */
-    status = SST_FUNCTION(s007_data[2].api, uid, TEST_BUFF_SIZE, write_buff, flag<<1);
+    /* Call set for same uid and increase the length */
+    status = SST_FUNCTION(s007_data[2].api, uid, TEST_BUFF_SIZE, write_buff, 0);
     TEST_ASSERT_EQUAL(status, s007_data[2].status, TEST_CHECKPOINT_NUM(2));
 
-    /* Call set for same uid and different nzero flag value */
-    status = SST_FUNCTION(s007_data[3].api, uid, TEST_BUFF_SIZE, write_buff, 0);
+    /* Access data using get api and old length */
+    status = SST_FUNCTION(s007_data[3].api, uid, 0, TEST_BUFF_SIZE/2, read_buff);
     TEST_ASSERT_EQUAL(status, s007_data[3].status, TEST_CHECKPOINT_NUM(3));
 
-    /* Remove the uid  */
-    status = SST_FUNCTION(s007_data[4].api, uid);
+    /* Access data using get api and valid length */
+    status = SST_FUNCTION(s007_data[4].api, uid, 0, TEST_BUFF_SIZE/4, read_buff);
     TEST_ASSERT_EQUAL(status, s007_data[4].status, TEST_CHECKPOINT_NUM(4));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/4, TEST_CHECKPOINT_NUM(5));
 
-    /* Set the uid with the data_len and data_buff */
-    status = SST_FUNCTION(s007_data[5].api, uid, TEST_BUFF_SIZE, write_buff, 0);
-    TEST_ASSERT_EQUAL(status, s007_data[5].status, TEST_CHECKPOINT_NUM(5));
-
-    /* Call set for same uid and different non-zero flag value */
-    status = SST_FUNCTION(s007_data[6].api, uid, TEST_BUFF_SIZE, write_buff, flag);
+    /* Decrease the length again */
+    status = SST_FUNCTION(s007_data[6].api, uid, TEST_BUFF_SIZE/4, write_buff, 0);
     TEST_ASSERT_EQUAL(status, s007_data[6].status, TEST_CHECKPOINT_NUM(6));
 
-    /* Call set for same uid and different zero flag value */
-    status = SST_FUNCTION(s007_data[7].api, uid, TEST_BUFF_SIZE, write_buff, flag);
+    /* Access data using get api and old length */
+    status = SST_FUNCTION(s007_data[7].api, uid, 0, TEST_BUFF_SIZE/2, read_buff);
     TEST_ASSERT_EQUAL(status, s007_data[7].status, TEST_CHECKPOINT_NUM(7));
 
-    /* Remove the uid  */
-    status = SST_FUNCTION(s007_data[8].api, uid);
+    /* Access data using get api and old length */
+    status = SST_FUNCTION(s007_data[8].api, uid, 0, TEST_BUFF_SIZE, read_buff);
     TEST_ASSERT_EQUAL(status, s007_data[8].status, TEST_CHECKPOINT_NUM(8));
 
-   return status;
+    /* Access data using correct length */
+    status = SST_FUNCTION(s007_data[9].api, uid, 0, TEST_BUFF_SIZE/4, read_buff);
+    TEST_ASSERT_EQUAL(status, s007_data[9].status, TEST_CHECKPOINT_NUM(9));
+
+    /* Remove the uid  */
+    status = SST_FUNCTION(s007_data[10].api, uid);
+    TEST_ASSERT_EQUAL(status, s007_data[10].status, TEST_CHECKPOINT_NUM(10));
+
+    return status;
 }
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 37775b0..5a71e4b 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_api_flag_set_after_create(security_t caller);
+int32_t psa_sst_get_incorrect_size(security_t caller);
 
 #endif /* _TEST_S007_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h
index 0fb4dc0..5f3c8e0 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_its_data.h
@@ -43,7 +43,7 @@
  "Create storage of zero size", VAL_ITS_SET, PSA_ITS_SUCCESS
 },
 {
- "try to set 0 buffer for previous created storage", VAL_ITS_SET, PSA_ITS_ERROR_BAD_POINTER
+ "Try to set 0 buffer for previous created storage", VAL_ITS_SET, PSA_ITS_ERROR_BAD_POINTER
 },
 {
  "Call get_info api to check data size", VAL_ITS_GET_INFO, PSA_ITS_SUCCESS
diff --git a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h
index 53f20e9..7fb2f5e 100755
--- a/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h
+++ b/api-tests/dev_apis/internal_trusted_storage/test_s009/test_ps_data.h
@@ -34,16 +34,16 @@
  "This is dummy for index0", 0, 0
 },
 {
- "Call set api with 0 write buffer", VAL_PS_SET, PSA_PS_ERROR_BAD_POINTER
+ "Call set api with 0 write buffer", VAL_PS_SET, PSA_PS_ERROR_INVALID_ARGUMENT
 },
 {
- "Call to get_info api should fail", VAL_PS_GET_INFO, PSA_PS_ERROR_KEY_NOT_FOUND
+ "Call to get_info api should fail", VAL_PS_GET_INFO, PSA_PS_ERROR_UID_NOT_FOUND
 },
 {
  "Create storage of zero size", VAL_PS_SET, PSA_PS_SUCCESS
 },
 {
- "try to set 0 buffer for previous created storage", VAL_PS_SET, PSA_PS_ERROR_BAD_POINTER
+ "Try to set 0 buffer for previous created storage", VAL_PS_SET, PSA_PS_ERROR_INVALID_ARGUMENT
 },
 {
  "Call get_info api to check data size", VAL_PS_GET_INFO, PSA_PS_SUCCESS
@@ -52,10 +52,10 @@
  "This is dummy for index6", 0, 0
 },
 {
- "Call get api with 0 read buffer", VAL_PS_GET, PSA_PS_ERROR_BAD_POINTER
+ "Call get api with 0 read buffer", VAL_PS_GET, PSA_PS_ERROR_INVALID_ARGUMENT
 },
 {
- "Call get_info api with 0 info buffer", VAL_PS_GET_INFO, PSA_PS_ERROR_BAD_POINTER
+ "Call get_info api with 0 info buffer", VAL_PS_GET_INFO, PSA_PS_ERROR_INVALID_ARGUMENT
 },
 {
  "Remove the storage entity ", VAL_PS_REMOVE, PSA_PS_SUCCESS
diff --git a/api-tests/dev_apis/protected_storage/test_p010/source.mk b/api-tests/dev_apis/protected_storage/test_p010/source.mk
new file mode 100644
index 0000000..aa23cf6
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p010/source.mk
@@ -0,0 +1,20 @@
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+CC_SOURCE  = test_entry.c test_p010.c
+CC_OPTIONS = -DPS_TEST
+AS_SOURCE  =
+AS_OPTIONS =
diff --git a/api-tests/dev_apis/protected_storage/test_p010/test_entry.c b/api-tests/dev_apis/protected_storage/test_p010/test_entry.c
new file mode 100644
index 0000000..8883c5e
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p010/test_entry.c
@@ -0,0 +1,53 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_p010.h"
+
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 10)
+#define TEST_DESC "Invalid Key error check\n"
+
+TEST_PUBLISH(TEST_NUM, test_entry);
+val_api_t *val = NULL;
+psa_api_t *psa = NULL;
+
+void test_entry(val_api_t *val_api, psa_api_t *psa_api)
+{
+    int32_t   status = VAL_STATUS_SUCCESS;
+
+    val = val_api;
+    psa = psa_api;
+
+    /* test init */
+    val->test_init(TEST_NUM, TEST_DESC, TEST_FIELD(TEST_ISOLATION_L1, WD_HIGH_TIMEOUT));
+    if (!IS_TEST_START(val->get_status()))
+    {
+        goto test_exit;
+    }
+
+    /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
+    status = val->execute_non_secure_tests(TEST_NUM, test_p010_sst_list, FALSE);
+
+    if (VAL_ERROR(status))
+    {
+        goto test_exit;
+    }
+
+test_exit:
+    val->test_exit();
+}
diff --git a/api-tests/dev_apis/protected_storage/test_p010/test_p010.c b/api-tests/dev_apis/protected_storage/test_p010/test_p010.c
new file mode 100644
index 0000000..c54d222
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p010/test_p010.c
@@ -0,0 +1,122 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_p010.h"
+#include "test_ps_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+client_test_t test_p010_sst_list[] = {
+    NULL,
+    psa_sst_optional_api_key_not_found,
+    NULL,
+};
+
+static uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
+static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
+
+static int32_t psa_sst_invalid_key()
+{
+    uint32_t status,j;
+    psa_ps_uid_t p_uid = UID_BASE_VALUE + 10;
+    struct psa_ps_info_t orig_info;
+
+    /* Call the set_extended API with uid which is not created */
+    val->print(PRINT_TEST, "[Check 1] Set_extended api call for UID %d which is not set\n", p_uid);
+    status = SST_FUNCTION(p010_data[1].api, p_uid, 0, TEST_BUFF_SIZE, write_buff);
+    TEST_ASSERT_EQUAL(status, p010_data[1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Create a valid storage with set api */
+    status = SST_FUNCTION(p010_data[2].api, p_uid, TEST_BUFF_SIZE, write_buff, 0);
+    TEST_ASSERT_EQUAL(status, p010_data[2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Try to change data length for same uid using create api */
+    val->print(PRINT_TEST, "[Check 2] Call create api with different data length than used to"
+                           " create the asset using set api\n", 0);
+    status = SST_FUNCTION(p010_data[3].api, p_uid, TEST_BUFF_SIZE/2, 0);
+    TEST_ASSERT_EQUAL(status, p010_data[3].status, TEST_CHECKPOINT_NUM(3));
+
+    /* Try to change flag value associated with the uid */
+    val->print(PRINT_TEST, "[Check 3] Call create api with different flag value than used to"
+                           " create the asset using set api\n", 0);
+    status = SST_FUNCTION(p010_data[4].api, p_uid, TEST_BUFF_SIZE, PSA_PS_FLAG_WRITE_ONCE);
+    TEST_ASSERT_EQUAL(status, p010_data[4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Check the flag value should be same as original*/
+    status = SST_FUNCTION(p010_data[5].api, p_uid, &orig_info);
+    TEST_ASSERT_EQUAL(status, p010_data[5].status, TEST_CHECKPOINT_NUM(5));
+    TEST_ASSERT_EQUAL(orig_info.size, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(6));
+    TEST_ASSERT_EQUAL(orig_info.flags, 0, TEST_CHECKPOINT_NUM(7));
+
+    /* Remove the uid */
+    status = SST_FUNCTION(p010_data[8].api, p_uid);
+    TEST_ASSERT_EQUAL(status, p010_data[8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Create a valid storage */
+    status = SST_FUNCTION(p010_data[9].api, p_uid, TEST_BUFF_SIZE/2, 0);
+    TEST_ASSERT_EQUAL(status, p010_data[9].status, TEST_CHECKPOINT_NUM(9));
+
+    /* Try to change length using create api */
+    val->print(PRINT_TEST, "[Check 4] Call create api with different parameters than used to"
+                           " create the asset using create api\n", 0);
+    status = SST_FUNCTION(p010_data[10].api, p_uid, TEST_BUFF_SIZE, 0);
+    TEST_ASSERT_EQUAL(status, p010_data[10].status, TEST_CHECKPOINT_NUM(10));
+
+    /* Check the storage should be empty */
+    status = SST_FUNCTION(p010_data[11].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p010_data[11].status, TEST_CHECKPOINT_NUM(11));
+    for (j = 0; j < TEST_BUFF_SIZE; j++)
+    {
+        TEST_ASSERT_EQUAL(read_buff[j], 0, TEST_CHECKPOINT_NUM(12));
+    }
+
+    /* Remove the uid */
+    status = SST_FUNCTION(p010_data[13].api, p_uid);
+    TEST_ASSERT_EQUAL(status, p010_data[13].api, TEST_CHECKPOINT_NUM(13));
+
+    /* Call the set_extended API with uid which is removed */
+    val->print(PRINT_TEST, "[Check 5] Set_extended api call for UID %d which is removed\n", p_uid);
+    status = SST_FUNCTION(p010_data[14].api, p_uid, 0, TEST_BUFF_SIZE, write_buff);
+    TEST_ASSERT_EQUAL(status, p010_data[14].status, TEST_CHECKPOINT_NUM(14));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t psa_sst_optional_api_key_not_found(security_t caller)
+{
+    uint32_t status;
+
+    /* Call the get_support api and check if create and set_extended api are supported */
+    status = SST_FUNCTION(p010_data[0].api);
+
+    if (status == p010_data[0].status)
+    {
+       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
+       psa_sst_invalid_key();
+    }
+    else
+    {
+       val->print(PRINT_TEST, "Test Case not needed as Optional PS APIs are not supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
+
diff --git a/api-tests/dev_apis/protected_storage/test_p010/test_p010.h b/api-tests/dev_apis/protected_storage/test_p010/test_p010.h
new file mode 100644
index 0000000..8455142
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p010/test_p010.h
@@ -0,0 +1,29 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_P010_CLIENT_TESTS_H_
+#define _TEST_P010_CLIENT_TESTS_H_
+
+#define test_entry CONCAT(test_entry_, p010)
+#define val CONCAT(val,test_entry)
+#define psa CONCAT(psa,test_entry)
+
+extern val_api_t *val;
+extern psa_api_t *psa;
+extern client_test_t test_p010_sst_list[];
+
+int32_t psa_sst_optional_api_key_not_found(security_t caller);
+#endif /* _TEST_P010_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p010/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p010/test_ps_data.h
new file mode 100644
index 0000000..f8d385b
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p010/test_ps_data.h
@@ -0,0 +1,77 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or ps affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_P010_PS_DATA_TESTS_H_
+#define _TEST_P010_PS_DATA_TESTS_H_
+
+#include "val_protected_storage.h"
+
+#define SST_FUNCTION val->ps_function
+
+typedef struct {
+    char                   test_desc[100];
+    enum ps_function_code  api;
+    psa_ps_status_t        status;
+} test_data;
+
+static test_data p010_data[] = {
+{
+ "Check if optional PS api supported", VAL_PS_GET_SUPPORT, PSA_PS_SUPPORT_SET_EXTENDED
+},
+{
+ "Set_extended call for non-existing uid", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_INVALID_KEY
+},
+{
+ "Create valid storage using set api", VAL_PS_SET, PSA_PS_SUCCESS
+},
+{
+ "Call create api for existing uid with different length", VAL_PS_CREATE, PSA_PS_ERROR_INVALID_KEY
+},
+{
+ "Call create api for to set WRITE_ONCE flag", VAL_PS_CREATE, PSA_PS_ERROR_INVALID_KEY
+},
+{
+ "Validate existing uid attributes maintained", VAL_PS_GET_INFO, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index6", 0, 0
+},
+{
+ "This is dummy for index7", 0, 0
+},
+{
+ "Remove the uid", VAL_PS_REMOVE, PSA_PS_SUCCESS
+},
+{
+ "Create valid storage using create api", VAL_PS_CREATE, PSA_PS_SUCCESS
+},
+{
+ "Again call create api with different length", VAL_PS_CREATE, PSA_PS_ERROR_INVALID_KEY
+},
+{
+ "Validate the storage is empty", VAL_PS_GET, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index12", 0, 0
+},
+{
+ "Remove the uid", VAL_PS_REMOVE, PSA_PS_SUCCESS
+},
+{
+ "Set_extended call for removed uid", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_INVALID_KEY
+}
+};
+#endif /* _TEST_P010_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p011/source.mk b/api-tests/dev_apis/protected_storage/test_p011/source.mk
new file mode 100644
index 0000000..16b6a86
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p011/source.mk
@@ -0,0 +1,20 @@
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+CC_SOURCE  = test_entry.c test_p011.c
+CC_OPTIONS =
+AS_SOURCE  =
+AS_OPTIONS =
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_entry.c b/api-tests/dev_apis/protected_storage/test_p011/test_entry.c
new file mode 100644
index 0000000..c4c713f
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p011/test_entry.c
@@ -0,0 +1,53 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_p011.h"
+
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 11)
+#define TEST_DESC "Set_Extended api : Bad pointer and offset invalid check\n"
+
+TEST_PUBLISH(TEST_NUM, test_entry);
+val_api_t *val = NULL;
+psa_api_t *psa = NULL;
+
+void test_entry(val_api_t *val_api, psa_api_t *psa_api)
+{
+    int32_t   status = VAL_STATUS_SUCCESS;
+
+    val = val_api;
+    psa = psa_api;
+
+    /* test init */
+    val->test_init(TEST_NUM, TEST_DESC, TEST_FIELD(TEST_ISOLATION_L1, WD_HIGH_TIMEOUT));
+    if (!IS_TEST_START(val->get_status()))
+    {
+        goto test_exit;
+    }
+
+    /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
+    status = val->execute_non_secure_tests(TEST_NUM, test_p011_sst_list, FALSE);
+
+    if (VAL_ERROR(status))
+    {
+        goto test_exit;
+    }
+
+test_exit:
+    val->test_exit();
+}
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_p011.c b/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
new file mode 100644
index 0000000..4e36b9c
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p011/test_p011.c
@@ -0,0 +1,133 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_p011.h"
+#include "test_ps_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+client_test_t test_p011_sst_list[] = {
+    NULL,
+    psa_sst_optional_api_offset_invalid,
+    NULL,
+};
+
+static psa_ps_uid_t p_uid = UID_BASE_VALUE + 11;
+static uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
+static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
+static uint8_t write_buff_2[TEST_BUFF_SIZE] = {0xFF, 0xC1, 0xA2, 0xE3, 0x04, 0x05, 0x06, 0x07,
+                                             0x03, 0x09, 0x0A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F};
+
+int32_t psa_sst_offset_invalid()
+{
+    uint32_t status;
+
+    /* Create valid storage using create api */
+    status = SST_FUNCTION(p011_data[1].api, p_uid, TEST_BUFF_SIZE, 0);
+    TEST_ASSERT_EQUAL(status, p011_data[1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Set some data in the storage created */
+    status = SST_FUNCTION(p011_data[2].api, p_uid, TEST_BUFF_SIZE/2, 5, write_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Try to set data at invalid location with incorrect data len + offset  */
+    val->print(PRINT_TEST, "[Check 1] Set_extended api call with invalid offset + length\n", 0);
+    status = SST_FUNCTION(p011_data[3].api, p_uid, TEST_BUFF_SIZE, 2, write_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[3].status, TEST_CHECKPOINT_NUM(3));
+
+    /* Try to set data at invalid location with incorrect offset */
+    val->print(PRINT_TEST, "[Check 2] Set_extended api call with invalid offset\n", 0);
+    status = SST_FUNCTION(p011_data[4].api, p_uid, TEST_BUFF_SIZE + 2, 0, write_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[4].status, TEST_CHECKPOINT_NUM(4));
+
+    /* Try to set data at correct offset, but zero data len */
+    val->print(PRINT_TEST, "[Check 3] Set_extended api call with offset equals length\n", 0);
+    status = SST_FUNCTION(p011_data[5].api, p_uid, TEST_BUFF_SIZE, 0, write_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[5].status, TEST_CHECKPOINT_NUM(5));
+
+    /* Try to set data at invalid location with incorrect data len + offset */
+    val->print(PRINT_TEST, "[Check 4] Set_extended api call with invalid offset + length\n", 0);
+    status = SST_FUNCTION(p011_data[6].api, p_uid, 1, TEST_BUFF_SIZE, write_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[6].status, TEST_CHECKPOINT_NUM(6));
+
+    /* Try to set data at invalid location with incorrect data len */
+    val->print(PRINT_TEST, "[Check 5] Set_extended api call with invalid length\n", 0);
+    status = SST_FUNCTION(p011_data[7].api, p_uid, 0, TEST_BUFF_SIZE + 1, write_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[7].status, TEST_CHECKPOINT_NUM(7));
+
+    /* Set data using set api */
+    val->print(PRINT_TEST, "[Check 6] Overwrite the whole data with set api\n", 0);
+    status = SST_FUNCTION(p011_data[8].api, p_uid, TEST_BUFF_SIZE, write_buff, 0);
+    TEST_ASSERT_EQUAL(status, p011_data[8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Call the GET function to check data is correctly overwritten */
+    status = SST_FUNCTION(p011_data[9].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[9].status, TEST_CHECKPOINT_NUM(9));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(10));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+static int32_t psa_sst_bad_pointer()
+{
+    uint32_t status;
+
+    /* Call set extended with NULL write_buff */
+    val->print(PRINT_TEST, "[Check 7] Call set_extended with NULL write buffer\n", 0);
+    status = SST_FUNCTION(p011_data[11].api, p_uid, 0, TEST_BUFF_SIZE, NULL);
+    TEST_ASSERT_EQUAL(status, p011_data[11].status, TEST_CHECKPOINT_NUM(11));
+
+    /* Call set extended to overwrite data with new values */
+    status = SST_FUNCTION(p011_data[12].api, p_uid, 0, TEST_BUFF_SIZE, write_buff_2);
+    TEST_ASSERT_EQUAL(status, p011_data[12].status, TEST_CHECKPOINT_NUM(12));
+
+    /* Call the GET function to get the data buffer and match the buffer */
+    status = SST_FUNCTION(p011_data[13].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p011_data[13].status, TEST_CHECKPOINT_NUM(13));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff_2, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(14));
+
+    /* Remove the storage */
+    status = SST_FUNCTION(p011_data[15].api, p_uid);
+    TEST_ASSERT_EQUAL(status, p011_data[15].status, TEST_CHECKPOINT_NUM(15));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t psa_sst_optional_api_offset_invalid(security_t caller)
+{
+    uint32_t status;
+
+    /* Call the get_support api and check if create and set_extended api are supported */
+    status = SST_FUNCTION(p011_data[0].api);
+
+    if (status == p011_data[0].status)
+    {
+       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
+       psa_sst_offset_invalid();
+       psa_sst_bad_pointer();
+    }
+    else
+    {
+       val->print(PRINT_TEST, "Test Case not needed as Optional PS APIs are not supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_p011.h b/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
new file mode 100644
index 0000000..8d09c07
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p011/test_p011.h
@@ -0,0 +1,29 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_P011_CLIENT_TESTS_H_
+#define _TEST_P011_CLIENT_TESTS_H_
+
+#define test_entry CONCAT(test_entry_, p011)
+#define val CONCAT(val,test_entry)
+#define psa CONCAT(psa,test_entry)
+
+extern val_api_t *val;
+extern psa_api_t *psa;
+extern client_test_t test_p011_sst_list[];
+
+int32_t psa_sst_optional_api_offset_invalid(security_t caller);
+#endif /* _TEST_P011_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p011/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p011/test_ps_data.h
new file mode 100644
index 0000000..594b766
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p011/test_ps_data.h
@@ -0,0 +1,80 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or ps affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_P011_PS_DATA_TESTS_H_
+#define _TEST_P011_PS_DATA_TESTS_H_
+
+#include "val_protected_storage.h"
+
+#define SST_FUNCTION val->ps_function
+
+typedef struct {
+    char                   test_desc[100];
+    enum ps_function_code  api;
+    psa_ps_status_t        status;
+} test_data;
+
+static test_data p011_data[] = {
+{
+ "Check if optional PS api supported", VAL_PS_GET_SUPPORT, PSA_PS_SUPPORT_SET_EXTENDED
+},
+{
+ "Create valid storage", VAL_PS_CREATE, PSA_PS_SUCCESS
+},
+{
+ "Set data using set_extended api", VAL_PS_SET_EXTENDED, PSA_PS_SUCCESS
+},
+{
+ "Set_extended call with invalid offset + length", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_OFFSET_INVALID
+},
+{
+ "Set_extended call with invalid offset", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_OFFSET_INVALID
+},
+{
+ "Set_extended call with valid offset and zero length", VAL_PS_SET_EXTENDED, PSA_PS_SUCCESS
+},
+{
+ "Set_extended call with invalid offset + length", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_OFFSET_INVALID
+},
+{
+ "Set_extended call with invalid length", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_OFFSET_INVALID
+},
+{
+ "Write data using set api", VAL_PS_SET, PSA_PS_SUCCESS
+},
+{
+ "Check data validity using get api", VAL_PS_GET, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index10", 0, 0
+},
+{
+ "Set_extended call with NULL write buffer", VAL_PS_SET_EXTENDED, PSA_PS_ERROR_BAD_POINTER
+},
+{
+ "Overwrite data using set_extended", VAL_PS_SET_EXTENDED, PSA_PS_SUCCESS
+},
+{
+ "Check data validity using get api", VAL_PS_GET, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index14", 0, 0
+},
+{
+ "Remove the uid", VAL_PS_REMOVE, PSA_PS_SUCCESS
+},
+};
+#endif /* _TEST_P011_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p012/source.mk b/api-tests/dev_apis/protected_storage/test_p012/source.mk
new file mode 100644
index 0000000..2035409
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p012/source.mk
@@ -0,0 +1,20 @@
+# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+CC_SOURCE  = test_entry.c test_p012.c
+CC_OPTIONS =
+AS_SOURCE  =
+AS_OPTIONS =
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_entry.c b/api-tests/dev_apis/protected_storage/test_p012/test_entry.c
new file mode 100644
index 0000000..e7bf507
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p012/test_entry.c
@@ -0,0 +1,53 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_p012.h"
+
+#define TEST_NUM  VAL_CREATE_TEST_ID(VAL_PROTECTED_STORAGE_BASE, 12)
+#define TEST_DESC "Set_Extended and Create api : Success\n"
+
+TEST_PUBLISH(TEST_NUM, test_entry);
+val_api_t *val = NULL;
+psa_api_t *psa = NULL;
+
+void test_entry(val_api_t *val_api, psa_api_t *psa_api)
+{
+    int32_t   status = VAL_STATUS_SUCCESS;
+
+    val = val_api;
+    psa = psa_api;
+
+    /* test init */
+    val->test_init(TEST_NUM, TEST_DESC, TEST_FIELD(TEST_ISOLATION_L1, WD_HIGH_TIMEOUT));
+    if (!IS_TEST_START(val->get_status()))
+    {
+        goto test_exit;
+    }
+
+    /* Execute list of tests available in test[num]_protected_storage_list from Non-secure side*/
+    status = val->execute_non_secure_tests(TEST_NUM, test_p012_sst_list, FALSE);
+
+    if (VAL_ERROR(status))
+    {
+        goto test_exit;
+    }
+
+test_exit:
+    val->test_exit();
+}
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_p012.c b/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
new file mode 100644
index 0000000..48d7256
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p012/test_p012.c
@@ -0,0 +1,139 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_interfaces.h"
+#include "val_target.h"
+#include "test_p012.h"
+#include "test_ps_data.h"
+
+#define TEST_BUFF_SIZE 16
+
+client_test_t test_p012_sst_list[] = {
+    NULL,
+    psa_sst_optional_api_success_check,
+    NULL,
+};
+
+static psa_ps_uid_t p_uid = UID_BASE_VALUE + 11;
+static uint8_t write_buff[TEST_BUFF_SIZE/2] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
+static uint8_t write_buff_2[TEST_BUFF_SIZE/2] = {0xFF, 0x11, 0xA2, 0xE3, 0x04, 0xA5, 0xD6, 0x97};
+static uint8_t read_buff[TEST_BUFF_SIZE]  = {0};
+static uint8_t write_buff_3[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+                                             0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
+
+static int32_t psa_sst_set_extended_create_success()
+{
+    uint32_t status;
+    struct psa_ps_info_t info;
+
+    /* Create storage of zero length using create api */
+    val->print(PRINT_TEST, "[Check 1] Create storage using create api for 0 length\n", 0);
+    status = SST_FUNCTION(p012_data[1].api, p_uid, 0, 0);
+    TEST_ASSERT_EQUAL(status, p012_data[1].status, TEST_CHECKPOINT_NUM(1));
+
+    /* Set some data in the storage created */
+    val->print(PRINT_TEST, "[Check 2] Call set_extended for zero storage length\n", 0);
+    status = SST_FUNCTION(p012_data[2].api, p_uid, 0, 0, write_buff);
+    TEST_ASSERT_EQUAL(status, p012_data[2].status, TEST_CHECKPOINT_NUM(2));
+
+    /* Call the GET_INFO function to match attributes */
+    status = SST_FUNCTION(p012_data[3].api, p_uid, &info);
+    TEST_ASSERT_EQUAL(status, p012_data[3].status, TEST_CHECKPOINT_NUM(3));
+    TEST_ASSERT_EQUAL(info.flags, 0, TEST_CHECKPOINT_NUM(4));
+    TEST_ASSERT_EQUAL(info.size, 0, TEST_CHECKPOINT_NUM(5));
+
+    /* Remove the storage */
+    val->print(PRINT_TEST, "[Check 3] Remove the storage\n", 0);
+    status = SST_FUNCTION(p012_data[6].api, p_uid);
+    TEST_ASSERT_EQUAL(status, p012_data[6].status, TEST_CHECKPOINT_NUM(6));
+
+    /* Create a valid storage */
+    status = SST_FUNCTION(p012_data[7].api, p_uid, TEST_BUFF_SIZE, 0);
+    TEST_ASSERT_EQUAL(status, p012_data[7].status, TEST_CHECKPOINT_NUM(7));
+
+    /* Try to set data in first half of buffer */
+    status = SST_FUNCTION(p012_data[8].api, p_uid, 0, TEST_BUFF_SIZE/2, write_buff);
+    TEST_ASSERT_EQUAL(status, p012_data[8].status, TEST_CHECKPOINT_NUM(8));
+
+    /* Try to set data in second half of buffer */
+    status = SST_FUNCTION(p012_data[9].api, p_uid, TEST_BUFF_SIZE/2, TEST_BUFF_SIZE/2,\
+                          write_buff_2);
+    TEST_ASSERT_EQUAL(status, p012_data[9].status, TEST_CHECKPOINT_NUM(9));
+
+    /* Call the GET function to match the data */
+    val->print(PRINT_TEST, "[Check 4] Valid data written by multiple set_extended\n", 0);
+    status = SST_FUNCTION(p012_data[10].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p012_data[10].status, TEST_CHECKPOINT_NUM(10));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff, TEST_BUFF_SIZE/2, TEST_CHECKPOINT_NUM(11));
+    TEST_ASSERT_MEMCMP(read_buff + TEST_BUFF_SIZE/2, write_buff_2, TEST_BUFF_SIZE/2,\
+                       TEST_CHECKPOINT_NUM(12));
+
+    /* Overwrite data using set api */
+    val->print(PRINT_TEST, "[Check 5] Overwrite whole data using set api\n", 0);
+    status = SST_FUNCTION(p012_data[13].api, p_uid, TEST_BUFF_SIZE, write_buff_3, 0);
+    TEST_ASSERT_EQUAL(status, p012_data[13].status, TEST_CHECKPOINT_NUM(13));
+
+    /* Call the GET function to match the data */
+    val->print(PRINT_TEST, "[Check 6] Validate the data using get api\n", 0);
+    status = SST_FUNCTION(p012_data[14].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p012_data[14].status, TEST_CHECKPOINT_NUM(14));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff_3, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(15));
+
+    /* Call create api for existing uid with same parameters */
+    val->print(PRINT_TEST, "[Check 7] Call create api for existing uid with same parameters\n", 0);
+    status = SST_FUNCTION(p012_data[16].api, p_uid, TEST_BUFF_SIZE, 0);
+    TEST_ASSERT_EQUAL(status, p012_data[16].status, TEST_CHECKPOINT_NUM(16));
+
+    /* Call the GET function to match the data */
+    val->print(PRINT_TEST, "[Check 8] validity of data after create api call\n", 0);
+    status = SST_FUNCTION(p012_data[17].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p012_data[17].status, TEST_CHECKPOINT_NUM(17));
+    TEST_ASSERT_MEMCMP(read_buff, write_buff_3, TEST_BUFF_SIZE, TEST_CHECKPOINT_NUM(18));
+
+    /* Remove the storage */
+    val->print(PRINT_TEST, "[Check 9] Remove the uid\n", 0);
+    status = SST_FUNCTION(p012_data[19].api, p_uid);
+    TEST_ASSERT_EQUAL(status, p012_data[19].status, TEST_CHECKPOINT_NUM(19));
+
+    /* Validate there should not be duplicate uid present */
+    val->print(PRINT_TEST, "[Check 10] No duplicate entry of uid present\n", 0);
+    status = SST_FUNCTION(p012_data[20].api, p_uid, 0, TEST_BUFF_SIZE, read_buff);
+    TEST_ASSERT_EQUAL(status, p012_data[20].status, TEST_CHECKPOINT_NUM(20));
+
+    return VAL_STATUS_SUCCESS;
+}
+
+int32_t psa_sst_optional_api_success_check(security_t caller)
+{
+    uint32_t status;
+
+    /* Call the get_support api and check if create and set_extended api are supported */
+    status = SST_FUNCTION(p012_data[0].api);
+
+    if (status == p012_data[0].status)
+    {
+       val->print(PRINT_INFO, "Optional PS APIs are supported.\n", 0);
+       psa_sst_set_extended_create_success();
+    }
+    else
+    {
+       val->print(PRINT_TEST, "Test Case not needed as Optional PS APIs are not supported.\n", 0);
+       return RESULT_SKIP(VAL_STATUS_UNSUPPORTED);
+    }
+
+    return VAL_STATUS_SUCCESS;
+}
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_p012.h b/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
new file mode 100644
index 0000000..b2aeae7
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p012/test_p012.h
@@ -0,0 +1,30 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_P012_CLIENT_TESTS_H_
+#define _TEST_P012_CLIENT_TESTS_H_
+
+#define test_entry CONCAT(test_entry_, p012)
+#define val CONCAT(val,test_entry)
+#define psa CONCAT(psa,test_entry)
+
+extern val_api_t *val;
+extern psa_api_t *psa;
+extern client_test_t test_p012_sst_list[];
+
+int32_t psa_sst_optional_api_success_check(security_t caller);
+
+#endif /* _TEST_P012_CLIENT_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/test_p012/test_ps_data.h b/api-tests/dev_apis/protected_storage/test_p012/test_ps_data.h
new file mode 100644
index 0000000..a9c79a2
--- /dev/null
+++ b/api-tests/dev_apis/protected_storage/test_p012/test_ps_data.h
@@ -0,0 +1,95 @@
+/** @file
+ * Copyright (c) 2019, Arm Limited or ps affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+#ifndef _TEST_P012_PS_DATA_TESTS_H_
+#define _TEST_P012_PS_DATA_TESTS_H_
+
+#include "val_protected_storage.h"
+
+#define SST_FUNCTION val->ps_function
+
+typedef struct {
+    char                   test_desc[100];
+    enum ps_function_code  api;
+    psa_ps_status_t        status;
+} test_data;
+
+static test_data p012_data[] = {
+{
+ "Check if optional PS api supported", VAL_PS_GET_SUPPORT, PSA_PS_SUPPORT_SET_EXTENDED
+},
+{
+ "Create storage of zero length", VAL_PS_CREATE, PSA_PS_SUCCESS
+},
+{
+ "Call set_extened with zero length", VAL_PS_SET_EXTENDED, PSA_PS_SUCCESS
+},
+{
+ "Validate the storage attributes", VAL_PS_GET_INFO, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index4", 0, 0
+},
+{
+ "This is dummy for index5", 0, 0
+},
+{
+ "Remove the uid", VAL_PS_REMOVE, PSA_PS_SUCCESS
+},
+{
+ "Create storage of non-zero length", VAL_PS_CREATE, PSA_PS_SUCCESS
+},
+{
+ "Call set_extened to write data in first half of buffer", VAL_PS_SET_EXTENDED, PSA_PS_SUCCESS
+},
+{
+ "Call set_extened to write data in second half of buffer", VAL_PS_SET_EXTENDED, PSA_PS_SUCCESS
+},
+{
+ "Validate the data stored", VAL_PS_GET, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index11", 0, 0
+},
+{
+ "This is dummy for index12", 0, 0
+},
+{
+ "Overwrite data with set api", VAL_PS_SET, PSA_PS_SUCCESS
+},
+{
+ "Validate the data written", VAL_PS_GET, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index15", 0, 0
+},
+{
+ "Call Create api for existing uid with same parameters ", VAL_PS_CREATE, PSA_PS_SUCCESS
+},
+{
+ "Validate the data", VAL_PS_GET, PSA_PS_SUCCESS
+},
+{
+ "This is dummy for index18", 0, 0
+},
+{
+ "Remove the uid", VAL_PS_REMOVE, PSA_PS_SUCCESS
+},
+{
+ "Check no duplicate entry of uid present", VAL_PS_GET, PSA_PS_ERROR_UID_NOT_FOUND
+}
+};
+#endif /* _TEST_P012_PS_DATA_TESTS_H_ */
diff --git a/api-tests/dev_apis/protected_storage/testsuite.db b/api-tests/dev_apis/protected_storage/testsuite.db
index 186fb04..841cdf7 100644
--- a/api-tests/dev_apis/protected_storage/testsuite.db
+++ b/api-tests/dev_apis/protected_storage/testsuite.db
@@ -29,5 +29,8 @@
 test_s007
 test_s008
 test_s009
+test_p010
+test_p011
+test_p012
 
 (END)
diff --git a/api-tests/docs/psa_its_testlist.md b/api-tests/docs/psa_its_testlist.md
index a10c3a5..2b47d5c 100644
--- a/api-tests/docs/psa_its_testlist.md
+++ b/api-tests/docs/psa_its_testlist.md
@@ -1,18 +1,25 @@
 # PSA Internal Trusted Storage Testcase checklist
 
+## Requirements for Storage Test Suite
+
+Following are the requirements of the Storage Test Suite. <br />
+
+1. Unless described in this document, any behaviour that is defined as IMPLEMENTATION_DEFINED in PSA Storage API document is not verified in this document. <br />
+2. Storage Test Cases use UID value starting from 10 onwards. These UID needs to be free for successfull test execution.<br />
+
 
 
 | Test      | Return Value                         | API Verified                                                                 | Test Algorithm                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | UID Usage                                                                                                                                                                                        |
 |-----------|--------------------------------------|------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| test_s001 | PSA_ITS_ERROR_KEY_NOT_FOUND          | psa_its_get<br />psa_its_get_info <br />psa_its_remove<br />                 | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. remove the stray uid.<br />                                                                                                         | UID value used are 10,11                                                                                                                     |
+| test_s001 | PSA_ITS_ERROR_KEY_NOT_FOUND          | psa_its_get<br />psa_its_get_info <br />psa_its_remove<br />                 | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. Remove the stray uid.<br />                                                                                                         | UID value used are 10,11                                                                                                                     |
 | test_s002 | PSA_ITS_ERROR_WRITE_ONCE             | psa_its_set<br />psa_its_remove<br />                                        | 1.  Set valid UID/data value pair , with create flag value none.2. Call get and get_info API to validate the data, attributes associated with data<br />3. Call set API again with same uid and create flag  PSA_PS_WRITE_ONCE_FLAG<br />4. Call get and get_info API to validate the data, attributes associated with data is not changed after second set operation<br />5. try to remove the UID/data pair.<br />6. Create new UID/data value pair, with create flag PSA_PS_WRITE_ONCE_FLAG<br />7. Try to remove the created UID.<br />8. Call get and get_info API to validate the data, attributes associated with data<br />9. Again call SET with same UID , create flag PSA_PS_WRITE_ONCE_FLAG but different data length<br />10. Try to remove the UID, PSA_ITS_ERROR_WRITE_ONCE error should be returned<br />11. Call get and get_info API to validate the data, attributes associated with data<br /> | UID value used are 14 and 15                                                                                                                                                                     |
-| test_s003 | PSA_ITS_ERROR_INSUFFICIENT_SPACE     | psa_its_set<br />                                                            | 1. Create UID/data pairs, with data_len 256 bytes. Do this with incrementing uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. repeat the steps 5 times, to check same number of uid <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 1 and keep on incrementing till all space is exhausted                                                                                                                    |
+| test_s003 | PSA_ITS_ERROR_INSUFFICIENT_SPACE     | psa_its_set<br />                                                            | 1. Create UID/data pairs, with data_len 256 bytes. Do this with incrementing uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. Repeat the steps 5 times, to check same number of uid <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 20 and keep on incrementing till all space is exhausted                                                                                                                    |
 | test_s004 | PSA_ITS_SUCCESS                      | psa_its_set<br />psa_its_get<br />psa_its_get_info<br />psa_its_remove<br /> | 1. Set a valid uid/data pair<br />2. Validate the data using get api<br />3. Change the data length to half of previous.<br />4. Call GET api with original data length , error should be returned and also the return buffer should be empty<br />5. Call GET api with correct data_len and validate the data received.<br />6. Check old data cannot be accessed.<br />7. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used is 11                                                                                                                                                                            |
-| test_s005 | PSA_ITS_SUCCESS                      | psa_its_set<br />psa_its_get<br />psa_its_get_info<br />psa_its_remove<br /> | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 0 and 10                                                                                                                           |
-| test_s006 | PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED    | psa_its_set<br />                                                            | 1.  Call the SET_INFO with minimum flag value to max flag value <br />2. Call GET_INFO api and validae the flag value<br />3. remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 10                                                                                                                          |
-| test_s007 | PSA_ITS_ERROR_FLAGS_SET_AFTER_CREATE | psa_its_set<br />                                                            | 1. Create valid uid/data pair with non-zero value. <br />2. Again call the set api for same uid to change flag to some different non-zero value.<br />3. Try to set flag to now CREATE_FLAG_VALUE_NONE.<br />4. remove the uid.<br />5. Create a new UID/data pair with zero create flag.<br />6. try to change the flag value to non-zero.<br />7. remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 10                                                                                                                       |
+| test_s005 | PSA_ITS_SUCCESS                      | psa_its_set<br />psa_its_get<br />psa_its_get_info<br />psa_its_remove<br /> | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 1 and 10                                                                                                                           |
+| test_s006 | PSA_ITS_ERROR_FLAGS_NOT_SUPPORTED    | psa_its_set<br />                                                            | 1.  Call the SET_INFO with minimum flag value to max flag value <br />2. Call GET_INFO api and validate the flag value<br />3. Remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 10                                                                                                                          |
+| test_s007 | PSA_ITS_ERROR_INCORRECT_SIZE | psa_its_set<br />                                                            | 1. Create valid uid/data pair. <br />2. Increase the length of storage.<br />3. Try to access the old length using get api.<br />4. Try to access with valid length less than stored size.<br />5. Decrease the length of storage.<br />6. Try to access the old length.<br />7. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 10                                                                                                                       |
 | test_s008 | PSA_ITS_ERROR_OFFSET_INVALID         | psa_its_get<br />                                                            | 1. Set valid UID/data pair<br />2. Call GET api with valid offset and offset + data_len equal to stored data size.<br />3. Call GET api with valid offset and offset + data_len less than stored data size.<br />4. Call get api with invalid offset.<br />5. Call get api with zero offset , but data len greater than data size.<br />6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is  11 |
-| test_s009 | PSA_ITS_ERROR_BAD_POINTER            | psa_its_get<br />psa_its_set<br />psa_its_get_info<br />                     | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should not be present.<br />3. Set storage entity with valid write_buffer , but length zero.<br />4. Again try to set for same uid with NULL write_buffer.<br />5. Call get and get_info api with NULL pointer and valid uid.<br />6. remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 11 <br />                                                                                                                                                                     |
+| test_s009 | PSA_ITS_ERROR_BAD_POINTER            | psa_its_get<br />psa_its_set<br />psa_its_get_info<br />                     | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should not be present.<br />3. Set storage entity with valid write_buffer , but length zero.<br />4. Again try to set for same uid with NULL write_buffer.<br />5. Call get and get_info api with NULL pointer and valid uid.<br />6. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 11 <br />                                                                                                                                                                     |
 
 
 ## License
diff --git a/api-tests/docs/psa_ps_testlist.md b/api-tests/docs/psa_ps_testlist.md
index 89f6981..d84d9a0 100644
--- a/api-tests/docs/psa_ps_testlist.md
+++ b/api-tests/docs/psa_ps_testlist.md
@@ -1,19 +1,27 @@
 # PSA Protected Storage Testcase checklist
 
+## Requirements for Storage Test Suite
+
+Following are the requirements of the Storage Test Suite. <br />
+
+1. Unless described in this document, any behaviour that is defined as IMPLEMENTATION_DEFINED in PSA Storage API document is not verified in this document.<br />
+2. Storage Test Cases use UID value starting from 10 onwards. These UID needs to be free for successfull test execution.<br />
 
 
 | Test      | Return Value                         | API Verified                                                                 | Test Algorithm                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | UID Usage                                                                                                                                                                                        |
 |-----------|--------------------------------------|------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| test_s001 | PSA_PS_ERROR_KEY_NOT_FOUND          | psa_ps_get<br />psa_ps_get_info <br />psa_ps_remove<br />                 | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. remove the stray uid.<br />                                                                                                         | UID value used are 10,11,9                                                                                                                     |
-| test_s002 | PSA_PS_ERROR_WRITE_ONCE             | psa_ps_set<br />psa_ps_remove<br />                                        | 1.  Set valid UID/data value pair , with create flag value none.2. Call get and get_info API to validate the data, attributes associated with data<br />3. Call set API again with same uid and create flag  PSA_PS_WRITE_ONCE_FLAG<br />4. Call get and get_info API to validate the data, attributes associated with data is not changed after second set operation<br />5. try to remove the UID/data pair.<br />6. Create new UID/data value pair, with create flag PSA_PS_WRITE_ONCE_FLAG<br />7. Try to remove the created UID.<br />8. Call get and get_info API to validate the data, attributes associated with data<br />9. Again call SET with same UID , create flag PSA_PS_WRITE_ONCE_FLAG but different data length<br />10. Try to remove the UID, PSA_PS_ERROR_WRITE_ONCE error should be returned<br />11. Call get and get_info API to validate the data, attributes associated with data<br /> | UID value used are 20 and 21                                                                                                                                                                     |
-| test_s003 | PSA_PS_ERROR_INSUFFICIENT_SPACE     | psa_ps_set<br />                                                            | 1. Create UID/data pairs, with data_len 256 bytes. Do this with incrementing uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. repeat the steps 5 times, to check same number of uid <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 1 and keep on incrementing till all space is exhausted                                                                                                                    |
+| test_s001 | PSA_PS_ERROR_UID_NOT_FOUND          | psa_ps_get<br />psa_ps_get_info <br />psa_ps_remove<br />                 | 1. Call get API with UID for which no UID/Data pair is created<br />2. Call get_info API for which no UID/Data pair is created<br />3. Call remove API for which no UID/Data pair is created<br />4. Set valid  UID/Data pair with uid1<br />5. Set one more set of UID/Data pair, with different uid, than previous<br />6. Remove the uid of step 4.<br />7. Call get API for  removed UID/data pair<br />8. Call get_info API for  removed UID/Data pair<br />9. Call remove API for  removed UID/Data pair<br />10. Set valid UID/Data pair<br />11. Call get API for different uid , then created<br />12. Call get_info API for different uid, then created<br />13. Call remove API for different uid, then created<br />14. Remove the created UID/Data pair.<br />15. Remove the stray uid.<br />                                                                                                         | UID value used are 10,11                                                                                                                     |
+| test_s002 | PSA_PS_ERROR_WRITE_ONCE             | psa_ps_set<br />psa_ps_remove<br />                                        | 1.  Set valid UID/data value pair , with create flag value none.2. Call get and get_info API to validate the data, attributes associated with data<br />3. Call set API again with same uid and create flag  PSA_PS_WRITE_ONCE_FLAG<br />4. Call get and get_info API to validate the data, attributes associated with data is not changed after second set operation<br />5. Try to remove the UID/data pair.<br />6. Create new UID/data value pair, with create flag PSA_PS_WRITE_ONCE_FLAG<br />7. Try to remove the created UID.<br />8. Call get and get_info API to validate the data, attributes associated with data<br />9. Again call SET with same UID , create flag PSA_PS_WRITE_ONCE_FLAG but different data length<br />10. Try to remove the UID, PSA_PS_ERROR_WRITE_ONCE error should be returned<br />11. Call get and get_info API to validate the data, attributes associated with data<br /> | UID value used are 20 and 21                                                                                                                                                                     |
+| test_s003 | PSA_PS_ERROR_INSUFFICIENT_SPACE     | psa_ps_set<br />                                                            | 1. Create UID/data pairs, with data_len 256 bytes. Do this with incrementing uid values till we have INSUFFICENT_SPACE.<br />2. Remove all the UID/data pairs created.<br />3. Repeat the steps 5 times, to check same number of uid <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | UID value starts from 20 and keep on incrementing till all space is exhausted                                                                                                                    |
 | test_s004 | PSA_PS_SUCCESS                      | psa_ps_set<br />psa_ps_get<br />psa_ps_get_info<br />psa_ps_remove<br /> | 1. Set a valid uid/data pair<br />2. Validate the data using get api<br />3. Change the data length to half of previous.<br />4. Call GET api with original data length , error should be returned and also the return buffer should be empty<br />5. Call GET api with correct data_len and validate the data received.<br />6. Check old data cannot be accessed.<br />7. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used is 11                                                                                                                                                                            |
-| test_s005 | PSA_PS_SUCCESS                      | psa_ps_set<br />psa_ps_get<br />psa_ps_get_info<br />psa_ps_remove<br /> | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 0 and 10                                                                                                                           |
-| test_s006 | PSA_PS_ERROR_FLAGS_NOT_SUPPORTED    | psa_ps_set<br />                                                            | 1.  Call the SET_INFO with minimum flag value to max flag value <br />2. Call GET_INFO api and validae the flag value<br />3. remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 10                                                                                                                          |
-| test_s007 | PSA_PS_ERROR_FLAGS_SET_AFTER_CREATE | psa_ps_set<br />                                                            | 1. Create valid uid/data pair with non-zero value. <br />2. Again call the set api for same uid to change flag to some different non-zero value.<br />3. Try to set flag to now CREATE_FLAG_VALUE_NONE.<br />4. remove the uid.<br />5. Create a new UID/data pair with zero create flag.<br />6. try to change the flag value to non-zero.<br />7. remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 10                                                                                                                       |
+| test_s005 | PSA_PS_SUCCESS                      | psa_ps_set<br />psa_ps_get<br />psa_ps_get_info<br />psa_ps_remove<br /> | 1. Set valid UID/data pair with varying uid and data_len <br />2. Call GET api and validate the set data<br />3. Call GET info api and validate the data attributes<br />4. Call REMOVE api to delete the UID/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | UID value used are 1 and 10                                                                                                                           |
+| test_s006 | PSA_PS_ERROR_FLAGS_NOT_SUPPORTED    | psa_ps_set<br />                                                            | 1.  Call the SET_INFO with minimum flag value to max flag value <br />2. Call GET_INFO api and validae the flag value<br />3. Remove the uid/data pair<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | UID value used is 10                                                                                                                          |
+| test_s007 | PSA_PS_ERROR_INCORRECT_SIZE | psa_ps_set<br />                                                            | 1. Create valid uid/data pair. <br />2. Increase the length of storage.<br />3. Try to access the old length using get api.<br />4. Try to access with valid length less than stored size.<br />5. Decrease the length of storage.<br />6. Try to access the old length.<br />7. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | UID value used is 10                                                                                                                       |
 | test_s008 | PSA_PS_ERROR_OFFSET_INVALID         | psa_ps_get<br />                                                            | 1. Set valid UID/data pair<br />2. Call GET api with valid offset and offset + data_len equal to stored data size.<br />3. Call GET api with valid offset and offset + data_len less than stored data size.<br />4. Call get api with invalid offset.<br />5. Call get api with zero offset , but data len greater than data size.<br />6. Remove the uid.<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is  11 |
-| test_s009 | PSA_PS_ERROR_BAD_POINTER            | psa_ps_get<br />psa_ps_set<br />psa_ps_get_info<br />                     | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should not be present.<br />3. Set storage entity with valid write_buffer , but length zero.<br />4. Again try to set for same uid with NULL write_buffer.<br />5. Call get and get_info api with NULL pointer and valid uid.<br />6. remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 11 <br />                                                                                                                                                                     |
-
+| test_s009 | PSA_PS_ERROR_INVALID_ARGUMENT            | psa_ps_get<br />psa_ps_set<br />psa_ps_get_info<br />                     | 1. Call the SET API with NULL pointer and data_len zero <br />2. Validate using get_info api storage should not be present.<br />3. Set storage entity with valid write_buffer , but length zero.<br />4. Again try to set for same uid with NULL write_buffer.<br />5. Call get and get_info api with NULL pointer and valid uid.<br />6. Remove the uid<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | UID value used is 11 <br />                                                                                                                                                                     |
+| test_p010 | PSA_PS_ERROR_INVALID_KEY            | psa_ps_create<br />psa_ps_set_extended<br />                     | 1. Call the SET Extended API when no uid present <br />2. Create a valid storage using set. <br /> 3. Call create api with different length for existing uid.<br \> 4. Call create api to set WRITE_ONCE flag. <br \> 5. Validate data attributes are maintained.<br />6. Remove the uid. <br /> 7. Create valid storage using create api. <br /> 8. Try to change length using create api. <br \> 9. Validate storage is empty. <br /> 10. Again call create api with original parameters. <br />11. Remove the uid. <br \> 12. Check no duplicate entry present. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is 10 <br />                                                                                                                                                                     |
+| test_p011 | PSA_PS_ERROR_INVALID_ARGUMENT <br /> PSA_PS_ERROR_OFFSET_INVALID <br />            | psa_ps_create<br />psa_ps_set_extended<br />                     | 1. Create a valid storage using set. <br /> 2. Set data on first half of buffer.<br /> 3. Try to set data at incorrect offset +length. <br /> 4. Try to set data at incorrect offset. <br />5. Try to set at correct offset but zero length buffer.<br />6. Try to set data at incorrect length and valid offset. <br /> 7. Overwrite the storage using set api. <br /> 8. Validate data is correctly written. <br \> 9. Call set_extended with NULL write buffer. <br /> 10. Overwrite storage using set_extended api. <br /> 11. Remove the uid. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | UID value used is 11 <br />
+| test_s012 | PSA_PS_SUCCESS    | psa_ps_set_extended<br />                                                            | 1.  Create Storage of zero length using create <br />2. Try to set some data in the storage created.<br />3. Validate the storage attributes<br /> 4. Remove the storage. <br /> 5. Create a valid storage with non-zero length. <br /> 6. Set data in the buffer. <br /> 7. Validate the data attributes. <br /> 8. Overwrite data using set api. <br /> 9. Validate the data. <br /> 10. Call create api for existing uid with same parameters. <br /> 11. Remove the uid. <br /> 12. Check with set_extended no duplicate uid exists. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | UID value used is 11
 
 ## License
 Arm PSA test suite is distributed under Apache v2.0 License.
diff --git a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c
index 4f89efe..a424153 100644
--- a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c
@@ -65,6 +65,8 @@
          data_length = va_arg(valist, uint32_t);
          p_write_data = va_arg(valist, const void*);
          return psa_ps_set_extended(uid, offset, data_length, p_write_data);
+     case PAL_PS_GET_SUPPORT:
+         return psa_ps_get_support();
     default:
         return PAL_STATUS_UNSUPPORTED_FUNC;
     }
diff --git a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h
index 2f7e5fc..a338cdf 100644
--- a/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h
+++ b/api-tests/platform/targets/tgt_dev_apis_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h
@@ -27,6 +27,7 @@
     PAL_PS_REMOVE                       = 0x4,
     PAL_PS_CREATE                       = 0x5,
     PAL_PS_SET_EXTENDED                 = 0x6,
+    PAL_PS_GET_SUPPORT                  = 0x7,
 };
 
 uint32_t pal_ps_function(int type, va_list valist);
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.c
index 4f89efe..a424153 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.c
@@ -65,6 +65,8 @@
          data_length = va_arg(valist, uint32_t);
          p_write_data = va_arg(valist, const void*);
          return psa_ps_set_extended(uid, offset, data_length, p_write_data);
+     case PAL_PS_GET_SUPPORT:
+         return psa_ps_get_support();
     default:
         return PAL_STATUS_UNSUPPORTED_FUNC;
     }
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.h
index 2f7e5fc..a338cdf 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.h
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_musca_a/nspe/pal_protected_storage_intf.h
@@ -27,6 +27,7 @@
     PAL_PS_REMOVE                       = 0x4,
     PAL_PS_CREATE                       = 0x5,
     PAL_PS_SET_EXTENDED                 = 0x6,
+    PAL_PS_GET_SUPPORT                  = 0x7,
 };
 
 uint32_t pal_ps_function(int type, va_list valist);
diff --git a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c
index 4f89efe..a424153 100644
--- a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c
+++ b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.c
@@ -65,6 +65,8 @@
          data_length = va_arg(valist, uint32_t);
          p_write_data = va_arg(valist, const void*);
          return psa_ps_set_extended(uid, offset, data_length, p_write_data);
+     case PAL_PS_GET_SUPPORT:
+         return psa_ps_get_support();
     default:
         return PAL_STATUS_UNSUPPORTED_FUNC;
     }
diff --git a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h
index 2f7e5fc..a338cdf 100644
--- a/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h
+++ b/api-tests/platform/targets/tgt_ff_mbedos_fvp_mps2_m4/nspe/pal_protected_storage_intf.h
@@ -27,6 +27,7 @@
     PAL_PS_REMOVE                       = 0x4,
     PAL_PS_CREATE                       = 0x5,
     PAL_PS_SET_EXTENDED                 = 0x6,
+    PAL_PS_GET_SUPPORT                  = 0x7,
 };
 
 uint32_t pal_ps_function(int type, va_list valist);
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index 3e9a9d7..b3dbcd5 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -223,6 +223,7 @@
   VAL_STATUS_BOOT_EXPECTED_BUT_FAILED    = 0x28,
   VAL_STATUS_INIT_ALREADY_DONE           = 0x29,
   VAL_STATUS_HEAP_NOT_AVAILABLE          = 0x2A,
+  VAL_STATUS_UNSUPPORTED                 = 0x2B,
   VAL_STATUS_ERROR_MAX                   = INT_MAX,
 } val_status_t;
 
diff --git a/api-tests/val/nspe/val_internal_trusted_storage.h b/api-tests/val/nspe/val_internal_trusted_storage.h
index e74a701..2f9384d 100644
--- a/api-tests/val/nspe/val_internal_trusted_storage.h
+++ b/api-tests/val/nspe/val_internal_trusted_storage.h
@@ -21,7 +21,6 @@
 #include "val.h"
 
 #define UID_BASE_VALUE  0
-#define UID_MAX_VALUE  15
 #define BYTES_TO_BITS(byte)             (byte * 8)
 
 enum its_function_code {
diff --git a/api-tests/val/nspe/val_protected_storage.h b/api-tests/val/nspe/val_protected_storage.h
index 5d2df21..7f05cea 100644
--- a/api-tests/val/nspe/val_protected_storage.h
+++ b/api-tests/val/nspe/val_protected_storage.h
@@ -20,8 +20,7 @@
 
 #include "val.h"
 
-#define UID_BASE_VALUE  0
-#define UID_MAX_VALUE  15
+#define UID_BASE_VALUE 0
 #define BYTES_TO_BITS(byte)             (byte * 8)
 
 enum ps_function_code {
@@ -31,6 +30,7 @@
     VAL_PS_REMOVE                       = 0x4,
     VAL_PS_CREATE                       = 0x5,
     VAL_PS_SET_EXTENDED                 = 0x6,
+    VAL_PS_GET_SUPPORT                  = 0x7,
 };
 
 uint32_t val_ps_function(int type, ...);