blob: 3865cd73bddcdea584d93c4c65df0ae1c31a29b6 [file] [log] [blame]
Julian Hallb7db5802021-07-26 16:20:40 +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 <service_locator.h>
9#include <service/attestation/client/psa/iat_client.h>
10#include <service/attestation/client/provision/attest_provision_client.h>
11#include <protocols/rpc/common/packed-c/encoding.h>
12#include "../service_under_test.h"
13
14/* RPC context */
15static rpc_session_handle session_handle = NULL;
16static struct service_context *crypto_service_context = NULL;
17
18int locate_service_under_test(struct logging_caller *call_logger)
19{
20 int status = -1;
21
22 if (!session_handle && !crypto_service_context) {
23
24 struct rpc_caller *caller;
25
26 crypto_service_context =
27 service_locator_query("sn:trustedfirmware.org:attestation:0", &status);
28
29 if (crypto_service_context) {
30
31 session_handle =
32 service_context_open(crypto_service_context, TS_RPC_ENCODING_PACKED_C, &caller);
33
34 if (session_handle) {
35
36 if (call_logger) {
37
38 struct rpc_caller *stacked_caller = logging_caller_attach(call_logger, caller);
39
40 psa_iat_client_init(stacked_caller);
41 attest_provision_client_init(stacked_caller);
42 }
43 else {
44
45 psa_iat_client_init(caller);
46 attest_provision_client_init(caller);
47 }
48
49 status = 0;
50 }
51 else {
52
53 status = -1;
54 relinquish_service_under_test();
55 }
56 }
57 }
58
59 return status;
60}
61
62void relinquish_service_under_test(void)
63{
64 psa_iat_client_deinit();
65 attest_provision_client_deinit();
66
67 if (crypto_service_context && session_handle) {
68
69 service_context_close(crypto_service_context, session_handle);
70 session_handle = NULL;
71 }
72
73 if (crypto_service_context) {
74
75 service_context_relinquish(crypto_service_context);
76 crypto_service_context = NULL;
77 }
78}