blob: c57a5019999dce2e3c5a9e6ad2ce21dd8540af65 [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 */
Balint Dobszay3ddded32023-07-11 10:53:25 +020014static struct rpc_caller_session *session = NULL;
15static struct service_context *attestation_service_context = NULL;
Julian Halld4071382021-07-07 16:45:53 +010016
Balint Dobszay3ddded32023-07-11 10:53:25 +020017int locate_service_under_test(void)
Julian Halld4071382021-07-07 16:45:53 +010018{
19 int status = -1;
20
Balint Dobszay3ddded32023-07-11 10:53:25 +020021 if (!session && !attestation_service_context) {
Julian Halld4071382021-07-07 16:45:53 +010022
Balint Dobszay3ddded32023-07-11 10:53:25 +020023 service_locator_init();
Julian Halld4071382021-07-07 16:45:53 +010024
Balint Dobszay3ddded32023-07-11 10:53:25 +020025 attestation_service_context =
26 service_locator_query("sn:trustedfirmware.org:crypto:0");
Julian Halld4071382021-07-07 16:45:53 +010027
Balint Dobszay3ddded32023-07-11 10:53:25 +020028 if (attestation_service_context) {
Julian Halld4071382021-07-07 16:45:53 +010029
Balint Dobszay3ddded32023-07-11 10:53:25 +020030 session = service_context_open(attestation_service_context);
Julian Halld4071382021-07-07 16:45:53 +010031
Balint Dobszay3ddded32023-07-11 10:53:25 +020032 if (session) {
Julian Halld4071382021-07-07 16:45:53 +010033
Balint Dobszay3ddded32023-07-11 10:53:25 +020034 psa_crypto_client_init(session);
Julian Hall628be292021-08-04 16:57:40 +010035
Julian Halld4071382021-07-07 16:45:53 +010036 status = 0;
37 }
38 else {
39
40 status = -1;
41 relinquish_service_under_test();
42 }
43 }
44 }
45
46 return status;
47}
48
Balint Dobszay3ddded32023-07-11 10:53:25 +020049int relinquish_service_under_test(void)
Julian Halld4071382021-07-07 16:45:53 +010050{
51 psa_crypto_client_deinit();
52
Balint Dobszay3ddded32023-07-11 10:53:25 +020053 if (attestation_service_context && session) {
Julian Halld4071382021-07-07 16:45:53 +010054
Balint Dobszay3ddded32023-07-11 10:53:25 +020055 service_context_close(attestation_service_context, session);
56 session = NULL;
Julian Halld4071382021-07-07 16:45:53 +010057 }
58
Balint Dobszay3ddded32023-07-11 10:53:25 +020059 if (attestation_service_context) {
Julian Halld4071382021-07-07 16:45:53 +010060
Balint Dobszay3ddded32023-07-11 10:53:25 +020061 service_context_relinquish(attestation_service_context);
62 attestation_service_context = NULL;
Julian Halld4071382021-07-07 16:45:53 +010063 }
Balint Dobszay3ddded32023-07-11 10:53:25 +020064
65 return 0;
Julian Halld4071382021-07-07 16:45:53 +010066}