On target testing tests adaptation
Updated all psa crypto tests to use the new test format
diff --git a/tests/suites/test_suite_psa_crypto.data b/tests/suites/test_suite_psa_crypto.data
old mode 100755
new mode 100644
diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function
index add059e..002f9f7 100644
--- a/tests/suites/test_suite_psa_crypto.function
+++ b/tests/suites/test_suite_psa_crypto.function
@@ -1,7 +1,13 @@
/* BEGIN_HEADER */
+#include <stdint.h>
#include "psa/crypto.h"
-
#include "mbedtls/md.h"
+
+#if(UINT32_MAX > SIZE_MAX)
+#define PSA_CRYPTO_TEST_SIZE_T_RANGE(x) ((x) <= SIZE_MAX)
+#else
+#define PSA_CRYPTO_TEST_SIZE_T_RANGE(x) 1
+#endif
/* END_HEADER */
/* BEGIN_DEPENDENCIES
@@ -26,30 +32,27 @@
/* END_CASE */
/* BEGIN_CASE */
-void import( char *hex, int type, int expected_status )
+void import( data_t *data, int type, int expected_status )
{
int slot = 1;
psa_status_t status;
- unsigned char *data = NULL;
- size_t data_size;
- data = unhexify_alloc( hex, &data_size );
TEST_ASSERT( data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( data->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
- status = psa_import_key( slot, type, data, data_size );
+ status = psa_import_key( slot, type, data->x, (size_t) data->len );
TEST_ASSERT( status == (psa_status_t) expected_status );
if( status == PSA_SUCCESS )
TEST_ASSERT( psa_destroy_key( slot ) == PSA_SUCCESS );
exit:
- mbedtls_free( data );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void import_export( char *hex,
+void import_export( data_t *data,
int type_arg,
int alg_arg,
int usage_arg,
@@ -62,10 +65,8 @@
int slot2 = slot + 1;
psa_key_type_t type = type_arg;
psa_status_t status;
- unsigned char *data = NULL;
unsigned char *exported = NULL;
unsigned char *reexported = NULL;
- size_t data_size;
size_t export_size;
size_t exported_length;
size_t reexported_length;
@@ -73,9 +74,9 @@
size_t got_bits;
psa_key_policy_t policy = {0};
- data = unhexify_alloc( hex, &data_size );
TEST_ASSERT( data != NULL );
- export_size = (ssize_t) data_size + export_size_delta;
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( data->len ) );
+ export_size = (ssize_t) data->len + export_size_delta;
exported = mbedtls_calloc( 1, export_size );
TEST_ASSERT( exported != NULL );
if( ! canonical_input )
@@ -93,7 +94,7 @@
/* Import the key */
TEST_ASSERT( psa_import_key( slot, type,
- data, data_size ) == PSA_SUCCESS );
+ data->x, (size_t) data->len ) == PSA_SUCCESS );
/* Test the key information */
TEST_ASSERT( psa_get_key_information( slot,
@@ -112,8 +113,8 @@
if( canonical_input )
{
- TEST_ASSERT( exported_length == data_size );
- TEST_ASSERT( memcmp( exported, data, data_size ) == 0 );
+ TEST_ASSERT( exported_length == (size_t) data->len );
+ TEST_ASSERT( memcmp( exported, data->x, (size_t) data->len ) == 0 );
}
else
{
@@ -138,14 +139,15 @@
slot, NULL, NULL ) == PSA_ERROR_EMPTY_SLOT );
exit:
- mbedtls_free( data );
+ mbedtls_free( exported );
+ mbedtls_free( reexported );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void import_export_public_key( char *hex,
+void import_export_public_key( data_t *data,
int type_arg,
int alg_arg,
int expected_bits,
@@ -155,18 +157,16 @@
int slot = 1;
psa_key_type_t type = type_arg;
psa_status_t status;
- unsigned char *data = NULL;
unsigned char *exported = NULL;
- size_t data_size;
size_t export_size;
size_t exported_length;
psa_key_type_t got_type;
size_t got_bits;
psa_key_policy_t policy = {0};
- data = unhexify_alloc( hex, &data_size );
TEST_ASSERT( data != NULL );
- export_size = (ssize_t) data_size ;
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( data->len ) );
+ export_size = (ssize_t) data->len;
exported = mbedtls_calloc( 1, export_size );
TEST_ASSERT( exported != NULL );
@@ -181,7 +181,8 @@
/* Import the key */
TEST_ASSERT( psa_import_key( slot, type,
- data, data_size ) == PSA_SUCCESS );
+ data->x, (size_t) data->len ) ==
+ PSA_SUCCESS );
/* Test the key information */
TEST_ASSERT( psa_get_key_information( slot,
@@ -206,104 +207,88 @@
slot, NULL, NULL ) == PSA_ERROR_EMPTY_SLOT );
exit:
- mbedtls_free( data );
+ mbedtls_free( exported );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void hash_finish( int alg_arg, char *input_hex, char *hash_hex )
+void hash_finish( int alg_arg, data_t *input, data_t *expected_hash )
{
psa_algorithm_t alg = alg_arg;
- unsigned char *input = NULL;
- size_t input_size;
- unsigned char expected_hash[MBEDTLS_MD_MAX_SIZE];
- size_t expected_hash_length;
unsigned char actual_hash[MBEDTLS_MD_MAX_SIZE];
size_t actual_hash_length;
psa_hash_operation_t operation;
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
- expected_hash_length = unhexify( expected_hash, hash_hex );
+ TEST_ASSERT( expected_hash != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_hash->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_hash_start( &operation, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_hash_update( &operation,
- input, input_size ) == PSA_SUCCESS );
+ input->x, (size_t) input->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_hash_finish( &operation,
actual_hash, sizeof( actual_hash ),
&actual_hash_length ) == PSA_SUCCESS );
- TEST_ASSERT( actual_hash_length == expected_hash_length );
- TEST_ASSERT( memcmp( expected_hash, actual_hash,
- expected_hash_length ) == 0 );
+ TEST_ASSERT( actual_hash_length == (size_t) expected_hash->len );
+ TEST_ASSERT( memcmp( expected_hash->x, actual_hash,
+ (size_t) expected_hash->len ) == 0 );
exit:
- mbedtls_free( input );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void hash_verify( int alg_arg, char *input_hex, char *hash_hex )
+void hash_verify( int alg_arg, data_t *input, data_t *expected_hash )
{
psa_algorithm_t alg = alg_arg;
- unsigned char *input = NULL;
- size_t input_size;
- unsigned char expected_hash[MBEDTLS_MD_MAX_SIZE];
- size_t expected_hash_length;
psa_hash_operation_t operation;
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
- expected_hash_length = unhexify( expected_hash, hash_hex );
+ TEST_ASSERT( expected_hash != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_hash->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_hash_start( &operation, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_hash_update( &operation,
- input, input_size ) == PSA_SUCCESS );
+ input->x, (size_t) input->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_hash_verify( &operation,
- expected_hash,
- expected_hash_length ) == PSA_SUCCESS );
+ expected_hash->x,
+ (size_t) expected_hash->len ) ==
+ PSA_SUCCESS );
exit:
- mbedtls_free( input );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void mac_verify( int key_type_arg, char *key_hex,
- int alg_arg, char *iv_hex,
- char *input_hex, char *mac_hex )
+void mac_verify( int key_type_arg, data_t *key,
+ int alg_arg, data_t *iv,
+ data_t *input, data_t *expected_mac )
{
int key_slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
- unsigned char *iv = NULL;
- size_t iv_size;
- unsigned char *input = NULL;
- size_t input_size;
- unsigned char *expected_mac = NULL;
- size_t expected_mac_size;
psa_mac_operation_t operation;
psa_key_policy_t policy;
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
- if( iv_hex[0] != 0 )
- {
- iv = unhexify_alloc( iv_hex, &iv_size );
- TEST_ASSERT( iv != NULL );
- }
- input = unhexify_alloc( input_hex, &input_size );
+ TEST_ASSERT( iv != NULL );
TEST_ASSERT( input != NULL );
- expected_mac = unhexify_alloc( mac_hex, &expected_mac_size );
TEST_ASSERT( expected_mac != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( iv->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_mac->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -314,21 +299,18 @@
TEST_ASSERT( psa_set_key_policy( key_slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
// TODO: support IV
TEST_ASSERT( psa_mac_start( &operation, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_destroy_key( key_slot ) == PSA_SUCCESS );
TEST_ASSERT( psa_mac_update( &operation,
- input, input_size ) == PSA_SUCCESS );
+ input->x, (size_t) input->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_mac_verify( &operation,
- expected_mac,
- expected_mac_size ) == PSA_SUCCESS );
+ expected_mac->x,
+ (size_t) expected_mac->len ) == PSA_SUCCESS );
exit:
- mbedtls_free( key );
- mbedtls_free( iv );
- mbedtls_free( input );
- mbedtls_free( expected_mac );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
@@ -337,52 +319,44 @@
/* BEGIN_CASE */
void cipher_encrypt( int alg_arg, int key_type_arg,
- char *key_hex,
- char *input_hex, char *output_hex,
+ data_t *key,
+ data_t *input, data_t *expected_output,
int expected_status )
{
int key_slot = 1;
psa_status_t status;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
unsigned char iv[16] = {0};
- unsigned char *input = NULL;
- size_t input_size = 0;
- unsigned char *output;
- unsigned char *expected_output;
- size_t expected_output_size;
+ unsigned char *output = NULL;
size_t output_buffer_size = 0;
size_t function_output_length = 0;
size_t total_output_length = 0;
psa_cipher_operation_t operation;
-
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
-
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
-
- expected_output = unhexify_alloc( output_hex, &expected_output_size );
TEST_ASSERT( expected_output != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_output->len ) );
memset( iv, 0x2a, sizeof( iv ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_setup( &operation, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_set_iv( &operation,
iv, sizeof( iv ) ) == PSA_SUCCESS );
- output_buffer_size = input_size + operation.block_size;
+ output_buffer_size = (size_t) input->len + operation.block_size;
output = mbedtls_calloc( 1, output_buffer_size );
+ TEST_ASSERT( output != NULL );
- TEST_ASSERT( psa_cipher_update( &operation, input, input_size,
+ TEST_ASSERT( psa_cipher_update( &operation, input->x, (size_t) input->len,
output, output_buffer_size,
&function_output_length ) == PSA_SUCCESS );
total_output_length += function_output_length;
@@ -396,14 +370,13 @@
if( expected_status == PSA_SUCCESS )
{
TEST_ASSERT( psa_cipher_abort( &operation ) == PSA_SUCCESS );
- TEST_ASSERT( total_output_length == expected_output_size );
- TEST_ASSERT( memcmp( expected_output, output,
- expected_output_size ) == 0 );
+ TEST_ASSERT( total_output_length == (size_t) expected_output->len );
+ TEST_ASSERT( memcmp( expected_output->x, output,
+ (size_t) expected_output->len ) == 0 );
}
exit:
- mbedtls_free( key );
- mbedtls_free( input );
+ mbedtls_free( output );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
@@ -411,57 +384,51 @@
/* BEGIN_CASE */
void cipher_encrypt_multipart( int alg_arg, int key_type_arg,
- char *key_hex,
- char *input_hex,
- int first_part_size, char *output_hex )
+ data_t *key,
+ data_t *input,
+ int first_part_size,
+ data_t *expected_output )
{
int key_slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
unsigned char iv[16] = {0};
- unsigned char *input = NULL;
- size_t input_size = 0;
- unsigned char *output;
- unsigned char *expected_output;
- size_t expected_output_size;
+ unsigned char *output = NULL;
size_t output_buffer_size = 0;
size_t function_output_length = 0;
size_t total_output_length = 0;
psa_cipher_operation_t operation;
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
-
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
-
- expected_output = unhexify_alloc( output_hex, &expected_output_size );
TEST_ASSERT( expected_output != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_output->len ) );
memset( iv, 0x2a, sizeof( iv ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_setup( &operation, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_set_iv( &operation,
iv, sizeof( iv ) ) == PSA_SUCCESS );
- output_buffer_size = input_size + operation.block_size;
+ output_buffer_size = (size_t) input->len + operation.block_size;
output = mbedtls_calloc( 1, output_buffer_size );
+ TEST_ASSERT( output != NULL );
- TEST_ASSERT( (unsigned int) first_part_size < input_size );
- TEST_ASSERT( psa_cipher_update( &operation, input, first_part_size,
+ TEST_ASSERT( (unsigned int) first_part_size < (size_t) input->len );
+ TEST_ASSERT( psa_cipher_update( &operation, input->x, first_part_size,
output, output_buffer_size,
&function_output_length ) == PSA_SUCCESS );
total_output_length += function_output_length;
TEST_ASSERT( psa_cipher_update( &operation,
- input + first_part_size,
- input_size - first_part_size,
+ input->x + first_part_size,
+ (size_t) input->len - first_part_size,
output, output_buffer_size,
&function_output_length ) == PSA_SUCCESS );
total_output_length += function_output_length;
@@ -472,12 +439,12 @@
total_output_length += function_output_length;
TEST_ASSERT( psa_cipher_abort( &operation ) == PSA_SUCCESS );
- TEST_ASSERT( total_output_length == expected_output_size );
- TEST_ASSERT( memcmp( expected_output, output, expected_output_size ) == 0 );
+ TEST_ASSERT( total_output_length == (size_t) expected_output->len );
+ TEST_ASSERT( memcmp( expected_output->x, output,
+ (size_t) expected_output->len ) == 0 );
exit:
- mbedtls_free( key );
- mbedtls_free( input );
+ mbedtls_free( output );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
@@ -485,59 +452,53 @@
/* BEGIN_CASE */
void cipher_decrypt_multipart( int alg_arg, int key_type_arg,
- char *key_hex,
- char *input_hex,
- int first_part_size, char *output_hex )
+ data_t *key,
+ data_t *input,
+ int first_part_size,
+ data_t *expected_output )
{
int key_slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
unsigned char iv[16] = {0};
- unsigned char *input = NULL;
- size_t input_size = 0;
- unsigned char *output;
- unsigned char *expected_output;
- size_t expected_output_size;
+ unsigned char *output = NULL;
size_t output_buffer_size = 0;
size_t function_output_length = 0;
size_t total_output_length = 0;
psa_cipher_operation_t operation;
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
-
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
-
- expected_output = unhexify_alloc( output_hex, &expected_output_size );
TEST_ASSERT( expected_output != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_output->len ) );
memset( iv, 0x2a, sizeof( iv ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_decrypt_setup( &operation, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_set_iv( &operation,
iv, sizeof( iv ) ) == PSA_SUCCESS );
- output_buffer_size = input_size + operation.block_size;
+ output_buffer_size = (size_t) input->len + operation.block_size;
output = mbedtls_calloc( 1, output_buffer_size );
+ TEST_ASSERT( output != NULL );
- TEST_ASSERT( (unsigned int) first_part_size < input_size );
- TEST_ASSERT( psa_cipher_update( &operation, input, first_part_size,
+ TEST_ASSERT( (unsigned int) first_part_size < (size_t) input->len );
+ TEST_ASSERT( psa_cipher_update( &operation, input->x, first_part_size,
output, output_buffer_size,
&function_output_length ) == PSA_SUCCESS );
total_output_length += function_output_length;
TEST_ASSERT( psa_cipher_update( &operation,
- input + first_part_size,
- input_size - first_part_size,
+ input->x + first_part_size,
+ (size_t) input->len - first_part_size,
output, output_buffer_size,
&function_output_length ) == PSA_SUCCESS );
total_output_length += function_output_length;
@@ -548,12 +509,12 @@
total_output_length += function_output_length;
TEST_ASSERT( psa_cipher_abort( &operation ) == PSA_SUCCESS );
- TEST_ASSERT( total_output_length == expected_output_size );
- TEST_ASSERT( memcmp( expected_output, output, expected_output_size ) == 0 );
+ TEST_ASSERT( total_output_length == (size_t) expected_output->len );
+ TEST_ASSERT( memcmp( expected_output->x, output,
+ (size_t) expected_output->len ) == 0 );
exit:
- mbedtls_free( key );
- mbedtls_free( input );
+ mbedtls_free( output );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
@@ -562,53 +523,45 @@
/* BEGIN_CASE */
void cipher_decrypt( int alg_arg, int key_type_arg,
- char *key_hex,
- char *input_hex, char *output_hex,
+ data_t *key,
+ data_t *input, data_t *expected_output,
int expected_status )
{
int key_slot = 1;
psa_status_t status;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
unsigned char iv[16] = {0};
- unsigned char *input = NULL;
- size_t input_size = 0;
- unsigned char *output;
- unsigned char *expected_output;
- size_t expected_output_size;
+ unsigned char *output = NULL;
size_t output_buffer_size = 0;
size_t function_output_length = 0;
size_t total_output_length = 0;
psa_cipher_operation_t operation;
-
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
-
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
-
- expected_output = unhexify_alloc( output_hex, &expected_output_size );
TEST_ASSERT( expected_output != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_output->len ) );
memset( iv, 0x2a, sizeof( iv ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_decrypt_setup( &operation, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_set_iv( &operation,
iv, sizeof( iv ) ) == PSA_SUCCESS );
- output_buffer_size = input_size + operation.block_size;
+ output_buffer_size = (size_t) input->len + operation.block_size;
output = mbedtls_calloc( 1, output_buffer_size );
+ TEST_ASSERT( output != NULL );
- TEST_ASSERT( psa_cipher_update( &operation, input, input_size,
+ TEST_ASSERT( psa_cipher_update( &operation, input->x, (size_t) input->len,
output, output_buffer_size,
&function_output_length ) == PSA_SUCCESS );
total_output_length += function_output_length;
@@ -622,15 +575,14 @@
if( expected_status == PSA_SUCCESS )
{
TEST_ASSERT( psa_cipher_abort( &operation ) == PSA_SUCCESS );
- TEST_ASSERT( total_output_length == expected_output_size );
- TEST_ASSERT( memcmp( expected_output, output,
- expected_output_size ) == 0 );
+ TEST_ASSERT( total_output_length == (size_t) expected_output->len );
+ TEST_ASSERT( memcmp( expected_output->x, output,
+ (size_t) expected_output->len ) == 0 );
}
exit:
- mbedtls_free( key );
- mbedtls_free( input );
+ mbedtls_free( output );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
@@ -639,39 +591,34 @@
/* BEGIN_CASE */
void cipher_verify_output( int alg_arg, int key_type_arg,
- char *key_hex,
- char *input_hex )
+ data_t *key,
+ data_t *input )
{
int key_slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
unsigned char iv[16] = {0};
size_t iv_size = 16;
size_t iv_length = 0;
- unsigned char *input = NULL;
- size_t input_size = 0;
- unsigned char *output1;
+ unsigned char *output1 = NULL;
size_t output1_size = 0;
size_t output1_length = 0;
- unsigned char *output2;
+ unsigned char *output2 = NULL;
size_t output2_size = 0;
size_t output2_length = 0;
size_t function_output_length = 0;
psa_cipher_operation_t operation1;
psa_cipher_operation_t operation2;
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
-
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_setup( &operation1, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_decrypt_setup( &operation2, key_slot, alg ) == PSA_SUCCESS );
@@ -679,11 +626,11 @@
TEST_ASSERT( psa_encrypt_generate_iv( &operation1,
iv, iv_size,
&iv_length ) == PSA_SUCCESS );
- output1_size = input_size + operation1.block_size;
+ output1_size = (size_t) input->len + operation1.block_size;
output1 = mbedtls_calloc( 1, output1_size );
TEST_ASSERT( output1 != NULL );
- TEST_ASSERT( psa_cipher_update( &operation1, input, input_size,
+ TEST_ASSERT( psa_cipher_update( &operation1, input->x, (size_t) input->len,
output1, output1_size,
&output1_length ) == PSA_SUCCESS );
TEST_ASSERT( psa_cipher_finish( &operation1,
@@ -696,6 +643,7 @@
output2_size = output1_length;
output2 = mbedtls_calloc( 1, output2_size );
+ TEST_ASSERT( output2 != NULL );
TEST_ASSERT( psa_encrypt_set_iv( &operation2,
iv, iv_length ) == PSA_SUCCESS );
@@ -712,12 +660,12 @@
TEST_ASSERT( psa_cipher_abort( &operation1 ) == PSA_SUCCESS );
- TEST_ASSERT( input_size == output2_length );
- TEST_ASSERT( memcmp( input, output2, input_size ) == 0 );
+ TEST_ASSERT( (size_t) input->len == output2_length );
+ TEST_ASSERT( memcmp( input->x, output2, (size_t) input->len ) == 0 );
exit:
- mbedtls_free( key );
- mbedtls_free( input );
+ mbedtls_free( output1 );
+ mbedtls_free( output2 );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
@@ -726,40 +674,35 @@
/* BEGIN_CASE */
void cipher_verify_output_multipart( int alg_arg,
int key_type_arg,
- char *key_hex,
- char *input_hex,
+ data_t *key,
+ data_t *input,
int first_part_size )
{
int key_slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key = NULL;
- size_t key_size;
unsigned char iv[16] = {0};
size_t iv_size = 16;
size_t iv_length = 0;
- unsigned char *input = NULL;
- size_t input_size = 0;
- unsigned char *output1;
+ unsigned char *output1 = NULL;
size_t output1_buffer_size = 0;
size_t output1_length = 0;
- unsigned char *output2;
+ unsigned char *output2 = NULL;
size_t output2_buffer_size = 0;
size_t output2_length = 0;
size_t function_output_length;
psa_cipher_operation_t operation1;
psa_cipher_operation_t operation2;
- key = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key != NULL );
-
- input = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( key_slot, key_type,
- key, key_size ) == PSA_SUCCESS );
+ key->x, (size_t) key->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_encrypt_setup( &operation1, key_slot, alg ) == PSA_SUCCESS );
TEST_ASSERT( psa_decrypt_setup( &operation2, key_slot, alg ) == PSA_SUCCESS );
@@ -767,19 +710,20 @@
TEST_ASSERT( psa_encrypt_generate_iv( &operation1,
iv, iv_size,
&iv_length ) == PSA_SUCCESS );
- output1_buffer_size = input_size + operation1.block_size;
+ output1_buffer_size = (size_t) input->len + operation1.block_size;
output1 = mbedtls_calloc( 1, output1_buffer_size );
+ TEST_ASSERT( output1 != NULL );
- TEST_ASSERT( (unsigned int) first_part_size < input_size );
+ TEST_ASSERT( (unsigned int) first_part_size < (size_t) input->len );
- TEST_ASSERT( psa_cipher_update( &operation1, input, first_part_size,
+ TEST_ASSERT( psa_cipher_update( &operation1, input->x, first_part_size,
output1, output1_buffer_size,
&function_output_length ) == PSA_SUCCESS );
output1_length += function_output_length;
TEST_ASSERT( psa_cipher_update( &operation1,
- input + first_part_size,
- input_size - first_part_size,
+ input->x + first_part_size,
+ (size_t) input->len - first_part_size,
output1, output1_buffer_size,
&function_output_length ) == PSA_SUCCESS );
output1_length += function_output_length;
@@ -794,6 +738,7 @@
output2_buffer_size = output1_length;
output2 = mbedtls_calloc( 1, output2_buffer_size );
+ TEST_ASSERT( output2 != NULL );
TEST_ASSERT( psa_encrypt_set_iv( &operation2,
iv, iv_length ) == PSA_SUCCESS );
@@ -818,54 +763,46 @@
TEST_ASSERT( psa_cipher_abort( &operation1 ) == PSA_SUCCESS );
- TEST_ASSERT( input_size == output2_length );
- TEST_ASSERT( memcmp( input, output2, input_size ) == 0 );
+ TEST_ASSERT( (size_t) input->len == output2_length );
+ TEST_ASSERT( memcmp( input->x, output2, (size_t) input->len ) == 0 );
exit:
- mbedtls_free( key );
- mbedtls_free( input );
+ mbedtls_free( output1 );
+ mbedtls_free( output2 );
psa_destroy_key( key_slot );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void aead_encrypt_decrypt( int key_type_arg, char * key_hex,
- int alg_arg, char * input_hex, char * nonce_hex,
- char * add_data, int expected_result_arg )
+void aead_encrypt_decrypt( int key_type_arg, data_t * key_data,
+ int alg_arg, data_t * input_data, data_t * nonce,
+ data_t * additional_data, int expected_result_arg )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
unsigned char *output_data = NULL;
size_t output_size = 0;
size_t output_length = 0;
unsigned char *output_data2 = NULL;
size_t output_length2 = 0;
- uint8_t* nonce;
- size_t nonce_length = 16;
size_t tag_length = 16;
- unsigned char *additional_data = NULL;
- size_t additional_data_length = 0;
psa_status_t expected_result = (psa_status_t) expected_result_arg;
psa_key_policy_t policy = {0};
-
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
- additional_data = unhexify_alloc( add_data, &additional_data_length );
- TEST_ASSERT( input_data != NULL );
- output_size = input_size + tag_length;
+ TEST_ASSERT( nonce != NULL );
+ TEST_ASSERT( additional_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( nonce->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( additional_data->len ) );
+
+ output_size = (size_t) input_data->len + tag_length;
output_data = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output_data != NULL );
- nonce = unhexify_alloc( nonce_hex, &nonce_length );
- TEST_ASSERT( nonce != NULL );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -876,13 +813,16 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_aead_encrypt( slot, alg,
- nonce, nonce_length,
- additional_data, additional_data_length,
- input_data, input_size, output_data,
- output_size, &output_length ) == expected_result );
+ nonce->x, (size_t) nonce->len,
+ additional_data->x,
+ (size_t) additional_data->len,
+ input_data->x, (size_t) input_data->len,
+ output_data,
+ output_size, &output_length ) ==
+ expected_result );
if( PSA_SUCCESS == expected_result )
{
@@ -890,22 +830,21 @@
TEST_ASSERT( output_data2 != NULL );
TEST_ASSERT( psa_aead_decrypt( slot, alg,
- nonce, nonce_length,
- additional_data, additional_data_length,
+ nonce->x, (size_t) nonce->len,
+ additional_data->x,
+ (size_t) additional_data->len,
output_data, output_length, output_data2,
- output_length, &output_length2 ) == expected_result );
+ output_length, &output_length2 ) ==
+ expected_result );
- TEST_ASSERT( memcmp( input_data, output_data2,
- input_size ) == 0 );
+ TEST_ASSERT( memcmp( input_data->x, output_data2,
+ (size_t) input_data->len ) == 0 );
}
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( additional_data );
mbedtls_free( output_data );
mbedtls_free( output_data2 );
mbedtls_psa_crypto_free( );
@@ -913,44 +852,34 @@
/* END_CASE */
/* BEGIN_CASE */
-void aead_encrypt( int key_type_arg, char * key_hex,
- int alg_arg, char * input_hex,
- char * add_data, char * nonce_hex,
- char * expected_result_hex )
+void aead_encrypt( int key_type_arg, data_t * key_data,
+ int alg_arg, data_t * input_data,
+ data_t * additional_data, data_t * nonce,
+ data_t * expected_result )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
unsigned char *output_data = NULL;
size_t output_size = 0;
size_t output_length = 0;
- unsigned char *expected_result = NULL;
- size_t expected_result_length = 0;
- uint8_t* nonce = NULL;
- size_t nonce_length = 0;
size_t tag_length = 16;
- unsigned char *additional_data = NULL;
- size_t additional_data_length = 0;
psa_key_policy_t policy = {0};
-
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
- additional_data = unhexify_alloc( add_data, &additional_data_length );
- TEST_ASSERT( input_data != NULL );
- output_size = input_size + tag_length;
+ TEST_ASSERT( additional_data != NULL );
+ TEST_ASSERT( nonce != NULL );
+ TEST_ASSERT( expected_result != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( additional_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( nonce->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_result->len ) );
+
+ output_size = (size_t) input_data->len + tag_length;
output_data = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output_data != NULL );
- nonce = unhexify_alloc( nonce_hex, &nonce_length );
- TEST_ASSERT( nonce != NULL );
- expected_result = unhexify_alloc( expected_result_hex, &expected_result_length );
- TEST_ASSERT( expected_result != NULL );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -961,71 +890,60 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_aead_encrypt( slot, alg,
- nonce, nonce_length,
- additional_data, additional_data_length,
- input_data, input_size, output_data,
+ nonce->x, (size_t) nonce->len,
+ additional_data->x,
+ (size_t) additional_data->len,
+ input_data->x, (size_t) input_data->len,
+ output_data,
output_size, &output_length ) == PSA_SUCCESS );
- TEST_ASSERT( memcmp( output_data, expected_result,
+ TEST_ASSERT( memcmp( output_data, expected_result->x,
output_length ) == 0 );
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( additional_data );
mbedtls_free( output_data );
- mbedtls_free( nonce );
- mbedtls_free( expected_result );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void aead_decrypt( int key_type_arg, char * key_hex,
- int alg_arg, char * input_hex,
- char * add_data, char * nonce_hex,
- char * expected_result_hex, int expected_result_arg )
+void aead_decrypt( int key_type_arg, data_t * key_data,
+ int alg_arg, data_t * input_data,
+ data_t * additional_data, data_t * nonce,
+ data_t * expected_data, int expected_result_arg )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
unsigned char *output_data = NULL;
size_t output_size = 0;
size_t output_length = 0;
- unsigned char *expected_data = NULL;
- size_t expected_result_length = 0;
- uint8_t* nonce = NULL;
- size_t nonce_length = 0;
size_t tag_length = 16;
- unsigned char *additional_data = NULL;
- size_t additional_data_length = 0;
psa_key_policy_t policy = {0};
psa_status_t expected_result = (psa_status_t) expected_result_arg;
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
- additional_data = unhexify_alloc( add_data, &additional_data_length );
- TEST_ASSERT( input_data != NULL );
- output_size = input_size + tag_length;
+ TEST_ASSERT( additional_data != NULL );
+ TEST_ASSERT( nonce != NULL );
+ TEST_ASSERT( expected_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( additional_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( nonce->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_data->len ) );
+
+ output_size = (size_t) input_data->len + tag_length;
output_data = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output_data != NULL );
- nonce = unhexify_alloc( nonce_hex, &nonce_length );
- TEST_ASSERT( nonce != NULL );
- expected_data = unhexify_alloc( expected_result_hex, &expected_result_length );
- TEST_ASSERT( expected_data != NULL );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -1036,18 +954,21 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_aead_decrypt( slot, alg,
- nonce, nonce_length,
- additional_data, additional_data_length,
- input_data, input_size, output_data,
- output_size, &output_length ) == expected_result );
+ nonce->x, (size_t) nonce->len,
+ additional_data->x, (size_t) additional_data->len,
+ input_data->x, (size_t) input_data->len,
+ output_data,
+ output_size, &output_length ) ==
+ expected_result );
if ( expected_result == PSA_SUCCESS )
{
- TEST_ASSERT( memcmp( output_data, expected_data,
+ TEST_ASSERT( memcmp( output_data, expected_data->x,
output_length ) == 0 );
}
@@ -1055,12 +976,7 @@
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( additional_data );
mbedtls_free( output_data );
- mbedtls_free( nonce );
- mbedtls_free( expected_data );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
@@ -1078,30 +994,25 @@
/* END_CASE */
/* BEGIN_CASE */
-void sign_deterministic( int key_type_arg, char *key_hex,
- int alg_arg, char *input_hex, char *output_hex )
+void sign_deterministic( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *input_data,
+ data_t *output_data )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
size_t key_bits;
- unsigned char *input_data = NULL;
- size_t input_size;
- unsigned char *output_data = NULL;
- size_t output_size;
unsigned char *signature = NULL;
size_t signature_size;
size_t signature_length = 0xdeadbeef;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
- output_data = unhexify_alloc( output_hex, &output_size );
TEST_ASSERT( output_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( output_data->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -1112,7 +1023,7 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) == PSA_SUCCESS );
TEST_ASSERT( psa_get_key_information( slot,
NULL,
&key_bits ) == PSA_SUCCESS );
@@ -1123,45 +1034,40 @@
TEST_ASSERT( signature != NULL );
TEST_ASSERT( psa_asymmetric_sign( slot, alg,
- input_data, input_size,
+ input_data->x, (size_t) input_data->len,
NULL, 0,
signature, signature_size,
&signature_length ) == PSA_SUCCESS );
- TEST_ASSERT( signature_length == output_size );
- TEST_ASSERT( memcmp( signature, output_data, output_size ) == 0 );
+ TEST_ASSERT( signature_length == (size_t) output_data->len );
+ TEST_ASSERT( memcmp( signature, output_data->x, (size_t) output_data->len )
+ == 0 );
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( output_data );
mbedtls_free( signature );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void sign_fail( int key_type_arg, char *key_hex,
- int alg_arg, char *input_hex,
+void sign_fail( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *input_data,
int signature_size, int expected_status_arg )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
psa_status_t actual_status;
psa_status_t expected_status = expected_status_arg;
unsigned char *signature = NULL;
size_t signature_length = 0xdeadbeef;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+
signature = mbedtls_calloc( 1, signature_size );
TEST_ASSERT( signature != NULL );
@@ -1174,10 +1080,12 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
actual_status = psa_asymmetric_sign( slot, alg,
- input_data, input_size,
+ input_data->x,
+ (size_t) input_data->len,
NULL, 0,
signature, signature_size,
&signature_length );
@@ -1186,8 +1094,6 @@
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
mbedtls_free( signature );
mbedtls_psa_crypto_free( );
}
@@ -1232,11 +1138,10 @@
/* END_CASE */
/* BEGIN_CASE */
-void key_policy_fail( int usage_arg, int alg_arg, int expected_status, char *key_hex )
+void key_policy_fail( int usage_arg, int alg_arg, int expected_status,
+ data_t *keypair )
{
int key_slot = 1;
- unsigned char* keypair = NULL;
- size_t key_size = 0;
size_t signature_length = 0;
psa_key_policy_t policy = {0};
int actual_status = PSA_SUCCESS;
@@ -1251,21 +1156,23 @@
if( usage_arg & PSA_KEY_USAGE_EXPORT )
{
- keypair = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( keypair != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( keypair->len ) );
TEST_ASSERT( psa_import_key( key_slot, PSA_KEY_TYPE_RSA_KEYPAIR,
- keypair, key_size ) == PSA_SUCCESS );
- actual_status = psa_asymmetric_sign( key_slot,
- ( psa_algorithm_t )alg_arg, NULL, 0, NULL, 0,
+ keypair->x, (size_t) keypair->len ) ==
+ PSA_SUCCESS );
+ actual_status = psa_asymmetric_sign( key_slot,
+ ( psa_algorithm_t )alg_arg, NULL, 0, NULL, 0,
NULL, 0, &signature_length );
}
if( usage_arg & PSA_KEY_USAGE_SIGN )
{
- keypair = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( keypair != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( keypair->len ) );
TEST_ASSERT( psa_import_key( key_slot, PSA_KEY_TYPE_RSA_KEYPAIR,
- keypair, key_size ) == PSA_SUCCESS );
+ keypair->x, (size_t) keypair->len ) ==
+ PSA_SUCCESS );
actual_status = psa_export_key( key_slot, NULL, 0, NULL );
}
@@ -1273,7 +1180,6 @@
exit:
psa_destroy_key( key_slot );
- mbedtls_free( keypair );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
@@ -1333,26 +1239,21 @@
/* END_CASE */
/* BEGIN_CASE */
-void asymmetric_verify( int key_type_arg, char *key_hex,
- int alg_arg, char *hash_hex, char *signature_hex )
+void asymmetric_verify( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *hash_data,
+ data_t *signature_data )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *hash_data = NULL;
- size_t hash_size;
- unsigned char *signature_data = NULL;
- size_t signature_size;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- hash_data = unhexify_alloc( hash_hex, &hash_size );
TEST_ASSERT( hash_data != NULL );
- signature_data = unhexify_alloc( signature_hex, &signature_size );
TEST_ASSERT( signature_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( hash_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( signature_data->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -1363,47 +1264,41 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_asymmetric_verify( slot, alg,
- hash_data, hash_size,
+ hash_data->x, (size_t) hash_data->len,
NULL, 0,
- signature_data, signature_size ) ==
+ signature_data->x,
+ (size_t) signature_data->len ) ==
PSA_SUCCESS );
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( hash_data );
- mbedtls_free( signature_data );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void asymmetric_verify_fail( int key_type_arg, char *key_hex,
- int alg_arg, char *hash_hex, char *signature_hex,
- int expected_status_arg )
+void asymmetric_verify_fail( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *hash_data,
+ data_t *signature_data,
+ int expected_status_arg )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *hash_data = NULL;
- size_t hash_size;
- unsigned char *signature_data = NULL;
- size_t signature_size;
psa_status_t actual_status;
psa_status_t expected_status = expected_status_arg;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- hash_data = unhexify_alloc( hash_hex, &hash_size );
TEST_ASSERT( hash_data != NULL );
- signature_data = unhexify_alloc( signature_hex, &signature_size );
TEST_ASSERT( signature_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( hash_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( signature_data->len ) );
TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
@@ -1414,37 +1309,32 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
actual_status = psa_asymmetric_verify( slot, alg,
- hash_data, hash_size,
+ hash_data->x, (size_t) hash_data->len,
NULL, 0,
- signature_data, signature_size );
+ signature_data->x,
+ (size_t) signature_data->len );
TEST_ASSERT( actual_status == expected_status );
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( hash_data );
- mbedtls_free( signature_data );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void asymmetric_encrypt_decrypt( int key_type_arg, char *key_hex,
- int alg_arg, char *input_hex )
+void asymmetric_encrypt_decrypt( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *input_data )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
unsigned char *output = NULL;
size_t output_size = 0;
size_t output_length = 0;
@@ -1453,12 +1343,13 @@
size_t output2_length = 0;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- output_size = key_size;
- output2_size = key_size;
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+
+ output_size = (size_t) key_data->len;
+ output2_size = output_size;
output = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output != NULL );
output2 = mbedtls_calloc( 1, output2_size );
@@ -1471,14 +1362,15 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
/* We test encryption by checking that encrypt-then-decrypt gives back
* the original plaintext because of the non-optional random
* part of encryption process which prevents using fixed vectors. */
TEST_ASSERT( psa_asymmetric_encrypt(slot, alg,
- input_data,
- input_size,
+ input_data->x,
+ (size_t) input_data->len,
NULL, 0,
output,
output_size,
@@ -1491,14 +1383,13 @@
output2,
output2_size,
&output2_length) == PSA_SUCCESS );
- TEST_ASSERT( memcmp( input_data, output2, input_size ) == 0 );
+ TEST_ASSERT( memcmp( input_data->x, output2, (size_t) input_data->len )
+ == 0 );
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( output);
- mbedtls_free( output2);
+ mbedtls_free( output );
+ mbedtls_free( output2 );
mbedtls_psa_crypto_free( );
}
@@ -1506,8 +1397,8 @@
/* BEGIN_CASE */
-void asymmetric_encrypt_fail( int key_type_arg, char *key_hex,
- int alg_arg, char *input_hex,
+void asymmetric_encrypt_fail( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *input_data,
int expected_status_arg )
{
@@ -1515,10 +1406,6 @@
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
unsigned char *output = NULL;
size_t output_size = 0;
size_t output_length = 0;
@@ -1526,11 +1413,12 @@
psa_status_t expected_status = expected_status_arg;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- output_size = key_size;
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+
+ output_size = (size_t) key_data->len;
output = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output != NULL );
@@ -1541,11 +1429,12 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
actual_status = psa_asymmetric_encrypt(slot, alg,
- input_data,
- input_size,
+ input_data->x,
+ (size_t) input_data->len,
NULL, 0,
output,
output_size,
@@ -1554,40 +1443,33 @@
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( output);
+ mbedtls_free( output );
mbedtls_psa_crypto_free( );
}
/* END_CASE */
/* BEGIN_CASE */
-void asymmetric_decrypt( int key_type_arg, char *key_hex,
- int alg_arg, char *input_hex,
- char *expected_hex, int expected_size )
+void asymmetric_decrypt( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *input_data,
+ data_t *expected_data, int expected_size )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
- unsigned char *expected_data = NULL;
- size_t expected_data_size;
unsigned char *output = NULL;
size_t output_size = 0;
size_t output_length = 0;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- output_size = key_size;
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
- expected_data = unhexify_alloc( expected_hex, &expected_data_size );
TEST_ASSERT( expected_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( expected_data->len ) );
+
+ output_size = (size_t) key_data->len;
output = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output != NULL );
@@ -1598,24 +1480,22 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
TEST_ASSERT( psa_asymmetric_decrypt( slot, alg,
- input_data,
- input_size,
+ input_data->x,
+ (size_t) input_data->len,
NULL, 0,
output,
output_size,
&output_length) == PSA_SUCCESS );
TEST_ASSERT( ((size_t)expected_size) == output_length );
- TEST_ASSERT( memcmp( expected_data, output, (output_length) ) == 0 );
+ TEST_ASSERT( memcmp( expected_data->x, output, (output_length) ) == 0 );
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
- mbedtls_free( expected_data );
- mbedtls_free( output);
+ mbedtls_free( output );
mbedtls_psa_crypto_free( );
@@ -1624,18 +1504,14 @@
/* BEGIN_CASE */
-void asymmetric_decrypt_fail( int key_type_arg, char *key_hex,
- int alg_arg, char *input_hex,
+void asymmetric_decrypt_fail( int key_type_arg, data_t *key_data,
+ int alg_arg, data_t *input_data,
int expected_status_arg )
{
int slot = 1;
psa_key_type_t key_type = key_type_arg;
psa_algorithm_t alg = alg_arg;
- unsigned char *key_data = NULL;
- size_t key_size;
- unsigned char *input_data = NULL;
- size_t input_size;
unsigned char *output = NULL;
size_t output_size = 0;
size_t output_length = 0;
@@ -1643,11 +1519,12 @@
psa_status_t expected_status = expected_status_arg;
psa_key_policy_t policy = {0};
- key_data = unhexify_alloc( key_hex, &key_size );
TEST_ASSERT( key_data != NULL );
- output_size = key_size;
- input_data = unhexify_alloc( input_hex, &input_size );
TEST_ASSERT( input_data != NULL );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( key_data->len ) );
+ TEST_ASSERT( PSA_CRYPTO_TEST_SIZE_T_RANGE( input_data->len ) );
+
+ output_size = (size_t) key_data->len;
output = mbedtls_calloc( 1, output_size );
TEST_ASSERT( output != NULL );
@@ -1658,11 +1535,12 @@
TEST_ASSERT( psa_set_key_policy( slot, &policy ) == PSA_SUCCESS );
TEST_ASSERT( psa_import_key( slot, key_type,
- key_data, key_size ) == PSA_SUCCESS );
+ key_data->x, (size_t) key_data->len ) ==
+ PSA_SUCCESS );
actual_status = psa_asymmetric_decrypt(slot, alg,
- input_data,
- input_size,
+ input_data->x,
+ (size_t) input_data->len,
NULL, 0,
output,
output_size,
@@ -1671,8 +1549,6 @@
exit:
psa_destroy_key( slot );
- mbedtls_free( key_data );
- mbedtls_free( input_data );
mbedtls_free( output);
mbedtls_psa_crypto_free( );
}