blob: acfb6e8873fa90f6267aa0bdcda9995525ab8c26 [file] [log] [blame]
Julian Hall527ddd52021-06-28 11:57:17 +01001/*
2 * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <stddef.h>
8#include <rpc/common/endpoint/rpc_interface.h>
9#include <service/attestation/provider/attest_provider.h>
10#include <service/attestation/provider/serializer/packed-c/packedc_attest_provider_serializer.h>
Julian Hall7bfb18e2021-07-13 15:48:13 +010011#include <service/crypto/factory/crypto_provider_factory.h>
Julian Hall628be292021-08-04 16:57:40 +010012#include <service/secure_storage/frontend/secure_storage_provider/secure_storage_provider.h>
Julian Hall527ddd52021-06-28 11:57:17 +010013
Julian Hall628be292021-08-04 16:57:40 +010014/* Stub backends */
15#include <service/crypto/backend/stub/stub_crypto_backend.h>
16#include <service/secure_storage/backend/mock_store/mock_store.h>
Julian Hall527ddd52021-06-28 11:57:17 +010017
18struct rpc_interface *attest_proxy_create(void)
19{
20 struct rpc_interface *attest_iface;
Julian Hall527ddd52021-06-28 11:57:17 +010021
22 /* Static objects for proxy instance */
23 static struct attest_provider attest_provider;
24
Julian Hall527ddd52021-06-28 11:57:17 +010025 /* Initialize the service provider */
Julian Hall644b57a2021-06-30 08:45:19 +010026 attest_iface = attest_provider_init(&attest_provider);
Julian Hall527ddd52021-06-28 11:57:17 +010027
28 attest_provider_register_serializer(&attest_provider,
29 TS_RPC_ENCODING_PACKED_C, packedc_attest_provider_serializer_instance());
30
31 return attest_iface;
32}
33
34struct rpc_interface *crypto_proxy_create(void)
35{
Julian Hall9061e6c2021-06-29 14:24:20 +010036 struct rpc_interface *crypto_iface = NULL;
Julian Hall7bfb18e2021-07-13 15:48:13 +010037 struct crypto_provider *crypto_provider;
Julian Hall527ddd52021-06-28 11:57:17 +010038
Julian Hall628be292021-08-04 16:57:40 +010039 if (stub_crypto_backend_init() == PSA_SUCCESS) {
Julian Hall527ddd52021-06-28 11:57:17 +010040
Julian Hall7bfb18e2021-07-13 15:48:13 +010041 crypto_provider = crypto_provider_factory_create();
42 crypto_iface = service_provider_get_rpc_interface(&crypto_provider->base_provider);
Julian Hall9061e6c2021-06-29 14:24:20 +010043 }
Julian Hall527ddd52021-06-28 11:57:17 +010044
45 return crypto_iface;
46}
47
48struct rpc_interface *ps_proxy_create(void)
49{
Julian Hall628be292021-08-04 16:57:40 +010050 static struct mock_store ps_backend;
Julian Hall527ddd52021-06-28 11:57:17 +010051 static struct secure_storage_provider ps_provider;
52
Julian Hall628be292021-08-04 16:57:40 +010053 struct storage_backend *backend = mock_store_init(&ps_backend);
54
55 return secure_storage_provider_init(&ps_provider, backend);
Julian Hall527ddd52021-06-28 11:57:17 +010056}
57
58struct rpc_interface *its_proxy_create(void)
59{
Julian Hall628be292021-08-04 16:57:40 +010060 static struct mock_store its_backend;
Julian Hall527ddd52021-06-28 11:57:17 +010061 static struct secure_storage_provider its_provider;
62
Julian Hall628be292021-08-04 16:57:40 +010063 struct storage_backend *backend = mock_store_init(&its_backend);
64
65 return secure_storage_provider_init(&its_provider, backend);
Julian Hall527ddd52021-06-28 11:57:17 +010066}