mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-02-21 15:41:00 +00:00
Add tests for the key agreement driver wrapper to test_suite_psa_crypto_driver_wrappers
Signed-off-by: Aditya Deshpande <aditya.deshpande@arm.com>
This commit is contained in:
parent
c4646c08cd
commit
39e08d4094
@ -45,6 +45,9 @@ static inline mbedtls_test_driver_key_agreement_hooks_t
|
||||
return( v );
|
||||
}
|
||||
|
||||
extern mbedtls_test_driver_key_agreement_hooks_t
|
||||
mbedtls_test_driver_key_agreement_hooks;
|
||||
|
||||
psa_status_t mbedtls_test_transparent_key_agreement(
|
||||
const psa_key_attributes_t *attributes,
|
||||
const uint8_t *key_buffer,
|
||||
|
@ -1960,18 +1960,10 @@ component_test_psa_crypto_config_accel_ecdh () {
|
||||
scripts/config.py -f include/psa/crypto_config.h unset PSA_WANT_ALG_STREAM_CIPHER
|
||||
scripts/config.py -f include/psa/crypto_config.h unset PSA_WANT_ALG_ECB_NO_PADDING
|
||||
|
||||
# SHA384 needed for some ECDSA signature tests.
|
||||
scripts/config.py -f tests/include/test/drivers/config_test_driver.h set MBEDTLS_SHA384_C
|
||||
scripts/config.py -f tests/include/test/drivers/config_test_driver.h set MBEDTLS_SHA512_C
|
||||
|
||||
loc_accel_list="ALG_ECDH KEY_TYPE_ECC_KEY_PAIR KEY_TYPE_ECC_PUBLIC_KEY"
|
||||
loc_accel_flags=$( echo "$loc_accel_list" | sed 's/[^ ]* */-DLIBTESTDRIVER1_MBEDTLS_PSA_ACCEL_&/g' )
|
||||
make -C tests libtestdriver1.a CFLAGS=" $ASAN_CFLAGS $loc_accel_flags" LDFLAGS="$ASAN_CFLAGS"
|
||||
|
||||
# Restore test driver base configuration
|
||||
scripts/config.py -f tests/include/test/drivers/config_test_driver.h unset MBEDTLS_SHA384_C
|
||||
scripts/config.py -f tests/include/test/drivers/config_test_driver.h unset MBEDTLS_SHA512_C
|
||||
|
||||
scripts/config.py set MBEDTLS_PSA_CRYPTO_DRIVERS
|
||||
scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
|
||||
scripts/config.py unset MBEDTLS_USE_PSA_CRYPTO
|
||||
|
@ -50,6 +50,8 @@ psa_status_t mbedtls_test_transparent_key_agreement(
|
||||
size_t shared_secret_size,
|
||||
size_t *shared_secret_length )
|
||||
{
|
||||
++mbedtls_test_driver_key_agreement_hooks.hits;
|
||||
|
||||
if( mbedtls_test_driver_key_agreement_hooks.forced_status != PSA_SUCCESS )
|
||||
return( mbedtls_test_driver_key_agreement_hooks.forced_status );
|
||||
|
||||
|
@ -299,6 +299,22 @@ export_key private to public through driver: error
|
||||
depends_on:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY:MBEDTLS_PK_PARSE_C:MBEDTLS_PK_WRITE_C:PSA_WANT_ECC_SECP_R1_256
|
||||
export_key:PSA_ERROR_GENERIC_ERROR:"":PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"49c9a8c18c4b885638c431cf1df1c994131609b580d4fd43a0cab17db2f13eee":PSA_KEY_TYPE_ECC_PUBLIC_KEY(PSA_ECC_FAMILY_SECP_R1):"":PSA_ERROR_GENERIC_ERROR
|
||||
|
||||
raw key agreement through driver: fake
|
||||
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
|
||||
key_agreement:PSA_ALG_ECDH:PSA_SUCCESS:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":"04d12dfb5289c8d4f81208b70270398c342296970a0bccb74c736fc7554494bf6356fbf3ca366cc23e8157854c13c58d6aac23f046ada30f8353e74f33039872ab":"d6840f6b42f6edafd13116e0e12565202fef8e9ece7dce03812464d04b9442de":"0102030405":PSA_SUCCESS
|
||||
|
||||
raw key agreement through driver: in-driver
|
||||
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
|
||||
key_agreement:PSA_ALG_ECDH:PSA_SUCCESS:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":"04d12dfb5289c8d4f81208b70270398c342296970a0bccb74c736fc7554494bf6356fbf3ca366cc23e8157854c13c58d6aac23f046ada30f8353e74f33039872ab":"d6840f6b42f6edafd13116e0e12565202fef8e9ece7dce03812464d04b9442de":"":PSA_SUCCESS
|
||||
|
||||
raw key agreement through driver: fallback
|
||||
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256:MBEDLTS_PSA_BUILTIN_ALG_ECDH
|
||||
key_agreement:PSA_ALG_ECDH:PSA_ERROR_NOT_SUPPORTED:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":"04d12dfb5289c8d4f81208b70270398c342296970a0bccb74c736fc7554494bf6356fbf3ca366cc23e8157854c13c58d6aac23f046ada30f8353e74f33039872ab":"d6840f6b42f6edafd13116e0e12565202fef8e9ece7dce03812464d04b9442de":"":PSA_SUCCESS
|
||||
|
||||
raw key agreement through driver: error
|
||||
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
|
||||
key_agreement:PSA_ALG_ECDH:PSA_ERROR_GENERIC_ERROR:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":"04d12dfb5289c8d4f81208b70270398c342296970a0bccb74c736fc7554494bf6356fbf3ca366cc23e8157854c13c58d6aac23f046ada30f8353e74f33039872ab":"d6840f6b42f6edafd13116e0e12565202fef8e9ece7dce03812464d04b9442de":"":PSA_ERROR_GENERIC_ERROR
|
||||
|
||||
PSA symmetric encrypt validation: AES-CTR, 16 bytes, good
|
||||
depends_on:PSA_WANT_ALG_CTR:PSA_WANT_KEY_TYPE_AES
|
||||
cipher_encrypt_validation:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"6bc1bee22e409f96e93d7e117393172a"
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* BEGIN_HEADER */
|
||||
#include "test/drivers/test_driver.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY)
|
||||
/* Sanity checks on the output of RSA encryption.
|
||||
@ -541,6 +542,95 @@ exit:
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void key_agreement( int alg_arg,
|
||||
int force_status_arg,
|
||||
int our_key_type_arg,
|
||||
data_t *our_key_data,
|
||||
data_t *peer_key_data,
|
||||
data_t *expected_output,
|
||||
data_t* fake_output,
|
||||
int expected_status_arg )
|
||||
{
|
||||
psa_status_t force_status = force_status_arg;
|
||||
psa_status_t expected_status = expected_status_arg;
|
||||
psa_algorithm_t alg = alg_arg;
|
||||
psa_key_type_t our_key_type = our_key_type_arg;
|
||||
mbedtls_svc_key_id_t our_key = MBEDTLS_SVC_KEY_ID_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
const uint8_t *expected_output_ptr = NULL;
|
||||
size_t expected_output_length = 0;
|
||||
unsigned char *actual_output = NULL;
|
||||
size_t actual_output_length = ~0;
|
||||
size_t key_bits;
|
||||
psa_status_t actual_status;
|
||||
mbedtls_test_driver_key_agreement_hooks =
|
||||
mbedtls_test_driver_key_agreement_hooks_init();
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DERIVE );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, our_key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes,
|
||||
our_key_data->x, our_key_data->len,
|
||||
&our_key ) );
|
||||
|
||||
PSA_ASSERT( psa_get_key_attributes( our_key, &attributes ) );
|
||||
key_bits = psa_get_key_bits( &attributes );
|
||||
|
||||
TEST_LE_U( expected_output->len,
|
||||
PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE( our_key_type, key_bits ) );
|
||||
TEST_LE_U( PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE( our_key_type, key_bits ),
|
||||
PSA_RAW_KEY_AGREEMENT_OUTPUT_MAX_SIZE );
|
||||
|
||||
if( fake_output->len > 0 )
|
||||
{
|
||||
expected_output_ptr =
|
||||
mbedtls_test_driver_key_agreement_hooks.forced_output =
|
||||
fake_output->x;
|
||||
|
||||
expected_output_length =
|
||||
mbedtls_test_driver_key_agreement_hooks.forced_output_length =
|
||||
fake_output->len;
|
||||
}
|
||||
else
|
||||
{
|
||||
expected_output_ptr = expected_output->x;
|
||||
expected_output_length = expected_output->len;
|
||||
}
|
||||
|
||||
mbedtls_test_driver_key_agreement_hooks.hits = 0;
|
||||
mbedtls_test_driver_key_agreement_hooks.forced_status = force_status;
|
||||
|
||||
ASSERT_ALLOC( actual_output, expected_output->len );
|
||||
actual_status = psa_raw_key_agreement( alg, our_key,
|
||||
peer_key_data->x, peer_key_data->len,
|
||||
actual_output, expected_output->len,
|
||||
&actual_output_length ) ;
|
||||
TEST_EQUAL( actual_status, expected_status );
|
||||
TEST_EQUAL( mbedtls_test_driver_key_agreement_hooks.hits, 1 );
|
||||
|
||||
if( actual_status == PSA_SUCCESS )
|
||||
{
|
||||
ASSERT_COMPARE( actual_output, actual_output_length,
|
||||
expected_output_ptr, expected_output_length);
|
||||
}
|
||||
mbedtls_free( actual_output );
|
||||
actual_output = NULL;
|
||||
actual_output_length = ~0;
|
||||
|
||||
exit:
|
||||
psa_reset_key_attributes( &attributes );
|
||||
psa_destroy_key( our_key );
|
||||
PSA_DONE( );
|
||||
mbedtls_test_driver_key_agreement_hooks =
|
||||
mbedtls_test_driver_key_agreement_hooks_init();
|
||||
|
||||
}
|
||||
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void cipher_encrypt_validation( int alg_arg,
|
||||
int key_type_arg,
|
||||
|
Loading…
x
Reference in New Issue
Block a user