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/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 */