Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 1 | /* |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 2 | * Copyright (c) 2019-2020, Arm Limited. All rights reserved. |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | * |
| 6 | */ |
| 7 | |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 8 | /* This file describes the PSA Protected Storage API */ |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 9 | |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 10 | #ifndef PSA_PROTECTED_STORAGE_H |
| 11 | #define PSA_PROTECTED_STORAGE_H |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 12 | |
| 13 | #include <stddef.h> |
| 14 | #include <stdint.h> |
| 15 | |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 16 | #include "psa/error.h" |
| 17 | #include "psa/storage_common.h" |
| 18 | |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 19 | #ifdef __cplusplus |
| 20 | extern "C" { |
| 21 | #endif |
| 22 | |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 23 | #define PSA_PS_API_VERSION_MAJOR 1 |
| 24 | #define PSA_PS_API_VERSION_MINOR 0 |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 25 | |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 26 | // This version of the header file is associated with 1.0 final release. |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 27 | |
| 28 | /** |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 29 | * Create a new or modify an existing key/value pair |
| 30 | * |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 31 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 32 | psa_status_t psa_ps_set(psa_storage_uid_t uid, |
| 33 | size_t data_length, |
| 34 | const void *p_data, |
| 35 | psa_storage_create_flags_t create_flags); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 36 | |
| 37 | /** |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 38 | * Retrieve data associated with a provided UID |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 39 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 40 | psa_status_t psa_ps_get(psa_storage_uid_t uid, |
| 41 | size_t data_offset, |
| 42 | size_t data_size, |
| 43 | void *p_data, |
| 44 | size_t *p_data_length); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 45 | |
| 46 | /** |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 47 | * Retrieve the metadata about the provided uid |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 48 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 49 | psa_status_t psa_ps_get_info(psa_storage_uid_t uid, |
| 50 | struct psa_storage_info_t *p_info); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 51 | |
| 52 | /** |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 53 | * Remove the provided uid and its associated data from the storage |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 54 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 55 | psa_status_t psa_ps_remove(psa_storage_uid_t uid); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 56 | |
| 57 | /** |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 58 | * Reserves storage for the specified UID. |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 59 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 60 | psa_status_t psa_ps_create(psa_storage_uid_t uid, |
| 61 | size_t capacity, |
| 62 | psa_storage_create_flags_t create_flags); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 63 | |
| 64 | /** |
| 65 | * Sets partial data into an asset based on the given identifier, data_offset, |
| 66 | * data length and p_data. |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 67 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 68 | psa_status_t psa_ps_set_extended(psa_storage_uid_t uid, |
| 69 | size_t data_offset, |
| 70 | size_t data_length, |
| 71 | const void *p_data); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 72 | |
| 73 | /** |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 74 | * Returns a bitmask with flags set for all of the optional features supported |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 75 | * by the implementation. |
| 76 | * |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 77 | */ |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 78 | uint32_t psa_ps_get_support(void); |
Jamie Fox | efb8b37 | 2018-12-14 14:52:15 +0000 | [diff] [blame] | 79 | |
| 80 | #ifdef __cplusplus |
| 81 | } |
| 82 | #endif |
| 83 | |
Jamie Fox | 8a1c7ed | 2019-06-13 15:04:46 +0100 | [diff] [blame^] | 84 | #endif // PSA_PROTECTED_STORAGE_H |