Refactor Secure storage into frontend/backend

The secure storage service components are refactored as storage
frontends and backends.  Any frontend can be paired with any
backend.  Each backend implements a common interface.  This
allows new storage frontends and backends to be added more
easily and allows configurations such as proxies to be
created by simply pairing a service provider (frontend) with
a service client (backend).

Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: I5ef569ff3b61f64d6de69276d2b33e67a7ab0fa6
diff --git a/deployments/component-test/component-test.cmake b/deployments/component-test/component-test.cmake
index 0e6fd1b..f2f972a 100644
--- a/deployments/component-test/component-test.cmake
+++ b/deployments/component-test/component-test.cmake
@@ -50,11 +50,13 @@
 		"components/service/crypto/test/service/protobuf"
 		"components/service/crypto/test/service/packed-c"
 		"components/service/crypto/test/protocol"
-		"components/service/secure_storage/client/psa"
-		"components/service/secure_storage/provider/mock_store"
-		"components/service/secure_storage/provider/secure_flash_store"
-		"components/service/secure_storage/provider/secure_flash_store/flash_fs"
-		"components/service/secure_storage/provider/secure_flash_store/flash"
+		"components/service/secure_storage/frontend/psa/its"
+		"components/service/secure_storage/frontend/secure_storage_provider"
+		"components/service/secure_storage/backend/secure_storage_client"
+		"components/service/secure_storage/backend/mock_store"
+		"components/service/secure_storage/backend/secure_flash_store"
+		"components/service/secure_storage/backend/secure_flash_store/flash_fs"
+		"components/service/secure_storage/backend/secure_flash_store/flash"
 		"components/service/secure_storage/test"
 		"components/service/test_runner/provider"
 		"components/service/test_runner/provider/serializer/packed-c"
diff --git a/deployments/crypto/opteesp/CMakeLists.txt b/deployments/crypto/opteesp/CMakeLists.txt
index 9441ecf..108223a 100644
--- a/deployments/crypto/opteesp/CMakeLists.txt
+++ b/deployments/crypto/opteesp/CMakeLists.txt
@@ -50,7 +50,8 @@
 		"components/service/crypto/provider/mbedcrypto/trng_adapter/platform"
 		"components/service/crypto/provider/serializer/protobuf"
 		"components/service/crypto/provider/serializer/packed-c"
-		"components/service/secure_storage/client/psa"
+		"components/service/secure_storage/frontend/psa/its"
+		"components/service/secure_storage/backend/secure_storage_client"
 		"protocols/rpc/common/packed-c"
 		"protocols/service/secure_storage/packed-c"
 		"protocols/service/crypto/protobuf"
diff --git a/deployments/crypto/opteesp/crypto_sp.c b/deployments/crypto/opteesp/crypto_sp.c
index 594fa89..2512eee 100644
--- a/deployments/crypto/opteesp/crypto_sp.c
+++ b/deployments/crypto/opteesp/crypto_sp.c
@@ -6,7 +6,7 @@
 #include <rpc/ffarpc/caller/sp/ffarpc_caller.h>
 #include <rpc/ffarpc/endpoint/ffarpc_call_ep.h>
 #include <rpc/dummy/dummy_caller.h>
-#include <service/secure_storage/client/psa/its/its_client.h>
+#include <service/secure_storage/backend/secure_storage_client/secure_storage_client.h>
 #include <service/crypto/provider/mbedcrypto/crypto_provider.h>
 #include <service/crypto/provider/serializer/protobuf/pb_crypto_provider_serializer.h>
 #include <service/crypto/provider/serializer/packed-c/packedc_crypto_provider_serializer.h>
@@ -75,7 +75,7 @@
 
 	ffa_call_ep_init(&ffarpc_call_ep, crypto_iface);
 
- 	/* End of boot phase */
+	/* End of boot phase */
 	ffa_msg_wait(&req_msg);
 
 	while (1) {
diff --git a/deployments/env-test/env_test.cmake b/deployments/env-test/env_test.cmake
index bf2b509..b809c1d 100644
--- a/deployments/env-test/env_test.cmake
+++ b/deployments/env-test/env_test.cmake
@@ -12,7 +12,7 @@
 #-------------------------------------------------------------------------------
 
 #-------------------------------------------------------------------------------
-#  Components that are common accross all deployments
+#  Components that are common across all deployments
 #
 #-------------------------------------------------------------------------------
 add_components(
@@ -32,7 +32,8 @@
 	"components/service/crypto/provider/mbedcrypto"
 	"components/service/crypto/provider/mbedcrypto/trng_adapter/platform"
 	"components/service/crypto/provider/mbedcrypto/trng_adapter/test"
-	"components/service/secure_storage/client/psa"
+	"components/service/secure_storage/frontend/psa/its"
+	"components/service/secure_storage/backend/secure_storage_client"
 	"protocols/rpc/common/packed-c"
 )
 
diff --git a/deployments/libts/linux-pc/CMakeLists.txt b/deployments/libts/linux-pc/CMakeLists.txt
index 54c2cd9..3378ee3 100644
--- a/deployments/libts/linux-pc/CMakeLists.txt
+++ b/deployments/libts/linux-pc/CMakeLists.txt
@@ -41,10 +41,12 @@
 		"components/service/crypto/provider/mbedcrypto/trng_adapter/linux"
 		"components/service/crypto/provider/serializer/protobuf"
 		"components/service/crypto/provider/serializer/packed-c"
-		"components/service/secure_storage/client/psa"
-		"components/service/secure_storage/provider/secure_flash_store"
-		"components/service/secure_storage/provider/secure_flash_store/flash_fs"
-		"components/service/secure_storage/provider/secure_flash_store/flash"
+		"components/service/secure_storage/frontend/psa/its"
+		"components/service/secure_storage/frontend/secure_storage_provider"
+		"components/service/secure_storage/backend/secure_storage_client"
+		"components/service/secure_storage/backend/secure_flash_store"
+		"components/service/secure_storage/backend/secure_flash_store/flash_fs"
+		"components/service/secure_storage/backend/secure_flash_store/flash"
 		"components/service/test_runner/provider"
 		"components/service/test_runner/provider/serializer/packed-c"
 		"components/service/test_runner/provider/backend/mock"
diff --git a/deployments/secure-storage/opteesp/CMakeLists.txt b/deployments/secure-storage/opteesp/CMakeLists.txt
index dc1aabf..4bcbd17 100644
--- a/deployments/secure-storage/opteesp/CMakeLists.txt
+++ b/deployments/secure-storage/opteesp/CMakeLists.txt
@@ -34,10 +34,12 @@
 		components/messaging/ffa/libsp
 		components/rpc/ffarpc/endpoint
 		components/rpc/common/interface
+		components/service/common
 		components/service/common/provider
-		components/service/secure_storage/provider/secure_flash_store
-		components/service/secure_storage/provider/secure_flash_store/flash_fs
-		components/service/secure_storage/provider/secure_flash_store/flash
+		components/service/secure_storage/frontend/secure_storage_provider
+		components/service/secure_storage/backend/secure_flash_store
+		components/service/secure_storage/backend/secure_flash_store/flash_fs
+		components/service/secure_storage/backend/secure_flash_store/flash
 		protocols/rpc/common/packed-c
 		protocols/service/secure_storage/packed-c
 		environments/opteesp
diff --git a/deployments/secure-storage/opteesp/sp.c b/deployments/secure-storage/opteesp/sp.c
index c24423c..c3bc94a 100644
--- a/deployments/secure-storage/opteesp/sp.c
+++ b/deployments/secure-storage/opteesp/sp.c
@@ -8,8 +8,8 @@
 #include <ffa_api.h>
 #include <components/rpc/common/endpoint/rpc_interface.h>
 #include <components/rpc/ffarpc/endpoint/ffarpc_call_ep.h>
-#include <components/service/secure_storage/provider/secure_flash_store/sfs_provider.h>
-#include <components/service/common/provider/service_provider.h>
+#include <components/service/secure_storage/backend/secure_flash_store/secure_flash_store.h>
+#include <components/service/secure_storage/frontend/secure_storage_provider/secure_storage_provider.h>
 #include <sp_api.h>
 #include <sp_rxtx.h>
 #include <trace.h>
@@ -22,11 +22,12 @@
 {
 	ffa_result ffa_res;
 	sp_result sp_res;
-	struct rpc_interface *sfs_iface;
+	struct rpc_interface *secure_storage_iface;
 	struct ffa_call_ep ffa_call_ep;
 	struct ffa_direct_msg req_msg;
 	struct ffa_direct_msg resp_msg;
-	struct sfs_provider sfs_provider;
+	struct secure_storage_provider secure_storage_provider;
+	struct storage_backend *storage_backend;
 
 	/* Boot */
 	(void) init_info;
@@ -41,8 +42,9 @@
 		EMSG("rxtx map error: %d", sp_res);
 	}
 
-	sfs_iface = sfs_provider_init(&sfs_provider);
-	ffa_call_ep_init(&ffa_call_ep, sfs_iface);
+	storage_backend = sfs_init();
+	secure_storage_iface = secure_storage_provider_init(&secure_storage_provider, storage_backend);
+	ffa_call_ep_init(&ffa_call_ep, secure_storage_iface);
 
 	/* End of boot phase */
 	ffa_msg_wait(&req_msg);
diff --git a/deployments/sfs-demo/opteesp/CMakeLists.txt b/deployments/sfs-demo/opteesp/CMakeLists.txt
index 9f4dbae..758b7ab 100644
--- a/deployments/sfs-demo/opteesp/CMakeLists.txt
+++ b/deployments/sfs-demo/opteesp/CMakeLists.txt
@@ -35,7 +35,8 @@
 		components/rpc/common/caller
 		components/rpc/ffarpc/caller/sp
 		components/service/common
-		components/service/secure_storage/client/psa
+		components/service/secure_storage/frontend/psa/its
+		components/service/secure_storage/backend/secure_storage_client
 		protocols/rpc/common/packed-c
 		protocols/service/secure_storage/packed-c
 		environments/opteesp
diff --git a/deployments/sfs-demo/opteesp/sp.c b/deployments/sfs-demo/opteesp/sp.c
index 5bda8e9..1d8fe87 100644
--- a/deployments/sfs-demo/opteesp/sp.c
+++ b/deployments/sfs-demo/opteesp/sp.c
@@ -7,7 +7,8 @@
 #include "sp.h"
 #include <ffa_api.h>
 #include <components/rpc/ffarpc/caller/sp/ffarpc_caller.h>
-#include <components/service/secure_storage/client/psa/its/its_client.h>
+#include <components/service/secure_storage/frontend/psa/its/its_frontend.h>
+#include <service/secure_storage/backend/secure_storage_client/secure_storage_client.h>
 #include <psa/internal_trusted_storage.h>
 #include <sp_api.h>
 #include <sp_rxtx.h>
@@ -133,6 +134,8 @@
 	struct ffa_direct_msg req_msg;
 	struct rpc_caller *caller;
 	struct ffarpc_caller ffa_caller;
+	struct secure_storage_client secure_storage_client;
+	struct storage_backend *storage_backend;
 	uint16_t sp_ids[3];
 	uint32_t sp_id_cnt = 0;
 
@@ -164,7 +167,8 @@
 		goto err;
 	}
 
-	psa_its_client_init(caller);
+	storage_backend = secure_storage_client_init(&secure_storage_client, caller);
+	psa_its_frontend_init(storage_backend);
 
 	/*
 	 * This is not thorough testing of the ITS SP!