@@ -86,26 +86,24 @@ void test_crypto_random(void)
8686void test_crypto_asymmetric_encrypt_decrypt (void )
8787{
8888 psa_status_t status = PSA_SUCCESS;
89- psa_key_handle_t key_handle = 0 ;
90- psa_key_type_t key_type = PSA_KEY_TYPE_RSA_KEYPAIR ;
89+ psa_key_handle_t key_handle;
90+ psa_key_type_t key_type = PSA_KEY_TYPE_RSA_KEY_PAIR ;
9191 psa_algorithm_t alg = PSA_ALG_RSA_PKCS1V15_CRYPT;
92- size_t key_bits = 512 , got_bits = 0 , output_length;
93- psa_key_policy_t policy ;
92+ size_t key_bits = 512 , output_length;
93+ psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT ;
9494 static const unsigned char input[] = " encrypt me!" ;
9595 unsigned char encrypted[64 ];
9696 unsigned char decrypted[sizeof (input)];
9797
98- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
99-
100- policy = psa_key_policy_init ();
101- psa_key_policy_set_usage (&policy, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, alg);
102- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
103-
104- status = psa_generate_key (key_handle, key_type, key_bits, NULL , 0 );
98+ psa_set_key_usage_flags (&attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_ENCRYPT);
99+ psa_set_key_algorithm (&attributes, alg);
100+ psa_set_key_type (&attributes, key_type);
101+ psa_set_key_bits (&attributes, key_bits);
102+ status = psa_generate_key (&attributes, &key_handle);
105103 TEST_SKIP_UNLESS_MESSAGE (status != PSA_ERROR_NOT_SUPPORTED, " RSA key generation is not supported" );
106104 TEST_ASSERT_EQUAL (PSA_SUCCESS, status);
107- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_get_key_information (key_handle, NULL , &got_bits ));
108- TEST_ASSERT_EQUAL (key_bits, got_bits );
105+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_get_key_attributes (key_handle, &attributes ));
106+ TEST_ASSERT_EQUAL (key_bits, psa_get_key_bits (&attributes) );
109107 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_asymmetric_encrypt (key_handle, alg, input, sizeof (input), NULL , 0 ,
110108 encrypted, sizeof (encrypted), &output_length));
111109 TEST_ASSERT_EQUAL (sizeof (encrypted), output_length);
@@ -135,11 +133,11 @@ void test_crypto_hash_verify(void)
135133
136134void test_crypto_symmetric_cipher_encrypt_decrypt (void )
137135{
138- psa_key_handle_t key_handle = 0 ;
136+ psa_key_handle_t key_handle;
139137 psa_key_type_t key_type = PSA_KEY_TYPE_AES;
140138 psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING;
141139 psa_cipher_operation_t operation;
142- psa_key_policy_t policy ;
140+ psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT ;
143141 size_t output_len;
144142 static const unsigned char key[] = {
145143 0x2b , 0x7e , 0x15 , 0x16 , 0x28 , 0xae , 0xd2 , 0xa6 ,
@@ -155,13 +153,12 @@ void test_crypto_symmetric_cipher_encrypt_decrypt(void)
155153 };
156154 unsigned char encrypted[sizeof (input)], decrypted[sizeof (input)], iv[16 ];
157155
158- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
159-
160156 memset (iv, 0x2a , sizeof (iv));
161- policy = psa_key_policy_init ();
162- psa_key_policy_set_usage (&policy, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT, alg);
163- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
164- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_import_key (key_handle, key_type, key, sizeof (key)));
157+ psa_set_key_usage_flags (&attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT);
158+ psa_set_key_algorithm (&attributes, alg);
159+ psa_set_key_type (&attributes, key_type);
160+ psa_set_key_bits (&attributes, 128 );
161+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_import_key (&attributes, key, sizeof (key), &key_handle));
165162
166163 operation = psa_cipher_operation_init ();
167164 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_cipher_encrypt_setup (&operation, key_handle, alg));
@@ -187,10 +184,10 @@ void test_crypto_symmetric_cipher_encrypt_decrypt(void)
187184
188185void test_crypto_asymmetric_sign_verify (void )
189186{
190- psa_key_handle_t key_handle = 0 ;
191- psa_key_type_t key_type = PSA_KEY_TYPE_RSA_KEYPAIR ;
187+ psa_key_handle_t key_handle;
188+ psa_key_type_t key_type = PSA_KEY_TYPE_RSA_KEY_PAIR ;
192189 psa_algorithm_t alg = PSA_ALG_RSA_PKCS1V15_SIGN_RAW;
193- psa_key_policy_t policy ;
190+ psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT ;
194191 static const unsigned char key[] = {
195192 0x30 , 0x82 , 0x02 , 0x5e , 0x02 , 0x01 , 0x00 , 0x02 , 0x81 , 0x81 , 0x00 , 0xaf ,
196193 0x05 , 0x7d , 0x39 , 0x6e , 0xe8 , 0x4f , 0xb7 , 0x5f , 0xdb , 0xb5 , 0xc2 , 0xb1 ,
@@ -261,12 +258,10 @@ void test_crypto_asymmetric_sign_verify(void)
261258 unsigned char signature[sizeof (expected_signature)];
262259 size_t signature_len;
263260
264- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
265-
266- policy = psa_key_policy_init ();
267- psa_key_policy_set_usage (&policy, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY, alg);
268- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
269- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_import_key (key_handle, key_type, key, sizeof (key)));
261+ psa_set_key_usage_flags (&attributes, PSA_KEY_USAGE_SIGN | PSA_KEY_USAGE_VERIFY);
262+ psa_set_key_algorithm (&attributes, alg);
263+ psa_set_key_type (&attributes, key_type);
264+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_import_key (&attributes, key, sizeof (key), &key_handle));
270265 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_asymmetric_sign (key_handle, alg, input, sizeof (input),
271266 signature, sizeof (signature), &signature_len));
272267 TEST_ASSERT_EQUAL (sizeof (signature), signature_len);
@@ -279,31 +274,43 @@ void test_crypto_asymmetric_sign_verify(void)
279274
280275void test_crypto_key_derivation (void )
281276{
282- psa_key_handle_t key_handle = 0 , derived_key_handle = 0 ;
277+ psa_key_handle_t key_handle, derived_key_handle;
283278 psa_algorithm_t alg = PSA_ALG_HKDF (PSA_ALG_SHA_256), derived_alg = PSA_ALG_CTR;
284- psa_key_type_t key_type = PSA_KEY_TYPE_DERIVE, derived_key_type = PSA_KEY_TYPE_AES, got_type;
285- psa_key_policy_t policy;
286- psa_crypto_generator_t generator = PSA_CRYPTO_GENERATOR_INIT;
287- size_t key_bits = 512 , derived_key_bits = 256 , got_bits;
288-
289- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
290-
291- policy = psa_key_policy_init ();
292- psa_key_policy_set_usage (&policy, PSA_KEY_USAGE_DERIVE, alg);
293- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
294- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, key_type, key_bits, NULL , 0 ));
295- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_key_derivation (&generator, key_handle, alg, NULL , 0 , NULL , 0 ,
279+ psa_key_type_t key_type = PSA_KEY_TYPE_DERIVE, derived_key_type = PSA_KEY_TYPE_AES;
280+ psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
281+ psa_key_derivation_operation_t operation =
282+ PSA_KEY_DERIVATION_OPERATION_INIT;
283+ size_t key_bits = 512 , derived_key_bits = 256 ;
284+
285+ psa_set_key_usage_flags (&attributes, PSA_KEY_USAGE_DERIVE);
286+ psa_set_key_algorithm (&attributes, alg);
287+ psa_set_key_type (&attributes, key_type);
288+ psa_set_key_bits (&attributes, key_bits);
289+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (&attributes, &key_handle));
290+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_key_derivation_setup (&operation, alg));
291+ TEST_ASSERT_EQUAL (PSA_SUCCESS,
292+ psa_key_derivation_set_capacity (&operation,
296293 PSA_BITS_TO_BYTES (derived_key_bits)));
297-
298- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&derived_key_handle));
299- psa_key_policy_set_usage (&policy, PSA_KEY_USAGE_ENCRYPT, derived_alg);
300- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (derived_key_handle, &policy));
301- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generator_import_key (derived_key_handle, derived_key_type,
302- derived_key_bits, &generator));
303- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_get_key_information (derived_key_handle, &got_type, &got_bits));
304- TEST_ASSERT_EQUAL (derived_key_type, got_type);
305- TEST_ASSERT_EQUAL (derived_key_bits, got_bits);
306- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generator_abort (&generator));
294+ TEST_ASSERT_EQUAL (PSA_SUCCESS,
295+ psa_key_derivation_input_bytes (&operation,
296+ PSA_KEY_DERIVATION_INPUT_SALT, NULL , 0 ));
297+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_key_derivation_input_key (&operation,
298+ PSA_KEY_DERIVATION_INPUT_SECRET,
299+ key_handle));
300+ TEST_ASSERT_EQUAL (PSA_SUCCESS,
301+ psa_key_derivation_input_bytes (&operation,
302+ PSA_KEY_DERIVATION_INPUT_INFO, NULL , 0 ));
303+
304+ psa_set_key_usage_flags (&attributes, PSA_KEY_USAGE_ENCRYPT);
305+ psa_set_key_algorithm (&attributes, derived_alg);
306+ psa_set_key_type (&attributes, derived_key_type);
307+ psa_set_key_bits (&attributes, derived_key_bits);
308+ TEST_ASSERT_EQUAL (PSA_SUCCESS,
309+ psa_key_derivation_output_key (&attributes, &operation, &derived_key_handle));
310+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_get_key_attributes (derived_key_handle, &attributes));
311+ TEST_ASSERT_EQUAL (derived_key_type, psa_get_key_type (&attributes));
312+ TEST_ASSERT_EQUAL (derived_key_bits, psa_get_key_bits (&attributes));
313+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_key_derivation_abort (&operation));
307314 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
308315 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (derived_key_handle));
309316}
@@ -316,42 +323,45 @@ void test_crypto_key_handles(void)
316323 psa_key_usage_t usage = PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT;
317324 psa_algorithm_t alg = PSA_ALG_CBC_NO_PADDING;
318325 psa_key_handle_t key_handle;
319- psa_key_policy_t policy ;
326+ psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT ;
320327
321- key_handle = 0 ;
322- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
323- TEST_ASSERT_NOT_EQUAL (0 , key_handle);
324- policy = psa_key_policy_init ();
325- psa_key_policy_set_usage (&policy, usage, alg);
326- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
327- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
328+ psa_set_key_usage_flags (&attributes, usage);
329+ psa_set_key_algorithm (&attributes, alg);
330+ psa_set_key_type (&attributes, type);
331+ psa_set_key_bits (&attributes, bits);
332+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (&attributes, &key_handle));
328333 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_close_key (key_handle));
334+ TEST_ASSERT_NOT_EQUAL (0 , key_handle);
329335
330336 key_handle = 0 ;
331- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_allocate_key (&key_handle));
337+ attributes = psa_key_attributes_init ();
338+ psa_set_key_usage_flags (&attributes, usage);
339+ psa_set_key_algorithm (&attributes, alg);
340+ psa_set_key_type (&attributes, type);
341+ psa_set_key_bits (&attributes, bits);
342+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (&attributes, &key_handle));
332343 TEST_ASSERT_NOT_EQUAL (0 , key_handle);
333- policy = psa_key_policy_init ();
334- psa_key_policy_set_usage (&policy, usage, alg);
335- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
336- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
337344 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
338345
339346 key_handle = 0 ;
340- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_create_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
347+ attributes = psa_key_attributes_init ();
348+ psa_set_key_usage_flags (&attributes, usage);
349+ psa_set_key_algorithm (&attributes, alg);
350+ psa_set_key_type (&attributes, type);
351+ psa_set_key_bits (&attributes, bits);
352+ psa_set_key_lifetime (&attributes, PSA_KEY_LIFETIME_PERSISTENT);
353+ psa_set_key_id (&attributes, id);
354+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (&attributes, &key_handle));
341355 TEST_ASSERT_NOT_EQUAL (0 , key_handle);
342- policy = psa_key_policy_init ();
343- psa_key_policy_set_usage (&policy, usage, alg);
344- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_set_key_policy (key_handle, &policy));
345- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_generate_key (key_handle, type, bits, NULL , 0 ));
346356 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_close_key (key_handle));
347357
348358 key_handle = 0 ;
349- TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_open_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
359+ TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_open_key (id, &key_handle));
350360 TEST_ASSERT_NOT_EQUAL (0 , key_handle);
351361 TEST_ASSERT_EQUAL (PSA_SUCCESS, psa_destroy_key (key_handle));
352362
353363 key_handle = 0 ;
354- TEST_ASSERT_EQUAL (PSA_ERROR_DOES_NOT_EXIST, psa_open_key (PSA_KEY_LIFETIME_PERSISTENT, id, &key_handle));
364+ TEST_ASSERT_EQUAL (PSA_ERROR_DOES_NOT_EXIST, psa_open_key (id, &key_handle));
355365}
356366
357367void test_crypto_hash_clone (void )
0 commit comments