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>
diff --git a/include/psa/crypto_extra.h b/include/psa/crypto_extra.h
index 71adb93..7986eb2 100644
--- a/include/psa/crypto_extra.h
+++ b/include/psa/crypto_extra.h
@@ -231,6 +231,8 @@
     size_t cache_slots;
     /** Number of slots that are not used for anything. */
     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. */
     psa_key_id_t max_open_internal_key_id;
     /** Largest key id value among open keys in secure elements. */
diff --git a/library/psa_crypto_slot_management.c b/library/psa_crypto_slot_management.c
index e207477..2fa0a0d 100644
--- a/library/psa_crypto_slot_management.c
+++ b/library/psa_crypto_slot_management.c
@@ -408,6 +408,10 @@
     for( slot_idx = 0; slot_idx < PSA_KEY_SLOT_COUNT; 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 ) )
         {
             ++stats->empty_slots;
diff --git a/tests/include/test/psa_crypto_helpers.h b/tests/include/test/psa_crypto_helpers.h
index c8013a1..214ee87 100644
--- a/tests/include/test/psa_crypto_helpers.h
+++ b/tests/include/test/psa_crypto_helpers.h
@@ -24,6 +24,7 @@
 #include "test/psa_helpers.h"
 
 #include <psa/crypto.h>
+#include <psa_crypto_slot_management.h>
 
 static int test_helper_is_psa_pristine( int line, const char *file )
 {
@@ -40,6 +41,10 @@
         msg = "An external slot has not been closed properly.";
     else if( stats.half_filled_slots != 0 )
         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
      * information. Do keep the stats lookup above, because it can be