blob: c391f61172abed6d961fd6bc65995a66cf47b1c6 [file] [log] [blame]
Kevin Peng9449a362019-07-29 16:05:42 +08001/*
2 * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include "psa/initial_attestation.h"
9#include "tfm_veneers.h"
10#include "tfm_ns_interface.h"
11#include "psa/client.h"
12
13#define IOVEC_LEN(x) (sizeof(x)/sizeof(x[0]))
14
15enum psa_attest_err_t
16psa_initial_attest_get_token(const uint8_t *challenge_obj,
17 uint32_t challenge_size,
18 uint8_t *token,
19 uint32_t *token_size)
20{
21
22 int32_t res;
23
24 psa_invec in_vec[] = {
25 {challenge_obj, challenge_size}
26 };
27 psa_outvec out_vec[] = {
28 {token, *token_size}
29 };
30
31 res = tfm_ns_interface_dispatch(
32 (veneer_fn)tfm_initial_attest_get_token_veneer,
33 (uint32_t)in_vec, IOVEC_LEN(in_vec),
34 (uint32_t)out_vec, IOVEC_LEN(out_vec));
35
36 if (res == (int32_t)PSA_ATTEST_ERR_SUCCESS) {
37 *token_size = out_vec[0].len;
38 }
39
40 return (enum psa_attest_err_t)res;
41}
42
43enum psa_attest_err_t
44psa_initial_attest_get_token_size(uint32_t challenge_size,
45 uint32_t *token_size)
46{
47 psa_invec in_vec[] = {
48 {&challenge_size, sizeof(challenge_size)}
49 };
50 psa_outvec out_vec[] = {
51 {token_size, sizeof(uint32_t)}
52 };
53
54 return (enum psa_attest_err_t)tfm_ns_interface_dispatch(
55 (veneer_fn)tfm_initial_attest_get_token_size_veneer,
56 (uint32_t)in_vec, IOVEC_LEN(in_vec),
57 (uint32_t)out_vec, IOVEC_LEN(out_vec));
58}