SST: Replace SST APIs with PSA PS APIs
Refactors the SST non-secure interfaces, secure API, veneers and
manifest to implement the PSA Protected Storage specification. Adds a
stub implementation for the new SST APIs; another patch will add the
final implementation.
Change-Id: Id62eb82c9d33afd2114962ab1994d567cd81e4f7
Signed-off-by: Jamie Fox <jamie.fox@arm.com>
diff --git a/secure_fw/ns_callable/tfm_sst_veneers.c b/secure_fw/ns_callable/tfm_sst_veneers.c
index 9c63e14..5348d5d 100644
--- a/secure_fw/ns_callable/tfm_sst_veneers.c
+++ b/secure_fw/ns_callable/tfm_sst_veneers.c
@@ -1,74 +1,54 @@
/*
- * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#include "tfm_sst_veneers.h"
-#include "secure_fw/services/secure_storage/sst_asset_management.h"
-#include "tfm_secure_api.h"
-#include "tfm_api.h"
+
+#include "secure_fw/core/tfm_secure_api.h"
+#include "secure_fw/services/secure_storage/tfm_protected_storage.h"
#include "secure_fw/spm/spm_partition_defs.h"
__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_create(uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token)
+enum tfm_sst_err_t tfm_sst_veneer_set(const psa_ps_uid_t *uid,
+ uint32_t data_length,
+ const void *p_data,
+ psa_ps_create_flags_t create_flags)
{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_create,
- asset_uuid, s_token, 0, 0);
+ TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, tfm_sst_set,
+ uid, data_length, p_data, create_flags);
}
__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_get_info(uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token,
- struct psa_sst_asset_info_t *info)
+enum tfm_sst_err_t tfm_sst_veneer_get(const psa_ps_uid_t *uid,
+ uint32_t data_offset,
+ uint32_t data_length,
+ void *p_data)
{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_get_info,
- asset_uuid, s_token, info, 0);
+ TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, tfm_sst_get,
+ uid, data_offset, data_length, p_data);
}
__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_get_attributes(uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token,
- struct psa_sst_asset_attrs_t *attrs)
+enum tfm_sst_err_t tfm_sst_veneer_get_info(const psa_ps_uid_t *uid,
+ struct psa_ps_info_t *p_info)
{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_get_attributes,
- asset_uuid, s_token, attrs, 0);
+ TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, tfm_sst_get_info,
+ uid, p_info, 0, 0);
}
__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_set_attributes(uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token,
- const struct psa_sst_asset_attrs_t *attrs)
+enum tfm_sst_err_t tfm_sst_veneer_remove(const psa_ps_uid_t *uid)
{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_set_attributes,
- asset_uuid, s_token, attrs, 0);
+ TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, tfm_sst_remove,
+ uid, 0, 0, 0);
}
__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_read(int32_t client_id,
- uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token,
- struct tfm_sst_buf_t *data)
+enum tfm_sst_err_t tfm_sst_veneer_get_support(uint32_t *support_flags)
{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_read, client_id,
- asset_uuid, s_token, data);
-}
-
-__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_write(uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token,
- struct tfm_sst_buf_t *data)
-{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_write,
- asset_uuid, s_token, data, 0);
-}
-
-__tfm_secure_gateway_attributes__
-enum psa_sst_err_t tfm_sst_veneer_delete(uint32_t asset_uuid,
- const struct tfm_sst_token_t *s_token)
-{
- TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, sst_am_delete,
- asset_uuid, s_token, 0, 0);
+ TFM_CORE_SFN_REQUEST(TFM_SP_STORAGE_ID, tfm_sst_get_support,
+ support_flags, 0, 0, 0);
}
diff --git a/secure_fw/ns_callable/tfm_veneers.c b/secure_fw/ns_callable/tfm_veneers.c
index 30ef5f1..c3df282 100644
--- a/secure_fw/ns_callable/tfm_veneers.c
+++ b/secure_fw/ns_callable/tfm_veneers.c
@@ -12,13 +12,11 @@
#include "secure_fw/spm/spm_partition_defs.h"
/******** TFM_SP_STORAGE ********/
-psa_status_t sst_am_create(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_am_get_info(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_am_get_attributes(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_am_set_attributes(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_am_read(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_am_write(struct psa_invec *, size_t, struct psa_outvec *, size_t);
-psa_status_t sst_am_delete(struct psa_invec *, size_t, struct psa_outvec *, size_t);
+psa_status_t tfm_sst_set(struct psa_invec *, size_t, struct psa_outvec *, size_t);
+psa_status_t tfm_sst_get(struct psa_invec *, size_t, struct psa_outvec *, size_t);
+psa_status_t tfm_sst_get_info(struct psa_invec *, size_t, struct psa_outvec *, size_t);
+psa_status_t tfm_sst_remove(struct psa_invec *, size_t, struct psa_outvec *, size_t);
+psa_status_t tfm_sst_get_support(struct psa_invec *, size_t, struct psa_outvec *, size_t);
/******** TFM_SP_AUDIT_LOG ********/
psa_status_t audit_core_retrieve_record(struct psa_invec *, size_t, struct psa_outvec *, size_t);
@@ -92,13 +90,11 @@
}
/******** TFM_SP_STORAGE ********/
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_create)
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_get_info)
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_get_attributes)
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_set_attributes)
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_read)
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_write)
-TFM_VENEER_FUNCTION(TFM_SP_STORAGE, sst_am_delete)
+TFM_VENEER_FUNCTION(TFM_SP_STORAGE, tfm_sst_set)
+TFM_VENEER_FUNCTION(TFM_SP_STORAGE, tfm_sst_get)
+TFM_VENEER_FUNCTION(TFM_SP_STORAGE, tfm_sst_get_info)
+TFM_VENEER_FUNCTION(TFM_SP_STORAGE, tfm_sst_remove)
+TFM_VENEER_FUNCTION(TFM_SP_STORAGE, tfm_sst_get_support)
/******** TFM_SP_AUDIT_LOG ********/
TFM_VENEER_FUNCTION(TFM_SP_AUDIT_LOG, audit_core_retrieve_record)