test: pake: check psa key validity before destroying it

Signed-off-by: Valerio Setti <vsetti@baylibre.com>
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index f7b66ae..54e9861 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -3331,7 +3331,16 @@
     defined(MBEDTLS_USE_PSA_CRYPTO)
     if( opt.ecjpake_pw_opaque != DFL_ECJPAKE_PW_OPAQUE )
     {
-        psa_destroy_key( ecjpake_pw_slot );
+        psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT;
+
+        /* Ensure the key is still valid before destroying it */
+        status = psa_get_key_attributes( ecjpake_pw_slot, &key_attr );
+        if( status == PSA_SUCCESS &&
+            PSA_ALG_IS_PAKE( psa_get_key_algorithm( &key_attr ) ) )
+        {
+            psa_destroy_key( ecjpake_pw_slot );
+        }
+        psa_reset_key_attributes( &key_attr );
     }
 #endif  /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED && MBEDTLS_USE_PSA_CRYPTO */
 
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 3b5ca73..004616f 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -4441,7 +4441,16 @@
     defined(MBEDTLS_USE_PSA_CRYPTO)
     if( opt.ecjpake_pw_opaque != DFL_ECJPAKE_PW_OPAQUE )
     {
-        psa_destroy_key( ecjpake_pw_slot );
+        psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT;
+
+        /* Ensure the key is still valid before destroying it */
+        status = psa_get_key_attributes( ecjpake_pw_slot, &key_attr );
+        if( status == PSA_SUCCESS &&
+            PSA_ALG_IS_PAKE( psa_get_key_algorithm( &key_attr ) ) )
+        {
+            psa_destroy_key( ecjpake_pw_slot );
+        }
+        psa_reset_key_attributes( &key_attr );
     }
 #endif  /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED && MBEDTLS_USE_PSA_CRYPTO */