blob: df62f758edc5198082297c3294e2b3f0018493b3 [file] [log] [blame]
Ashutosh Singhf4d88672017-11-29 13:35:43 +00001/*
Marc Moreno Berengue675b6e92018-06-14 17:31:01 +01002 * Copyright (c) 2017-2018, Arm Limited. All rights reserved.
Ashutosh Singhf4d88672017-11-29 13:35:43 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#ifndef __TFM_SST_VENEERS_H__
9#define __TFM_SST_VENEERS_H__
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15#include "tfm_sst_defs.h"
16
Ashutosh Singhf4d88672017-11-29 13:35:43 +000017/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010018 * \brief Allocates space for the asset, referenced by asset UUID,
Ashutosh Singhf4d88672017-11-29 13:35:43 +000019 * without setting any data in the asset.
20 *
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010021 * \param[in] client_id Client ID which calls the service
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010022 * \param[in] s_token Pointer to the asset's token \ref tfm_sst_token_t
23 * \param[in] asset_uuid Asset UUID \ref tfm_sst_asset_id_t
Ashutosh Singhf4d88672017-11-29 13:35:43 +000024 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010025 * \return Returns PSA_SST_ERR_SUCCESS if the asset has been created correctly.
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010026 * If SST area is not prepared, it returns
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010027 * PSA_SST_ERR_ASSET_NOT_PREPARED. If SST area is full, it returns
28 * PSA_SST_ERR_STORAGE_SYSTEM_FULL. If application id doesn't have the
29 * write rights, it returns PSA_SST_ERR_PERMS_NOT_ALLOWED.
Ashutosh Singhf4d88672017-11-29 13:35:43 +000030 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010031enum psa_sst_err_t tfm_sst_veneer_create(int32_t client_id,
32 uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010033 const struct tfm_sst_token_t *s_token);
34
Ashutosh Singhf4d88672017-11-29 13:35:43 +000035/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010036 * \brief Gets asset's information referenced by asset UUID.
Ashutosh Singhf4d88672017-11-29 13:35:43 +000037 *
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010038 * \param[in] client_id Client ID which calls the service
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010039 * \param[in] asset_uuid Asset UUID
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010040 * \param[in] s_token Pointer to the asset's token \ref tfm_sst_token_t
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010041 * \param[out] info Pointer to store the asset's information
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010042 * \ref psa_sst_asset_info_t
Ashutosh Singhf4d88672017-11-29 13:35:43 +000043 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010044 * \return Returns error code as specified in \ref psa_sst_err_t
Ashutosh Singhf4d88672017-11-29 13:35:43 +000045 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010046enum psa_sst_err_t tfm_sst_veneer_get_info(int32_t client_id,
47 uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010048 const struct tfm_sst_token_t *s_token,
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010049 struct psa_sst_asset_info_t *info);
Marc Moreno Berengue675b6e92018-06-14 17:31:01 +010050
Ashutosh Singhf4d88672017-11-29 13:35:43 +000051/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010052 * \brief Gets asset's attributes referenced by asset UUID.
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010053 *
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010054 * \param[in] client_id Client ID which calls the service
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010055 * \param[in] asset_uuid Asset UUID
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010056 * \param[in] s_token Pointer to the asset's token \ref tfm_sst_token_t
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010057 * \param[out] attrs Pointer to store the asset's attributes
58 * \ref tfm_sst_asset_attrs_t
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010059 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010060 * \return Returns error code as specified in \ref psa_sst_err_t
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010061 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010062enum psa_sst_err_t tfm_sst_veneer_get_attributes(int32_t client_id,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010063 uint32_t asset_uuid,
64 const struct tfm_sst_token_t *s_token,
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010065 struct psa_sst_asset_attrs_t *attrs);
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010066
67/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010068 * \brief Sets asset's attributes referenced by asset UUID.
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010069 *
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010070 * \param[in] client_id Client ID which calls the service
71 * \param[in] asset_uuid Asset UUID
72 * \param[in] s_token Pointer to the asset's token \ref tfm_sst_token_t
73 * \param[in] attrs Pointer to new the asset's attributes
74 * \ref psa_sst_asset_attrs_t
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010075 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010076 * \return Returns error code as specified in \ref psa_sst_err_t
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010077 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010078enum psa_sst_err_t tfm_sst_veneer_set_attributes(int32_t client_id,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010079 uint32_t asset_uuid,
80 const struct tfm_sst_token_t *s_token,
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010081 const struct psa_sst_asset_attrs_t *attrs);
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010082
83/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010084 * \brief Reads asset's data from asset referenced by asset UUID.
Ashutosh Singhf4d88672017-11-29 13:35:43 +000085 *
Marc Moreno Berenguef398da22018-07-12 11:47:54 +010086
87 * \param[in] client_id Client ID which calls the service.
88 * In case, the caller is a secure partition, this
89 * parameter can be a non-secure or secure client ID
90 * if the read is in behalf of that client.
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010091 * \param[in] asset_uuid Asset UUID
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010092 * \param[in] s_token Pointer to the asset's token
93 * \ref tfm_sst_token_t
Marc Moreno Berengue4258e542018-06-18 13:55:59 +010094 * \param[in/out] data Pointer to data vector \ref tfm_sst_buf_t to
95 * store data, size and offset
Ashutosh Singhf4d88672017-11-29 13:35:43 +000096 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010097 * \return Returns the number of bytes written or a castable \ref psa_sst_err_t
Ashutosh Singhf4d88672017-11-29 13:35:43 +000098 * value
99 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +0100100enum psa_sst_err_t tfm_sst_veneer_read(int32_t client_id,
101 uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100102 const struct tfm_sst_token_t *s_token,
Antonio de Angeliseba14e12018-03-27 11:03:20 +0100103 struct tfm_sst_buf_t *data);
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100104
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000105/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +0100106 * \brief Writes data into an asset referenced by asset UUID.
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000107 *
Marc Moreno Berengueb3919762018-07-11 14:25:42 +0100108 * \param[in] client_id Client ID which calls the service
Marc Moreno Berengue4258e542018-06-18 13:55:59 +0100109 * \param[in] asset_uuid Asset UUID
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100110 * \param[in] s_token Pointer to the asset's token \ref tfm_sst_token_t
Marc Moreno Berengue4258e542018-06-18 13:55:59 +0100111 * \param[in] data Pointer to data vector \ref tfm_sst_buf_t which
112 * contains the data to write
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000113 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +0100114 * \return Returns the number of bytes written or a castable \ref psa_sst_err_t
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000115 * value
116 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +0100117enum psa_sst_err_t tfm_sst_veneer_write(int32_t client_id,
118 uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100119 const struct tfm_sst_token_t *s_token,
Antonio de Angeliseba14e12018-03-27 11:03:20 +0100120 struct tfm_sst_buf_t *data);
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100121
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000122/**
Marc Moreno Berengue4258e542018-06-18 13:55:59 +0100123 * \brief Deletes the asset referenced by the asset UUID.
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000124 *
Marc Moreno Berengueb3919762018-07-11 14:25:42 +0100125 * \param[in] client_id Client ID which calls the service
Marc Moreno Berengue4258e542018-06-18 13:55:59 +0100126 * \param[in] asset_uuid Asset UUID
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100127 * \param[in] s_token Pointer to the asset's token \ref tfm_sst_token_t
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000128 *
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +0100129 * \return Returns PSA_SST_ERR_PERMS_NOT_ALLOWED if the asset can't be deleted
130 * to by this app ID. Returns PSA_SST_ERR_ASSET_REF_INVALID, if asset
131 * no longer exists. Otherwise, PSA_SST_ERR_SUCCESS.
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000132 */
Marc Moreno Berengueb3919762018-07-11 14:25:42 +0100133enum psa_sst_err_t tfm_sst_veneer_delete(int32_t client_id,
134 uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +0100135 const struct tfm_sst_token_t *s_token);
Ashutosh Singhf4d88672017-11-29 13:35:43 +0000136#ifdef __cplusplus
137}
138#endif
139
140#endif /* __TFM_SST_VENEERS_H__ */