blob: 35d5df36201e247076bbf7c2fcc9c41160201699 [file] [log] [blame]
Tamas Ban48a0eb52018-08-17 12:48:05 +01001/*
Summer Qind23bbb32022-10-18 15:30:06 +08002 * Copyright (c) 2018-2022, Arm Limited. All rights reserved.
Tamas Ban48a0eb52018-08-17 12:48:05 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
Jamie Foxcc31d402019-01-28 17:13:52 +00008#include "psa/initial_attestation.h"
Jamie Foxcc31d402019-01-28 17:13:52 +00009#include "psa/client.h"
Edison Ai870abb42019-06-21 11:14:08 +080010#include "psa_manifest/sid.h"
Shawn Shan40a0dce2021-07-09 10:13:35 +080011#include "tfm_attest_defs.h"
Kevin Peng2ed30222019-04-30 09:26:11 +080012
Raef Coles793574c2019-10-09 10:59:42 +010013psa_status_t
Raef Coles70a02da2019-10-09 11:32:04 +010014psa_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)
Tamas Ban48a0eb52018-08-17 12:48:05 +010019{
Kevin Peng2ed30222019-04-30 09:26:11 +080020 psa_status_t status;
Kevin Peng9449a362019-07-29 16:05:42 +080021
Kevin Peng2ed30222019-04-30 09:26:11 +080022 psa_invec in_vec[] = {
Raef Coles70a02da2019-10-09 11:32:04 +010023 {auth_challenge, challenge_size}
Kevin Peng2ed30222019-04-30 09:26:11 +080024 };
25 psa_outvec out_vec[] = {
Raef Coles70a02da2019-10-09 11:32:04 +010026 {token_buf, token_buf_size}
Kevin Peng2ed30222019-04-30 09:26:11 +080027 };
Tamas Ban48a0eb52018-08-17 12:48:05 +010028
Shawn Shan40a0dce2021-07-09 10:13:35 +080029 status = psa_call(TFM_ATTESTATION_SERVICE_HANDLE, TFM_ATTEST_GET_TOKEN,
Kevin Peng2ed30222019-04-30 09:26:11 +080030 in_vec, IOVEC_LEN(in_vec),
31 out_vec, IOVEC_LEN(out_vec));
Tamas Ban48a0eb52018-08-17 12:48:05 +010032
Kevin Peng2ed30222019-04-30 09:26:11 +080033 if (status == PSA_SUCCESS) {
34 *token_size = out_vec[0].len;
35 }
36
Raef Coles793574c2019-10-09 10:59:42 +010037 return status;
Tamas Banb6b80562019-01-04 22:49:24 +000038}
39
Raef Coles793574c2019-10-09 10:59:42 +010040psa_status_t
Raef Coles70a02da2019-10-09 11:32:04 +010041psa_initial_attest_get_token_size(size_t challenge_size,
42 size_t *token_size)
Tamas Banb6b80562019-01-04 22:49:24 +000043{
Kevin Peng2ed30222019-04-30 09:26:11 +080044 psa_status_t status;
Kevin Peng2ed30222019-04-30 09:26:11 +080045 psa_invec in_vec[] = {
46 {&challenge_size, sizeof(challenge_size)}
47 };
48 psa_outvec out_vec[] = {
Raef Coles70a02da2019-10-09 11:32:04 +010049 {token_size, sizeof(size_t)}
Kevin Peng2ed30222019-04-30 09:26:11 +080050 };
Tamas Banb6b80562019-01-04 22:49:24 +000051
Shawn Shan40a0dce2021-07-09 10:13:35 +080052 status = psa_call(TFM_ATTESTATION_SERVICE_HANDLE, TFM_ATTEST_GET_TOKEN_SIZE,
Kevin Peng2ed30222019-04-30 09:26:11 +080053 in_vec, IOVEC_LEN(in_vec),
54 out_vec, IOVEC_LEN(out_vec));
Tamas Banb6b80562019-01-04 22:49:24 +000055
Raef Coles793574c2019-10-09 10:59:42 +010056 return status;
Tamas Ban48a0eb52018-08-17 12:48:05 +010057}