mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-12-27 04:15:36 +00:00
Merge pull request #4459 from ronald-cron-arm/psa-hash-dispatch-testing-2.x
Backport 2.x: Psa hash dispatch testing
This commit is contained in:
commit
0ac7dbcfdc
|
@ -101,7 +101,7 @@ psa_status_t psa_driver_wrapper_sign_hash(
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_signature_sign_hash( attributes,
|
status = mbedtls_test_transparent_signature_sign_hash( attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
|
@ -130,7 +130,7 @@ psa_status_t psa_driver_wrapper_sign_hash(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_signature_sign_hash( attributes,
|
return( mbedtls_test_opaque_signature_sign_hash( attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
|
@ -185,7 +185,8 @@ psa_status_t psa_driver_wrapper_verify_hash(
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_signature_verify_hash( attributes,
|
status = mbedtls_test_transparent_signature_verify_hash(
|
||||||
|
attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
|
@ -212,7 +213,7 @@ psa_status_t psa_driver_wrapper_verify_hash(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_signature_verify_hash( attributes,
|
return( mbedtls_test_opaque_signature_verify_hash( attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
|
@ -267,37 +268,9 @@ psa_status_t psa_driver_wrapper_get_key_buffer_size(
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
|
#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
|
||||||
#ifdef TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION
|
*key_buffer_size = mbedtls_test_size_function( key_type, key_bits );
|
||||||
*key_buffer_size = test_size_function( key_type, key_bits );
|
return( ( *key_buffer_size != 0 ) ?
|
||||||
return( PSA_SUCCESS );
|
PSA_SUCCESS : PSA_ERROR_NOT_SUPPORTED );
|
||||||
#else /* TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION */
|
|
||||||
if( PSA_KEY_TYPE_IS_KEY_PAIR( key_type ) )
|
|
||||||
{
|
|
||||||
int public_key_overhead =
|
|
||||||
( ( TEST_DRIVER_KEY_CONTEXT_STORE_PUBLIC_KEY == 1 ) ?
|
|
||||||
PSA_EXPORT_KEY_OUTPUT_SIZE( key_type, key_bits ) : 0 );
|
|
||||||
*key_buffer_size = TEST_DRIVER_KEY_CONTEXT_BASE_SIZE
|
|
||||||
+ TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE
|
|
||||||
+ public_key_overhead;
|
|
||||||
}
|
|
||||||
else if( PSA_KEY_TYPE_IS_PUBLIC_KEY( key_type ) )
|
|
||||||
{
|
|
||||||
*key_buffer_size = TEST_DRIVER_KEY_CONTEXT_BASE_SIZE
|
|
||||||
+ TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE;
|
|
||||||
}
|
|
||||||
else if ( !PSA_KEY_TYPE_IS_KEY_PAIR( key_type ) &&
|
|
||||||
!PSA_KEY_TYPE_IS_PUBLIC_KEY ( key_type ) )
|
|
||||||
{
|
|
||||||
*key_buffer_size = TEST_DRIVER_KEY_CONTEXT_BASE_SIZE
|
|
||||||
+ TEST_DRIVER_KEY_CONTEXT_SYMMETRIC_FACTOR
|
|
||||||
* ( ( key_bits + 7 ) / 8 );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
|
||||||
}
|
|
||||||
return( PSA_SUCCESS );
|
|
||||||
#endif /* TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION */
|
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -345,7 +318,7 @@ psa_status_t psa_driver_wrapper_generate_key(
|
||||||
{
|
{
|
||||||
/* Cycle through all known transparent accelerators */
|
/* Cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_generate_key(
|
status = mbedtls_test_transparent_generate_key(
|
||||||
attributes, key_buffer, key_buffer_size,
|
attributes, key_buffer, key_buffer_size,
|
||||||
key_buffer_length );
|
key_buffer_length );
|
||||||
/* Declared with fallback == true */
|
/* Declared with fallback == true */
|
||||||
|
@ -364,7 +337,7 @@ psa_status_t psa_driver_wrapper_generate_key(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
status = test_opaque_generate_key(
|
status = mbedtls_test_opaque_generate_key(
|
||||||
attributes, key_buffer, key_buffer_size, key_buffer_length );
|
attributes, key_buffer, key_buffer_size, key_buffer_length );
|
||||||
break;
|
break;
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
@ -428,7 +401,8 @@ psa_status_t psa_driver_wrapper_import_key(
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_import_key( attributes,
|
status = mbedtls_test_transparent_import_key(
|
||||||
|
attributes,
|
||||||
data, data_length,
|
data, data_length,
|
||||||
key_buffer, key_buffer_size,
|
key_buffer, key_buffer_size,
|
||||||
key_buffer_length, bits );
|
key_buffer_length, bits );
|
||||||
|
@ -496,7 +470,7 @@ psa_status_t psa_driver_wrapper_export_key(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_export_key( attributes,
|
return( mbedtls_test_opaque_export_key( attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
data,
|
data,
|
||||||
|
@ -547,7 +521,8 @@ psa_status_t psa_driver_wrapper_export_public_key(
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_export_public_key( attributes,
|
status = mbedtls_test_transparent_export_public_key(
|
||||||
|
attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
data,
|
data,
|
||||||
|
@ -570,7 +545,7 @@ psa_status_t psa_driver_wrapper_export_public_key(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_export_public_key( attributes,
|
return( mbedtls_test_opaque_export_public_key( attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
data,
|
data,
|
||||||
|
@ -594,7 +569,7 @@ psa_status_t psa_driver_wrapper_get_builtin_key(
|
||||||
{
|
{
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_get_builtin_key(
|
return( mbedtls_test_opaque_get_builtin_key(
|
||||||
slot_number,
|
slot_number,
|
||||||
attributes,
|
attributes,
|
||||||
key_buffer, key_buffer_size, key_buffer_length ) );
|
key_buffer, key_buffer_size, key_buffer_length ) );
|
||||||
|
@ -633,7 +608,7 @@ psa_status_t psa_driver_wrapper_cipher_encrypt(
|
||||||
/* Key is stored in the slot in export representation, so
|
/* Key is stored in the slot in export representation, so
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_cipher_encrypt( &attributes,
|
status = mbedtls_test_transparent_cipher_encrypt( &attributes,
|
||||||
slot->key.data,
|
slot->key.data,
|
||||||
slot->key.bytes,
|
slot->key.bytes,
|
||||||
alg,
|
alg,
|
||||||
|
@ -651,7 +626,7 @@ psa_status_t psa_driver_wrapper_cipher_encrypt(
|
||||||
/* Add cases for opaque driver here */
|
/* Add cases for opaque driver here */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_cipher_encrypt( &attributes,
|
return( mbedtls_test_opaque_cipher_encrypt( &attributes,
|
||||||
slot->key.data,
|
slot->key.data,
|
||||||
slot->key.bytes,
|
slot->key.bytes,
|
||||||
alg,
|
alg,
|
||||||
|
@ -700,7 +675,7 @@ psa_status_t psa_driver_wrapper_cipher_decrypt(
|
||||||
/* Key is stored in the slot in export representation, so
|
/* Key is stored in the slot in export representation, so
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_cipher_decrypt( &attributes,
|
status = mbedtls_test_transparent_cipher_decrypt( &attributes,
|
||||||
slot->key.data,
|
slot->key.data,
|
||||||
slot->key.bytes,
|
slot->key.bytes,
|
||||||
alg,
|
alg,
|
||||||
|
@ -718,7 +693,7 @@ psa_status_t psa_driver_wrapper_cipher_decrypt(
|
||||||
/* Add cases for opaque driver here */
|
/* Add cases for opaque driver here */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
return( test_opaque_cipher_decrypt( &attributes,
|
return( mbedtls_test_opaque_cipher_decrypt( &attributes,
|
||||||
slot->key.data,
|
slot->key.data,
|
||||||
slot->key.bytes,
|
slot->key.bytes,
|
||||||
alg,
|
alg,
|
||||||
|
@ -762,7 +737,7 @@ psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_cipher_encrypt_setup(
|
status = mbedtls_test_transparent_cipher_encrypt_setup(
|
||||||
&operation->ctx.transparent_test_driver_ctx,
|
&operation->ctx.transparent_test_driver_ctx,
|
||||||
attributes,
|
attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
|
@ -795,7 +770,7 @@ psa_status_t psa_driver_wrapper_cipher_encrypt_setup(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
status = test_opaque_cipher_encrypt_setup(
|
status = mbedtls_test_opaque_cipher_encrypt_setup(
|
||||||
&operation->ctx.opaque_test_driver_ctx,
|
&operation->ctx.opaque_test_driver_ctx,
|
||||||
attributes,
|
attributes,
|
||||||
key_buffer, key_buffer_size,
|
key_buffer, key_buffer_size,
|
||||||
|
@ -834,7 +809,7 @@ psa_status_t psa_driver_wrapper_cipher_decrypt_setup(
|
||||||
* cycle through all known transparent accelerators */
|
* cycle through all known transparent accelerators */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_cipher_decrypt_setup(
|
status = mbedtls_test_transparent_cipher_decrypt_setup(
|
||||||
&operation->ctx.transparent_test_driver_ctx,
|
&operation->ctx.transparent_test_driver_ctx,
|
||||||
attributes,
|
attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
|
@ -866,7 +841,7 @@ psa_status_t psa_driver_wrapper_cipher_decrypt_setup(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
status = test_opaque_cipher_decrypt_setup(
|
status = mbedtls_test_opaque_cipher_decrypt_setup(
|
||||||
&operation->ctx.opaque_test_driver_ctx,
|
&operation->ctx.opaque_test_driver_ctx,
|
||||||
attributes,
|
attributes,
|
||||||
key_buffer, key_buffer_size,
|
key_buffer, key_buffer_size,
|
||||||
|
@ -905,12 +880,12 @@ psa_status_t psa_driver_wrapper_cipher_set_iv(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
return( test_transparent_cipher_set_iv(
|
return( mbedtls_test_transparent_cipher_set_iv(
|
||||||
&operation->ctx.transparent_test_driver_ctx,
|
&operation->ctx.transparent_test_driver_ctx,
|
||||||
iv, iv_length ) );
|
iv, iv_length ) );
|
||||||
|
|
||||||
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
||||||
return( test_opaque_cipher_set_iv(
|
return( mbedtls_test_opaque_cipher_set_iv(
|
||||||
&operation->ctx.opaque_test_driver_ctx,
|
&operation->ctx.opaque_test_driver_ctx,
|
||||||
iv, iv_length ) );
|
iv, iv_length ) );
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
@ -946,13 +921,13 @@ psa_status_t psa_driver_wrapper_cipher_update(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
return( test_transparent_cipher_update(
|
return( mbedtls_test_transparent_cipher_update(
|
||||||
&operation->ctx.transparent_test_driver_ctx,
|
&operation->ctx.transparent_test_driver_ctx,
|
||||||
input, input_length,
|
input, input_length,
|
||||||
output, output_size, output_length ) );
|
output, output_size, output_length ) );
|
||||||
|
|
||||||
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
||||||
return( test_opaque_cipher_update(
|
return( mbedtls_test_opaque_cipher_update(
|
||||||
&operation->ctx.opaque_test_driver_ctx,
|
&operation->ctx.opaque_test_driver_ctx,
|
||||||
input, input_length,
|
input, input_length,
|
||||||
output, output_size, output_length ) );
|
output, output_size, output_length ) );
|
||||||
|
@ -988,12 +963,12 @@ psa_status_t psa_driver_wrapper_cipher_finish(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
return( test_transparent_cipher_finish(
|
return( mbedtls_test_transparent_cipher_finish(
|
||||||
&operation->ctx.transparent_test_driver_ctx,
|
&operation->ctx.transparent_test_driver_ctx,
|
||||||
output, output_size, output_length ) );
|
output, output_size, output_length ) );
|
||||||
|
|
||||||
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
||||||
return( test_opaque_cipher_finish(
|
return( mbedtls_test_opaque_cipher_finish(
|
||||||
&operation->ctx.opaque_test_driver_ctx,
|
&operation->ctx.opaque_test_driver_ctx,
|
||||||
output, output_size, output_length ) );
|
output, output_size, output_length ) );
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
@ -1022,7 +997,7 @@ psa_status_t psa_driver_wrapper_cipher_abort(
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
status = test_transparent_cipher_abort(
|
status = mbedtls_test_transparent_cipher_abort(
|
||||||
&operation->ctx.transparent_test_driver_ctx );
|
&operation->ctx.transparent_test_driver_ctx );
|
||||||
mbedtls_platform_zeroize(
|
mbedtls_platform_zeroize(
|
||||||
&operation->ctx.transparent_test_driver_ctx,
|
&operation->ctx.transparent_test_driver_ctx,
|
||||||
|
@ -1030,7 +1005,7 @@ psa_status_t psa_driver_wrapper_cipher_abort(
|
||||||
return( status );
|
return( status );
|
||||||
|
|
||||||
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
|
||||||
status = test_opaque_cipher_abort(
|
status = mbedtls_test_opaque_cipher_abort(
|
||||||
&operation->ctx.opaque_test_driver_ctx );
|
&operation->ctx.opaque_test_driver_ctx );
|
||||||
mbedtls_platform_zeroize(
|
mbedtls_platform_zeroize(
|
||||||
&operation->ctx.opaque_test_driver_ctx,
|
&operation->ctx.opaque_test_driver_ctx,
|
||||||
|
@ -1059,7 +1034,7 @@ psa_status_t psa_driver_wrapper_hash_compute(
|
||||||
|
|
||||||
/* Try accelerators first */
|
/* Try accelerators first */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = mbedtls_transparent_test_driver_hash_compute(
|
status = mbedtls_test_transparent_hash_compute(
|
||||||
alg, input, input_length, hash, hash_size, hash_length );
|
alg, input, input_length, hash, hash_size, hash_length );
|
||||||
if( status != PSA_ERROR_NOT_SUPPORTED )
|
if( status != PSA_ERROR_NOT_SUPPORTED )
|
||||||
return( status );
|
return( status );
|
||||||
|
@ -1091,7 +1066,7 @@ psa_status_t psa_driver_wrapper_hash_setup(
|
||||||
|
|
||||||
/* Try setup on accelerators first */
|
/* Try setup on accelerators first */
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = mbedtls_transparent_test_driver_hash_setup(
|
status = mbedtls_test_transparent_hash_setup(
|
||||||
&operation->ctx.test_driver_ctx, alg );
|
&operation->ctx.test_driver_ctx, alg );
|
||||||
if( status == PSA_SUCCESS )
|
if( status == PSA_SUCCESS )
|
||||||
operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
|
operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
|
||||||
|
@ -1131,7 +1106,7 @@ psa_status_t psa_driver_wrapper_hash_clone(
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
target_operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
|
target_operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
|
||||||
return( mbedtls_transparent_test_driver_hash_clone(
|
return( mbedtls_test_transparent_hash_clone(
|
||||||
&source_operation->ctx.test_driver_ctx,
|
&source_operation->ctx.test_driver_ctx,
|
||||||
&target_operation->ctx.test_driver_ctx ) );
|
&target_operation->ctx.test_driver_ctx ) );
|
||||||
#endif
|
#endif
|
||||||
|
@ -1155,7 +1130,7 @@ psa_status_t psa_driver_wrapper_hash_update(
|
||||||
#endif
|
#endif
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
return( mbedtls_transparent_test_driver_hash_update(
|
return( mbedtls_test_transparent_hash_update(
|
||||||
&operation->ctx.test_driver_ctx,
|
&operation->ctx.test_driver_ctx,
|
||||||
input, input_length ) );
|
input, input_length ) );
|
||||||
#endif
|
#endif
|
||||||
|
@ -1181,7 +1156,7 @@ psa_status_t psa_driver_wrapper_hash_finish(
|
||||||
#endif
|
#endif
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
return( mbedtls_transparent_test_driver_hash_finish(
|
return( mbedtls_test_transparent_hash_finish(
|
||||||
&operation->ctx.test_driver_ctx,
|
&operation->ctx.test_driver_ctx,
|
||||||
hash, hash_size, hash_length ) );
|
hash, hash_size, hash_length ) );
|
||||||
#endif
|
#endif
|
||||||
|
@ -1204,7 +1179,7 @@ psa_status_t psa_driver_wrapper_hash_abort(
|
||||||
#endif
|
#endif
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
|
||||||
return( mbedtls_transparent_test_driver_hash_abort(
|
return( mbedtls_test_transparent_hash_abort(
|
||||||
&operation->ctx.test_driver_ctx ) );
|
&operation->ctx.test_driver_ctx ) );
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
@ -1233,7 +1208,7 @@ psa_status_t psa_driver_wrapper_aead_encrypt(
|
||||||
|
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_aead_encrypt(
|
status = mbedtls_test_transparent_aead_encrypt(
|
||||||
attributes, key_buffer, key_buffer_size,
|
attributes, key_buffer, key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
nonce, nonce_length,
|
nonce, nonce_length,
|
||||||
|
@ -1285,7 +1260,7 @@ psa_status_t psa_driver_wrapper_aead_decrypt(
|
||||||
|
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
status = test_transparent_aead_decrypt(
|
status = mbedtls_test_transparent_aead_decrypt(
|
||||||
attributes, key_buffer, key_buffer_size,
|
attributes, key_buffer, key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
nonce, nonce_length,
|
nonce, nonce_length,
|
||||||
|
|
|
@ -37,18 +37,19 @@ typedef struct {
|
||||||
unsigned long hits;
|
unsigned long hits;
|
||||||
/* Status returned by the last AEAD driver function call. */
|
/* Status returned by the last AEAD driver function call. */
|
||||||
psa_status_t driver_status;
|
psa_status_t driver_status;
|
||||||
} test_driver_aead_hooks_t;
|
} mbedtls_test_driver_aead_hooks_t;
|
||||||
|
|
||||||
#define TEST_DRIVER_AEAD_INIT { 0, 0, 0 }
|
#define MBEDTLS_TEST_DRIVER_AEAD_INIT { 0, 0, 0 }
|
||||||
static inline test_driver_aead_hooks_t test_driver_aead_hooks_init( void )
|
static inline mbedtls_test_driver_aead_hooks_t
|
||||||
|
mbedtls_test_driver_aead_hooks_init( void )
|
||||||
{
|
{
|
||||||
const test_driver_aead_hooks_t v = TEST_DRIVER_AEAD_INIT;
|
const mbedtls_test_driver_aead_hooks_t v = MBEDTLS_TEST_DRIVER_AEAD_INIT;
|
||||||
return( v );
|
return( v );
|
||||||
}
|
}
|
||||||
|
|
||||||
extern test_driver_aead_hooks_t test_driver_aead_hooks;
|
extern mbedtls_test_driver_aead_hooks_t mbedtls_test_driver_aead_hooks;
|
||||||
|
|
||||||
psa_status_t test_transparent_aead_encrypt(
|
psa_status_t mbedtls_test_transparent_aead_encrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -57,7 +58,7 @@ psa_status_t test_transparent_aead_encrypt(
|
||||||
const uint8_t *plaintext, size_t plaintext_length,
|
const uint8_t *plaintext, size_t plaintext_length,
|
||||||
uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length );
|
uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length );
|
||||||
|
|
||||||
psa_status_t test_transparent_aead_decrypt(
|
psa_status_t mbedtls_test_transparent_aead_decrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
|
|
@ -41,101 +41,102 @@ typedef struct {
|
||||||
psa_status_t forced_status;
|
psa_status_t forced_status;
|
||||||
/* Count the amount of times one of the cipher driver functions is called. */
|
/* Count the amount of times one of the cipher driver functions is called. */
|
||||||
unsigned long hits;
|
unsigned long hits;
|
||||||
} test_driver_cipher_hooks_t;
|
} mbedtls_test_driver_cipher_hooks_t;
|
||||||
|
|
||||||
#define TEST_DRIVER_CIPHER_INIT { NULL, 0, PSA_SUCCESS, 0 }
|
#define MBEDTLS_TEST_DRIVER_CIPHER_INIT { NULL, 0, PSA_SUCCESS, 0 }
|
||||||
static inline test_driver_cipher_hooks_t test_driver_cipher_hooks_init( void )
|
static inline mbedtls_test_driver_cipher_hooks_t
|
||||||
|
mbedtls_test_driver_cipher_hooks_init( void )
|
||||||
{
|
{
|
||||||
const test_driver_cipher_hooks_t v = TEST_DRIVER_CIPHER_INIT;
|
const mbedtls_test_driver_cipher_hooks_t v = MBEDTLS_TEST_DRIVER_CIPHER_INIT;
|
||||||
return( v );
|
return( v );
|
||||||
}
|
}
|
||||||
|
|
||||||
extern test_driver_cipher_hooks_t test_driver_cipher_hooks;
|
extern mbedtls_test_driver_cipher_hooks_t mbedtls_test_driver_cipher_hooks;
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_encrypt(
|
psa_status_t mbedtls_test_transparent_cipher_encrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_decrypt(
|
psa_status_t mbedtls_test_transparent_cipher_decrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_encrypt_setup(
|
psa_status_t mbedtls_test_transparent_cipher_encrypt_setup(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg);
|
psa_algorithm_t alg);
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_decrypt_setup(
|
psa_status_t mbedtls_test_transparent_cipher_decrypt_setup(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg);
|
psa_algorithm_t alg);
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_abort(
|
psa_status_t mbedtls_test_transparent_cipher_abort(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation );
|
mbedtls_transparent_test_driver_cipher_operation_t *operation );
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_set_iv(
|
psa_status_t mbedtls_test_transparent_cipher_set_iv(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *iv, size_t iv_length);
|
const uint8_t *iv, size_t iv_length);
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_update(
|
psa_status_t mbedtls_test_transparent_cipher_update(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_finish(
|
psa_status_t mbedtls_test_transparent_cipher_finish(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* opaque versions
|
* opaque versions
|
||||||
*/
|
*/
|
||||||
psa_status_t test_opaque_cipher_encrypt(
|
psa_status_t mbedtls_test_opaque_cipher_encrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_decrypt(
|
psa_status_t mbedtls_test_opaque_cipher_decrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_encrypt_setup(
|
psa_status_t mbedtls_test_opaque_cipher_encrypt_setup(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg);
|
psa_algorithm_t alg);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_decrypt_setup(
|
psa_status_t mbedtls_test_opaque_cipher_decrypt_setup(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg);
|
psa_algorithm_t alg);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_abort(
|
psa_status_t mbedtls_test_opaque_cipher_abort(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation);
|
mbedtls_opaque_test_driver_cipher_operation_t *operation);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_set_iv(
|
psa_status_t mbedtls_test_opaque_cipher_set_iv(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *iv, size_t iv_length);
|
const uint8_t *iv, size_t iv_length);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_update(
|
psa_status_t mbedtls_test_opaque_cipher_update(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_finish(
|
psa_status_t mbedtls_test_opaque_cipher_finish(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length);
|
uint8_t *output, size_t output_size, size_t *output_length);
|
||||||
|
|
||||||
|
|
80
tests/include/test/drivers/hash.h
Normal file
80
tests/include/test/drivers/hash.h
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* Test driver for hash driver entry points.
|
||||||
|
*/
|
||||||
|
/* Copyright The Mbed TLS Contributors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PSA_CRYPTO_TEST_DRIVERS_HASH_H
|
||||||
|
#define PSA_CRYPTO_TEST_DRIVERS_HASH_H
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_CONFIG_FILE)
|
||||||
|
#include "mbedtls/config.h"
|
||||||
|
#else
|
||||||
|
#include MBEDTLS_CONFIG_FILE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
|
#include <psa/crypto_driver_common.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/* If not PSA_SUCCESS, return this error code instead of processing the
|
||||||
|
* function call. */
|
||||||
|
psa_status_t forced_status;
|
||||||
|
/* Count the amount of times hash driver entry points are called. */
|
||||||
|
unsigned long hits;
|
||||||
|
/* Status returned by the last hash driver entry point call. */
|
||||||
|
psa_status_t driver_status;
|
||||||
|
} mbedtls_test_driver_hash_hooks_t;
|
||||||
|
|
||||||
|
#define MBEDTLS_TEST_DRIVER_HASH_INIT { 0, 0, 0 }
|
||||||
|
static inline mbedtls_test_driver_hash_hooks_t
|
||||||
|
mbedtls_test_driver_hash_hooks_init( void )
|
||||||
|
{
|
||||||
|
const mbedtls_test_driver_hash_hooks_t v = MBEDTLS_TEST_DRIVER_HASH_INIT;
|
||||||
|
return( v );
|
||||||
|
}
|
||||||
|
|
||||||
|
extern mbedtls_test_driver_hash_hooks_t mbedtls_test_driver_hash_hooks;
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_compute(
|
||||||
|
psa_algorithm_t alg,
|
||||||
|
const uint8_t *input, size_t input_length,
|
||||||
|
uint8_t *hash, size_t hash_size, size_t *hash_length );
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_setup(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation,
|
||||||
|
psa_algorithm_t alg );
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_clone(
|
||||||
|
const mbedtls_transparent_test_driver_hash_operation_t *source_operation,
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *target_operation );
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_update(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation,
|
||||||
|
const uint8_t *input,
|
||||||
|
size_t input_length );
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_finish(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation,
|
||||||
|
uint8_t *hash,
|
||||||
|
size_t hash_size,
|
||||||
|
size_t *hash_length );
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_abort(
|
||||||
|
mbedtls_psa_hash_operation_t *operation );
|
||||||
|
|
||||||
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
#endif /* PSA_CRYPTO_TEST_DRIVERS_HASH_H */
|
|
@ -42,41 +42,44 @@ typedef struct {
|
||||||
/* Count the amount of times one of the key management driver functions
|
/* Count the amount of times one of the key management driver functions
|
||||||
* is called. */
|
* is called. */
|
||||||
unsigned long hits;
|
unsigned long hits;
|
||||||
} test_driver_key_management_hooks_t;
|
} mbedtls_test_driver_key_management_hooks_t;
|
||||||
|
|
||||||
#define TEST_DRIVER_KEY_MANAGEMENT_INIT { NULL, 0, PSA_SUCCESS, 0 }
|
#define MBEDTLS_TEST_DRIVER_KEY_MANAGEMENT_INIT { NULL, 0, PSA_SUCCESS, 0 }
|
||||||
static inline test_driver_key_management_hooks_t test_driver_key_management_hooks_init( void )
|
static inline mbedtls_test_driver_key_management_hooks_t
|
||||||
|
mbedtls_test_driver_key_management_hooks_init( void )
|
||||||
{
|
{
|
||||||
const test_driver_key_management_hooks_t v = TEST_DRIVER_KEY_MANAGEMENT_INIT;
|
const mbedtls_test_driver_key_management_hooks_t
|
||||||
|
v = MBEDTLS_TEST_DRIVER_KEY_MANAGEMENT_INIT;
|
||||||
return( v );
|
return( v );
|
||||||
}
|
}
|
||||||
|
|
||||||
extern test_driver_key_management_hooks_t test_driver_key_management_hooks;
|
extern mbedtls_test_driver_key_management_hooks_t
|
||||||
|
mbedtls_test_driver_key_management_hooks;
|
||||||
|
|
||||||
psa_status_t test_transparent_generate_key(
|
psa_status_t mbedtls_test_transparent_generate_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
uint8_t *key, size_t key_size, size_t *key_length );
|
uint8_t *key, size_t key_size, size_t *key_length );
|
||||||
|
|
||||||
psa_status_t test_opaque_generate_key(
|
psa_status_t mbedtls_test_opaque_generate_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
uint8_t *key, size_t key_size, size_t *key_length );
|
uint8_t *key, size_t key_size, size_t *key_length );
|
||||||
|
|
||||||
psa_status_t test_opaque_export_key(
|
psa_status_t mbedtls_test_opaque_export_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
uint8_t *data, size_t data_size, size_t *data_length );
|
uint8_t *data, size_t data_size, size_t *data_length );
|
||||||
|
|
||||||
psa_status_t test_transparent_export_public_key(
|
psa_status_t mbedtls_test_transparent_export_public_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
uint8_t *data, size_t data_size, size_t *data_length );
|
uint8_t *data, size_t data_size, size_t *data_length );
|
||||||
|
|
||||||
psa_status_t test_opaque_export_public_key(
|
psa_status_t mbedtls_test_opaque_export_public_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
uint8_t *data, size_t data_size, size_t *data_length );
|
uint8_t *data, size_t data_size, size_t *data_length );
|
||||||
|
|
||||||
psa_status_t test_transparent_import_key(
|
psa_status_t mbedtls_test_transparent_import_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *data,
|
const uint8_t *data,
|
||||||
size_t data_length,
|
size_t data_length,
|
||||||
|
@ -85,7 +88,7 @@ psa_status_t test_transparent_import_key(
|
||||||
size_t *key_buffer_length,
|
size_t *key_buffer_length,
|
||||||
size_t *bits);
|
size_t *bits);
|
||||||
|
|
||||||
psa_status_t test_opaque_get_builtin_key(
|
psa_status_t mbedtls_test_opaque_get_builtin_key(
|
||||||
psa_drv_slot_number_t slot_number,
|
psa_drv_slot_number_t slot_number,
|
||||||
psa_key_attributes_t *attributes,
|
psa_key_attributes_t *attributes,
|
||||||
uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length );
|
uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length );
|
||||||
|
|
|
@ -38,40 +38,44 @@ typedef struct {
|
||||||
psa_status_t forced_status;
|
psa_status_t forced_status;
|
||||||
/* Count the amount of times one of the signature driver functions is called. */
|
/* Count the amount of times one of the signature driver functions is called. */
|
||||||
unsigned long hits;
|
unsigned long hits;
|
||||||
} test_driver_signature_hooks_t;
|
} mbedtls_test_driver_signature_hooks_t;
|
||||||
|
|
||||||
#define TEST_DRIVER_SIGNATURE_INIT { NULL, 0, PSA_SUCCESS, 0 }
|
#define MBEDTLS_TEST_DRIVER_SIGNATURE_INIT { NULL, 0, PSA_SUCCESS, 0 }
|
||||||
static inline test_driver_signature_hooks_t test_driver_signature_hooks_init( void )
|
static inline mbedtls_test_driver_signature_hooks_t
|
||||||
|
mbedtls_test_driver_signature_hooks_init( void )
|
||||||
{
|
{
|
||||||
const test_driver_signature_hooks_t v = TEST_DRIVER_SIGNATURE_INIT;
|
const mbedtls_test_driver_signature_hooks_t
|
||||||
|
v = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
|
||||||
return( v );
|
return( v );
|
||||||
}
|
}
|
||||||
|
|
||||||
extern test_driver_signature_hooks_t test_driver_signature_sign_hooks;
|
extern mbedtls_test_driver_signature_hooks_t
|
||||||
extern test_driver_signature_hooks_t test_driver_signature_verify_hooks;
|
mbedtls_test_driver_signature_sign_hooks;
|
||||||
|
extern mbedtls_test_driver_signature_hooks_t
|
||||||
|
mbedtls_test_driver_signature_verify_hooks;
|
||||||
|
|
||||||
psa_status_t test_transparent_signature_sign_hash(
|
psa_status_t mbedtls_test_transparent_signature_sign_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash, size_t hash_length,
|
const uint8_t *hash, size_t hash_length,
|
||||||
uint8_t *signature, size_t signature_size, size_t *signature_length );
|
uint8_t *signature, size_t signature_size, size_t *signature_length );
|
||||||
|
|
||||||
psa_status_t test_opaque_signature_sign_hash(
|
psa_status_t mbedtls_test_opaque_signature_sign_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash, size_t hash_length,
|
const uint8_t *hash, size_t hash_length,
|
||||||
uint8_t *signature, size_t signature_size, size_t *signature_length );
|
uint8_t *signature, size_t signature_size, size_t *signature_length );
|
||||||
|
|
||||||
psa_status_t test_transparent_signature_verify_hash(
|
psa_status_t mbedtls_test_transparent_signature_verify_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash, size_t hash_length,
|
const uint8_t *hash, size_t hash_length,
|
||||||
const uint8_t *signature, size_t signature_length );
|
const uint8_t *signature, size_t signature_length );
|
||||||
|
|
||||||
psa_status_t test_opaque_signature_verify_hash(
|
psa_status_t mbedtls_test_opaque_signature_verify_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
|
|
@ -29,67 +29,9 @@
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
#include <psa/crypto_driver_common.h>
|
#include <psa/crypto_driver_common.h>
|
||||||
|
|
||||||
typedef struct {
|
size_t mbedtls_test_size_function(
|
||||||
unsigned int context;
|
|
||||||
} test_driver_key_context_t;
|
|
||||||
|
|
||||||
/** \def TEST_DRIVER_KEY_CONTEXT_BASE_SIZE
|
|
||||||
*
|
|
||||||
* This macro returns the base size for the key context. It is the size of the
|
|
||||||
* driver specific information stored in each key context.
|
|
||||||
*/
|
|
||||||
#define TEST_DRIVER_KEY_CONTEXT_BASE_SIZE sizeof( test_driver_key_context_t )
|
|
||||||
|
|
||||||
/** \def TEST_DRIVER_KEY_CONTEXT_KEY_PAIR_SIZE
|
|
||||||
*
|
|
||||||
* Number of bytes included in every key context for a key pair.
|
|
||||||
*
|
|
||||||
* This pair size is for an ECC 256-bit private/public key pair.
|
|
||||||
* Based on this value, the size of the private key can be derived by
|
|
||||||
* subtracting the public key size below from this one.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define TEST_DRIVER_KEY_CONTEXT_KEY_PAIR_SIZE 65
|
|
||||||
|
|
||||||
/** \def TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE
|
|
||||||
*
|
|
||||||
* Number of bytes included in every key context for a public key.
|
|
||||||
*
|
|
||||||
* For ECC public keys, it needs 257 bits so 33 bytes.
|
|
||||||
*/
|
|
||||||
#define TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE 33
|
|
||||||
|
|
||||||
/** \def TEST_DRIVER_KEY_CONTEXT_SYMMETRIC_FACTOR
|
|
||||||
*
|
|
||||||
* Every key context for a symmetric key includes this many times the key size.
|
|
||||||
*/
|
|
||||||
#define TEST_DRIVER_KEY_CONTEXT_SYMMETRIC_FACTOR 0
|
|
||||||
|
|
||||||
/** \def TEST_DRIVER_KEY_CONTEXT_STORE_PUBLIC_KEY
|
|
||||||
*
|
|
||||||
* If this is true for a key pair, the key context includes space for the public key.
|
|
||||||
* If this is false, no additional space is added for the public key.
|
|
||||||
*
|
|
||||||
* For this instance, store the public key with the private one.
|
|
||||||
*/
|
|
||||||
#define TEST_DRIVER_KEY_CONTEXT_STORE_PUBLIC_KEY 1
|
|
||||||
|
|
||||||
/** \def TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION
|
|
||||||
*
|
|
||||||
* If TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION is defined, the test driver
|
|
||||||
* provides a size_function entry point, otherwise, it does not.
|
|
||||||
*
|
|
||||||
* Some opaque drivers have the need to support a custom size for the storage
|
|
||||||
* of key and context information. The size_function provides the ability to
|
|
||||||
* provide that customization.
|
|
||||||
*/
|
|
||||||
//#define TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION
|
|
||||||
|
|
||||||
#ifdef TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION
|
|
||||||
size_t test_size_function(
|
|
||||||
const psa_key_type_t key_type,
|
const psa_key_type_t key_type,
|
||||||
const size_t key_bits );
|
const size_t key_bits );
|
||||||
#endif /* TEST_DRIVER_KEY_CONTEXT_SIZE_FUNCTION */
|
|
||||||
|
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
#endif /* PSA_CRYPTO_TEST_DRIVERS_SIZE_H */
|
#endif /* PSA_CRYPTO_TEST_DRIVERS_SIZE_H */
|
||||||
|
|
|
@ -23,9 +23,10 @@
|
||||||
#define PSA_CRYPTO_TEST_DRIVER_LOCATION 0x7fffff
|
#define PSA_CRYPTO_TEST_DRIVER_LOCATION 0x7fffff
|
||||||
|
|
||||||
#include "test/drivers/aead.h"
|
#include "test/drivers/aead.h"
|
||||||
#include "test/drivers/signature.h"
|
|
||||||
#include "test/drivers/key_management.h"
|
|
||||||
#include "test/drivers/cipher.h"
|
#include "test/drivers/cipher.h"
|
||||||
|
#include "test/drivers/hash.h"
|
||||||
|
#include "test/drivers/key_management.h"
|
||||||
|
#include "test/drivers/signature.h"
|
||||||
#include "test/drivers/size.h"
|
#include "test/drivers/size.h"
|
||||||
|
|
||||||
#endif /* PSA_CRYPTO_TEST_DRIVER_H */
|
#endif /* PSA_CRYPTO_TEST_DRIVER_H */
|
||||||
|
|
|
@ -22,7 +22,7 @@ if [ -d include/mbedtls ]; then :; else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
HEADERS=$( ls include/mbedtls/*.h include/psa/*.h | egrep -v 'compat-1\.3\.h' )
|
HEADERS=$( ls include/mbedtls/*.h include/psa/*.h tests/include/test/drivers/*.h | egrep -v 'compat-1\.3\.h' )
|
||||||
HEADERS="$HEADERS library/*.h"
|
HEADERS="$HEADERS library/*.h"
|
||||||
HEADERS="$HEADERS 3rdparty/everest/include/everest/everest.h 3rdparty/everest/include/everest/x25519.h"
|
HEADERS="$HEADERS 3rdparty/everest/include/everest/everest.h 3rdparty/everest/include/everest/x25519.h"
|
||||||
|
|
||||||
|
|
161
tests/src/drivers/hash.c
Normal file
161
tests/src/drivers/hash.c
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
/*
|
||||||
|
* Test driver for hash entry points.
|
||||||
|
*/
|
||||||
|
/* Copyright The Mbed TLS Contributors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_CONFIG_FILE)
|
||||||
|
#include "mbedtls/config.h"
|
||||||
|
#else
|
||||||
|
#include MBEDTLS_CONFIG_FILE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
|
#include "psa_crypto_hash.h"
|
||||||
|
|
||||||
|
#include "test/drivers/hash.h"
|
||||||
|
|
||||||
|
mbedtls_test_driver_hash_hooks_t
|
||||||
|
mbedtls_test_driver_hash_hooks = MBEDTLS_TEST_DRIVER_HASH_INIT;
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_compute(
|
||||||
|
psa_algorithm_t alg,
|
||||||
|
const uint8_t *input, size_t input_length,
|
||||||
|
uint8_t *hash, size_t hash_size, size_t *hash_length )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.hits++;
|
||||||
|
|
||||||
|
if( mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_test_driver_hash_hooks.forced_status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_transparent_test_driver_hash_compute(
|
||||||
|
alg, input, input_length,
|
||||||
|
hash, hash_size, hash_length );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( mbedtls_test_driver_hash_hooks.driver_status );
|
||||||
|
}
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_setup(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation,
|
||||||
|
psa_algorithm_t alg )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.hits++;
|
||||||
|
|
||||||
|
if( mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_test_driver_hash_hooks.forced_status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_transparent_test_driver_hash_setup( operation, alg );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( mbedtls_test_driver_hash_hooks.driver_status );
|
||||||
|
}
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_clone(
|
||||||
|
const mbedtls_transparent_test_driver_hash_operation_t *source_operation,
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *target_operation )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.hits++;
|
||||||
|
|
||||||
|
if( mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_test_driver_hash_hooks.forced_status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_transparent_test_driver_hash_clone( source_operation,
|
||||||
|
target_operation );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( mbedtls_test_driver_hash_hooks.driver_status );
|
||||||
|
}
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_update(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation,
|
||||||
|
const uint8_t *input,
|
||||||
|
size_t input_length )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.hits++;
|
||||||
|
|
||||||
|
if( mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_test_driver_hash_hooks.forced_status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_transparent_test_driver_hash_update(
|
||||||
|
operation, input, input_length );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( mbedtls_test_driver_hash_hooks.driver_status );
|
||||||
|
}
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_finish(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation,
|
||||||
|
uint8_t *hash,
|
||||||
|
size_t hash_size,
|
||||||
|
size_t *hash_length )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.hits++;
|
||||||
|
|
||||||
|
if( mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_test_driver_hash_hooks.forced_status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_transparent_test_driver_hash_finish(
|
||||||
|
operation, hash, hash_size, hash_length );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( mbedtls_test_driver_hash_hooks.driver_status );
|
||||||
|
}
|
||||||
|
|
||||||
|
psa_status_t mbedtls_test_transparent_hash_abort(
|
||||||
|
mbedtls_transparent_test_driver_hash_operation_t *operation )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.hits++;
|
||||||
|
|
||||||
|
if( mbedtls_test_driver_hash_hooks.forced_status != PSA_SUCCESS )
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_test_driver_hash_hooks.forced_status;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbedtls_test_driver_hash_hooks.driver_status =
|
||||||
|
mbedtls_transparent_test_driver_hash_abort( operation );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( mbedtls_test_driver_hash_hooks.driver_status );
|
||||||
|
}
|
||||||
|
#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */
|
|
@ -28,9 +28,10 @@
|
||||||
|
|
||||||
#include "test/drivers/aead.h"
|
#include "test/drivers/aead.h"
|
||||||
|
|
||||||
test_driver_aead_hooks_t test_driver_aead_hooks = TEST_DRIVER_AEAD_INIT;
|
mbedtls_test_driver_aead_hooks_t
|
||||||
|
mbedtls_test_driver_aead_hooks = MBEDTLS_TEST_DRIVER_AEAD_INIT;
|
||||||
|
|
||||||
psa_status_t test_transparent_aead_encrypt(
|
psa_status_t mbedtls_test_transparent_aead_encrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -39,16 +40,16 @@ psa_status_t test_transparent_aead_encrypt(
|
||||||
const uint8_t *plaintext, size_t plaintext_length,
|
const uint8_t *plaintext, size_t plaintext_length,
|
||||||
uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length )
|
uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length )
|
||||||
{
|
{
|
||||||
test_driver_aead_hooks.hits++;
|
mbedtls_test_driver_aead_hooks.hits++;
|
||||||
|
|
||||||
if( test_driver_aead_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_aead_hooks.forced_status != PSA_SUCCESS )
|
||||||
{
|
{
|
||||||
test_driver_aead_hooks.driver_status =
|
mbedtls_test_driver_aead_hooks.driver_status =
|
||||||
test_driver_aead_hooks.forced_status;
|
mbedtls_test_driver_aead_hooks.forced_status;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
test_driver_aead_hooks.driver_status =
|
mbedtls_test_driver_aead_hooks.driver_status =
|
||||||
mbedtls_psa_aead_encrypt(
|
mbedtls_psa_aead_encrypt(
|
||||||
attributes, key_buffer, key_buffer_size,
|
attributes, key_buffer, key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
|
@ -58,10 +59,10 @@ psa_status_t test_transparent_aead_encrypt(
|
||||||
ciphertext, ciphertext_size, ciphertext_length );
|
ciphertext, ciphertext_size, ciphertext_length );
|
||||||
}
|
}
|
||||||
|
|
||||||
return( test_driver_aead_hooks.driver_status );
|
return( mbedtls_test_driver_aead_hooks.driver_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_aead_decrypt(
|
psa_status_t mbedtls_test_transparent_aead_decrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -70,16 +71,16 @@ psa_status_t test_transparent_aead_decrypt(
|
||||||
const uint8_t *ciphertext, size_t ciphertext_length,
|
const uint8_t *ciphertext, size_t ciphertext_length,
|
||||||
uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length )
|
uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length )
|
||||||
{
|
{
|
||||||
test_driver_aead_hooks.hits++;
|
mbedtls_test_driver_aead_hooks.hits++;
|
||||||
|
|
||||||
if( test_driver_aead_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_aead_hooks.forced_status != PSA_SUCCESS )
|
||||||
{
|
{
|
||||||
test_driver_aead_hooks.driver_status =
|
mbedtls_test_driver_aead_hooks.driver_status =
|
||||||
test_driver_aead_hooks.forced_status;
|
mbedtls_test_driver_aead_hooks.forced_status;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
test_driver_aead_hooks.driver_status =
|
mbedtls_test_driver_aead_hooks.driver_status =
|
||||||
mbedtls_psa_aead_decrypt(
|
mbedtls_psa_aead_decrypt(
|
||||||
attributes, key_buffer, key_buffer_size,
|
attributes, key_buffer, key_buffer_size,
|
||||||
alg,
|
alg,
|
||||||
|
@ -89,7 +90,7 @@ psa_status_t test_transparent_aead_decrypt(
|
||||||
plaintext, plaintext_size, plaintext_length );
|
plaintext, plaintext_size, plaintext_length );
|
||||||
}
|
}
|
||||||
|
|
||||||
return( test_driver_aead_hooks.driver_status );
|
return( mbedtls_test_driver_aead_hooks.driver_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */
|
#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
|
|
@ -36,14 +36,10 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/* Test driver implements AES-CTR only. Its default behaviour (when its return
|
mbedtls_test_driver_cipher_hooks_t mbedtls_test_driver_cipher_hooks =
|
||||||
* status is not overridden through the hooks) is to take care of all AES-CTR
|
MBEDTLS_TEST_DRIVER_CIPHER_INIT;
|
||||||
* operations, and return PSA_ERROR_NOT_SUPPORTED for all others.
|
|
||||||
* Set test_driver_cipher_hooks.forced_status to PSA_ERROR_NOT_SUPPORTED to use
|
|
||||||
* fallback even for AES-CTR. */
|
|
||||||
test_driver_cipher_hooks_t test_driver_cipher_hooks = TEST_DRIVER_CIPHER_INIT;
|
|
||||||
|
|
||||||
static psa_status_t test_transparent_cipher_oneshot(
|
static psa_status_t mbedtls_test_transparent_cipher_oneshot(
|
||||||
mbedtls_operation_t direction,
|
mbedtls_operation_t direction,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
|
@ -51,7 +47,7 @@ static psa_status_t test_transparent_cipher_oneshot(
|
||||||
const uint8_t *input, size_t input_length,
|
const uint8_t *input, size_t input_length,
|
||||||
uint8_t *output, size_t output_size, size_t *output_length)
|
uint8_t *output, size_t output_size, size_t *output_length)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
/* Test driver supports AES-CTR only, to verify operation calls. */
|
/* Test driver supports AES-CTR only, to verify operation calls. */
|
||||||
if( alg != PSA_ALG_CTR ||
|
if( alg != PSA_ALG_CTR ||
|
||||||
|
@ -59,21 +55,21 @@ static psa_status_t test_transparent_cipher_oneshot(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
|
|
||||||
/* If test driver response code is not SUCCESS, we can return early */
|
/* If test driver response code is not SUCCESS, we can return early */
|
||||||
if( test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
|
|
||||||
/* If test driver output is overridden, we don't need to do actual crypto */
|
/* If test driver output is overridden, we don't need to do actual crypto */
|
||||||
if( test_driver_cipher_hooks.forced_output != NULL )
|
if( mbedtls_test_driver_cipher_hooks.forced_output != NULL )
|
||||||
{
|
{
|
||||||
if( output_size < test_driver_cipher_hooks.forced_output_length )
|
if( output_size < mbedtls_test_driver_cipher_hooks.forced_output_length )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
|
|
||||||
memcpy( output,
|
memcpy( output,
|
||||||
test_driver_cipher_hooks.forced_output,
|
mbedtls_test_driver_cipher_hooks.forced_output,
|
||||||
test_driver_cipher_hooks.forced_output_length );
|
mbedtls_test_driver_cipher_hooks.forced_output_length );
|
||||||
*output_length = test_driver_cipher_hooks.forced_output_length;
|
*output_length = mbedtls_test_driver_cipher_hooks.forced_output_length;
|
||||||
|
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Run AES-CTR using the cipher module */
|
/* Run AES-CTR using the cipher module */
|
||||||
|
@ -171,7 +167,7 @@ exit:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_encrypt(
|
psa_status_t mbedtls_test_transparent_cipher_encrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -179,7 +175,7 @@ psa_status_t test_transparent_cipher_encrypt(
|
||||||
uint8_t *output, size_t output_size, size_t *output_length)
|
uint8_t *output, size_t output_size, size_t *output_length)
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
test_transparent_cipher_oneshot(
|
mbedtls_test_transparent_cipher_oneshot(
|
||||||
MBEDTLS_ENCRYPT,
|
MBEDTLS_ENCRYPT,
|
||||||
attributes,
|
attributes,
|
||||||
key, key_length,
|
key, key_length,
|
||||||
|
@ -188,7 +184,7 @@ psa_status_t test_transparent_cipher_encrypt(
|
||||||
output, output_size, output_length) );
|
output, output_size, output_length) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_decrypt(
|
psa_status_t mbedtls_test_transparent_cipher_decrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -196,7 +192,7 @@ psa_status_t test_transparent_cipher_decrypt(
|
||||||
uint8_t *output, size_t output_size, size_t *output_length)
|
uint8_t *output, size_t output_size, size_t *output_length)
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
test_transparent_cipher_oneshot(
|
mbedtls_test_transparent_cipher_oneshot(
|
||||||
MBEDTLS_DECRYPT,
|
MBEDTLS_DECRYPT,
|
||||||
attributes,
|
attributes,
|
||||||
key, key_length,
|
key, key_length,
|
||||||
|
@ -205,13 +201,13 @@ psa_status_t test_transparent_cipher_decrypt(
|
||||||
output, output_size, output_length) );
|
output, output_size, output_length) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_encrypt_setup(
|
psa_status_t mbedtls_test_transparent_cipher_encrypt_setup(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg)
|
psa_algorithm_t alg)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
/* Wiping the entire struct here, instead of member-by-member. This is
|
/* Wiping the entire struct here, instead of member-by-member. This is
|
||||||
* useful for the test suite, since it gives a chance of catching memory
|
* useful for the test suite, since it gives a chance of catching memory
|
||||||
|
@ -219,32 +215,32 @@ psa_status_t test_transparent_cipher_encrypt_setup(
|
||||||
* our context struct. */
|
* our context struct. */
|
||||||
memset( operation, 0, sizeof( *operation ) );
|
memset( operation, 0, sizeof( *operation ) );
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
|
|
||||||
return ( mbedtls_transparent_test_driver_cipher_encrypt_setup(
|
return ( mbedtls_transparent_test_driver_cipher_encrypt_setup(
|
||||||
operation, attributes, key, key_length, alg ) );
|
operation, attributes, key, key_length, alg ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_decrypt_setup(
|
psa_status_t mbedtls_test_transparent_cipher_decrypt_setup(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg)
|
psa_algorithm_t alg)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
|
|
||||||
return ( mbedtls_transparent_test_driver_cipher_decrypt_setup(
|
return ( mbedtls_transparent_test_driver_cipher_decrypt_setup(
|
||||||
operation, attributes, key, key_length, alg ) );
|
operation, attributes, key, key_length, alg ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_abort(
|
psa_status_t mbedtls_test_transparent_cipher_abort(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation)
|
mbedtls_transparent_test_driver_cipher_operation_t *operation)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
if( operation->alg == 0 )
|
if( operation->alg == 0 )
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
|
@ -257,24 +253,24 @@ psa_status_t test_transparent_cipher_abort(
|
||||||
* our context struct. */
|
* our context struct. */
|
||||||
memset( operation, 0, sizeof( *operation ) );
|
memset( operation, 0, sizeof( *operation ) );
|
||||||
|
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_set_iv(
|
psa_status_t mbedtls_test_transparent_cipher_set_iv(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *iv,
|
const uint8_t *iv,
|
||||||
size_t iv_length)
|
size_t iv_length)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
|
|
||||||
return( mbedtls_transparent_test_driver_cipher_set_iv(
|
return( mbedtls_transparent_test_driver_cipher_set_iv(
|
||||||
operation, iv, iv_length ) );
|
operation, iv, iv_length ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_update(
|
psa_status_t mbedtls_test_transparent_cipher_update(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *input,
|
const uint8_t *input,
|
||||||
size_t input_length,
|
size_t input_length,
|
||||||
|
@ -282,52 +278,52 @@ psa_status_t test_transparent_cipher_update(
|
||||||
size_t output_size,
|
size_t output_size,
|
||||||
size_t *output_length)
|
size_t *output_length)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_output != NULL )
|
if( mbedtls_test_driver_cipher_hooks.forced_output != NULL )
|
||||||
{
|
{
|
||||||
if( output_size < test_driver_cipher_hooks.forced_output_length )
|
if( output_size < mbedtls_test_driver_cipher_hooks.forced_output_length )
|
||||||
return PSA_ERROR_BUFFER_TOO_SMALL;
|
return PSA_ERROR_BUFFER_TOO_SMALL;
|
||||||
|
|
||||||
memcpy( output,
|
memcpy( output,
|
||||||
test_driver_cipher_hooks.forced_output,
|
mbedtls_test_driver_cipher_hooks.forced_output,
|
||||||
test_driver_cipher_hooks.forced_output_length );
|
mbedtls_test_driver_cipher_hooks.forced_output_length );
|
||||||
*output_length = test_driver_cipher_hooks.forced_output_length;
|
*output_length = mbedtls_test_driver_cipher_hooks.forced_output_length;
|
||||||
|
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
|
|
||||||
return( mbedtls_transparent_test_driver_cipher_update(
|
return( mbedtls_transparent_test_driver_cipher_update(
|
||||||
operation, input, input_length,
|
operation, input, input_length,
|
||||||
output, output_size, output_length ) );
|
output, output_size, output_length ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_cipher_finish(
|
psa_status_t mbedtls_test_transparent_cipher_finish(
|
||||||
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
mbedtls_transparent_test_driver_cipher_operation_t *operation,
|
||||||
uint8_t *output,
|
uint8_t *output,
|
||||||
size_t output_size,
|
size_t output_size,
|
||||||
size_t *output_length)
|
size_t *output_length)
|
||||||
{
|
{
|
||||||
test_driver_cipher_hooks.hits++;
|
mbedtls_test_driver_cipher_hooks.hits++;
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_output != NULL )
|
if( mbedtls_test_driver_cipher_hooks.forced_output != NULL )
|
||||||
{
|
{
|
||||||
if( output_size < test_driver_cipher_hooks.forced_output_length )
|
if( output_size < mbedtls_test_driver_cipher_hooks.forced_output_length )
|
||||||
return PSA_ERROR_BUFFER_TOO_SMALL;
|
return PSA_ERROR_BUFFER_TOO_SMALL;
|
||||||
|
|
||||||
memcpy( output,
|
memcpy( output,
|
||||||
test_driver_cipher_hooks.forced_output,
|
mbedtls_test_driver_cipher_hooks.forced_output,
|
||||||
test_driver_cipher_hooks.forced_output_length );
|
mbedtls_test_driver_cipher_hooks.forced_output_length );
|
||||||
*output_length = test_driver_cipher_hooks.forced_output_length;
|
*output_length = mbedtls_test_driver_cipher_hooks.forced_output_length;
|
||||||
|
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_cipher_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_cipher_hooks.forced_status );
|
return( mbedtls_test_driver_cipher_hooks.forced_status );
|
||||||
|
|
||||||
return( mbedtls_transparent_test_driver_cipher_finish(
|
return( mbedtls_transparent_test_driver_cipher_finish(
|
||||||
operation, output, output_size, output_length ) );
|
operation, output, output_size, output_length ) );
|
||||||
|
@ -336,7 +332,7 @@ psa_status_t test_transparent_cipher_finish(
|
||||||
/*
|
/*
|
||||||
* opaque versions, to do
|
* opaque versions, to do
|
||||||
*/
|
*/
|
||||||
psa_status_t test_opaque_cipher_encrypt(
|
psa_status_t mbedtls_test_opaque_cipher_encrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -355,7 +351,7 @@ psa_status_t test_opaque_cipher_encrypt(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_decrypt(
|
psa_status_t mbedtls_test_opaque_cipher_decrypt(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -374,7 +370,7 @@ psa_status_t test_opaque_cipher_decrypt(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_encrypt_setup(
|
psa_status_t mbedtls_test_opaque_cipher_encrypt_setup(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
|
@ -388,7 +384,7 @@ psa_status_t test_opaque_cipher_encrypt_setup(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_decrypt_setup(
|
psa_status_t mbedtls_test_opaque_cipher_decrypt_setup(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
|
@ -402,14 +398,14 @@ psa_status_t test_opaque_cipher_decrypt_setup(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_abort(
|
psa_status_t mbedtls_test_opaque_cipher_abort(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation )
|
mbedtls_opaque_test_driver_cipher_operation_t *operation )
|
||||||
{
|
{
|
||||||
(void) operation;
|
(void) operation;
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_set_iv(
|
psa_status_t mbedtls_test_opaque_cipher_set_iv(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *iv,
|
const uint8_t *iv,
|
||||||
size_t iv_length)
|
size_t iv_length)
|
||||||
|
@ -420,7 +416,7 @@ psa_status_t test_opaque_cipher_set_iv(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_update(
|
psa_status_t mbedtls_test_opaque_cipher_update(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
const uint8_t *input,
|
const uint8_t *input,
|
||||||
size_t input_length,
|
size_t input_length,
|
||||||
|
@ -437,7 +433,7 @@ psa_status_t test_opaque_cipher_update(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_cipher_finish(
|
psa_status_t mbedtls_test_opaque_cipher_finish(
|
||||||
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
mbedtls_opaque_test_driver_cipher_operation_t *operation,
|
||||||
uint8_t *output,
|
uint8_t *output,
|
||||||
size_t output_size,
|
size_t output_size,
|
||||||
|
|
|
@ -38,18 +38,18 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
test_driver_key_management_hooks_t test_driver_key_management_hooks =
|
mbedtls_test_driver_key_management_hooks_t
|
||||||
TEST_DRIVER_KEY_MANAGEMENT_INIT;
|
mbedtls_test_driver_key_management_hooks = MBEDTLS_TEST_DRIVER_KEY_MANAGEMENT_INIT;
|
||||||
|
|
||||||
const uint8_t test_driver_aes_key[16] =
|
const uint8_t mbedtls_test_driver_aes_key[16] =
|
||||||
{ 0x36, 0x77, 0x39, 0x7A, 0x24, 0x43, 0x26, 0x46,
|
{ 0x36, 0x77, 0x39, 0x7A, 0x24, 0x43, 0x26, 0x46,
|
||||||
0x29, 0x4A, 0x40, 0x4E, 0x63, 0x52, 0x66, 0x55 };
|
0x29, 0x4A, 0x40, 0x4E, 0x63, 0x52, 0x66, 0x55 };
|
||||||
const uint8_t test_driver_ecdsa_key[32] =
|
const uint8_t mbedtls_test_driver_ecdsa_key[32] =
|
||||||
{ 0xdc, 0x7d, 0x9d, 0x26, 0xd6, 0x7a, 0x4f, 0x63,
|
{ 0xdc, 0x7d, 0x9d, 0x26, 0xd6, 0x7a, 0x4f, 0x63,
|
||||||
0x2c, 0x34, 0xc2, 0xdc, 0x0b, 0x69, 0x86, 0x18,
|
0x2c, 0x34, 0xc2, 0xdc, 0x0b, 0x69, 0x86, 0x18,
|
||||||
0x38, 0x82, 0xc2, 0x06, 0xdf, 0x04, 0xcd, 0xb7,
|
0x38, 0x82, 0xc2, 0x06, 0xdf, 0x04, 0xcd, 0xb7,
|
||||||
0xd6, 0x9a, 0xab, 0xe2, 0x8b, 0xe4, 0xf8, 0x1a };
|
0xd6, 0x9a, 0xab, 0xe2, 0x8b, 0xe4, 0xf8, 0x1a };
|
||||||
const uint8_t test_driver_ecdsa_pubkey[65] =
|
const uint8_t mbedtls_test_driver_ecdsa_pubkey[65] =
|
||||||
{ 0x04,
|
{ 0x04,
|
||||||
0x85, 0xf6, 0x4d, 0x89, 0xf0, 0x0b, 0xe6, 0x6c,
|
0x85, 0xf6, 0x4d, 0x89, 0xf0, 0x0b, 0xe6, 0x6c,
|
||||||
0x88, 0xdd, 0x93, 0x7e, 0xfd, 0x6d, 0x7c, 0x44,
|
0x88, 0xdd, 0x93, 0x7e, 0xfd, 0x6d, 0x7c, 0x44,
|
||||||
|
@ -60,22 +60,23 @@ const uint8_t test_driver_ecdsa_pubkey[65] =
|
||||||
0xbc, 0x25, 0x16, 0xc3, 0xd2, 0x70, 0x2d, 0x79,
|
0xbc, 0x25, 0x16, 0xc3, 0xd2, 0x70, 0x2d, 0x79,
|
||||||
0x2f, 0x13, 0x1a, 0x92, 0x20, 0x95, 0xfd, 0x6c };
|
0x2f, 0x13, 0x1a, 0x92, 0x20, 0x95, 0xfd, 0x6c };
|
||||||
|
|
||||||
psa_status_t test_transparent_generate_key(
|
psa_status_t mbedtls_test_transparent_generate_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
uint8_t *key, size_t key_size, size_t *key_length )
|
uint8_t *key, size_t key_size, size_t *key_length )
|
||||||
{
|
{
|
||||||
++test_driver_key_management_hooks.hits;
|
++mbedtls_test_driver_key_management_hooks.hits;
|
||||||
|
|
||||||
if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_key_management_hooks.forced_status );
|
return( mbedtls_test_driver_key_management_hooks.forced_status );
|
||||||
|
|
||||||
if( test_driver_key_management_hooks.forced_output != NULL )
|
if( mbedtls_test_driver_key_management_hooks.forced_output != NULL )
|
||||||
{
|
{
|
||||||
if( test_driver_key_management_hooks.forced_output_length > key_size )
|
if( mbedtls_test_driver_key_management_hooks.forced_output_length >
|
||||||
|
key_size )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
memcpy( key, test_driver_key_management_hooks.forced_output,
|
memcpy( key, mbedtls_test_driver_key_management_hooks.forced_output,
|
||||||
test_driver_key_management_hooks.forced_output_length );
|
mbedtls_test_driver_key_management_hooks.forced_output_length );
|
||||||
*key_length = test_driver_key_management_hooks.forced_output_length;
|
*key_length = mbedtls_test_driver_key_management_hooks.forced_output_length;
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ psa_status_t test_transparent_generate_key(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_generate_key(
|
psa_status_t mbedtls_test_opaque_generate_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
uint8_t *key, size_t key_size, size_t *key_length )
|
uint8_t *key, size_t key_size, size_t *key_length )
|
||||||
{
|
{
|
||||||
|
@ -113,7 +114,7 @@ psa_status_t test_opaque_generate_key(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_import_key(
|
psa_status_t mbedtls_test_transparent_import_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *data,
|
const uint8_t *data,
|
||||||
size_t data_length,
|
size_t data_length,
|
||||||
|
@ -122,10 +123,10 @@ psa_status_t test_transparent_import_key(
|
||||||
size_t *key_buffer_length,
|
size_t *key_buffer_length,
|
||||||
size_t *bits)
|
size_t *bits)
|
||||||
{
|
{
|
||||||
++test_driver_key_management_hooks.hits;
|
++mbedtls_test_driver_key_management_hooks.hits;
|
||||||
|
|
||||||
if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_key_management_hooks.forced_status );
|
return( mbedtls_test_driver_key_management_hooks.forced_status );
|
||||||
|
|
||||||
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
|
||||||
psa_key_type_t type = psa_get_key_type( attributes );
|
psa_key_type_t type = psa_get_key_type( attributes );
|
||||||
|
@ -168,7 +169,7 @@ psa_status_t test_transparent_import_key(
|
||||||
return( status );
|
return( status );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_export_key(
|
psa_status_t mbedtls_test_opaque_export_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
uint8_t *data, size_t data_size, size_t *data_length )
|
uint8_t *data, size_t data_size, size_t *data_length )
|
||||||
|
@ -199,12 +200,12 @@ psa_status_t test_opaque_export_key(
|
||||||
PSA_KEY_USAGE_EXPORT ) == 0 )
|
PSA_KEY_USAGE_EXPORT ) == 0 )
|
||||||
return( PSA_ERROR_CORRUPTION_DETECTED );
|
return( PSA_ERROR_CORRUPTION_DETECTED );
|
||||||
|
|
||||||
if( data_size < sizeof( test_driver_ecdsa_key ) )
|
if( data_size < sizeof( mbedtls_test_driver_ecdsa_key ) )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
|
|
||||||
memcpy( data, test_driver_ecdsa_key,
|
memcpy( data, mbedtls_test_driver_ecdsa_key,
|
||||||
sizeof( test_driver_ecdsa_key ) );
|
sizeof( mbedtls_test_driver_ecdsa_key ) );
|
||||||
*data_length = sizeof( test_driver_ecdsa_key );
|
*data_length = sizeof( mbedtls_test_driver_ecdsa_key );
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
|
|
||||||
case PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT:
|
case PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT:
|
||||||
|
@ -220,12 +221,12 @@ psa_status_t test_opaque_export_key(
|
||||||
PSA_KEY_USAGE_EXPORT ) == 0 )
|
PSA_KEY_USAGE_EXPORT ) == 0 )
|
||||||
return( PSA_ERROR_CORRUPTION_DETECTED );
|
return( PSA_ERROR_CORRUPTION_DETECTED );
|
||||||
|
|
||||||
if( data_size < sizeof( test_driver_aes_key ) )
|
if( data_size < sizeof( mbedtls_test_driver_aes_key ) )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
|
|
||||||
memcpy( data, test_driver_aes_key,
|
memcpy( data, mbedtls_test_driver_aes_key,
|
||||||
sizeof( test_driver_aes_key ) );
|
sizeof( mbedtls_test_driver_aes_key ) );
|
||||||
*data_length = sizeof( test_driver_aes_key );
|
*data_length = sizeof( mbedtls_test_driver_aes_key );
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -233,23 +234,24 @@ psa_status_t test_opaque_export_key(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_export_public_key(
|
psa_status_t mbedtls_test_transparent_export_public_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
uint8_t *data, size_t data_size, size_t *data_length )
|
uint8_t *data, size_t data_size, size_t *data_length )
|
||||||
{
|
{
|
||||||
++test_driver_key_management_hooks.hits;
|
++mbedtls_test_driver_key_management_hooks.hits;
|
||||||
|
|
||||||
if( test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_key_management_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_key_management_hooks.forced_status );
|
return( mbedtls_test_driver_key_management_hooks.forced_status );
|
||||||
|
|
||||||
if( test_driver_key_management_hooks.forced_output != NULL )
|
if( mbedtls_test_driver_key_management_hooks.forced_output != NULL )
|
||||||
{
|
{
|
||||||
if( test_driver_key_management_hooks.forced_output_length > data_size )
|
if( mbedtls_test_driver_key_management_hooks.forced_output_length >
|
||||||
|
data_size )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
memcpy( data, test_driver_key_management_hooks.forced_output,
|
memcpy( data, mbedtls_test_driver_key_management_hooks.forced_output,
|
||||||
test_driver_key_management_hooks.forced_output_length );
|
mbedtls_test_driver_key_management_hooks.forced_output_length );
|
||||||
*data_length = test_driver_key_management_hooks.forced_output_length;
|
*data_length = mbedtls_test_driver_key_management_hooks.forced_output_length;
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,7 +290,7 @@ psa_status_t test_transparent_export_public_key(
|
||||||
return( status );
|
return( status );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_export_public_key(
|
psa_status_t mbedtls_test_opaque_export_public_key(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
uint8_t *data, size_t data_size, size_t *data_length )
|
uint8_t *data, size_t data_size, size_t *data_length )
|
||||||
|
@ -315,12 +317,12 @@ psa_status_t test_opaque_export_public_key(
|
||||||
PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) )
|
PSA_ALG_ECDSA( PSA_ALG_ANY_HASH ) )
|
||||||
return( PSA_ERROR_CORRUPTION_DETECTED );
|
return( PSA_ERROR_CORRUPTION_DETECTED );
|
||||||
|
|
||||||
if( data_size < sizeof( test_driver_ecdsa_pubkey ) )
|
if( data_size < sizeof( mbedtls_test_driver_ecdsa_pubkey ) )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
|
|
||||||
memcpy( data, test_driver_ecdsa_pubkey,
|
memcpy( data, mbedtls_test_driver_ecdsa_pubkey,
|
||||||
sizeof( test_driver_ecdsa_pubkey ) );
|
sizeof( mbedtls_test_driver_ecdsa_pubkey ) );
|
||||||
*data_length = sizeof( test_driver_ecdsa_pubkey );
|
*data_length = sizeof( mbedtls_test_driver_ecdsa_pubkey );
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -338,7 +340,7 @@ psa_status_t test_opaque_export_public_key(
|
||||||
* (i.e. for an actual driver this would mean 'builtin_key_size' =
|
* (i.e. for an actual driver this would mean 'builtin_key_size' =
|
||||||
* sizeof(psa_drv_slot_number_t)).
|
* sizeof(psa_drv_slot_number_t)).
|
||||||
*/
|
*/
|
||||||
psa_status_t test_opaque_get_builtin_key(
|
psa_status_t mbedtls_test_opaque_get_builtin_key(
|
||||||
psa_drv_slot_number_t slot_number,
|
psa_drv_slot_number_t slot_number,
|
||||||
psa_key_attributes_t *attributes,
|
psa_key_attributes_t *attributes,
|
||||||
uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length )
|
uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length )
|
||||||
|
|
|
@ -41,28 +41,32 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
test_driver_signature_hooks_t test_driver_signature_sign_hooks = TEST_DRIVER_SIGNATURE_INIT;
|
mbedtls_test_driver_signature_hooks_t
|
||||||
test_driver_signature_hooks_t test_driver_signature_verify_hooks = TEST_DRIVER_SIGNATURE_INIT;
|
mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
|
||||||
|
mbedtls_test_driver_signature_hooks_t
|
||||||
|
mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
|
||||||
|
|
||||||
psa_status_t test_transparent_signature_sign_hash(
|
psa_status_t mbedtls_test_transparent_signature_sign_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash, size_t hash_length,
|
const uint8_t *hash, size_t hash_length,
|
||||||
uint8_t *signature, size_t signature_size, size_t *signature_length )
|
uint8_t *signature, size_t signature_size, size_t *signature_length )
|
||||||
{
|
{
|
||||||
++test_driver_signature_sign_hooks.hits;
|
++mbedtls_test_driver_signature_sign_hooks.hits;
|
||||||
|
|
||||||
if( test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_signature_sign_hooks.forced_status );
|
return( mbedtls_test_driver_signature_sign_hooks.forced_status );
|
||||||
|
|
||||||
if( test_driver_signature_sign_hooks.forced_output != NULL )
|
if( mbedtls_test_driver_signature_sign_hooks.forced_output != NULL )
|
||||||
{
|
{
|
||||||
if( test_driver_signature_sign_hooks.forced_output_length > signature_size )
|
if( mbedtls_test_driver_signature_sign_hooks.forced_output_length >
|
||||||
|
signature_size )
|
||||||
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
return( PSA_ERROR_BUFFER_TOO_SMALL );
|
||||||
memcpy( signature, test_driver_signature_sign_hooks.forced_output,
|
memcpy( signature,
|
||||||
test_driver_signature_sign_hooks.forced_output_length );
|
mbedtls_test_driver_signature_sign_hooks.forced_output,
|
||||||
*signature_length = test_driver_signature_sign_hooks.forced_output_length;
|
mbedtls_test_driver_signature_sign_hooks.forced_output_length );
|
||||||
|
*signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
|
||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +124,7 @@ psa_status_t test_transparent_signature_sign_hash(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_signature_sign_hash(
|
psa_status_t mbedtls_test_opaque_signature_sign_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
@ -140,17 +144,17 @@ psa_status_t test_opaque_signature_sign_hash(
|
||||||
return( PSA_ERROR_NOT_SUPPORTED );
|
return( PSA_ERROR_NOT_SUPPORTED );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_transparent_signature_verify_hash(
|
psa_status_t mbedtls_test_transparent_signature_verify_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key_buffer, size_t key_buffer_size,
|
const uint8_t *key_buffer, size_t key_buffer_size,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
const uint8_t *hash, size_t hash_length,
|
const uint8_t *hash, size_t hash_length,
|
||||||
const uint8_t *signature, size_t signature_length )
|
const uint8_t *signature, size_t signature_length )
|
||||||
{
|
{
|
||||||
++test_driver_signature_verify_hooks.hits;
|
++mbedtls_test_driver_signature_verify_hooks.hits;
|
||||||
|
|
||||||
if( test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS )
|
if( mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS )
|
||||||
return( test_driver_signature_verify_hooks.forced_status );
|
return( mbedtls_test_driver_signature_verify_hooks.forced_status );
|
||||||
|
|
||||||
#if defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN) || \
|
#if defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PKCS1V15_SIGN) || \
|
||||||
defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
|
defined(MBEDTLS_PSA_ACCEL_ALG_RSA_PSS)
|
||||||
|
@ -200,7 +204,7 @@ psa_status_t test_transparent_signature_verify_hash(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t test_opaque_signature_verify_hash(
|
psa_status_t mbedtls_test_opaque_signature_verify_hash(
|
||||||
const psa_key_attributes_t *attributes,
|
const psa_key_attributes_t *attributes,
|
||||||
const uint8_t *key, size_t key_length,
|
const uint8_t *key, size_t key_length,
|
||||||
psa_algorithm_t alg,
|
psa_algorithm_t alg,
|
||||||
|
|
|
@ -27,16 +27,75 @@
|
||||||
#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
|
#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
|
|
||||||
#include "test/drivers/size.h"
|
#include "test/drivers/size.h"
|
||||||
|
#include "psa/crypto.h"
|
||||||
|
|
||||||
#ifdef TEST_KEY_CONTEXT_SIZE_FUNCTION
|
typedef struct {
|
||||||
size_t test_size_function(
|
unsigned int context;
|
||||||
|
} test_driver_key_context_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This macro returns the base size for the key context. It is the size of the
|
||||||
|
* driver specific information stored in each key context.
|
||||||
|
*/
|
||||||
|
#define TEST_DRIVER_KEY_CONTEXT_BASE_SIZE sizeof( test_driver_key_context_t )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of bytes included in every key context for a key pair.
|
||||||
|
*
|
||||||
|
* This pair size is for an ECC 256-bit private/public key pair.
|
||||||
|
* Based on this value, the size of the private key can be derived by
|
||||||
|
* subtracting the public key size below from this one.
|
||||||
|
*/
|
||||||
|
#define TEST_DRIVER_KEY_CONTEXT_KEY_PAIR_SIZE 65
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of bytes included in every key context for a public key.
|
||||||
|
*
|
||||||
|
* For ECC public keys, it needs 257 bits so 33 bytes.
|
||||||
|
*/
|
||||||
|
#define TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE 33
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Every key context for a symmetric key includes this many times the key size.
|
||||||
|
*/
|
||||||
|
#define TEST_DRIVER_KEY_CONTEXT_SYMMETRIC_FACTOR 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If this is true for a key pair, the key context includes space for the public key.
|
||||||
|
* If this is false, no additional space is added for the public key.
|
||||||
|
*
|
||||||
|
* For this instance, store the public key with the private one.
|
||||||
|
*/
|
||||||
|
#define TEST_DRIVER_KEY_CONTEXT_STORE_PUBLIC_KEY 1
|
||||||
|
|
||||||
|
size_t mbedtls_test_size_function(
|
||||||
const psa_key_type_t key_type,
|
const psa_key_type_t key_type,
|
||||||
const size_t key_bits )
|
const size_t key_bits )
|
||||||
{
|
{
|
||||||
(void) key_type;
|
size_t key_buffer_size = 0;
|
||||||
(void) key_bits;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /*TEST_KEY_CONTEXT_SIZE_FUNCTION */
|
|
||||||
|
|
||||||
|
if( PSA_KEY_TYPE_IS_KEY_PAIR( key_type ) )
|
||||||
|
{
|
||||||
|
int public_key_overhead =
|
||||||
|
( ( TEST_DRIVER_KEY_CONTEXT_STORE_PUBLIC_KEY == 1 )
|
||||||
|
? PSA_EXPORT_KEY_OUTPUT_SIZE( key_type, key_bits ) : 0 );
|
||||||
|
key_buffer_size = TEST_DRIVER_KEY_CONTEXT_BASE_SIZE +
|
||||||
|
TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE +
|
||||||
|
public_key_overhead;
|
||||||
|
}
|
||||||
|
else if( PSA_KEY_TYPE_IS_PUBLIC_KEY( key_type ) )
|
||||||
|
{
|
||||||
|
key_buffer_size = TEST_DRIVER_KEY_CONTEXT_BASE_SIZE +
|
||||||
|
TEST_DRIVER_KEY_CONTEXT_PUBLIC_KEY_SIZE;
|
||||||
|
}
|
||||||
|
else if ( !PSA_KEY_TYPE_IS_KEY_PAIR( key_type ) &&
|
||||||
|
!PSA_KEY_TYPE_IS_PUBLIC_KEY ( key_type ) )
|
||||||
|
{
|
||||||
|
key_buffer_size = TEST_DRIVER_KEY_CONTEXT_BASE_SIZE +
|
||||||
|
( TEST_DRIVER_KEY_CONTEXT_SYMMETRIC_FACTOR *
|
||||||
|
( ( key_bits + 7 ) / 8 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( key_buffer_size );
|
||||||
|
}
|
||||||
#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */
|
#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
|
|
@ -267,3 +267,57 @@ builtin_pubkey_export:MBEDTLS_PSA_KEY_ID_BUILTIN_MIN + 1:PSA_KEY_TYPE_ECC_KEY_PA
|
||||||
|
|
||||||
PSA opaque driver builtin pubkey export: not a public key
|
PSA opaque driver builtin pubkey export: not a public key
|
||||||
builtin_pubkey_export:MBEDTLS_PSA_KEY_ID_BUILTIN_MIN:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):"0485f64d89f00be66c88dd937efd6d7c445648dcb701150b8a9509295850f41c1931e571fb8f8c78317a20b380e866584bbc2516c3d2702d792f131a922095fd6c":PSA_ERROR_INVALID_ARGUMENT
|
builtin_pubkey_export:MBEDTLS_PSA_KEY_ID_BUILTIN_MIN:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):256:PSA_ALG_ECDSA(PSA_ALG_ANY_HASH):"0485f64d89f00be66c88dd937efd6d7c445648dcb701150b8a9509295850f41c1931e571fb8f8c78317a20b380e866584bbc2516c3d2702d792f131a922095fd6c":PSA_ERROR_INVALID_ARGUMENT
|
||||||
|
|
||||||
|
Hash compute: SHA-256, computed by the driver
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_compute:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_SUCCESS:PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash compute: SHA-256, fallback
|
||||||
|
depends_on:MBEDTLS_PSA_BUILTIN_ALG_SHA_256
|
||||||
|
hash_compute:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED:PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash compute: SHA-256, no fallback
|
||||||
|
depends_on:!MBEDTLS_PSA_BUILTIN_ALG_SHA_256
|
||||||
|
hash_compute:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED:PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
||||||
|
Hash compute: SHA-256, INSUFFICIENT_MEMORY
|
||||||
|
hash_compute:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_INSUFFICIENT_MEMORY:PSA_ERROR_INSUFFICIENT_MEMORY
|
||||||
|
|
||||||
|
Hash multi-part setup: SHA-256, computed by the driver
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_multipart_setup:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_SUCCESS:PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash multi-part setup: SHA-256, fallback
|
||||||
|
depends_on:MBEDTLS_PSA_BUILTIN_ALG_SHA_256
|
||||||
|
hash_multipart_setup:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED:PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash multi-part setup: SHA-256, no fallback
|
||||||
|
depends_on:!MBEDTLS_PSA_BUILTIN_ALG_SHA_256
|
||||||
|
hash_multipart_setup:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED:PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
||||||
|
Hash multi-part setup: SHA-256, INSUFFICIENT_MEMORY
|
||||||
|
hash_multipart_setup:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_INSUFFICIENT_MEMORY:PSA_ERROR_INSUFFICIENT_MEMORY
|
||||||
|
|
||||||
|
Hash multi-part update: SHA-256, update successful
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_multipart_update:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash multi-part update: SHA-256, update failure
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_multipart_update:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
||||||
|
Hash multi-part finish: SHA-256, finish successful
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_multipart_update:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash multi-part finish: SHA-256, finish failure
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_multipart_update:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
||||||
|
Hash clone: SHA-256, clone successful
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_clone:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_SUCCESS
|
||||||
|
|
||||||
|
Hash clone: SHA-256, clone failure
|
||||||
|
depends_on:MBEDTLS_PSA_ACCEL_ALG_SHA_256
|
||||||
|
hash_clone:PSA_ALG_SHA_256:"b0bd69":"4096804221093ddccfbf46831490ea63e9e99414858f8d75ff7f642c7ca61803":PSA_ERROR_NOT_SUPPORTED
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -10503,7 +10503,7 @@ ssl_tls1_3_derive_secret:MBEDTLS_MD_SHA256:"9b2188e9b2fc6d64d71dc329900e20bb4191
|
||||||
|
|
||||||
SSL TLS 1.3 Key schedule: Derive-Secret( ., "c hs traffic", hash)
|
SSL TLS 1.3 Key schedule: Derive-Secret( ., "c hs traffic", hash)
|
||||||
# Vector from RFC 8448
|
# Vector from RFC 8448
|
||||||
ssl_tls1_3_derive_secret:MBEDTLS_MD_SHA256:"005cb112fd8eb4ccc623bb88a07c64b3ede1605363fc7d0df8c7ce4ff0fb4ae6":tls1_3_label_c_hs_traffic:"f736cb34fe25e701551bee6fd24c1cc7102a7daf9405cb15d97aafe16f757d03"::32:MBEDTLS_SSL_TLS1_3_CONTEXT_HASHED:"2faac08f851d35fea3604fcb4de82dc62c9b164a70974d0462e27f1ab278700f"
|
ssl_tls1_3_derive_secret:MBEDTLS_MD_SHA256:"005cb112fd8eb4ccc623bb88a07c64b3ede1605363fc7d0df8c7ce4ff0fb4ae6":tls1_3_label_c_hs_traffic:"f736cb34fe25e701551bee6fd24c1cc7102a7daf9405cb15d97aafe16f757d03":32:MBEDTLS_SSL_TLS1_3_CONTEXT_HASHED:"2faac08f851d35fea3604fcb4de82dc62c9b164a70974d0462e27f1ab278700f"
|
||||||
|
|
||||||
SSL TLS 1.3 Key schedule: Derive-Secret( ., "s hs traffic", hash)
|
SSL TLS 1.3 Key schedule: Derive-Secret( ., "s hs traffic", hash)
|
||||||
# Vector from RFC 8448
|
# Vector from RFC 8448
|
||||||
|
|
|
@ -245,6 +245,7 @@
|
||||||
<ClInclude Include="..\..\tests\include\test\random.h" />
|
<ClInclude Include="..\..\tests\include\test\random.h" />
|
||||||
<ClInclude Include="..\..\tests\include\test\drivers\aead.h" />
|
<ClInclude Include="..\..\tests\include\test\drivers\aead.h" />
|
||||||
<ClInclude Include="..\..\tests\include\test\drivers\cipher.h" />
|
<ClInclude Include="..\..\tests\include\test\drivers\cipher.h" />
|
||||||
|
<ClInclude Include="..\..\tests\include\test\drivers\hash.h" />
|
||||||
<ClInclude Include="..\..\tests\include\test\drivers\key_management.h" />
|
<ClInclude Include="..\..\tests\include\test\drivers\key_management.h" />
|
||||||
<ClInclude Include="..\..\tests\include\test\drivers\signature.h" />
|
<ClInclude Include="..\..\tests\include\test\drivers\signature.h" />
|
||||||
<ClInclude Include="..\..\tests\include\test\drivers\size.h" />
|
<ClInclude Include="..\..\tests\include\test\drivers\size.h" />
|
||||||
|
@ -379,6 +380,7 @@
|
||||||
<ClCompile Include="..\..\tests\src\psa_exercise_key.c" />
|
<ClCompile Include="..\..\tests\src\psa_exercise_key.c" />
|
||||||
<ClCompile Include="..\..\tests\src\random.c" />
|
<ClCompile Include="..\..\tests\src\random.c" />
|
||||||
<ClCompile Include="..\..\tests\src\threading_helpers.c" />
|
<ClCompile Include="..\..\tests\src\threading_helpers.c" />
|
||||||
|
<ClCompile Include="..\..\tests\src\drivers\hash.c" />
|
||||||
<ClCompile Include="..\..\tests\src\drivers\platform_builtin_keys.c" />
|
<ClCompile Include="..\..\tests\src\drivers\platform_builtin_keys.c" />
|
||||||
<ClCompile Include="..\..\tests\src\drivers\test_driver_aead.c" />
|
<ClCompile Include="..\..\tests\src\drivers\test_driver_aead.c" />
|
||||||
<ClCompile Include="..\..\tests\src\drivers\test_driver_cipher.c" />
|
<ClCompile Include="..\..\tests\src\drivers\test_driver_cipher.c" />
|
||||||
|
|
Loading…
Reference in a new issue