blob: 94b6caa3ff4515f0c7c29cb98b86bf4cf9a8e317 [file] [log] [blame]
Tamas Band2b2f092019-01-23 22:29:14 +00001/*
2 * Copyright (c) 2019, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include "tfm_api.h"
9#include "tfm_secure_api.h"
10#include "attestation.h"
11#include "psa_initial_attestation_api.h"
12#include "bl2/include/tfm_boot_status.h"
13
Kevin Peng2ed30222019-04-30 09:26:11 +080014#ifdef TFM_PSA_API
15extern int32_t g_attest_caller_id;
16#endif
17
Tamas Band2b2f092019-01-23 22:29:14 +000018enum psa_attest_err_t
19attest_check_memory_access(void *addr,
20 uint32_t size,
21 enum attest_memory_access_t access)
22{
Tamas Band2b2f092019-01-23 22:29:14 +000023 enum psa_attest_err_t attest_res = PSA_ATTEST_ERR_SUCCESS;
Kevin Peng2ed30222019-04-30 09:26:11 +080024#ifndef TFM_PSA_API
25 enum tfm_status_e tfm_res;
Tamas Band2b2f092019-01-23 22:29:14 +000026
27 tfm_res = tfm_core_memory_permission_check(addr, size, access);
28 if (tfm_res) {
29 attest_res = PSA_ATTEST_ERR_INVALID_INPUT;
30 }
Kevin Peng2ed30222019-04-30 09:26:11 +080031#endif
Tamas Band2b2f092019-01-23 22:29:14 +000032
33 return attest_res;
34}
35
36enum psa_attest_err_t
37attest_get_caller_client_id(int32_t *caller_id)
38{
Tamas Band2b2f092019-01-23 22:29:14 +000039 enum psa_attest_err_t attest_res = PSA_ATTEST_ERR_SUCCESS;
Kevin Peng2ed30222019-04-30 09:26:11 +080040#ifndef TFM_PSA_API
41 enum tfm_status_e tfm_res;
Tamas Band2b2f092019-01-23 22:29:14 +000042
43 tfm_res = tfm_core_get_caller_client_id(caller_id);
44 if (tfm_res) {
45 attest_res = PSA_ATTEST_ERR_CLAIM_UNAVAILABLE;
46 }
Kevin Peng2ed30222019-04-30 09:26:11 +080047#else
48 *caller_id = g_attest_caller_id;
49#endif
Tamas Band2b2f092019-01-23 22:29:14 +000050
51 return attest_res;
52}
53
54enum psa_attest_err_t
Tamas Bana24ce042019-02-20 11:50:22 +000055attest_get_boot_data(uint8_t major_type,
56 struct tfm_boot_data *boot_data,
57 uint32_t len)
Tamas Band2b2f092019-01-23 22:29:14 +000058{
Tamas Band2b2f092019-01-23 22:29:14 +000059 enum psa_attest_err_t attest_res = PSA_ATTEST_ERR_SUCCESS;
60
Tamas Banca682b22019-01-29 22:03:43 +000061#ifndef BL2
Tamas Banca682b22019-01-29 22:03:43 +000062 /* Avoid compiler warning due to unused argument */
63 (void)len;
64 (void)major_type;
65
Tamas Bana24ce042019-02-20 11:50:22 +000066 boot_data->header.tlv_magic = SHARED_DATA_TLV_INFO_MAGIC;
67 boot_data->header.tlv_tot_len = SHARED_DATA_HEADER_SIZE;
Tamas Banca682b22019-01-29 22:03:43 +000068#else
69 enum tfm_status_e tfm_res;
70
Tamas Bana24ce042019-02-20 11:50:22 +000071 tfm_res = tfm_core_get_boot_data(major_type, boot_data, len);
Tamas Band2b2f092019-01-23 22:29:14 +000072 if (tfm_res != TFM_SUCCESS) {
73 attest_res = PSA_ATTEST_ERR_INIT_FAILED;
74 }
Tamas Banca682b22019-01-29 22:03:43 +000075#endif /* BL2 */
Tamas Band2b2f092019-01-23 22:29:14 +000076
77 return attest_res;
78}