blob: 3fbd3ad987208f74df6219b3b6b49a7b03826b74 [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#include <string.h>
9#include "tfm_ns_svc.h"
10#include "tfm_sst_veneers.h"
11#include "tfm_id_mngr.h"
12
13/* SVC function implementations */
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010014enum psa_sst_err_t tfm_sst_svc_create(uint32_t asset_uuid,
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010015 const struct tfm_sst_token_t *s_token)
Ashutosh Singhf4d88672017-11-29 13:35:43 +000016{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010017 int32_t client_id;
Ashutosh Singhf4d88672017-11-29 13:35:43 +000018
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010019 client_id = tfm_sst_get_cur_id();
Ashutosh Singhf4d88672017-11-29 13:35:43 +000020
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010021 return tfm_sst_veneer_create(client_id, asset_uuid, s_token);
Ashutosh Singhf4d88672017-11-29 13:35:43 +000022}
23
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010024enum psa_sst_err_t tfm_sst_svc_get_info(uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010025 const struct tfm_sst_token_t *s_token,
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010026 struct psa_sst_asset_info_t *info)
Ashutosh Singhf4d88672017-11-29 13:35:43 +000027{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010028 int32_t client_id;
Ashutosh Singhf4d88672017-11-29 13:35:43 +000029
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010030 client_id = tfm_sst_get_cur_id();
Ashutosh Singhf4d88672017-11-29 13:35:43 +000031
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010032 return tfm_sst_veneer_get_info(client_id, asset_uuid, s_token, info);
Ashutosh Singhf4d88672017-11-29 13:35:43 +000033}
34
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010035enum psa_sst_err_t tfm_sst_svc_get_attributes(uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010036 const struct tfm_sst_token_t *s_token,
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010037 struct psa_sst_asset_attrs_t *attrs)
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010038{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010039 int32_t client_id;
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010040
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010041 client_id = tfm_sst_get_cur_id();
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010042
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010043 return tfm_sst_veneer_get_attributes(client_id, asset_uuid,
44 s_token, attrs);
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010045}
46
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010047enum psa_sst_err_t tfm_sst_svc_set_attributes(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 const struct psa_sst_asset_attrs_t *attrs)
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010050{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010051 int32_t client_id;
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010052
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010053 client_id = tfm_sst_get_cur_id();
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010054
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010055 return tfm_sst_veneer_set_attributes(client_id, asset_uuid,
56 s_token, attrs);
Marc Moreno Berengue51af9512018-06-14 18:28:14 +010057}
58
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010059enum psa_sst_err_t tfm_sst_svc_read(uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010060 const struct tfm_sst_token_t *s_token,
Ashutosh Singhf4d88672017-11-29 13:35:43 +000061 struct tfm_sst_buf_t* data)
62{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010063 int32_t client_id;
Ashutosh Singhf4d88672017-11-29 13:35:43 +000064
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010065 client_id = tfm_sst_get_cur_id();
Ashutosh Singhf4d88672017-11-29 13:35:43 +000066
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010067 return tfm_sst_veneer_read(client_id, asset_uuid, s_token, data);
Ashutosh Singhf4d88672017-11-29 13:35:43 +000068}
69
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010070enum psa_sst_err_t tfm_sst_svc_write(uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010071 const struct tfm_sst_token_t *s_token,
Ashutosh Singhf4d88672017-11-29 13:35:43 +000072 struct tfm_sst_buf_t* data)
73{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010074 int32_t client_id;
Ashutosh Singhf4d88672017-11-29 13:35:43 +000075
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010076 client_id = tfm_sst_get_cur_id();
Ashutosh Singhf4d88672017-11-29 13:35:43 +000077
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010078 return tfm_sst_veneer_write(client_id, asset_uuid, s_token, data);
Ashutosh Singhf4d88672017-11-29 13:35:43 +000079}
80
Marc Moreno Berengue7d053a32018-06-27 18:22:14 +010081enum psa_sst_err_t tfm_sst_svc_delete(uint32_t asset_uuid,
Marc Moreno Berengue10d0d362018-06-18 14:15:56 +010082 const struct tfm_sst_token_t *s_token)
Ashutosh Singhf4d88672017-11-29 13:35:43 +000083{
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010084 int32_t client_id;
Ashutosh Singhf4d88672017-11-29 13:35:43 +000085
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010086 client_id = tfm_sst_get_cur_id();
Ashutosh Singhf4d88672017-11-29 13:35:43 +000087
Marc Moreno Berengueb3919762018-07-11 14:25:42 +010088 return tfm_sst_veneer_delete(client_id, asset_uuid, s_token);
Ashutosh Singhf4d88672017-11-29 13:35:43 +000089}