1 /*
2 * Copyright (c) 2018-2022, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8 #include "psa/initial_attestation.h"
9 #include "psa/client.h"
10 #include "psa_manifest/sid.h"
11 #include "tfm_attest_defs.h"
12
13 psa_status_t
psa_initial_attest_get_token(const uint8_t * auth_challenge,size_t challenge_size,uint8_t * token_buf,size_t token_buf_size,size_t * token_size)14 psa_initial_attest_get_token(const uint8_t *auth_challenge,
15 size_t challenge_size,
16 uint8_t *token_buf,
17 size_t token_buf_size,
18 size_t *token_size)
19 {
20 psa_status_t status;
21
22 psa_invec in_vec[] = {
23 {auth_challenge, challenge_size}
24 };
25 psa_outvec out_vec[] = {
26 {token_buf, token_buf_size}
27 };
28
29 status = psa_call(TFM_ATTESTATION_SERVICE_HANDLE, TFM_ATTEST_GET_TOKEN,
30 in_vec, IOVEC_LEN(in_vec),
31 out_vec, IOVEC_LEN(out_vec));
32
33 if (status == PSA_SUCCESS) {
34 *token_size = out_vec[0].len;
35 }
36
37 return status;
38 }
39
40 psa_status_t
psa_initial_attest_get_token_size(size_t challenge_size,size_t * token_size)41 psa_initial_attest_get_token_size(size_t challenge_size,
42 size_t *token_size)
43 {
44 psa_status_t status;
45 psa_invec in_vec[] = {
46 {&challenge_size, sizeof(challenge_size)}
47 };
48 psa_outvec out_vec[] = {
49 {token_size, sizeof(size_t)}
50 };
51
52 status = psa_call(TFM_ATTESTATION_SERVICE_HANDLE, TFM_ATTEST_GET_TOKEN_SIZE,
53 in_vec, IOVEC_LEN(in_vec),
54 out_vec, IOVEC_LEN(out_vec));
55
56 return status;
57 }
58