mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-23 03:05:43 +01:00
Update remaining test cases to use key attributes
Finish updating the tests to use psa_key_attributes_t and psa_import_key instead of psa_key_policy_t and psa_import_key_to_handle.
This commit is contained in:
parent
a3dd737be4
commit
2c2cf0e36d
@ -286,8 +286,8 @@ import_rsa_made_up:PSA_VENDOR_RSA_MAX_KEY_BITS+8:0:PSA_ERROR_NOT_SUPPORTED
|
||||
PSA key policy set and get
|
||||
key_policy:PSA_KEY_USAGE_ENCRYPT:PSA_ALG_CBC_NO_PADDING
|
||||
|
||||
Key policy initializers zero properly
|
||||
key_policy_init:
|
||||
Key attributes initializers zero properly
|
||||
key_attributes_init:
|
||||
|
||||
PSA key policy: MAC, sign | verify
|
||||
depends_on:MBEDTLS_MD_C:MBEDTLS_SHA256_C
|
||||
|
@ -211,12 +211,12 @@ int exercise_mac_setup( psa_key_type_t key_type,
|
||||
psa_status_t *status )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_SIGN, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type, key_bytes, key_length ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle, key_bytes, key_length ) );
|
||||
|
||||
*status = psa_mac_sign_setup( operation, handle, alg );
|
||||
/* Whether setup succeeded or failed, abort must succeed. */
|
||||
@ -245,12 +245,12 @@ int exercise_cipher_setup( psa_key_type_t key_type,
|
||||
psa_status_t *status )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type, key_bytes, key_length ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle, key_bytes, key_length ) );
|
||||
|
||||
*status = psa_cipher_encrypt_setup( operation, handle, alg );
|
||||
/* Whether setup succeeded or failed, abort must succeed. */
|
||||
@ -1238,6 +1238,7 @@ void import_rsa_made_up( int bits_arg, int keypair, int expected_status_arg )
|
||||
unsigned char *p;
|
||||
int ret;
|
||||
size_t length;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
ASSERT_ALLOC( buffer, buffer_size );
|
||||
@ -1247,8 +1248,8 @@ void import_rsa_made_up( int bits_arg, int keypair, int expected_status_arg )
|
||||
length = ret;
|
||||
|
||||
/* Try importing the key */
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
status = psa_import_key_to_handle( handle, type, p, length );
|
||||
psa_set_key_type( &attributes, type );
|
||||
status = psa_import_key( &attributes, &handle, p, length );
|
||||
TEST_EQUAL( status, expected_status );
|
||||
if( status == PSA_SUCCESS )
|
||||
PSA_ASSERT( psa_destroy_key( handle ) );
|
||||
@ -1488,27 +1489,37 @@ exit:
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void key_policy_init( )
|
||||
void key_attributes_init( )
|
||||
{
|
||||
/* Test each valid way of initializing the object, except for `= {0}`, as
|
||||
* Clang 5 complains when `-Wmissing-field-initializers` is used, even
|
||||
* though it's OK by the C standard. We could test for this, but we'd need
|
||||
* to supress the Clang warning for the test. */
|
||||
psa_key_policy_t func = psa_key_policy_init( );
|
||||
psa_key_policy_t init = PSA_KEY_POLICY_INIT;
|
||||
psa_key_policy_t zero;
|
||||
psa_key_attributes_t func = psa_key_attributes_init( );
|
||||
psa_key_attributes_t init = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_key_attributes_t zero;
|
||||
|
||||
memset( &zero, 0, sizeof( zero ) );
|
||||
|
||||
/* A default key policy should not permit any usage. */
|
||||
TEST_EQUAL( psa_key_policy_get_usage( &func ), 0 );
|
||||
TEST_EQUAL( psa_key_policy_get_usage( &init ), 0 );
|
||||
TEST_EQUAL( psa_key_policy_get_usage( &zero ), 0 );
|
||||
TEST_EQUAL( psa_get_key_lifetime( &func ), PSA_KEY_LIFETIME_VOLATILE );
|
||||
TEST_EQUAL( psa_get_key_lifetime( &init ), PSA_KEY_LIFETIME_VOLATILE );
|
||||
TEST_EQUAL( psa_get_key_lifetime( &zero ), PSA_KEY_LIFETIME_VOLATILE );
|
||||
|
||||
/* A default key policy should not permit any algorithm. */
|
||||
TEST_EQUAL( psa_key_policy_get_algorithm( &func ), 0 );
|
||||
TEST_EQUAL( psa_key_policy_get_algorithm( &init ), 0 );
|
||||
TEST_EQUAL( psa_key_policy_get_algorithm( &zero ), 0 );
|
||||
TEST_EQUAL( psa_get_key_type( &func ), 0 );
|
||||
TEST_EQUAL( psa_get_key_type( &init ), 0 );
|
||||
TEST_EQUAL( psa_get_key_type( &zero ), 0 );
|
||||
|
||||
TEST_EQUAL( psa_get_key_bits( &func ), 0 );
|
||||
TEST_EQUAL( psa_get_key_bits( &init ), 0 );
|
||||
TEST_EQUAL( psa_get_key_bits( &zero ), 0 );
|
||||
|
||||
TEST_EQUAL( psa_get_key_usage_flags( &func ), 0 );
|
||||
TEST_EQUAL( psa_get_key_usage_flags( &init ), 0 );
|
||||
TEST_EQUAL( psa_get_key_usage_flags( &zero ), 0 );
|
||||
|
||||
TEST_EQUAL( psa_get_key_algorithm( &func ), 0 );
|
||||
TEST_EQUAL( psa_get_key_algorithm( &init ), 0 );
|
||||
TEST_EQUAL( psa_get_key_algorithm( &zero ), 0 );
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
@ -1520,18 +1531,18 @@ void mac_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT;
|
||||
psa_status_t status;
|
||||
unsigned char mac[PSA_MAC_MAX_SIZE];
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
status = psa_mac_sign_setup( &operation, handle, exercise_alg );
|
||||
@ -1565,17 +1576,17 @@ void cipher_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_status_t status;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
status = psa_cipher_encrypt_setup( &operation, handle, exercise_alg );
|
||||
@ -1610,7 +1621,7 @@ void aead_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_status_t status;
|
||||
unsigned char nonce[16] = {0};
|
||||
size_t nonce_length = nonce_length_arg;
|
||||
@ -1623,11 +1634,11 @@ void aead_key_policy( int policy_usage,
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
status = psa_aead_encrypt( handle, exercise_alg,
|
||||
@ -1669,21 +1680,20 @@ void asymmetric_encryption_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_status_t status;
|
||||
size_t key_bits;
|
||||
size_t buffer_length;
|
||||
unsigned char *buffer = NULL;
|
||||
size_t output_length;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
||||
@ -1732,7 +1742,7 @@ void asymmetric_signature_key_policy( int policy_usage,
|
||||
int payload_length_arg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_status_t status;
|
||||
unsigned char payload[PSA_HASH_MAX_SIZE] = {1};
|
||||
/* If `payload_length_arg > 0`, `exercise_alg` is supposed to be
|
||||
@ -1746,11 +1756,11 @@ void asymmetric_signature_key_policy( int policy_usage,
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
status = psa_asymmetric_sign( handle, exercise_alg,
|
||||
@ -1785,17 +1795,17 @@ void derive_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT;
|
||||
psa_status_t status;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
status = psa_key_derivation( &generator, handle,
|
||||
@ -1824,18 +1834,18 @@ void agreement_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_key_type_t key_type = key_type_arg;
|
||||
psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT;
|
||||
psa_status_t status;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_key_derivation_setup( &generator, exercise_alg ) );
|
||||
@ -1862,18 +1872,18 @@ void raw_agreement_key_policy( int policy_usage,
|
||||
int exercise_alg )
|
||||
{
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_key_type_t key_type = key_type_arg;
|
||||
psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT;
|
||||
psa_status_t status;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, policy_usage, policy_alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, policy_usage );
|
||||
psa_set_key_algorithm( &attributes, policy_alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
status = raw_key_agreement_with_self( exercise_alg, handle );
|
||||
@ -2341,7 +2351,7 @@ void mac_bad_order( )
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT;
|
||||
uint8_t sign_mac[PSA_MAC_MAX_SIZE + 10] = { 0 };
|
||||
size_t sign_mac_length = 0;
|
||||
@ -2352,13 +2362,11 @@ void mac_bad_order( )
|
||||
0x2c, 0xf9, 0x18, 0xca, 0x59, 0x7e, 0x5d, 0xf6 };
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy,
|
||||
PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY,
|
||||
alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key, sizeof(key) ) );
|
||||
|
||||
/* Call update without calling setup beforehand. */
|
||||
@ -2466,7 +2474,7 @@ void mac_sign( int key_type_arg,
|
||||
psa_key_type_t key_type = key_type_arg;
|
||||
psa_algorithm_t alg = alg_arg;
|
||||
psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
/* Leave a little extra room in the output buffer. At the end of the
|
||||
* test, we'll check that the implementation didn't overwrite onto
|
||||
* this extra room. */
|
||||
@ -2481,11 +2489,11 @@ void mac_sign( int key_type_arg,
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_SIGN, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
/* Calculate the MAC. */
|
||||
@ -2522,17 +2530,17 @@ void mac_verify( int key_type_arg,
|
||||
psa_key_type_t key_type = key_type_arg;
|
||||
psa_algorithm_t alg = alg_arg;
|
||||
psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
TEST_ASSERT( expected_mac->len <= PSA_MAC_MAX_SIZE );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_VERIFY, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_mac_verify_setup( &operation,
|
||||
@ -2634,7 +2642,7 @@ void cipher_bad_order( )
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_type_t key_type = PSA_KEY_TYPE_AES;
|
||||
psa_algorithm_t alg = PSA_ALG_CBC_PKCS7;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
|
||||
unsigned char iv[PSA_BLOCK_CIPHER_BLOCK_SIZE(PSA_KEY_TYPE_AES)] = { 0 };
|
||||
const uint8_t key[] = {
|
||||
@ -2647,12 +2655,10 @@ void cipher_bad_order( )
|
||||
size_t length = 0;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy,
|
||||
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT,
|
||||
alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key, sizeof(key) ) );
|
||||
|
||||
|
||||
@ -2799,18 +2805,18 @@ void cipher_encrypt( int alg_arg, int key_type_arg,
|
||||
size_t function_output_length = 0;
|
||||
size_t total_output_length = 0;
|
||||
psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
iv_size = PSA_BLOCK_CIPHER_BLOCK_SIZE( key_type );
|
||||
memset( iv, 0x2a, iv_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_cipher_encrypt_setup( &operation,
|
||||
@ -2869,18 +2875,18 @@ void cipher_encrypt_multipart( int alg_arg, int key_type_arg,
|
||||
size_t function_output_length = 0;
|
||||
size_t total_output_length = 0;
|
||||
psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
iv_size = PSA_BLOCK_CIPHER_BLOCK_SIZE( key_type );
|
||||
memset( iv, 0x2a, iv_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_cipher_encrypt_setup( &operation,
|
||||
@ -2945,18 +2951,18 @@ void cipher_decrypt_multipart( int alg_arg, int key_type_arg,
|
||||
size_t function_output_length = 0;
|
||||
size_t total_output_length = 0;
|
||||
psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
iv_size = PSA_BLOCK_CIPHER_BLOCK_SIZE( key_type );
|
||||
memset( iv, 0x2a, iv_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DECRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_cipher_decrypt_setup( &operation,
|
||||
@ -3019,18 +3025,18 @@ void cipher_decrypt( int alg_arg, int key_type_arg,
|
||||
size_t function_output_length = 0;
|
||||
size_t total_output_length = 0;
|
||||
psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
iv_size = PSA_BLOCK_CIPHER_BLOCK_SIZE( key_type );
|
||||
memset( iv, 0x2a, iv_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DECRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_cipher_decrypt_setup( &operation,
|
||||
@ -3089,15 +3095,15 @@ void cipher_verify_output( int alg_arg, int key_type_arg,
|
||||
size_t function_output_length = 0;
|
||||
psa_cipher_operation_t operation1 = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_cipher_operation_t operation2 = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_cipher_encrypt_setup( &operation1,
|
||||
@ -3175,15 +3181,15 @@ void cipher_verify_output_multipart( int alg_arg,
|
||||
size_t function_output_length;
|
||||
psa_cipher_operation_t operation1 = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_cipher_operation_t operation2 = PSA_CIPHER_OPERATION_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key->x, key->len ) );
|
||||
|
||||
PSA_ASSERT( psa_cipher_encrypt_setup( &operation1,
|
||||
@ -3274,20 +3280,18 @@ void aead_encrypt_decrypt( int key_type_arg, data_t *key_data,
|
||||
size_t output_length2 = 0;
|
||||
size_t tag_length = 16;
|
||||
psa_status_t expected_result = expected_result_arg;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
output_size = input_data->len + tag_length;
|
||||
ASSERT_ALLOC( output_data, output_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy,
|
||||
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT,
|
||||
alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
TEST_EQUAL( psa_aead_encrypt( handle, alg,
|
||||
@ -3339,20 +3343,19 @@ void aead_encrypt( int key_type_arg, data_t *key_data,
|
||||
size_t output_size = 0;
|
||||
size_t output_length = 0;
|
||||
size_t tag_length = 16;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
output_size = input_data->len + tag_length;
|
||||
ASSERT_ALLOC( output_data, output_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT , alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_aead_encrypt( handle, alg,
|
||||
nonce->x, nonce->len,
|
||||
@ -3387,7 +3390,7 @@ void aead_decrypt( int key_type_arg, data_t *key_data,
|
||||
size_t output_size = 0;
|
||||
size_t output_length = 0;
|
||||
size_t tag_length = 16;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_status_t expected_result = expected_result_arg;
|
||||
|
||||
output_size = input_data->len + tag_length;
|
||||
@ -3395,13 +3398,12 @@ void aead_decrypt( int key_type_arg, data_t *key_data,
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DECRYPT , alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
TEST_EQUAL( psa_aead_decrypt( handle, alg,
|
||||
nonce->x, nonce->len,
|
||||
@ -3450,18 +3452,16 @@ void sign_deterministic( int key_type_arg, data_t *key_data,
|
||||
unsigned char *signature = NULL;
|
||||
size_t signature_size;
|
||||
size_t signature_length = 0xdeadbeef;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_SIGN, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
||||
key_bits = psa_get_key_bits( &attributes );
|
||||
|
||||
@ -3502,19 +3502,18 @@ void sign_fail( int key_type_arg, data_t *key_data,
|
||||
psa_status_t expected_status = expected_status_arg;
|
||||
unsigned char *signature = NULL;
|
||||
size_t signature_length = 0xdeadbeef;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
ASSERT_ALLOC( signature, signature_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_SIGN, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
actual_status = psa_asymmetric_sign( handle, alg,
|
||||
input_data->x, input_data->len,
|
||||
@ -3545,20 +3544,16 @@ void sign_verify( int key_type_arg, data_t *key_data,
|
||||
unsigned char *signature = NULL;
|
||||
size_t signature_size;
|
||||
size_t signature_length = 0xdeadbeef;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy,
|
||||
PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY,
|
||||
alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
||||
key_bits = psa_get_key_bits( &attributes );
|
||||
|
||||
@ -3612,19 +3607,18 @@ void asymmetric_verify( int key_type_arg, data_t *key_data,
|
||||
psa_key_handle_t handle = 0;
|
||||
psa_key_type_t key_type = key_type_arg;
|
||||
psa_algorithm_t alg = alg_arg;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
TEST_ASSERT( signature_data->len <= PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_VERIFY, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_asymmetric_verify( handle, alg,
|
||||
hash_data->x, hash_data->len,
|
||||
@ -3647,17 +3641,16 @@ void asymmetric_verify_fail( int key_type_arg, data_t *key_data,
|
||||
psa_algorithm_t alg = alg_arg;
|
||||
psa_status_t actual_status;
|
||||
psa_status_t expected_status = expected_status_arg;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_VERIFY, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_VERIFY );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
actual_status = psa_asymmetric_verify( handle, alg,
|
||||
hash_data->x, hash_data->len,
|
||||
@ -3691,18 +3684,16 @@ void asymmetric_encrypt( int key_type_arg,
|
||||
size_t output_length = ~0;
|
||||
psa_status_t actual_status;
|
||||
psa_status_t expected_status = expected_status_arg;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
/* Import the key */
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_ENCRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
/* Determine the maximum output length */
|
||||
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
||||
@ -3759,20 +3750,16 @@ void asymmetric_encrypt_decrypt( int key_type_arg,
|
||||
unsigned char *output2 = NULL;
|
||||
size_t output2_size;
|
||||
size_t output2_length = ~0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy,
|
||||
PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT,
|
||||
alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
/* Determine the maximum ciphertext length */
|
||||
PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
|
||||
@ -3824,20 +3811,19 @@ void asymmetric_decrypt( int key_type_arg,
|
||||
unsigned char *output = NULL;
|
||||
size_t output_size = 0;
|
||||
size_t output_length = ~0;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
output_size = expected_data->len;
|
||||
ASSERT_ALLOC( output, output_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DECRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_asymmetric_decrypt( handle, alg,
|
||||
input_data->x, input_data->len,
|
||||
@ -3889,19 +3875,18 @@ void asymmetric_decrypt_fail( int key_type_arg,
|
||||
size_t output_length = ~0;
|
||||
psa_status_t actual_status;
|
||||
psa_status_t expected_status = expected_status_arg;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
ASSERT_ALLOC( output, output_size );
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DECRYPT, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DECRYPT );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
actual_status = psa_asymmetric_decrypt( handle, alg,
|
||||
input_data->x, input_data->len,
|
||||
@ -3978,17 +3963,16 @@ void derive_setup( int key_type_arg,
|
||||
size_t requested_capacity = requested_capacity_arg;
|
||||
psa_status_t expected_status = expected_status_arg;
|
||||
psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT;
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DERIVE, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DERIVE );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
TEST_EQUAL( psa_key_derivation( &generator, handle, alg,
|
||||
salt->x, salt->len,
|
||||
@ -4015,17 +3999,16 @@ void test_derive_invalid_generator_state( )
|
||||
const uint8_t key_data[22] = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
|
||||
0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
|
||||
0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b};
|
||||
psa_key_policy_t policy = PSA_KEY_POLICY_INIT;
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
|
||||
PSA_ASSERT( psa_crypto_init( ) );
|
||||
|
||||
PSA_ASSERT( psa_allocate_key( &handle ) );
|
||||
psa_key_policy_set_usage( &policy, PSA_KEY_USAGE_DERIVE, alg );
|
||||
PSA_ASSERT( psa_set_key_policy( handle, &policy ) );
|
||||
psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DERIVE );
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, key_type );
|
||||
|
||||
PSA_ASSERT( psa_import_key_to_handle( handle, key_type,
|
||||
key_data,
|
||||
sizeof( key_data ) ) );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data, sizeof( key_data ) ) );
|
||||
|
||||
/* valid key derivation */
|
||||
PSA_ASSERT( psa_key_derivation( &generator, handle, alg,
|
||||
@ -4119,8 +4102,7 @@ void derive_output( int alg_arg,
|
||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_DERIVE );
|
||||
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
/* Extraction phase. */
|
||||
if( PSA_ALG_IS_HKDF( alg ) )
|
||||
@ -4216,8 +4198,7 @@ void derive_full( int alg_arg,
|
||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_DERIVE );
|
||||
|
||||
PSA_ASSERT( psa_import_key( &attributes, &handle,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
/* Extraction phase. */
|
||||
if( PSA_ALG_IS_HKDF( alg ) )
|
||||
@ -4303,8 +4284,7 @@ void derive_key_exercise( int alg_arg,
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_DERIVE );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &base_handle,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
/* Derive a key. */
|
||||
PSA_ASSERT( psa_key_derivation( &generator, base_handle, alg,
|
||||
@ -4365,8 +4345,7 @@ void derive_key_export( int alg_arg,
|
||||
psa_set_key_algorithm( &base_attributes, alg );
|
||||
psa_set_key_type( &base_attributes, PSA_KEY_TYPE_DERIVE );
|
||||
PSA_ASSERT( psa_import_key( &base_attributes, &base_handle,
|
||||
key_data->x,
|
||||
key_data->len ) );
|
||||
key_data->x, key_data->len ) );
|
||||
|
||||
/* Derive some material and output it. */
|
||||
PSA_ASSERT( psa_key_derivation( &generator, base_handle, alg,
|
||||
@ -4436,8 +4415,7 @@ void key_agreement_setup( int alg_arg,
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, our_key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &our_key,
|
||||
our_key_data->x,
|
||||
our_key_data->len ) );
|
||||
our_key_data->x, our_key_data->len ) );
|
||||
|
||||
/* The tests currently include inputs that should fail at either step.
|
||||
* Test cases that fail at the setup step should be changed to call
|
||||
@ -4483,8 +4461,7 @@ void raw_key_agreement( int alg_arg,
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, our_key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &our_key,
|
||||
our_key_data->x,
|
||||
our_key_data->len ) );
|
||||
our_key_data->x, our_key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_key_agreement_raw_shared_secret(
|
||||
alg, our_key,
|
||||
@ -4520,8 +4497,7 @@ void key_agreement_capacity( int alg_arg,
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, our_key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &our_key,
|
||||
our_key_data->x,
|
||||
our_key_data->len ) );
|
||||
our_key_data->x, our_key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_key_derivation_setup( &generator, alg ) );
|
||||
PSA_ASSERT( psa_key_agreement( &generator, PSA_KDF_STEP_SECRET,
|
||||
@ -4581,8 +4557,7 @@ void key_agreement_output( int alg_arg,
|
||||
psa_set_key_algorithm( &attributes, alg );
|
||||
psa_set_key_type( &attributes, our_key_type );
|
||||
PSA_ASSERT( psa_import_key( &attributes, &our_key,
|
||||
our_key_data->x,
|
||||
our_key_data->len ) );
|
||||
our_key_data->x, our_key_data->len ) );
|
||||
|
||||
PSA_ASSERT( psa_key_derivation_setup( &generator, alg ) );
|
||||
PSA_ASSERT( psa_key_agreement( &generator, PSA_KDF_STEP_SECRET,
|
||||
|
@ -182,15 +182,20 @@ void validate_module_init_key_based( int count )
|
||||
{
|
||||
psa_status_t status;
|
||||
uint8_t data[10] = { 0 };
|
||||
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
|
||||
psa_key_handle_t handle = 0xdead;
|
||||
int i;
|
||||
|
||||
for( i = 0; i < count; i++ )
|
||||
{
|
||||
status = psa_crypto_init( );
|
||||
PSA_ASSERT( status );
|
||||
mbedtls_psa_crypto_free( );
|
||||
}
|
||||
status = psa_import_key_to_handle( 1, PSA_KEY_TYPE_RAW_DATA, data, sizeof( data ) );
|
||||
psa_set_key_type( &attributes, PSA_KEY_TYPE_RAW_DATA );
|
||||
status = psa_import_key( &attributes, &handle, data, sizeof( data ) );
|
||||
TEST_EQUAL( status, PSA_ERROR_BAD_STATE );
|
||||
TEST_EQUAL( handle, 0 );
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user