mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-04-26 15:08:51 +03:00
psa_key_attributes_t: move slot_number to core structure
Move the `slot_number` field of `psa_key_attributes_t` to `psa_core_key_attributes_t`. This makes ``psa_core_key_attributes_t` core` the sole field of `psa_key_attributes_t`. This paves the way to unifying the two structures. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
8988767b0e
commit
0f40a41cea
@ -130,7 +130,7 @@ static inline void psa_set_key_slot_number(
|
|||||||
psa_key_slot_number_t slot_number)
|
psa_key_slot_number_t slot_number)
|
||||||
{
|
{
|
||||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(flags) |= MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER;
|
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(flags) |= MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER;
|
||||||
attributes->MBEDTLS_PRIVATE(slot_number) = slot_number;
|
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(slot_number) = slot_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove the slot number attribute from a key attribute structure.
|
/** Remove the slot number attribute from a key attribute structure.
|
||||||
|
@ -290,6 +290,9 @@ typedef uint16_t psa_key_attributes_flag_t;
|
|||||||
0)
|
0)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||||
|
psa_key_slot_number_t MBEDTLS_PRIVATE(slot_number);
|
||||||
|
#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
|
||||||
psa_key_type_t MBEDTLS_PRIVATE(type);
|
psa_key_type_t MBEDTLS_PRIVATE(type);
|
||||||
psa_key_bits_t MBEDTLS_PRIVATE(bits);
|
psa_key_bits_t MBEDTLS_PRIVATE(bits);
|
||||||
psa_key_lifetime_t MBEDTLS_PRIVATE(lifetime);
|
psa_key_lifetime_t MBEDTLS_PRIVATE(lifetime);
|
||||||
@ -309,29 +312,22 @@ typedef struct {
|
|||||||
mbedtls_svc_key_id_t MBEDTLS_PRIVATE(id);
|
mbedtls_svc_key_id_t MBEDTLS_PRIVATE(id);
|
||||||
} psa_core_key_attributes_t;
|
} psa_core_key_attributes_t;
|
||||||
|
|
||||||
#define PSA_CORE_KEY_ATTRIBUTES_INIT { PSA_KEY_TYPE_NONE, 0, \
|
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||||
|
#define PSA_KEY_ATTRIBUTES_MAYBE_SLOT_NUMBER 0,
|
||||||
|
#else
|
||||||
|
#define PSA_KEY_ATTRIBUTES_MAYBE_SLOT_NUMBER
|
||||||
|
#endif
|
||||||
|
#define PSA_CORE_KEY_ATTRIBUTES_INIT { PSA_KEY_ATTRIBUTES_MAYBE_SLOT_NUMBER \
|
||||||
|
PSA_KEY_TYPE_NONE, 0, \
|
||||||
PSA_KEY_LIFETIME_VOLATILE, \
|
PSA_KEY_LIFETIME_VOLATILE, \
|
||||||
PSA_KEY_POLICY_INIT, 0, \
|
PSA_KEY_POLICY_INIT, 0, \
|
||||||
MBEDTLS_SVC_KEY_ID_INIT }
|
MBEDTLS_SVC_KEY_ID_INIT }
|
||||||
|
|
||||||
struct psa_key_attributes_s {
|
struct psa_key_attributes_s {
|
||||||
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
|
||||||
psa_key_slot_number_t MBEDTLS_PRIVATE(slot_number);
|
|
||||||
#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
|
|
||||||
/* With client/service separation, struct psa_key_attributes_s is
|
|
||||||
* marshalled through a transport channel between the client and
|
|
||||||
* service side implementation of the PSA Crypto APIs, thus having
|
|
||||||
* the mbedtls_svc_key_id_t id as the last field of this structure
|
|
||||||
* allows for a more efficient marshalling/unmarshalling of parameters
|
|
||||||
*/
|
|
||||||
psa_core_key_attributes_t MBEDTLS_PRIVATE(core);
|
psa_core_key_attributes_t MBEDTLS_PRIVATE(core);
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
|
||||||
#define PSA_KEY_ATTRIBUTES_INIT { 0, PSA_CORE_KEY_ATTRIBUTES_INIT }
|
|
||||||
#else
|
|
||||||
#define PSA_KEY_ATTRIBUTES_INIT { PSA_CORE_KEY_ATTRIBUTES_INIT }
|
#define PSA_KEY_ATTRIBUTES_INIT { PSA_CORE_KEY_ATTRIBUTES_INIT }
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline struct psa_key_attributes_s psa_key_attributes_init(void)
|
static inline struct psa_key_attributes_s psa_key_attributes_init(void)
|
||||||
{
|
{
|
||||||
|
@ -1246,7 +1246,7 @@ psa_status_t psa_get_key_slot_number(
|
|||||||
psa_key_slot_number_t *slot_number)
|
psa_key_slot_number_t *slot_number)
|
||||||
{
|
{
|
||||||
if (attributes->core.flags & MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER) {
|
if (attributes->core.flags & MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER) {
|
||||||
*slot_number = attributes->slot_number;
|
*slot_number = attributes->core.slot_number;
|
||||||
return PSA_SUCCESS;
|
return PSA_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
return PSA_ERROR_INVALID_ARGUMENT;
|
return PSA_ERROR_INVALID_ARGUMENT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user