diff --git a/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c b/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c index da3adb0d3..30d4b26dc 100644 --- a/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c +++ b/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c @@ -2314,3 +2314,8 @@ psa_status_t psa_crypto_call(psa_msg_t msg) return ok ? PSA_SUCCESS : PSA_ERROR_GENERIC_ERROR; } + +void psa_crypto_close(void) +{ + psa_sim_serialize_reset(); +} diff --git a/tests/psa-client-server/psasim/src/psa_sim_serialise.c b/tests/psa-client-server/psasim/src/psa_sim_serialise.c index 9e8c38bb5..e326637a6 100644 --- a/tests/psa-client-server/psasim/src/psa_sim_serialise.c +++ b/tests/psa-client-server/psasim/src/psa_sim_serialise.c @@ -706,3 +706,9 @@ int psasim_deserialise_mbedtls_svc_key_id_t(uint8_t **pos, return 1; } + +void psa_sim_serialize_reset(void) +{ + memset(hash_operation_handles, 0, sizeof(hash_operation_handles)); + memset(hash_operations, 0, sizeof(hash_operations)); +} diff --git a/tests/psa-client-server/psasim/src/psa_sim_serialise.h b/tests/psa-client-server/psasim/src/psa_sim_serialise.h index 9c69e65cc..721759585 100644 --- a/tests/psa-client-server/psasim/src/psa_sim_serialise.h +++ b/tests/psa-client-server/psasim/src/psa_sim_serialise.h @@ -54,6 +54,8 @@ * don't contain pointers. */ +void psa_sim_serialize_reset(void); + /** Return how much buffer space is needed by \c psasim_serialise_begin(). * * \return The number of bytes needed in the buffer for diff --git a/tests/psa-client-server/psasim/src/server.c b/tests/psa-client-server/psasim/src/server.c index 77ce2694e..10ab5a287 100644 --- a/tests/psa-client-server/psasim/src/server.c +++ b/tests/psa-client-server/psasim/src/server.c @@ -54,6 +54,7 @@ int psa_server_main(int argc, char *argv[]) int client_disconnected = 0; char mbedtls_version[18]; extern psa_status_t psa_crypto_call(psa_msg_t msg); + extern psa_status_t psa_crypto_close(void); mbedtls_version_get_string_full(mbedtls_version); SERVER_PRINT("%s", mbedtls_version); @@ -81,6 +82,7 @@ int psa_server_main(int argc, char *argv[]) SERVER_PRINT("Got a disconnection message"); ret = PSA_SUCCESS; client_disconnected = 1; + psa_crypto_close(); break; default: SERVER_PRINT("Got an IPC call of type %d", msg.type);