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: