mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-26 16:05:48 +01:00
tests: ccm: Prepare to char* to data_t* type change
In preparation of changing the type of some parameters of mbedtls_ccm_star_encrypt_and_tag/auth_decrypt from `char *` to `data_t` to get rid of the calls to mbedtls_test_unhexify(): - Change the name of parameters and local variables to clarify which ones are related to the outputs of the library functions under test and which ones are related to the expected values of those outputs. - Use two different buffers to store the plain and cipher text as expected by the library functions. Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
parent
b2eb38d391
commit
1d5ef2919b
@ -195,17 +195,18 @@ void mbedtls_ccm_star_encrypt_and_tag( int cipher_id,
|
|||||||
char *key_hex, char *msg_hex,
|
char *key_hex, char *msg_hex,
|
||||||
char *source_address_hex, char *frame_counter_hex,
|
char *source_address_hex, char *frame_counter_hex,
|
||||||
int sec_level, char *add_hex,
|
int sec_level, char *add_hex,
|
||||||
char *result_hex, int output_ret )
|
char *expected_result_hex, int output_ret )
|
||||||
{
|
{
|
||||||
unsigned char key[32];
|
unsigned char key[32];
|
||||||
unsigned char msg[50];
|
unsigned char msg[50];
|
||||||
unsigned char iv[13];
|
unsigned char iv[13];
|
||||||
unsigned char add[32];
|
unsigned char add[32];
|
||||||
unsigned char result[50];
|
unsigned char result[50];
|
||||||
|
unsigned char expected_result[50];
|
||||||
unsigned char source_address[8];
|
unsigned char source_address[8];
|
||||||
unsigned char frame_counter[4];
|
unsigned char frame_counter[4];
|
||||||
mbedtls_ccm_context ctx;
|
mbedtls_ccm_context ctx;
|
||||||
size_t i, key_len, msg_len, iv_len, add_len, result_len, source_address_len, frame_counter_len, tag_len;
|
size_t i, key_len, msg_len, iv_len, add_len, expected_result_len, source_address_len, frame_counter_len, tag_len;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
mbedtls_ccm_init( &ctx );
|
mbedtls_ccm_init( &ctx );
|
||||||
@ -215,13 +216,14 @@ void mbedtls_ccm_star_encrypt_and_tag( int cipher_id,
|
|||||||
memset( iv, 0x00, sizeof( iv ) );
|
memset( iv, 0x00, sizeof( iv ) );
|
||||||
memset( add, 0x00, sizeof( add ) );
|
memset( add, 0x00, sizeof( add ) );
|
||||||
memset( result, 0x00, sizeof( result ) );
|
memset( result, 0x00, sizeof( result ) );
|
||||||
|
memset( expected_result, 0x00, sizeof( expected_result ) );
|
||||||
memset( source_address, 0x00, sizeof( source_address ) );
|
memset( source_address, 0x00, sizeof( source_address ) );
|
||||||
memset( frame_counter, 0x00, sizeof( frame_counter ) );
|
memset( frame_counter, 0x00, sizeof( frame_counter ) );
|
||||||
|
|
||||||
key_len = mbedtls_test_unhexify( key, key_hex );
|
key_len = mbedtls_test_unhexify( key, key_hex );
|
||||||
msg_len = mbedtls_test_unhexify( msg, msg_hex );
|
msg_len = mbedtls_test_unhexify( msg, msg_hex );
|
||||||
add_len = mbedtls_test_unhexify( add, add_hex );
|
add_len = mbedtls_test_unhexify( add, add_hex );
|
||||||
result_len = mbedtls_test_unhexify( result, result_hex );
|
expected_result_len = mbedtls_test_unhexify( expected_result, expected_result_hex );
|
||||||
source_address_len = mbedtls_test_unhexify( source_address,
|
source_address_len = mbedtls_test_unhexify( source_address,
|
||||||
source_address_hex );
|
source_address_hex );
|
||||||
frame_counter_len = mbedtls_test_unhexify( frame_counter,
|
frame_counter_len = mbedtls_test_unhexify( frame_counter,
|
||||||
@ -244,14 +246,15 @@ void mbedtls_ccm_star_encrypt_and_tag( int cipher_id,
|
|||||||
TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 );
|
TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 );
|
||||||
|
|
||||||
ret = mbedtls_ccm_star_encrypt_and_tag( &ctx, msg_len, iv, iv_len,
|
ret = mbedtls_ccm_star_encrypt_and_tag( &ctx, msg_len, iv, iv_len,
|
||||||
add, add_len, msg, msg, msg + msg_len, tag_len );
|
add, add_len, msg, result, result + msg_len, tag_len );
|
||||||
|
|
||||||
TEST_ASSERT( ret == output_ret );
|
TEST_ASSERT( ret == output_ret );
|
||||||
|
|
||||||
TEST_ASSERT( memcmp( msg, result, result_len ) == 0 );
|
TEST_ASSERT( memcmp( result, expected_result, expected_result_len ) == 0 );
|
||||||
|
|
||||||
/* Check we didn't write past the end */
|
/* Check we didn't write past the end */
|
||||||
TEST_ASSERT( msg[result_len] == 0 && msg[result_len + 1] == 0 );
|
TEST_ASSERT( result[expected_result_len] == 0 &&
|
||||||
|
result[expected_result_len + 1] == 0 );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_ccm_free( &ctx );
|
mbedtls_ccm_free( &ctx );
|
||||||
@ -263,18 +266,18 @@ void mbedtls_ccm_star_auth_decrypt( int cipher_id,
|
|||||||
char *key_hex, char *msg_hex,
|
char *key_hex, char *msg_hex,
|
||||||
char *source_address_hex, char *frame_counter_hex,
|
char *source_address_hex, char *frame_counter_hex,
|
||||||
int sec_level, char *add_hex,
|
int sec_level, char *add_hex,
|
||||||
char *result_hex, int output_ret )
|
char *expected_result_hex, int output_ret )
|
||||||
{
|
{
|
||||||
unsigned char key[32];
|
unsigned char key[32];
|
||||||
unsigned char msg[50];
|
unsigned char msg[50];
|
||||||
unsigned char iv[13];
|
unsigned char iv[13];
|
||||||
unsigned char add[32];
|
unsigned char add[32];
|
||||||
unsigned char tag[16];
|
|
||||||
unsigned char result[50];
|
unsigned char result[50];
|
||||||
|
unsigned char expected_result[50];
|
||||||
unsigned char source_address[8];
|
unsigned char source_address[8];
|
||||||
unsigned char frame_counter[4];
|
unsigned char frame_counter[4];
|
||||||
mbedtls_ccm_context ctx;
|
mbedtls_ccm_context ctx;
|
||||||
size_t i, key_len, msg_len, iv_len, add_len, tag_len, result_len, source_address_len, frame_counter_len;
|
size_t i, key_len, msg_len, iv_len, add_len, tag_len, expected_result_len, source_address_len, frame_counter_len;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
mbedtls_ccm_init( &ctx );
|
mbedtls_ccm_init( &ctx );
|
||||||
@ -283,15 +286,15 @@ void mbedtls_ccm_star_auth_decrypt( int cipher_id,
|
|||||||
memset( msg, 0x00, sizeof( msg ) );
|
memset( msg, 0x00, sizeof( msg ) );
|
||||||
memset( iv, 0x00, sizeof( iv ) );
|
memset( iv, 0x00, sizeof( iv ) );
|
||||||
memset( add, 0x00, sizeof( add ) );
|
memset( add, 0x00, sizeof( add ) );
|
||||||
memset( result, 0x00, sizeof( result ) );
|
memset( result, '+', sizeof( result ) );
|
||||||
|
memset( expected_result, 0x00, sizeof( expected_result ) );
|
||||||
memset( source_address, 0x00, sizeof( source_address ) );
|
memset( source_address, 0x00, sizeof( source_address ) );
|
||||||
memset( frame_counter, 0x00, sizeof( frame_counter ) );
|
memset( frame_counter, 0x00, sizeof( frame_counter ) );
|
||||||
memset( tag, 0x00, sizeof( tag ) );
|
|
||||||
|
|
||||||
key_len = mbedtls_test_unhexify( key, key_hex );
|
key_len = mbedtls_test_unhexify( key, key_hex );
|
||||||
msg_len = mbedtls_test_unhexify( msg, msg_hex );
|
msg_len = mbedtls_test_unhexify( msg, msg_hex );
|
||||||
add_len = mbedtls_test_unhexify( add, add_hex );
|
add_len = mbedtls_test_unhexify( add, add_hex );
|
||||||
result_len = mbedtls_test_unhexify( result, result_hex );
|
expected_result_len = mbedtls_test_unhexify( expected_result, expected_result_hex );
|
||||||
source_address_len = mbedtls_test_unhexify( source_address,
|
source_address_len = mbedtls_test_unhexify( source_address,
|
||||||
source_address_hex );
|
source_address_hex );
|
||||||
frame_counter_len = mbedtls_test_unhexify( frame_counter,
|
frame_counter_len = mbedtls_test_unhexify( frame_counter,
|
||||||
@ -311,20 +314,19 @@ void mbedtls_ccm_star_auth_decrypt( int cipher_id,
|
|||||||
iv[source_address_len + frame_counter_len] = sec_level;
|
iv[source_address_len + frame_counter_len] = sec_level;
|
||||||
iv_len = sizeof( iv );
|
iv_len = sizeof( iv );
|
||||||
|
|
||||||
msg_len -= tag_len;
|
|
||||||
memcpy( tag, msg + msg_len, tag_len );
|
|
||||||
|
|
||||||
TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 );
|
TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 );
|
||||||
|
|
||||||
ret = mbedtls_ccm_star_auth_decrypt( &ctx, msg_len, iv, iv_len,
|
ret = mbedtls_ccm_star_auth_decrypt( &ctx, msg_len - tag_len, iv, iv_len,
|
||||||
add, add_len, msg, msg, msg + msg_len, tag_len );
|
add, add_len, msg, result, msg + msg_len - tag_len, tag_len );
|
||||||
|
|
||||||
TEST_ASSERT( ret == output_ret );
|
TEST_ASSERT( ret == output_ret );
|
||||||
|
|
||||||
TEST_ASSERT( memcmp( msg, result, result_len ) == 0 );
|
TEST_ASSERT( memcmp( result, expected_result, expected_result_len ) == 0 );
|
||||||
|
|
||||||
/* Check we didn't write past the end (where the original tag is) */
|
/* Check we didn't write past the end (where the original tag is) */
|
||||||
TEST_ASSERT( memcmp( msg + msg_len, tag, tag_len ) == 0 );
|
TEST_ASSERT( ( msg_len + 2 ) <= sizeof( result ) );
|
||||||
|
TEST_ASSERT( result[msg_len] == '+' );
|
||||||
|
TEST_ASSERT( result[msg_len + 1] == '+' );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
mbedtls_ccm_free( &ctx );
|
mbedtls_ccm_free( &ctx );
|
||||||
|
Loading…
Reference in New Issue
Block a user