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.
#