destroying the key after pass/fail
diff --git a/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
index 7d8e633..e755057 100644
--- a/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
+++ b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
@@ -21,6 +21,8 @@
#define PAL_KEY_SLOT_COUNT 32
int pal_system_reset(void);
+psa_key_id_t g_global_key_array[PAL_KEY_SLOT_COUNT];
+uint8_t g_key_count;
/**
@brief - This API will call the requested crypto function
@@ -60,6 +62,7 @@
size_t nonce_length;
const uint8_t *additional_data;
size_t additional_data_length;
+ psa_status_t status;
#if HOST_GCC_MISSING_CRYPTO_1_0 == 0
uint8_t *output1;
size_t output_size1, *p_output_length1;
@@ -372,9 +375,11 @@
key = va_arg(valist, psa_key_id_t);
c_attributes = va_arg(valist, const psa_key_attributes_t *);
target_key = va_arg(valist, psa_key_id_t *);
- return psa_copy_key(key,
+ status = psa_copy_key(key,
c_attributes,
target_key);
+ g_global_key_array[g_key_count++] = *target_key;
+ return status;
break;
case PAL_CRYPTO_INIT:
return psa_crypto_init();
@@ -406,8 +411,9 @@
case PAL_CRYPTO_GENERATE_KEY:
c_attributes = va_arg(valist, const psa_key_attributes_t *);
target_key = va_arg(valist, psa_key_id_t *);
- return psa_generate_key(c_attributes,
- target_key);
+ status = psa_generate_key(c_attributes, target_key);
+ g_global_key_array[g_key_count++] = *target_key;
+ return status;
break;
case PAL_CRYPTO_GENERATE_RANDOM:
output = va_arg(valist, uint8_t *);
@@ -557,10 +563,12 @@
input = va_arg(valist, const uint8_t *);
input_length = va_arg(valist, size_t);
p_key = va_arg(valist, psa_key_id_t *);
- return psa_import_key(c_attributes,
+ status = psa_import_key(c_attributes,
input,
input_length,
p_key);
+ g_global_key_array[g_key_count++] = *p_key;
+ return status;
break;
case PAL_CRYPTO_KEY_ATTRIBUTES_INIT:
attributes = va_arg(valist, psa_key_attributes_t *);
@@ -864,8 +872,11 @@
return pal_system_reset();
break;
case PAL_CRYPTO_FREE:
- for (int i = 0; i < PAL_KEY_SLOT_COUNT; i++)
- psa_destroy_key((psa_key_id_t)i);
+ for (int i = 0; i < g_key_count; i++) {
+ psa_destroy_key(g_global_key_array[i]);
+ g_global_key_array[i] = (psa_key_id_t)0;
+ }
+ g_key_count = 0;
return 0;
break;
default: