blob: 609c52581e03097bb061d7e2212a0702f79264ff [file] [log] [blame]
Julian Halld4071382021-07-07 16:45:53 +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/crypto/client/psa/psa_crypto_client.h>
10#include <protocols/rpc/common/packed-c/encoding.h>
11#include "../service_under_test.h"
12
13/* RPC context */
14static rpc_session_handle session_handle = NULL;
15static struct service_context *crypto_service_context = NULL;
16
Julian Hall04460402021-07-08 17:40:57 +010017int locate_service_under_test(struct logging_caller *call_logger)
Julian Halld4071382021-07-07 16:45:53 +010018{
19 int status = -1;
20
21 if (!session_handle && !crypto_service_context) {
22
23 struct rpc_caller *caller;
24
25 crypto_service_context =
26 service_locator_query("sn:trustedfirmware.org:crypto:0", &status);
27
28 if (crypto_service_context) {
29
30 session_handle =
31 service_context_open(crypto_service_context, TS_RPC_ENCODING_PACKED_C, &caller);
32
33 if (session_handle) {
34
Julian Hall04460402021-07-08 17:40:57 +010035 if (call_logger) {
36
37 psa_crypto_client_init(logging_caller_attach(call_logger, caller));
38 }
39 else {
40
41 psa_crypto_client_init(caller);
42 }
43
Julian Halld4071382021-07-07 16:45:53 +010044 status = 0;
45 }
46 else {
47
48 status = -1;
49 relinquish_service_under_test();
50 }
51 }
52 }
53
54 return status;
55}
56
57void relinquish_service_under_test(void)
58{
59 psa_crypto_client_deinit();
60
61 if (crypto_service_context && session_handle) {
62
63 service_context_close(crypto_service_context, session_handle);
64 session_handle = NULL;
65 }
66
67 if (crypto_service_context) {
68
69 service_context_relinquish(crypto_service_context);
70 crypto_service_context = NULL;
71 }
72}