mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-26 11:15:39 +01:00
Add internal helper function to load prevalidated key material
Signed-off-by: Steven Cooreman <steven.cooreman@silabs.com>
This commit is contained in:
parent
0452476eac
commit
f7cebd4a2b
@ -969,6 +969,19 @@ static psa_status_t psa_allocate_buffer_to_slot( psa_key_slot_t *slot,
|
|||||||
return( PSA_SUCCESS );
|
return( PSA_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
psa_status_t psa_copy_key_material_into_slot( psa_key_slot_t *slot,
|
||||||
|
const uint8_t* data,
|
||||||
|
size_t data_length )
|
||||||
|
{
|
||||||
|
psa_status_t status = psa_allocate_buffer_to_slot( slot,
|
||||||
|
data_length );
|
||||||
|
if( status != PSA_SUCCESS )
|
||||||
|
return( status );
|
||||||
|
|
||||||
|
memcpy( slot->data.key.data, data, data_length );
|
||||||
|
return( PSA_SUCCESS );
|
||||||
|
}
|
||||||
|
|
||||||
/** Import key data into a slot. `slot->attr.type` must have been set
|
/** Import key data into a slot. `slot->attr.type` must have been set
|
||||||
* previously. This function assumes that the slot does not contain
|
* previously. This function assumes that the slot does not contain
|
||||||
* any key material yet. On failure, the slot content is unchanged. */
|
* any key material yet. On failure, the slot content is unchanged. */
|
||||||
@ -1001,13 +1014,10 @@ psa_status_t psa_import_key_into_slot( psa_key_slot_t *slot,
|
|||||||
return( status );
|
return( status );
|
||||||
|
|
||||||
/* Allocate memory for the key */
|
/* Allocate memory for the key */
|
||||||
status = psa_allocate_buffer_to_slot( slot, data_length );
|
status = psa_copy_key_material_into_slot( slot, data, data_length );
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
return( status );
|
return( status );
|
||||||
|
|
||||||
/* copy key into allocated buffer */
|
|
||||||
memcpy( slot->data.key.data, data, data_length );
|
|
||||||
|
|
||||||
/* Write the actual key size to the slot.
|
/* Write the actual key size to the slot.
|
||||||
* psa_start_key_creation() wrote the size declared by the
|
* psa_start_key_creation() wrote the size declared by the
|
||||||
* caller, which may be 0 (meaning unspecified) or wrong. */
|
* caller, which may be 0 (meaning unspecified) or wrong. */
|
||||||
@ -2180,12 +2190,12 @@ exit:
|
|||||||
static psa_status_t psa_copy_key_material( const psa_key_slot_t *source,
|
static psa_status_t psa_copy_key_material( const psa_key_slot_t *source,
|
||||||
psa_key_slot_t *target )
|
psa_key_slot_t *target )
|
||||||
{
|
{
|
||||||
psa_status_t status = psa_allocate_buffer_to_slot( target,
|
psa_status_t status = psa_copy_key_material_into_slot( target,
|
||||||
source->data.key.bytes );
|
source->data.key.data,
|
||||||
|
source->data.key.bytes );
|
||||||
if( status != PSA_SUCCESS )
|
if( status != PSA_SUCCESS )
|
||||||
return( status );
|
return( status );
|
||||||
|
|
||||||
memcpy( target->data.key.data, source->data.key.data, source->data.key.bytes );
|
|
||||||
target->attr.type = source->attr.type;
|
target->attr.type = source->attr.type;
|
||||||
target->attr.bits = source->attr.bits;
|
target->attr.bits = source->attr.bits;
|
||||||
|
|
||||||
|
@ -161,6 +161,27 @@ psa_status_t psa_import_key_into_slot( psa_key_slot_t *slot,
|
|||||||
const uint8_t *data,
|
const uint8_t *data,
|
||||||
size_t data_length );
|
size_t data_length );
|
||||||
|
|
||||||
|
/** Copy key data (in export format) into an empty key slot.
|
||||||
|
*
|
||||||
|
* This function assumes that the slot does not contain
|
||||||
|
* any key material yet. On failure, the slot content is unchanged.
|
||||||
|
*
|
||||||
|
* \param[in,out] slot Key slot to copy the key into.
|
||||||
|
* \param[in] data Buffer containing the key material.
|
||||||
|
* \param data_length Size of the key buffer.
|
||||||
|
*
|
||||||
|
* \retval #PSA_SUCCESS
|
||||||
|
* The key has been copied successfully.
|
||||||
|
* \retval #PSA_ERROR_INSUFFICIENT_MEMORY
|
||||||
|
* Not enough memory was available for allocation of the
|
||||||
|
* copy buffer.
|
||||||
|
* \retval #PSA_ERROR_ALREADY_EXISTS
|
||||||
|
* There was other key material already present in the slot.
|
||||||
|
*/
|
||||||
|
psa_status_t psa_copy_key_material_into_slot( psa_key_slot_t *slot,
|
||||||
|
const uint8_t *data,
|
||||||
|
size_t data_length );
|
||||||
|
|
||||||
|
|
||||||
/** Convert an mbed TLS error code to a PSA error code
|
/** Convert an mbed TLS error code to a PSA error code
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user