blob: ae58701e227a13245a9b0427b46492054911cff7 [file] [log] [blame]
Tamas Ban48a0eb52018-08-17 12:48:05 +01001/*
Tamas Banb6b80562019-01-04 22:49:24 +00002 * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
Tamas Ban48a0eb52018-08-17 12:48:05 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include "psa_initial_attestation_api.h"
Tamas Banb6b80562019-01-04 22:49:24 +00009#include "tfm_veneers.h"
Tamas Ban48a0eb52018-08-17 12:48:05 +010010#include "tfm_ns_lock.h"
11#include "psa_client.h"
12
13enum psa_attest_err_t
14psa_initial_attest_get_token(const uint8_t *challenge_obj,
15 uint32_t challenge_size,
16 uint8_t *token,
17 uint32_t *token_size)
18{
19 psa_invec in_vec[1];
20 psa_outvec out_vec[1];
Tamas Banb6b80562019-01-04 22:49:24 +000021 uint32_t res;
Tamas Ban48a0eb52018-08-17 12:48:05 +010022
23 in_vec[0].base = challenge_obj;
24 in_vec[0].len = challenge_size;
25
26 out_vec[0].base = token;
27 out_vec[0].len = *token_size;
28
Tamas Banb6b80562019-01-04 22:49:24 +000029 res = tfm_ns_lock_dispatch((veneer_fn)tfm_initial_attest_get_token_veneer,
30 (uint32_t)in_vec, 1,
31 (uint32_t)out_vec, 1);
32
33 *token_size = out_vec[0].len;
34
35 return res;
36}
37
38enum psa_attest_err_t
39psa_initial_attest_get_token_size(uint32_t challenge_size,
40 uint32_t *token_size)
41{
42 psa_invec in_vec[1];
43 psa_outvec out_vec[1];
44
45 in_vec[0].base = &challenge_size;
46 in_vec[0].len = sizeof(uint32_t);
47
48 out_vec[0].base = token_size;
49 out_vec[0].len = sizeof(uint32_t);
50
51 return tfm_ns_lock_dispatch((veneer_fn) \
52 tfm_initial_attest_get_token_size_veneer,
Tamas Ban48a0eb52018-08-17 12:48:05 +010053 (uint32_t)in_vec, 1,
54 (uint32_t)out_vec, 1);
55}