Add testcase for psa_crypto_output_copy_alloc()
Signed-off-by: David Horstmann <david.horstmann@arm.com>
diff --git a/tests/suites/test_suite_psa_crypto_memory.data b/tests/suites/test_suite_psa_crypto_memory.data
index 6591ba7..fcd60fb 100644
--- a/tests/suites/test_suite_psa_crypto_memory.data
+++ b/tests/suites/test_suite_psa_crypto_memory.data
@@ -39,3 +39,9 @@
PSA crypto input copy free, NULL buffer
input_copy_free:0
+
+PSA crypto output copy alloc
+output_copy_alloc:200:PSA_SUCCESS
+
+PSA crypto output copy alloc, NULL buffer
+output_copy_alloc:0:PSA_SUCCESS
diff --git a/tests/suites/test_suite_psa_crypto_memory.function b/tests/suites/test_suite_psa_crypto_memory.function
index c40ba67..6fd58cd 100644
--- a/tests/suites/test_suite_psa_crypto_memory.function
+++ b/tests/suites/test_suite_psa_crypto_memory.function
@@ -130,3 +130,36 @@
input_copy.len = 0;
}
/* END_CASE */
+
+/* BEGIN_CASE */
+void output_copy_alloc(int output_len, psa_status_t exp_status)
+{
+ uint8_t *output = NULL;
+ psa_crypto_output_copy_t output_copy;
+ psa_status_t status;
+
+ output_copy.buffer = NULL;
+
+ TEST_CALLOC(output, output_len);
+
+ status = psa_crypto_output_copy_alloc(output, output_len, &output_copy);
+ TEST_EQUAL(status, exp_status);
+
+ if (exp_status == PSA_SUCCESS) {
+ TEST_ASSERT(output_copy.original == output);
+ if (output == NULL) {
+ TEST_ASSERT(output_copy.buffer == NULL);
+ } else {
+ TEST_EQUAL(output_copy.len, output_len);
+ }
+ }
+
+exit:
+ mbedtls_free(output_copy.buffer);
+ output_copy.original = NULL;
+ output_copy.buffer = NULL;
+ output_copy.len = 0;
+ mbedtls_free(output);
+ output = NULL;
+}
+/* END_CASE */