Add packed-c protocol support for crypto service
To provide a lightweight parameter encoding that is aligned to
conventions used by SCMI, the packed-c parameter serialization has
been added to the crypto service. This builds on generic
components that allow other packed-c service access protocols
to be added easily. Service level tests have been extended to
use both protobuf and packed-c clients.
Signed-off-by: julhal01 <julian.hall@arm.com>
Change-Id: I9279b0814bcc9cf6c4aa4e30629e2f46f2df4c23
diff --git a/deployments/component-test/component-test.cmake b/deployments/component-test/component-test.cmake
index 3af6d02..deadf11 100644
--- a/deployments/component-test/component-test.cmake
+++ b/deployments/component-test/component-test.cmake
@@ -18,8 +18,11 @@
"components/app/ts-demo/test"
"components/common/uuid"
"components/common/uuid/test"
+ "components/common/tlv"
+ "components/common/tlv/test"
"components/rpc/common/caller"
"components/rpc/common/interface"
+ "components/rpc/common/test/protocol"
"components/rpc/direct"
"components/rpc/dummy"
"components/service/common"
@@ -32,13 +35,19 @@
"components/service/locator/standalone"
"components/service/locator/standalone/services/crypto"
"components/service/crypto/client/cpp"
+ "components/service/crypto/client/cpp/protobuf"
+ "components/service/crypto/client/cpp/packed-c"
"components/service/crypto/client/test"
"components/service/crypto/client/test/standalone"
"components/service/crypto/provider/mbedcrypto"
"components/service/crypto/provider/mbedcrypto/entropy_source/mock"
"components/service/crypto/provider/serializer/protobuf"
+ "components/service/crypto/provider/serializer/packed-c"
"components/service/crypto/test/unit"
"components/service/crypto/test/service"
+ "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"
@@ -47,7 +56,6 @@
"components/service/secure_storage/test"
"protocols/rpc/common/protobuf"
"protocols/rpc/common/packed-c"
- "protocols/rpc/common/packed-c/test"
"protocols/service/crypto/packed-c"
"protocols/service/crypto/protobuf"
"protocols/service/secure_storage/packed-c"
diff --git a/deployments/crypto/opteesp/CMakeLists.txt b/deployments/crypto/opteesp/CMakeLists.txt
index fec7b69..38bc42d 100644
--- a/deployments/crypto/opteesp/CMakeLists.txt
+++ b/deployments/crypto/opteesp/CMakeLists.txt
@@ -31,6 +31,7 @@
add_components(TARGET "crypto-sp"
BASE_DIR ${TS_ROOT}
COMPONENTS
+ "components/common/tlv"
"components/messaging/ffa/libsp"
"components/rpc/ffarpc/endpoint"
"components/rpc/ffarpc/caller/sp"
@@ -43,6 +44,7 @@
"components/service/crypto/provider/mbedcrypto"
"components/service/crypto/provider/mbedcrypto/entropy_source/mock"
"components/service/crypto/provider/serializer/protobuf"
+ "components/service/crypto/provider/serializer/packed-c"
"components/service/secure_storage/client/psa"
"protocols/rpc/common/packed-c"
"protocols/service/secure_storage/packed-c"
diff --git a/deployments/crypto/opteesp/crypto_sp.c b/deployments/crypto/opteesp/crypto_sp.c
index 5756d1b..ea60d1c 100644
--- a/deployments/crypto/opteesp/crypto_sp.c
+++ b/deployments/crypto/opteesp/crypto_sp.c
@@ -9,6 +9,7 @@
#include <service/secure_storage/client/psa/its/its_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>
#include <protocols/rpc/common/packed-c/status.h>
#include <ffa_api.h>
#include <sp_api.h>
@@ -59,9 +60,13 @@
/* Initialize the crypto service */
crypto_iface = mbed_crypto_provider_init(&crypto_provider, storage_caller);
- mbed_crypto_provider_register_serializer(&crypto_provider,
+
+ mbed_crypto_provider_register_serializer(&crypto_provider,
TS_RPC_ENCODING_PROTOBUF, pb_crypto_provider_serializer_instance());
+ mbed_crypto_provider_register_serializer(&crypto_provider,
+ TS_RPC_ENCODING_PACKED_C, packedc_crypto_provider_serializer_instance());
+
ffa_call_ep_init(&ffarpc_call_ep, crypto_iface);
/* End of boot phase */
diff --git a/deployments/libts/linux-pc/CMakeLists.txt b/deployments/libts/linux-pc/CMakeLists.txt
index 8de05fd..9c798ad 100644
--- a/deployments/libts/linux-pc/CMakeLists.txt
+++ b/deployments/libts/linux-pc/CMakeLists.txt
@@ -1,5 +1,5 @@
#-------------------------------------------------------------------------------
-# Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -30,6 +30,7 @@
BASE_DIR ${TS_ROOT}
COMPONENTS
"components/rpc/direct"
+ "components/common/tlv"
"components/service/common"
"components/service/common/serializer/protobuf"
"components/service/common/provider"
@@ -38,6 +39,7 @@
"components/service/crypto/provider/mbedcrypto"
"components/service/crypto/provider/mbedcrypto/entropy_source/mock"
"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"
@@ -82,10 +84,16 @@
BASE_DIR ${TS_ROOT}
COMPONENTS
"components/app/test-runner"
+ "components/common/tlv"
"components/service/crypto/test/service"
+ "components/service/crypto/test/service/protobuf"
+ "components/service/crypto/test/service/packed-c"
"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"
)
#-------------------------------------------------------------------------------
diff --git a/deployments/ts-demo/ts-demo.cmake b/deployments/ts-demo/ts-demo.cmake
index d6f1067..828a31e 100644
--- a/deployments/ts-demo/ts-demo.cmake
+++ b/deployments/ts-demo/ts-demo.cmake
@@ -36,9 +36,10 @@
BASE_DIR ${TS_ROOT}
COMPONENTS
"components/app/ts-demo"
+ "components/common/tlv"
"components/service/crypto/client/cpp"
- "components/service/common/serializer/protobuf"
- "protocols/service/crypto/protobuf"
+ "components/service/crypto/client/cpp/packed-c"
+ "protocols/service/crypto/packed-c"
)
#-------------------------------------------------------------------------------
@@ -46,11 +47,6 @@
#
#-------------------------------------------------------------------------------
-# Nanopb
-include(${TS_ROOT}/external/nanopb/nanopb.cmake)
-target_link_libraries(ts-demo PRIVATE nanopb::protobuf-nanopb-static)
-protobuf_generate_all(TGT "ts-demo" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
-
# Mbedcrypto
include(${TS_ROOT}/external/mbed-crypto/mbedcrypto.cmake)
target_link_libraries(ts-demo PRIVATE mbedcrypto)
diff --git a/deployments/ts-demo/ts-demo.cpp b/deployments/ts-demo/ts-demo.cpp
index eaa8b52..2f607e6 100644
--- a/deployments/ts-demo/ts-demo.cpp
+++ b/deployments/ts-demo/ts-demo.cpp
@@ -3,7 +3,7 @@
* Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
*/
-#include <service/crypto/client/cpp/crypto_client.h>
+#include <service/crypto/client/cpp/packed-c/packedc_crypto_client.h>
#include <protocols/rpc/common/packed-c/encoding.h>
#include <app/ts-demo/ts-demo.h>
#include <service_locator.h>
@@ -25,11 +25,11 @@
struct rpc_caller *caller;
rpc_session_handle rpc_session_handle;
- rpc_session_handle = service_context_open(crypto_service_context, TS_RPC_ENCODING_PROTOBUF, &caller);
+ rpc_session_handle = service_context_open(crypto_service_context, TS_RPC_ENCODING_PACKED_C, &caller);
if (rpc_session_handle) {
- crypto_client crypto_client(caller);
+ packedc_crypto_client crypto_client(caller);
status = run_ts_demo(&crypto_client, true);
diff --git a/deployments/ts-service-test/ts-service-test.cmake b/deployments/ts-service-test/ts-service-test.cmake
index 5630a99..4bd8c71 100644
--- a/deployments/ts-service-test/ts-service-test.cmake
+++ b/deployments/ts-service-test/ts-service-test.cmake
@@ -27,10 +27,16 @@
TARGET "ts-service-test"
BASE_DIR ${TS_ROOT}
COMPONENTS
+ "components/common/tlv"
"components/service/crypto/test/service"
+ "components/service/crypto/test/service/protobuf"
+ "components/service/crypto/test/service/packed-c"
"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"
)
#-------------------------------------------------------------------------------