blob: 1852fea279aecad971236430ed68b49de939bebd [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>
Julian Hall3b2fc5c2021-08-12 15:56:07 +01008#include <psa/crypto.h>
Julian Hallb7db5802021-07-26 16:20:40 +01009#include <service_locator.h>
10#include <service/attestation/client/psa/iat_client.h>
11#include <service/attestation/client/provision/attest_provision_client.h>
12#include <protocols/rpc/common/packed-c/encoding.h>
13#include "../service_under_test.h"
14
15/* RPC context */
Balint Dobszay3d9403a2023-07-11 16:47:21 +020016static struct rpc_caller_session *session = NULL;
17static struct service_context *attestation_service_context = NULL;
Julian Hallb7db5802021-07-26 16:20:40 +010018
Balint Dobszay3d9403a2023-07-11 16:47:21 +020019int locate_service_under_test(void)
Julian Hallb7db5802021-07-26 16:20:40 +010020{
21 int status = -1;
22
Julian Hall3b2fc5c2021-08-12 15:56:07 +010023 /* Attestation tests depend on PSA crypto so ensure library is initialised */
24 psa_status_t psa_status = psa_crypto_init();
25
Balint Dobszay3d9403a2023-07-11 16:47:21 +020026 if ((psa_status == PSA_SUCCESS) && !session && !attestation_service_context) {
Julian Hallb7db5802021-07-26 16:20:40 +010027
Balint Dobszay3d9403a2023-07-11 16:47:21 +020028 service_locator_init();
Julian Hallb7db5802021-07-26 16:20:40 +010029
Balint Dobszay3d9403a2023-07-11 16:47:21 +020030 attestation_service_context =
31 service_locator_query("sn:trustedfirmware.org:attestation:0");
Julian Hallb7db5802021-07-26 16:20:40 +010032
Balint Dobszay3d9403a2023-07-11 16:47:21 +020033 if (attestation_service_context) {
Julian Hallb7db5802021-07-26 16:20:40 +010034
Balint Dobszay3d9403a2023-07-11 16:47:21 +020035 session = service_context_open(attestation_service_context);
Julian Hallb7db5802021-07-26 16:20:40 +010036
Balint Dobszay3d9403a2023-07-11 16:47:21 +020037 if (session) {
Julian Hallb7db5802021-07-26 16:20:40 +010038
Balint Dobszay3d9403a2023-07-11 16:47:21 +020039 psa_iat_client_init(session);
40 attest_provision_client_init(session);
Julian Hallb7db5802021-07-26 16:20:40 +010041
42 status = 0;
43 }
44 else {
45
46 status = -1;
47 relinquish_service_under_test();
48 }
49 }
50 }
51
52 return status;
53}
54
Balint Dobszay3d9403a2023-07-11 16:47:21 +020055int relinquish_service_under_test(void)
Julian Hallb7db5802021-07-26 16:20:40 +010056{
57 psa_iat_client_deinit();
58 attest_provision_client_deinit();
59
Balint Dobszay3d9403a2023-07-11 16:47:21 +020060 if (attestation_service_context && session) {
Julian Hallb7db5802021-07-26 16:20:40 +010061
Balint Dobszay3d9403a2023-07-11 16:47:21 +020062 service_context_close(attestation_service_context, session);
63 session = NULL;
Julian Hallb7db5802021-07-26 16:20:40 +010064 }
65
Balint Dobszay3d9403a2023-07-11 16:47:21 +020066 if (attestation_service_context) {
Julian Hallb7db5802021-07-26 16:20:40 +010067
Balint Dobszay3d9403a2023-07-11 16:47:21 +020068 service_context_relinquish(attestation_service_context);
69 attestation_service_context = NULL;
Julian Hallb7db5802021-07-26 16:20:40 +010070 }
Balint Dobszay3d9403a2023-07-11 16:47:21 +020071
72 return 0;
Julian Hallb7db5802021-07-26 16:20:40 +010073}