Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 1 | /* |
| 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 Hall | 7bfb18e | 2021-07-13 15:48:13 +0100 | [diff] [blame] | 11 | #include <service/crypto/factory/crypto_provider_factory.h> |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 12 | #include <service/secure_storage/frontend/secure_storage_provider/secure_storage_provider.h> |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 13 | |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 14 | /* Stub backends */ |
| 15 | #include <service/crypto/backend/stub/stub_crypto_backend.h> |
| 16 | #include <service/secure_storage/backend/mock_store/mock_store.h> |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 17 | |
| 18 | struct rpc_interface *attest_proxy_create(void) |
| 19 | { |
| 20 | struct rpc_interface *attest_iface; |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 21 | |
| 22 | /* Static objects for proxy instance */ |
| 23 | static struct attest_provider attest_provider; |
| 24 | |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 25 | /* Initialize the service provider */ |
Julian Hall | 644b57a | 2021-06-30 08:45:19 +0100 | [diff] [blame] | 26 | attest_iface = attest_provider_init(&attest_provider); |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 27 | |
| 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 | |
| 34 | struct rpc_interface *crypto_proxy_create(void) |
| 35 | { |
Julian Hall | 9061e6c | 2021-06-29 14:24:20 +0100 | [diff] [blame] | 36 | struct rpc_interface *crypto_iface = NULL; |
Julian Hall | 7bfb18e | 2021-07-13 15:48:13 +0100 | [diff] [blame] | 37 | struct crypto_provider *crypto_provider; |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 38 | |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 39 | if (stub_crypto_backend_init() == PSA_SUCCESS) { |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 40 | |
Julian Hall | 7bfb18e | 2021-07-13 15:48:13 +0100 | [diff] [blame] | 41 | crypto_provider = crypto_provider_factory_create(); |
| 42 | crypto_iface = service_provider_get_rpc_interface(&crypto_provider->base_provider); |
Julian Hall | 9061e6c | 2021-06-29 14:24:20 +0100 | [diff] [blame] | 43 | } |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 44 | |
| 45 | return crypto_iface; |
| 46 | } |
| 47 | |
| 48 | struct rpc_interface *ps_proxy_create(void) |
| 49 | { |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 50 | static struct mock_store ps_backend; |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 51 | static struct secure_storage_provider ps_provider; |
| 52 | |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 53 | struct storage_backend *backend = mock_store_init(&ps_backend); |
| 54 | |
| 55 | return secure_storage_provider_init(&ps_provider, backend); |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 56 | } |
| 57 | |
| 58 | struct rpc_interface *its_proxy_create(void) |
| 59 | { |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 60 | static struct mock_store its_backend; |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 61 | static struct secure_storage_provider its_provider; |
| 62 | |
Julian Hall | 628be29 | 2021-08-04 16:57:40 +0100 | [diff] [blame] | 63 | struct storage_backend *backend = mock_store_init(&its_backend); |
| 64 | |
| 65 | return secure_storage_provider_init(&its_provider, backend); |
Julian Hall | 527ddd5 | 2021-06-28 11:57:17 +0100 | [diff] [blame] | 66 | } |