| /* |
| * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| * |
| */ |
| |
| #include "psa/initial_attestation.h" |
| #include "psa/client.h" |
| #include "psa_manifest/sid.h" |
| #include "tfm_attest_defs.h" |
| |
| 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) |
| { |
| psa_status_t status; |
| |
| psa_invec in_vec[] = { |
| {auth_challenge, challenge_size} |
| }; |
| psa_outvec out_vec[] = { |
| {token_buf, token_buf_size} |
| }; |
| |
| status = psa_call(TFM_ATTESTATION_SERVICE_HANDLE, TFM_ATTEST_GET_TOKEN, |
| in_vec, IOVEC_LEN(in_vec), |
| out_vec, IOVEC_LEN(out_vec)); |
| |
| if (status == PSA_SUCCESS) { |
| *token_size = out_vec[0].len; |
| } |
| |
| return status; |
| } |
| |
| psa_status_t |
| psa_initial_attest_get_token_size(size_t challenge_size, |
| size_t *token_size) |
| { |
| psa_status_t status; |
| rot_size_t challenge_size_param; |
| rot_size_t token_size_param = 0; |
| |
| psa_invec in_vec[] = { |
| {&challenge_size_param, sizeof(challenge_size_param)} |
| }; |
| psa_outvec out_vec[] = { |
| {&token_size_param, sizeof(token_size_param)} |
| }; |
| |
| if (challenge_size > ROT_SIZE_MAX) { |
| return PSA_ERROR_INVALID_ARGUMENT; |
| } |
| challenge_size_param = (rot_size_t)challenge_size; |
| |
| if (token_size == NULL) { |
| return PSA_ERROR_INVALID_ARGUMENT; |
| } |
| |
| status = psa_call(TFM_ATTESTATION_SERVICE_HANDLE, TFM_ATTEST_GET_TOKEN_SIZE, |
| in_vec, IOVEC_LEN(in_vec), |
| out_vec, IOVEC_LEN(out_vec)); |
| |
| *token_size = token_size_param; |
| |
| return status; |
| } |