9#ifndef PSA_CRYPTO_SLOT_MANAGEMENT_H
10#define PSA_CRYPTO_SLOT_MANAGEMENT_H
28#define PSA_KEY_ID_VOLATILE_MIN PSA_KEY_ID_VENDOR_MIN
32#if defined(MBEDTLS_PSA_KEY_STORE_DYNAMIC)
33#define PSA_KEY_ID_VOLATILE_MAX (MBEDTLS_PSA_KEY_ID_BUILTIN_MIN - 1)
35#define PSA_KEY_ID_VOLATILE_MAX \
36 (PSA_KEY_ID_VOLATILE_MIN + MBEDTLS_PSA_KEY_SLOT_COUNT - 1)
48static inline int psa_key_id_is_volatile(
psa_key_id_t key_id)
103#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_PSA_KEY_STORE_DYNAMIC)
114extern size_t (*mbedtls_test_hook_psa_volatile_key_slice_length)(
118size_t psa_key_slot_volatile_slice_count(
void);
164#if defined(MBEDTLS_PSA_KEY_STORE_DYNAMIC)
205static inline psa_status_t psa_key_slot_state_transition(
209 if (slot->
state != expected_state) {
212 slot->
state = new_state;
#define SIZE_MAX
Definition limits.h:9
uint64_t size_t
Definition stdint.h:104
Platform Security Architecture cryptography module.
int32_t psa_status_t
Function return status.
Definition crypto_types.h:59
#define PSA_ERROR_CORRUPTION_DETECTED
Definition crypto_values.h:231
#define PSA_SUCCESS
Definition crypto_values.h:57
uint32_t psa_key_id_t
Definition crypto_types.h:275
#define PSA_KEY_LOCATION_LOCAL_STORAGE
Definition crypto_values.h:2408
#define PSA_KEY_LIFETIME_GET_LOCATION(lifetime)
Definition crypto_values.h:2345
uint32_t psa_key_lifetime_t
Definition crypto_types.h:183
psa_key_id_t mbedtls_svc_key_id_t
Definition crypto_types.h:292
psa_key_slot_state_t
Definition psa_crypto_core.h:39
@ PSA_SLOT_FULL
Definition psa_crypto_core.h:42
struct psa_se_drv_table_entry_s psa_se_drv_table_entry_t
Definition psa_crypto_se.h:69
psa_status_t psa_unregister_read(psa_key_slot_t *slot)
#define PSA_KEY_ID_VOLATILE_MAX
Definition psa_crypto_slot_management.h:35
psa_status_t psa_get_and_lock_key_slot(mbedtls_svc_key_id_t key, psa_key_slot_t **p_slot)
psa_status_t psa_reserve_free_key_slot(psa_key_id_t *volatile_key_id, psa_key_slot_t **p_slot)
psa_status_t psa_validate_key_persistence(psa_key_lifetime_t lifetime)
psa_status_t psa_unregister_read_under_mutex(psa_key_slot_t *slot)
#define PSA_KEY_ID_VOLATILE_MIN
Definition psa_crypto_slot_management.h:28
psa_status_t psa_validate_key_location(psa_key_lifetime_t lifetime, psa_se_drv_table_entry_t **p_drv)
void psa_wipe_all_key_slots(void)
psa_status_t psa_initialize_key_slots(void)
int psa_is_valid_key_id(mbedtls_svc_key_id_t key, int vendor_ok)
Definition psa_crypto_core.h:49
size_t registered_readers
Definition psa_crypto_core.h:139
union psa_key_slot_t::@900 var
struct psa_key_slot_t::@900::@902 occupied
psa_key_slot_state_t state
Definition psa_crypto_core.h:73