Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 1 | /* |
Marc Moreno Berengue | 675b6e9 | 2018-06-14 17:31:01 +0100 | [diff] [blame] | 2 | * Copyright (c) 2017-2018, Arm Limited. All rights reserved. |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | * |
| 6 | */ |
| 7 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 8 | #include "tfm_sst_veneers.h" |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 9 | #include "tfm_sst_defs.h" |
| 10 | #include "tfm_ns_lock.h" |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 11 | |
| 12 | /* This define uses the TF-M invalid client ID to specify a direct client read, |
| 13 | * as that it can not be used to identify a client. |
| 14 | */ |
| 15 | #define SST_DIRECT_CLIENT_READ TFM_INVALID_CLIENT_ID |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 16 | |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 17 | enum psa_sst_err_t psa_sst_create(uint32_t asset_uuid, const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 18 | uint32_t token_size) |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 19 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 20 | struct tfm_sst_token_t s_token; |
| 21 | |
| 22 | /* Pack the token information in the token structure */ |
| 23 | s_token.token = token; |
| 24 | s_token.token_size = token_size; |
| 25 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 26 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_create, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 27 | asset_uuid, |
| 28 | (uint32_t)&s_token, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 29 | 0, 0); |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 30 | } |
| 31 | |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 32 | enum psa_sst_err_t psa_sst_get_info(uint32_t asset_uuid, |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 33 | const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 34 | uint32_t token_size, |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 35 | struct psa_sst_asset_info_t *info) |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 36 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 37 | struct tfm_sst_token_t s_token; |
| 38 | |
| 39 | /* Pack the token information in the token structure */ |
| 40 | s_token.token = token; |
| 41 | s_token.token_size = token_size; |
| 42 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 43 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_get_info, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 44 | asset_uuid, |
| 45 | (uint32_t)&s_token, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 46 | (uint32_t)info, |
| 47 | 0); |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 48 | } |
| 49 | |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 50 | enum psa_sst_err_t psa_sst_get_attributes(uint32_t asset_uuid, |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 51 | const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 52 | uint32_t token_size, |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 53 | struct psa_sst_asset_attrs_t *attrs) |
Marc Moreno Berengue | 51af951 | 2018-06-14 18:28:14 +0100 | [diff] [blame] | 54 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 55 | struct tfm_sst_token_t s_token; |
| 56 | |
| 57 | /* Pack the token information in the token structure */ |
| 58 | s_token.token = token; |
| 59 | s_token.token_size = token_size; |
| 60 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 61 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_get_attributes, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 62 | asset_uuid, |
| 63 | (uint32_t)&s_token, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 64 | (uint32_t)attrs, |
| 65 | 0); |
Marc Moreno Berengue | 51af951 | 2018-06-14 18:28:14 +0100 | [diff] [blame] | 66 | } |
| 67 | |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 68 | enum psa_sst_err_t psa_sst_set_attributes(uint32_t asset_uuid, |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 69 | const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 70 | uint32_t token_size, |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 71 | const struct psa_sst_asset_attrs_t *attrs) |
Marc Moreno Berengue | 51af951 | 2018-06-14 18:28:14 +0100 | [diff] [blame] | 72 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 73 | struct tfm_sst_token_t s_token; |
| 74 | |
| 75 | /* Pack the token information in the token structure */ |
| 76 | s_token.token = token; |
| 77 | s_token.token_size = token_size; |
| 78 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 79 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_set_attributes, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 80 | asset_uuid, |
| 81 | (uint32_t)&s_token, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 82 | (uint32_t)attrs, |
| 83 | 0); |
Marc Moreno Berengue | 51af951 | 2018-06-14 18:28:14 +0100 | [diff] [blame] | 84 | } |
| 85 | |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 86 | enum psa_sst_err_t psa_sst_read(uint32_t asset_uuid, |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 87 | const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 88 | uint32_t token_size, |
Marc Moreno Berengue | 7903294 | 2018-06-26 15:34:05 +0100 | [diff] [blame] | 89 | uint32_t size, |
| 90 | uint32_t offset, |
| 91 | uint8_t *data) |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 92 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 93 | struct tfm_sst_token_t s_token; |
Marc Moreno Berengue | 7903294 | 2018-06-26 15:34:05 +0100 | [diff] [blame] | 94 | struct tfm_sst_buf_t s_data; |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 95 | |
| 96 | /* Pack the token information in the token structure */ |
| 97 | s_token.token = token; |
| 98 | s_token.token_size = token_size; |
| 99 | |
Marc Moreno Berengue | 7903294 | 2018-06-26 15:34:05 +0100 | [diff] [blame] | 100 | /* Pack buffer information in the buffer structure */ |
| 101 | s_data.size = size; |
| 102 | s_data.offset = offset; |
| 103 | s_data.data = data; |
| 104 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 105 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_read, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 106 | SST_DIRECT_CLIENT_READ, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 107 | asset_uuid, |
| 108 | (uint32_t)&s_token, |
| 109 | (uint32_t)&s_data); |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 110 | } |
| 111 | |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 112 | enum psa_sst_err_t psa_sst_write(uint32_t asset_uuid, |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 113 | const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 114 | uint32_t token_size, |
Marc Moreno Berengue | 7903294 | 2018-06-26 15:34:05 +0100 | [diff] [blame] | 115 | uint32_t size, |
| 116 | uint32_t offset, |
| 117 | const uint8_t *data) |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 118 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 119 | struct tfm_sst_token_t s_token; |
Marc Moreno Berengue | 7903294 | 2018-06-26 15:34:05 +0100 | [diff] [blame] | 120 | struct tfm_sst_buf_t s_data; |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 121 | |
| 122 | /* Pack the token information in the token structure */ |
| 123 | s_token.token = token; |
| 124 | s_token.token_size = token_size; |
| 125 | |
Marc Moreno Berengue | 7903294 | 2018-06-26 15:34:05 +0100 | [diff] [blame] | 126 | /* Pack buffer information in the buffer structure */ |
| 127 | s_data.size = size; |
| 128 | s_data.offset = offset; |
| 129 | s_data.data = (uint8_t *)data; |
| 130 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 131 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_write, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 132 | asset_uuid, |
| 133 | (uint32_t)&s_token, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 134 | (uint32_t)&s_data, |
| 135 | 0); |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 136 | } |
| 137 | |
Marc Moreno Berengue | 7d053a3 | 2018-06-27 18:22:14 +0100 | [diff] [blame] | 138 | enum psa_sst_err_t psa_sst_delete(uint32_t asset_uuid, |
Marc Moreno Berengue | c304f92 | 2018-07-12 11:39:11 +0100 | [diff] [blame] | 139 | const uint8_t *token, |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 140 | uint32_t token_size) |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 141 | { |
Marc Moreno Berengue | 10d0d36 | 2018-06-18 14:15:56 +0100 | [diff] [blame] | 142 | struct tfm_sst_token_t s_token; |
| 143 | |
| 144 | /* Pack the token information in the token structure */ |
| 145 | s_token.token = token; |
| 146 | s_token.token_size = token_size; |
| 147 | |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 148 | return tfm_ns_lock_dispatch((veneer_fn)tfm_sst_veneer_delete, |
Mate Toth-Pal | 1379e15 | 2018-07-30 17:38:29 +0200 | [diff] [blame] | 149 | asset_uuid, |
| 150 | (uint32_t)&s_token, |
Mate Toth-Pal | 261df46 | 2018-08-07 12:02:42 +0200 | [diff] [blame^] | 151 | 0, 0); |
Ashutosh Singh | f4d8867 | 2017-11-29 13:35:43 +0000 | [diff] [blame] | 152 | } |