Fix mbedtls_psa_get_stats for keys with fancy lifetimes

mbedtls_psa_get_stats() was written back before lifetimes were
structured as persistence and location. Fix its classification of
volatile external keys and internal keys with a non-default
persistence.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2021-04-21 20:06:51 +02:00
parent 7aa260d481
commit 7934b3f9f9

View file

@ -556,16 +556,17 @@ void mbedtls_psa_get_stats( mbedtls_psa_stats_t *stats )
++stats->empty_slots; ++stats->empty_slots;
continue; continue;
} }
if( slot->attr.lifetime == PSA_KEY_LIFETIME_VOLATILE ) if( PSA_KEY_LIFETIME_IS_VOLATILE( slot->attr.lifetime ) )
++stats->volatile_slots; ++stats->volatile_slots;
else if( slot->attr.lifetime == PSA_KEY_LIFETIME_PERSISTENT ) else
{ {
psa_key_id_t id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id ); psa_key_id_t id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id );
++stats->persistent_slots; ++stats->persistent_slots;
if( id > stats->max_open_internal_key_id ) if( id > stats->max_open_internal_key_id )
stats->max_open_internal_key_id = id; stats->max_open_internal_key_id = id;
} }
else if( PSA_KEY_LIFETIME_GET_LOCATION( slot->attr.lifetime ) !=
PSA_KEY_LOCATION_LOCAL_STORAGE )
{ {
psa_key_id_t id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id ); psa_key_id_t id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID( slot->attr.id );
++stats->external_slots; ++stats->external_slots;