blob: 8a3fec8cc9eabd994b4deb8e2206697738c65c6c [file] [log] [blame]
/*
* Copyright (c) 2017-2018, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#include "tfm_sst_veneers.h"
#include "tfm_sst_defs.h"
#include "tfm_ns_lock.h"
#include "tfm_id_mngr.h"
enum psa_sst_err_t psa_sst_create(uint32_t asset_uuid, const uint8_t *token,
uint32_t token_size)
{
struct tfm_sst_token_t s_token;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_create,
client_id,
asset_uuid,
(uint32_t)&s_token,
0);
}
enum psa_sst_err_t psa_sst_get_info(uint32_t asset_uuid,
const uint8_t *token,
uint32_t token_size,
struct psa_sst_asset_info_t *info)
{
struct tfm_sst_token_t s_token;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_get_info,
client_id,
asset_uuid,
(uint32_t)&s_token,
(uint32_t)info);
}
enum psa_sst_err_t psa_sst_get_attributes(uint32_t asset_uuid,
const uint8_t *token,
uint32_t token_size,
struct psa_sst_asset_attrs_t *attrs)
{
struct tfm_sst_token_t s_token;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_get_attributes,
client_id,
asset_uuid,
(uint32_t)&s_token,
(uint32_t)attrs);
}
enum psa_sst_err_t psa_sst_set_attributes(uint32_t asset_uuid,
const uint8_t *token,
uint32_t token_size,
const struct psa_sst_asset_attrs_t *attrs)
{
struct tfm_sst_token_t s_token;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_set_attributes,
client_id,
asset_uuid,
(uint32_t)&s_token,
(uint32_t)attrs);
}
enum psa_sst_err_t psa_sst_read(uint32_t asset_uuid,
const uint8_t *token,
uint32_t token_size,
uint32_t size,
uint32_t offset,
uint8_t *data)
{
struct tfm_sst_token_t s_token;
struct tfm_sst_buf_t s_data;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
/* Pack buffer information in the buffer structure */
s_data.size = size;
s_data.offset = offset;
s_data.data = data;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_read,
client_id,
asset_uuid,
(uint32_t)&s_token,
(uint32_t)&s_data);
}
enum psa_sst_err_t psa_sst_write(uint32_t asset_uuid,
const uint8_t *token,
uint32_t token_size,
uint32_t size,
uint32_t offset,
const uint8_t *data)
{
struct tfm_sst_token_t s_token;
struct tfm_sst_buf_t s_data;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
/* Pack buffer information in the buffer structure */
s_data.size = size;
s_data.offset = offset;
s_data.data = (uint8_t *)data;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_write,
client_id,
asset_uuid,
(uint32_t)&s_token,
(uint32_t)&s_data);
}
enum psa_sst_err_t psa_sst_delete(uint32_t asset_uuid,
const uint8_t *token,
uint32_t token_size)
{
struct tfm_sst_token_t s_token;
int32_t client_id;
/* Pack the token information in the token structure */
s_token.token = token;
s_token.token_size = token_size;
client_id = tfm_sst_get_cur_id();
return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_delete,
client_id,
asset_uuid,
(uint32_t)&s_token,
0);
}