mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-23 07:20:56 +00:00
81 lines
2.1 KiB
C
81 lines
2.1 KiB
C
|
/* BEGIN_HEADER */
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#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 */
|