From 90006cecbbba58afee5f51e6bd72f7027a257b5e Mon Sep 17 00:00:00 2001
From: Satish Kumar <satish.kumar01@arm.com>
Date: Thu, 9 Dec 2021 14:11:06 +0000
Subject: [PATCH] Setup its backend as openamp rpc using secure storage ipc
 implementation.

Signed-off-by: Rui Miguel Silva <rui.silva@arm.com>
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>

Upstream-Status: Pending [Not submitted to upstream yet]
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>


---
 components/service/common/include/psa/sid.h   | 12 +++++-----
 .../secure_storage_ipc/secure_storage_ipc.c   | 20 ++++++++---------
 .../secure_storage_ipc/secure_storage_ipc.h   |  1 +
 .../se-proxy/opteesp/service_proxy_factory.c  | 22 +++++++++++++------
 4 files changed, 32 insertions(+), 23 deletions(-)

diff --git a/components/service/common/include/psa/sid.h b/components/service/common/include/psa/sid.h
index 833f5039..4a951d4a 100644
--- a/components/service/common/include/psa/sid.h
+++ b/components/service/common/include/psa/sid.h
@@ -20,12 +20,12 @@ extern "C" {
 /* Invalid UID */
 #define TFM_PS_INVALID_UID 0
 
-/* PS message types that distinguish PS services. */
-#define TFM_PS_SET                1001
-#define TFM_PS_GET                1002
-#define TFM_PS_GET_INFO           1003
-#define TFM_PS_REMOVE             1004
-#define TFM_PS_GET_SUPPORT        1005
+/* PS / ITS message types that distinguish PS services. */
+#define TFM_PS_ITS_SET                1001
+#define TFM_PS_ITS_GET                1002
+#define TFM_PS_ITS_GET_INFO           1003
+#define TFM_PS_ITS_REMOVE             1004
+#define TFM_PS_ITS_GET_SUPPORT        1005
 
 /******** TFM_SP_ITS ********/
 #define TFM_INTERNAL_TRUSTED_STORAGE_SERVICE_SID                   (0x00000070U)
diff --git a/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.c b/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.c
index bda442a6..0e1b48c0 100644
--- a/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.c
+++ b/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.c
@@ -31,8 +31,8 @@ static psa_status_t secure_storage_ipc_set(void *context, uint32_t client_id,
 
 	ipc->client.rpc_status = TS_RPC_CALL_ACCEPTED;
 
-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
-			      TFM_PS_SET, in_vec, IOVEC_LEN(in_vec), NULL, 0);
+	psa_status = psa_call(caller, ipc->service_handle, TFM_PS_ITS_SET,
+			      in_vec, IOVEC_LEN(in_vec), NULL, 0);
 	if (psa_status < 0)
 		EMSG("ipc_set: psa_call failed: %d", psa_status);
 
@@ -65,8 +65,8 @@ static psa_status_t secure_storage_ipc_get(void *context,
 		return PSA_ERROR_INVALID_ARGUMENT;
 	}
 
-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
-			      TFM_PS_GET, in_vec, IOVEC_LEN(in_vec),
+	psa_status = psa_call(caller, ipc->service_handle,
+			      TFM_PS_ITS_GET, in_vec, IOVEC_LEN(in_vec),
 			      out_vec, IOVEC_LEN(out_vec));
 	if (psa_status == PSA_SUCCESS)
 		*p_data_length = out_vec[0].len;
@@ -92,8 +92,8 @@ static psa_status_t secure_storage_ipc_get_info(void *context,
 
 	(void)client_id;
 
-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
-			      TFM_PS_GET_INFO, in_vec,
+	psa_status = psa_call(caller, ipc->service_handle,
+			      TFM_PS_ITS_GET_INFO, in_vec,
 			      IOVEC_LEN(in_vec), out_vec, IOVEC_LEN(out_vec));
 	if (psa_status != PSA_SUCCESS)
 		EMSG("ipc_get_info: failed to psa_call: %d", psa_status);
@@ -115,8 +115,8 @@ static psa_status_t secure_storage_ipc_remove(void *context,
 
 	(void)client_id;
 
-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
-			      TFM_PS_REMOVE, in_vec,
+	psa_status = psa_call(caller, ipc->service_handle,
+			      TFM_PS_ITS_REMOVE, in_vec,
 			      IOVEC_LEN(in_vec), NULL, 0);
 	if (psa_status != PSA_SUCCESS)
 		EMSG("ipc_remove: failed to psa_call: %d", psa_status);
@@ -169,8 +169,8 @@ static uint32_t secure_storage_get_support(void *context, uint32_t client_id)
 
 	(void)client_id;
 
-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
-			      TFM_PS_GET_SUPPORT, NULL, 0,
+	psa_status = psa_call(caller, ipc->service_handle,
+			      TFM_PS_ITS_GET_SUPPORT, NULL, 0,
 			      out_vec, IOVEC_LEN(out_vec));
 	if (psa_status != PSA_SUCCESS)
 		EMSG("ipc_get_support: failed to psa_call: %d", psa_status);
diff --git a/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.h b/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.h
index e8c1e8fd..d9949f6a 100644
--- a/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.h
+++ b/components/service/secure_storage/backend/secure_storage_ipc/secure_storage_ipc.h
@@ -21,6 +21,7 @@ struct secure_storage_ipc
 {
     struct storage_backend backend;
     struct service_client client;
+    int32_t service_handle;
 };
 
 /**
diff --git a/deployments/se-proxy/opteesp/service_proxy_factory.c b/deployments/se-proxy/opteesp/service_proxy_factory.c
index 4b8ccecc..1110ac46 100644
--- a/deployments/se-proxy/opteesp/service_proxy_factory.c
+++ b/deployments/se-proxy/opteesp/service_proxy_factory.c
@@ -5,6 +5,7 @@
  */
 
 #include <stddef.h>
+#include <psa/sid.h>
 #include <rpc/common/endpoint/rpc_interface.h>
 #include <rpc/openamp/caller/sp/openamp_caller.h>
 #include <service/attestation/provider/attest_provider.h>
@@ -60,23 +61,30 @@ struct rpc_interface *ps_proxy_create(void)
 {
 	static struct secure_storage_provider ps_provider;
 	static struct secure_storage_ipc ps_backend;
-	static struct rpc_caller *storage_caller;
+	struct rpc_caller *storage_caller;
 	struct storage_backend *backend;
 
 	storage_caller = openamp_caller_init(&openamp);
 	if (!storage_caller)
 		return NULL;
 	backend = secure_storage_ipc_init(&ps_backend, &openamp.rpc_caller);
+	ps_backend.service_handle = TFM_PROTECTED_STORAGE_SERVICE_HANDLE;
 
 	return secure_storage_provider_init(&ps_provider, backend);
 }
 
 struct rpc_interface *its_proxy_create(void)
 {
-	static struct mock_store its_backend;
-	static struct secure_storage_provider its_provider;
-
-	struct storage_backend *backend = mock_store_init(&its_backend);
-
-	return secure_storage_provider_init(&its_provider, backend);
+        static struct secure_storage_provider its_provider;
+        static struct secure_storage_ipc its_backend;
+        struct rpc_caller *storage_caller;
+        struct storage_backend *backend;
+ 
+        storage_caller = openamp_caller_init(&openamp);
+        if (!storage_caller)
+        	return NULL;
+        backend = secure_storage_ipc_init(&its_backend, &openamp.rpc_caller);
+        its_backend.service_handle = TFM_INTERNAL_TRUSTED_STORAGE_SERVICE_HANDLE;
+ 
+        return secure_storage_provider_init(&its_provider, backend);
 }
