psa: slot mgmt: Add unaccessed slots counter in stats
Add a counter of unaccessed slots and use it in tests to check that at the end of PSA tests all key slot are unaccessed. Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
parent
f95a2b1190
commit
0c3752a46b
3 changed files with 11 additions and 0 deletions
|
@ -231,6 +231,8 @@ typedef struct mbedtls_psa_stats_s
|
||||||
size_t cache_slots;
|
size_t cache_slots;
|
||||||
/** Number of slots that are not used for anything. */
|
/** Number of slots that are not used for anything. */
|
||||||
size_t empty_slots;
|
size_t empty_slots;
|
||||||
|
/** Number of slots that are not accessed. */
|
||||||
|
size_t unaccessed_slots;
|
||||||
/** Largest key id value among open keys in internal persistent storage. */
|
/** Largest key id value among open keys in internal persistent storage. */
|
||||||
psa_key_id_t max_open_internal_key_id;
|
psa_key_id_t max_open_internal_key_id;
|
||||||
/** Largest key id value among open keys in secure elements. */
|
/** Largest key id value among open keys in secure elements. */
|
||||||
|
|
|
@ -408,6 +408,10 @@ void mbedtls_psa_get_stats( mbedtls_psa_stats_t *stats )
|
||||||
for( slot_idx = 0; slot_idx < PSA_KEY_SLOT_COUNT; slot_idx++ )
|
for( slot_idx = 0; slot_idx < PSA_KEY_SLOT_COUNT; slot_idx++ )
|
||||||
{
|
{
|
||||||
const psa_key_slot_t *slot = &global_data.key_slots[ slot_idx ];
|
const psa_key_slot_t *slot = &global_data.key_slots[ slot_idx ];
|
||||||
|
if( ! psa_is_key_slot_accessed( slot ) )
|
||||||
|
{
|
||||||
|
++stats->unaccessed_slots;
|
||||||
|
}
|
||||||
if( ! psa_is_key_slot_occupied( slot ) )
|
if( ! psa_is_key_slot_occupied( slot ) )
|
||||||
{
|
{
|
||||||
++stats->empty_slots;
|
++stats->empty_slots;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "test/psa_helpers.h"
|
#include "test/psa_helpers.h"
|
||||||
|
|
||||||
#include <psa/crypto.h>
|
#include <psa/crypto.h>
|
||||||
|
#include <psa_crypto_slot_management.h>
|
||||||
|
|
||||||
static int test_helper_is_psa_pristine( int line, const char *file )
|
static int test_helper_is_psa_pristine( int line, const char *file )
|
||||||
{
|
{
|
||||||
|
@ -40,6 +41,10 @@ static int test_helper_is_psa_pristine( int line, const char *file )
|
||||||
msg = "An external slot has not been closed properly.";
|
msg = "An external slot has not been closed properly.";
|
||||||
else if( stats.half_filled_slots != 0 )
|
else if( stats.half_filled_slots != 0 )
|
||||||
msg = "A half-filled slot has not been cleared properly.";
|
msg = "A half-filled slot has not been cleared properly.";
|
||||||
|
else if( stats.unaccessed_slots != PSA_KEY_SLOT_COUNT )
|
||||||
|
{
|
||||||
|
msg = "Some slots are still marked as accessed.";
|
||||||
|
}
|
||||||
|
|
||||||
/* If the test has already failed, don't overwrite the failure
|
/* If the test has already failed, don't overwrite the failure
|
||||||
* information. Do keep the stats lookup above, because it can be
|
* information. Do keep the stats lookup above, because it can be
|
||||||
|
|
Loading…
Reference in a new issue