Skip to content

Commit 39b3d2d

Browse files
RAM test driver: implement export_public
1 parent f61a12c commit 39b3d2d

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

tests/suites/test_suite_psa_crypto_se_driver_hal.function

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,35 @@ static psa_status_t ram_export( psa_drv_se_context_t *context,
264264
actual_size = PSA_BITS_TO_BYTES( ram_slots[slot_number].bits );
265265
if( actual_size > data_size )
266266
return( PSA_ERROR_BUFFER_TOO_SMALL );
267-
*p_data_length = actual_size;
268-
memcpy( p_data, ram_slots[slot_number].content, actual_size );
267+
*data_length = actual_size;
268+
memcpy( data, ram_slots[slot_number].content, actual_size );
269+
return( PSA_SUCCESS );
270+
}
271+
272+
static psa_status_t ram_export_public( psa_drv_se_context_t *context,
273+
psa_key_slot_number_t slot_number,
274+
uint8_t *data,
275+
size_t data_size,
276+
size_t *data_length )
277+
{
278+
psa_status_t status;
279+
psa_key_handle_t handle;
280+
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
281+
282+
(void) context;
283+
DRIVER_ASSERT_RETURN( slot_number < ARRAY_LENGTH( ram_slots ) );
284+
DRIVER_ASSERT_RETURN(
285+
PSA_KEY_TYPE_IS_KEY_PAIR( ram_slots[slot_number].type ) );
286+
287+
psa_set_key_type( &attributes, ram_slots[slot_number].type );
288+
status = psa_import_key( &attributes,
289+
ram_slots[slot_number].content,
290+
PSA_BITS_TO_BYTES( ram_slots[slot_number].bits ),
291+
&handle );
292+
if( status != PSA_SUCCESS )
293+
return( status );
294+
status = psa_export_public_key( handle, data, data_size, data_length );
295+
psa_destroy_key( handle );
269296
return( PSA_SUCCESS );
270297
}
271298

0 commit comments

Comments
 (0)