/* BEGIN_HEADER */ #include #include "common.h" #include "psa/crypto.h" #include "psa_crypto_core.h" #include "test/psa_crypto_helpers.h" /* Helper to fill a buffer with a data pattern. The pattern is not * important, it just allows a basic check that the correct thing has * been written, in a way that will detect an error in offset. */ static void fill_buffer_pattern(uint8_t *buffer, size_t len) { uint8_t data[] = { 0x12, 0x34, 0x56, 0x78 }; for (size_t i = 0; i < len; i++) { buffer[i] = data[i % sizeof(data)]; } } /* END_HEADER */ /* BEGIN_DEPENDENCIES * depends_on:MBEDTLS_PSA_CRYPTO_C * END_DEPENDENCIES */ /* BEGIN_CASE */ void copy_input(int src_len, int dst_len, psa_status_t exp_status) { uint8_t *src_buffer = NULL; uint8_t *dst_buffer = NULL; psa_status_t status; TEST_CALLOC_NONNULL(src_buffer, src_len); TEST_CALLOC_NONNULL(dst_buffer, dst_len); fill_buffer_pattern(src_buffer, src_len); status = psa_crypto_copy_input(src_buffer, src_len, dst_buffer, dst_len); TEST_EQUAL(status, exp_status); if (exp_status == PSA_SUCCESS) { /* Note: We compare the first src_len bytes of each buffer, as this is what was copied. */ TEST_MEMORY_COMPARE(src_buffer, src_len, dst_buffer, src_len); } exit: mbedtls_free(src_buffer); mbedtls_free(dst_buffer); } /* END_CASE */ /* BEGIN_CASE */ void copy_output(int src_len, int dst_len, psa_status_t exp_status) { uint8_t *src_buffer = NULL; uint8_t *dst_buffer = NULL; psa_status_t status; TEST_CALLOC_NONNULL(src_buffer, src_len); TEST_CALLOC_NONNULL(dst_buffer, dst_len); fill_buffer_pattern(src_buffer, src_len); status = psa_crypto_copy_output(src_buffer, src_len, dst_buffer, dst_len); TEST_EQUAL(status, exp_status); if (exp_status == PSA_SUCCESS) { /* Note: We compare the first src_len bytes of each buffer, as this is what was copied. */ TEST_MEMORY_COMPARE(src_buffer, src_len, dst_buffer, src_len); } exit: mbedtls_free(src_buffer); mbedtls_free(dst_buffer); } /* END_CASE */