Move test hook setup functions into a C file

Signed-off-by: David Horstmann <david.horstmann@arm.com>
diff --git a/tests/include/test/psa_memory_poisoning_wrappers.h b/tests/include/test/psa_memory_poisoning_wrappers.h
index 5192597..8b2dcfa 100644
--- a/tests/include/test/psa_memory_poisoning_wrappers.h
+++ b/tests/include/test/psa_memory_poisoning_wrappers.h
@@ -9,29 +9,28 @@
  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
  */
 
+#ifndef PSA_MEMORY_POISONING_WRAPPERS_H
+#define PSA_MEMORY_POISONING_WRAPPERS_H
+
 #include "psa/crypto.h"
 
 #include "test/memory.h"
 
-#include "psa_crypto_invasive.h"
+#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_TEST_MEMORY_CAN_POISON)
 
-#if defined(MBEDTLS_TEST_MEMORY_CAN_POISON)
+/**
+ * \brief         Setup the memory poisoning test hooks used by
+ *                psa_crypto_copy_input() and psa_crypto_copy_output() for
+ *                memory poisoning.
+ */
+void mbedtls_poison_test_hooks_setup(void);
 
-static void setup_test_hooks(void)
-{
-    psa_input_pre_copy_hook = mbedtls_test_memory_unpoison;
-    psa_input_post_copy_hook = mbedtls_test_memory_poison;
-    psa_output_pre_copy_hook = mbedtls_test_memory_unpoison;
-    psa_output_post_copy_hook = mbedtls_test_memory_poison;
-}
-
-static void teardown_test_hooks(void)
-{
-    psa_input_pre_copy_hook = NULL;
-    psa_input_post_copy_hook = NULL;
-    psa_output_pre_copy_hook = NULL;
-    psa_output_post_copy_hook = NULL;
-}
+/**
+ * \brief         Teardown the memory poisoning test hooks used by
+ *                psa_crypto_copy_input() and psa_crypto_copy_output() for
+ *                memory poisoning.
+ */
+void mbedtls_poison_test_hooks_teardown(void);
 
 psa_status_t wrap_psa_cipher_encrypt(mbedtls_svc_key_id_t key,
                                      psa_algorithm_t alg,
@@ -39,24 +38,10 @@
                                      size_t input_length,
                                      uint8_t *output,
                                      size_t output_size,
-                                     size_t *output_length)
-{
-    setup_test_hooks();
-    MBEDTLS_TEST_MEMORY_POISON(input, input_length);
-    MBEDTLS_TEST_MEMORY_POISON(output, output_size);
-    psa_status_t status = psa_cipher_encrypt(key,
-                                             alg,
-                                             input,
-                                             input_length,
-                                             output,
-                                             output_size,
-                                             output_length);
-    MBEDTLS_TEST_MEMORY_UNPOISON(input, input_length);
-    MBEDTLS_TEST_MEMORY_UNPOISON(output, output_size);
-    teardown_test_hooks();
-    return status;
-}
+                                     size_t *output_length);
 
 #define psa_cipher_encrypt(...) wrap_psa_cipher_encrypt(__VA_ARGS__)
 
-#endif /* MBEDTLS_TEST_MEMORY_CAN_POISON */
+#endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_TEST_MEMORY_CAN_POISON */
+
+#endif /* PSA_MEMORY_POISONING_WRAPPERS_H */
\ No newline at end of file
diff --git a/tests/src/psa_memory_poisoning_wrappers.c b/tests/src/psa_memory_poisoning_wrappers.c
new file mode 100644
index 0000000..7af84dd
--- /dev/null
+++ b/tests/src/psa_memory_poisoning_wrappers.c
@@ -0,0 +1,53 @@
+/** Helper functions for memory poisoning in tests.
+ */
+/*
+ *  Copyright The Mbed TLS Contributors
+ *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+ */
+#include "test/memory.h"
+
+#include "psa_crypto_invasive.h"
+
+#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_TEST_MEMORY_CAN_POISON)
+
+void mbedtls_poison_test_hooks_setup(void)
+{
+    psa_input_pre_copy_hook = mbedtls_test_memory_unpoison;
+    psa_input_post_copy_hook = mbedtls_test_memory_poison;
+    psa_output_pre_copy_hook = mbedtls_test_memory_unpoison;
+    psa_output_post_copy_hook = mbedtls_test_memory_poison;
+}
+
+void mbedtls_poison_test_hooks_teardown(void)
+{
+    psa_input_pre_copy_hook = NULL;
+    psa_input_post_copy_hook = NULL;
+    psa_output_pre_copy_hook = NULL;
+    psa_output_post_copy_hook = NULL;
+}
+
+psa_status_t wrap_psa_cipher_encrypt(mbedtls_svc_key_id_t key,
+                                     psa_algorithm_t alg,
+                                     const uint8_t *input,
+                                     size_t input_length,
+                                     uint8_t *output,
+                                     size_t output_size,
+                                     size_t *output_length)
+{
+    mbedtls_poison_test_hooks_setup();
+    MBEDTLS_TEST_MEMORY_POISON(input, input_length);
+    MBEDTLS_TEST_MEMORY_POISON(output, output_size);
+    psa_status_t status = psa_cipher_encrypt(key,
+                                             alg,
+                                             input,
+                                             input_length,
+                                             output,
+                                             output_size,
+                                             output_length);
+    MBEDTLS_TEST_MEMORY_UNPOISON(input, input_length);
+    MBEDTLS_TEST_MEMORY_UNPOISON(output, output_size);
+    mbedtls_poison_test_hooks_teardown();
+    return status;
+}
+
+#endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_TEST_MEMORY_CAN_POISON */