Add psa crypto C API client

To allow client programs to access the psa crypto service using the
psa crypto C api, a client adapter has been implemented that
maps the api functions to service RPC calls using the packed-c
serialization of the crypto access protocol.

The following files are derived work from the follwoing origin:
  Repo https://git.trustedfirmware.org/trusted-firmware-m.git
  Version: #442bc936

  components/service/crypto/include/psa/crypto.h
  components/service/crypto/include/psa/crypto_client_struct.h
  components/service/crypto/include/psa/crypto_compat.h
  components/service/crypto/include/psa/crypto_extra.h
  components/service/crypto/include/psa/crypto_sizes.h
  components/service/crypto/include/psa/crypto_struct.h
  components/service/crypto/include/psa/crypto_types.h
  components/service/crypto/include/psa/crypto_values.h

Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: Iac3c07d813e9245fafca3512c31d4fc09f1ad882
diff --git a/deployments/component-test/component-test.cmake b/deployments/component-test/component-test.cmake
index b4009fb..8d54937 100644
--- a/deployments/component-test/component-test.cmake
+++ b/deployments/component-test/component-test.cmake
@@ -27,7 +27,7 @@
 		"components/rpc/common/test/protocol"
 		"components/rpc/direct"
 		"components/rpc/dummy"
-		"components/service/common"
+		"components/service/common/include"
 		"components/service/common/serializer/protobuf"
 		"components/service/common/provider"
 		"components/service/common/provider/test"
@@ -52,6 +52,7 @@
 		"components/service/crypto/test/service/protobuf"
 		"components/service/crypto/test/service/packed-c"
 		"components/service/crypto/test/protocol"
+		"components/service/secure_storage/include"
 		"components/service/secure_storage/frontend/psa/its"
 		"components/service/secure_storage/frontend/psa/its/test"
 		"components/service/secure_storage/frontend/psa/ps"
diff --git a/deployments/crypto/opteesp/CMakeLists.txt b/deployments/crypto/opteesp/CMakeLists.txt
index fa39f3c..4eb1a51 100644
--- a/deployments/crypto/opteesp/CMakeLists.txt
+++ b/deployments/crypto/opteesp/CMakeLists.txt
@@ -42,13 +42,14 @@
 		"components/rpc/ffarpc/caller/sp"
 		"components/rpc/common/caller"
 		"components/rpc/common/interface"
-		"components/service/common"
+		"components/service/common/include"
 		"components/service/common/serializer/protobuf"
 		"components/service/common/provider"
 		"components/service/crypto/provider/mbedcrypto"
 		"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/include"
 		"components/service/secure_storage/frontend/psa/its"
 		"components/service/secure_storage/backend/secure_storage_client"
 		"components/service/secure_storage/backend/null_store"
diff --git a/deployments/env-test/env_test.cmake b/deployments/env-test/env_test.cmake
index 8d53cc4..12089a1 100644
--- a/deployments/env-test/env_test.cmake
+++ b/deployments/env-test/env_test.cmake
@@ -23,7 +23,7 @@
 	"components/config/ramstore"
 	"components/rpc/common/interface"
 	"components/rpc/common/caller"
-	"components/service/common"
+	"components/service/common/include"
 	"components/service/common/provider"
 	"components/service/test_runner/provider"
 	"components/service/test_runner/provider/serializer/packed-c"
@@ -32,6 +32,7 @@
 	"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/include"
 	"components/service/secure_storage/frontend/psa/its"
 	"components/service/secure_storage/backend/secure_storage_client"
 	"protocols/rpc/common/packed-c"
diff --git a/deployments/internal-trusted-storage/opteesp/CMakeLists.txt b/deployments/internal-trusted-storage/opteesp/CMakeLists.txt
index af0d932..5b3450a 100644
--- a/deployments/internal-trusted-storage/opteesp/CMakeLists.txt
+++ b/deployments/internal-trusted-storage/opteesp/CMakeLists.txt
@@ -34,8 +34,9 @@
 		components/messaging/ffa/libsp
 		components/rpc/ffarpc/endpoint
 		components/rpc/common/interface
-		components/service/common
+		components/service/common/include
 		components/service/common/provider
+		components/service/secure_storage/include
 		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
diff --git a/deployments/libts/linux-pc/CMakeLists.txt b/deployments/libts/linux-pc/CMakeLists.txt
index 86f7a75..f6ac33d 100644
--- a/deployments/libts/linux-pc/CMakeLists.txt
+++ b/deployments/libts/linux-pc/CMakeLists.txt
@@ -31,7 +31,7 @@
 	COMPONENTS
 		"components/rpc/direct"
 		"components/common/tlv"
-		"components/service/common"
+		"components/service/common/include"
 		"components/service/common/serializer/protobuf"
 		"components/service/common/provider"
 		"components/service/locator/standalone"
@@ -43,6 +43,7 @@
 		"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/include"
 		"components/service/secure_storage/frontend/psa/its"
 		"components/service/secure_storage/frontend/secure_storage_provider"
 		"components/service/secure_storage/backend/secure_storage_client"
@@ -93,7 +94,8 @@
 	COMPONENTS
 		"components/app/test-runner"
 		"components/common/tlv"
-		"components/service/common"
+		"components/service/common/include"
+		"components/service/secure_storage/include"
 		"components/service/secure_storage/test/service"
 		"components/service/secure_storage/frontend/psa/its"
 		"components/service/secure_storage/frontend/psa/its/test"
diff --git a/deployments/protected-storage/opteesp/CMakeLists.txt b/deployments/protected-storage/opteesp/CMakeLists.txt
index c4f0fd5..7106a01 100644
--- a/deployments/protected-storage/opteesp/CMakeLists.txt
+++ b/deployments/protected-storage/opteesp/CMakeLists.txt
@@ -36,8 +36,9 @@
 		components/rpc/common/interface
 		components/rpc/ffarpc/caller/sp
 		components/rpc/common/caller
-		components/service/common
+		components/service/common/include
 		components/service/common/provider
+		components/service/secure_storage/include
 		components/service/secure_storage/frontend/secure_storage_provider
 		components/service/secure_storage/backend/secure_storage_client
 		components/service/secure_storage/backend/null_store
diff --git a/deployments/sfs-demo/opteesp/CMakeLists.txt b/deployments/sfs-demo/opteesp/CMakeLists.txt
index 758b7ab..0eaefd3 100644
--- a/deployments/sfs-demo/opteesp/CMakeLists.txt
+++ b/deployments/sfs-demo/opteesp/CMakeLists.txt
@@ -34,7 +34,8 @@
 		components/rpc/common/interface
 		components/rpc/common/caller
 		components/rpc/ffarpc/caller/sp
-		components/service/common
+		components/service/common/include
+		components/service/secure_storage/include
 		components/service/secure_storage/frontend/psa/its
 		components/service/secure_storage/backend/secure_storage_client
 		protocols/rpc/common/packed-c
diff --git a/deployments/ts-service-test/linux-pc/CMakeLists.txt b/deployments/ts-service-test/linux-pc/CMakeLists.txt
index 85a0a36..4a86c87 100644
--- a/deployments/ts-service-test/linux-pc/CMakeLists.txt
+++ b/deployments/ts-service-test/linux-pc/CMakeLists.txt
@@ -16,6 +16,13 @@
 include(${TS_ROOT}/environments/linux-pc/env.cmake)
 project(trusted-services LANGUAGES CXX C)
 
+# Prevents symbols in the ts-service-test executable overriding symbols with
+# with same name in libts during dyanmic linking performed by the program
+# loader.  This avoid psa crypto api symbols provided by the mbedcrypto
+# library from being overridden by the same symbols in the ts-service-test
+# executable.
+set(CMAKE_C_VISIBILITY_PRESET hidden)
+
 # Preparing firmware-test-build by including it
 include(${TS_ROOT}/external/firmware_test_builder/FirmwareTestBuilder.cmake)
 
@@ -81,4 +88,3 @@
 #
 #-------------------------------------------------------------------------------
 include(../ts-service-test.cmake REQUIRED)
-
diff --git a/deployments/ts-service-test/ts-service-test.cmake b/deployments/ts-service-test/ts-service-test.cmake
index f7680d7..28ff49d 100644
--- a/deployments/ts-service-test/ts-service-test.cmake
+++ b/deployments/ts-service-test/ts-service-test.cmake
@@ -28,16 +28,20 @@
 	BASE_DIR ${TS_ROOT}
 	COMPONENTS
 		"components/common/tlv"
-		"components/service/common"
+		"components/service/common/include"
+		"components/service/crypto/include"
 		"components/service/crypto/test/service"
 		"components/service/crypto/test/service/protobuf"
 		"components/service/crypto/test/service/packed-c"
+		"components/service/crypto/test/service/psa_crypto_api"
+		"components/service/crypto/client/psa"
 		"components/service/crypto/client/cpp"
 		"components/service/crypto/client/cpp/protobuf"
 		"components/service/crypto/client/cpp/packed-c"
 		"components/service/common/serializer/protobuf"
 		"protocols/service/crypto/protobuf"
 		"protocols/service/crypto/packed-c"
+		"components/service/secure_storage/include"
 		"components/service/secure_storage/test/service"
 		"components/service/secure_storage/frontend/psa/its"
 		"components/service/secure_storage/frontend/psa/its/test"
@@ -56,10 +60,6 @@
 target_link_libraries(ts-service-test PRIVATE nanopb::protobuf-nanopb-static)
 protobuf_generate_all(TGT "ts-service-test" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
 
-# Mbed TLS provides libmbedcrypto
-include(${TS_ROOT}/external/MbedTLS/MbedTLS.cmake)
-target_link_libraries(ts-service-test PRIVATE mbedcrypto)
-
 #-------------------------------------------------------------------------------
 #  Define install content.
 #