mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-03 12:11:27 -05:00 
			
		
		
		
	Introduce psa_key_handle_is_null inline function
Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
		
							parent
							
								
									91e9515424
								
							
						
					
					
						commit
						c26f8d467a
					
				@ -1064,10 +1064,10 @@ static inline int mbedtls_ssl_get_psk( const mbedtls_ssl_context *ssl,
 | 
			
		||||
static inline psa_key_handle_t mbedtls_ssl_get_opaque_psk(
 | 
			
		||||
    const mbedtls_ssl_context *ssl )
 | 
			
		||||
{
 | 
			
		||||
    if( ssl->handshake->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( ssl->handshake->psk_opaque ) )
 | 
			
		||||
        return( ssl->handshake->psk_opaque );
 | 
			
		||||
 | 
			
		||||
    if( ssl->conf->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( ssl->conf->psk_opaque ) )
 | 
			
		||||
        return( ssl->conf->psk_opaque );
 | 
			
		||||
 | 
			
		||||
    return( PSA_KEY_HANDLE_INIT );
 | 
			
		||||
 | 
			
		||||
@ -53,6 +53,17 @@
 | 
			
		||||
typedef uint16_t psa_key_handle_t;
 | 
			
		||||
#define PSA_KEY_HANDLE_INIT ( (psa_key_handle_t)0 )
 | 
			
		||||
 | 
			
		||||
/** Check whether a handle is null.
 | 
			
		||||
 *
 | 
			
		||||
 * \param handle  Key handle.
 | 
			
		||||
 *
 | 
			
		||||
 * \return Non-zero if the key handle is null, zero otherwise.
 | 
			
		||||
 */
 | 
			
		||||
static inline int psa_key_handle_is_null( psa_key_handle_t handle )
 | 
			
		||||
{
 | 
			
		||||
    return( handle == 0 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER)
 | 
			
		||||
 | 
			
		||||
/* Building for the PSA Crypto service on a PSA platform, a key owner is a PSA
 | 
			
		||||
 | 
			
		||||
@ -1300,7 +1300,7 @@ psa_status_t psa_destroy_key( psa_key_handle_t handle )
 | 
			
		||||
    psa_se_drv_table_entry_t *driver;
 | 
			
		||||
#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
 | 
			
		||||
 | 
			
		||||
    if( handle == 0 )
 | 
			
		||||
    if( psa_key_handle_is_null( handle ) )
 | 
			
		||||
        return( PSA_SUCCESS );
 | 
			
		||||
 | 
			
		||||
    status = psa_get_key_slot( handle, &slot );
 | 
			
		||||
 | 
			
		||||
@ -81,7 +81,8 @@ psa_status_t psa_get_key_slot( psa_key_handle_t handle,
 | 
			
		||||
    /* 0 is not a valid handle under any circumstance. This
 | 
			
		||||
     * implementation provides slots number 1 to N where N is the
 | 
			
		||||
     * number of available slots. */
 | 
			
		||||
    if( handle == 0 || handle > ARRAY_LENGTH( global_data.key_slots ) )
 | 
			
		||||
    if( psa_key_handle_is_null( handle ) || 
 | 
			
		||||
        ( handle > ARRAY_LENGTH( global_data.key_slots ) ) )
 | 
			
		||||
        return( PSA_ERROR_INVALID_HANDLE );
 | 
			
		||||
    slot = &global_data.key_slots[handle - 1];
 | 
			
		||||
 | 
			
		||||
@ -261,7 +262,7 @@ psa_status_t psa_close_key( psa_key_handle_t handle )
 | 
			
		||||
    psa_status_t status;
 | 
			
		||||
    psa_key_slot_t *slot;
 | 
			
		||||
 | 
			
		||||
    if( handle == 0 )
 | 
			
		||||
    if( psa_key_handle_is_null( handle ) )
 | 
			
		||||
        return( PSA_SUCCESS );
 | 
			
		||||
 | 
			
		||||
    status = psa_get_key_slot( handle, &slot );
 | 
			
		||||
 | 
			
		||||
@ -63,7 +63,7 @@ static int ssl_conf_has_static_psk( mbedtls_ssl_config const *conf )
 | 
			
		||||
        return( 1 );
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
 | 
			
		||||
    if( conf->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( conf->psk_opaque ) )
 | 
			
		||||
        return( 1 );
 | 
			
		||||
#endif /* MBEDTLS_USE_PSA_CRYPTO */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -157,7 +157,7 @@ static int ssl_conf_has_psk_or_cb( mbedtls_ssl_config const *conf )
 | 
			
		||||
        return( 1 );
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
 | 
			
		||||
    if( conf->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( conf->psk_opaque ) )
 | 
			
		||||
        return( 1 );
 | 
			
		||||
#endif /* MBEDTLS_USE_PSA_CRYPTO */
 | 
			
		||||
 | 
			
		||||
@ -172,13 +172,13 @@ static int ssl_use_opaque_psk( mbedtls_ssl_context const *ssl )
 | 
			
		||||
        /* If we've used a callback to select the PSK,
 | 
			
		||||
         * the static configuration is irrelevant. */
 | 
			
		||||
 | 
			
		||||
        if( ssl->handshake->psk_opaque != 0 )
 | 
			
		||||
        if( ! psa_key_handle_is_null( ssl->handshake->psk_opaque ) )
 | 
			
		||||
            return( 1 );
 | 
			
		||||
 | 
			
		||||
        return( 0 );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if( ssl->conf->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( ssl->conf->psk_opaque ) )
 | 
			
		||||
        return( 1 );
 | 
			
		||||
 | 
			
		||||
    return( 0 );
 | 
			
		||||
 | 
			
		||||
@ -466,7 +466,7 @@ static psa_status_t setup_psa_key_derivation( psa_key_derivation_operation_t* de
 | 
			
		||||
        if( status != PSA_SUCCESS )
 | 
			
		||||
            return( status );
 | 
			
		||||
 | 
			
		||||
        if( slot == 0 )
 | 
			
		||||
        if( psa_key_handle_is_null( slot ) )
 | 
			
		||||
        {
 | 
			
		||||
            status = psa_key_derivation_input_bytes(
 | 
			
		||||
                derivation, PSA_KEY_DERIVATION_INPUT_SECRET,
 | 
			
		||||
@ -563,7 +563,7 @@ static int tls_prf_generic( mbedtls_md_type_t md_type,
 | 
			
		||||
        return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if( master_slot != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( master_slot ) )
 | 
			
		||||
        status = psa_destroy_key( master_slot );
 | 
			
		||||
    if( status != PSA_SUCCESS )
 | 
			
		||||
        return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED );
 | 
			
		||||
@ -707,13 +707,13 @@ static int ssl_use_opaque_psk( mbedtls_ssl_context const *ssl )
 | 
			
		||||
    {
 | 
			
		||||
        /* If we've used a callback to select the PSK,
 | 
			
		||||
         * the static configuration is irrelevant. */
 | 
			
		||||
        if( ssl->handshake->psk_opaque != 0 )
 | 
			
		||||
        if( ! psa_key_handle_is_null( ssl->handshake->psk_opaque ) )
 | 
			
		||||
            return( 1 );
 | 
			
		||||
 | 
			
		||||
        return( 0 );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if( ssl->conf->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( ssl->conf->psk_opaque ) )
 | 
			
		||||
        return( 1 );
 | 
			
		||||
 | 
			
		||||
    return( 0 );
 | 
			
		||||
@ -4344,7 +4344,7 @@ static void ssl_conf_remove_psk( mbedtls_ssl_config *conf )
 | 
			
		||||
{
 | 
			
		||||
    /* Remove reference to existing PSK, if any. */
 | 
			
		||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
 | 
			
		||||
    if( conf->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( conf->psk_opaque ) )
 | 
			
		||||
    {
 | 
			
		||||
        /* The maintenance of the PSK key slot is the
 | 
			
		||||
         * user's responsibility. */
 | 
			
		||||
@ -4432,7 +4432,7 @@ int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf,
 | 
			
		||||
static void ssl_remove_psk( mbedtls_ssl_context *ssl )
 | 
			
		||||
{
 | 
			
		||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
 | 
			
		||||
    if( ssl->handshake->psk_opaque != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( ssl->handshake->psk_opaque ) )
 | 
			
		||||
    {
 | 
			
		||||
        ssl->handshake->psk_opaque = PSA_KEY_HANDLE_INIT;
 | 
			
		||||
    }
 | 
			
		||||
@ -4478,7 +4478,7 @@ int mbedtls_ssl_conf_psk_opaque( mbedtls_ssl_config *conf,
 | 
			
		||||
    ssl_conf_remove_psk( conf );
 | 
			
		||||
 | 
			
		||||
    /* Check and set opaque PSK */
 | 
			
		||||
    if( psk_slot == 0 )
 | 
			
		||||
    if( psa_key_handle_is_null( psk_slot ) )
 | 
			
		||||
        return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
 | 
			
		||||
    conf->psk_opaque = psk_slot;
 | 
			
		||||
 | 
			
		||||
@ -4494,7 +4494,8 @@ int mbedtls_ssl_conf_psk_opaque( mbedtls_ssl_config *conf,
 | 
			
		||||
int mbedtls_ssl_set_hs_psk_opaque( mbedtls_ssl_context *ssl,
 | 
			
		||||
                                   psa_key_handle_t psk_slot )
 | 
			
		||||
{
 | 
			
		||||
    if( psk_slot == 0 || ssl->handshake == NULL )
 | 
			
		||||
    if( ( psa_key_handle_is_null( psk_slot ) ) ||
 | 
			
		||||
        ( ssl->handshake == NULL ) )
 | 
			
		||||
        return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
 | 
			
		||||
 | 
			
		||||
    ssl_remove_psk( ssl );
 | 
			
		||||
 | 
			
		||||
@ -1303,7 +1303,7 @@ int psk_free( psk_entry *head )
 | 
			
		||||
        psa_status_t status;
 | 
			
		||||
        psa_key_handle_t const slot = head->slot;
 | 
			
		||||
 | 
			
		||||
        if( slot != 0 )
 | 
			
		||||
        if( ! psa_key_handle_is_null( slot ) )
 | 
			
		||||
        {
 | 
			
		||||
            status = psa_destroy_key( slot );
 | 
			
		||||
            if( status != PSA_SUCCESS )
 | 
			
		||||
@ -1376,7 +1376,7 @@ int psk_callback( void *p_info, mbedtls_ssl_context *ssl,
 | 
			
		||||
            memcmp( name, cur->name, name_len ) == 0 )
 | 
			
		||||
        {
 | 
			
		||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
 | 
			
		||||
            if( cur->slot != 0 )
 | 
			
		||||
            if( ! psa_key_handle_is_null( cur->slot ) )
 | 
			
		||||
                return( mbedtls_ssl_set_hs_psk_opaque( ssl, cur->slot ) );
 | 
			
		||||
            else
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -158,7 +158,7 @@ void pk_psa_utils(  )
 | 
			
		||||
    mbedtls_pk_init( &pk );
 | 
			
		||||
 | 
			
		||||
    key = pk_psa_genkey();
 | 
			
		||||
    if( key == 0 )
 | 
			
		||||
    if( psa_key_handle_is_null( key ) )
 | 
			
		||||
        goto exit;
 | 
			
		||||
 | 
			
		||||
    TEST_ASSERT( mbedtls_pk_setup_opaque( &pk, key ) == 0 );
 | 
			
		||||
 | 
			
		||||
@ -5761,7 +5761,7 @@ exit:
 | 
			
		||||
    mbedtls_free( second_export );
 | 
			
		||||
    psa_key_derivation_abort( &operation );
 | 
			
		||||
    psa_destroy_key( base_key );
 | 
			
		||||
    if( handle == 0 )
 | 
			
		||||
    if( psa_key_handle_is_null( handle ) )
 | 
			
		||||
    {
 | 
			
		||||
        /* In case there was a test failure after creating the persistent key
 | 
			
		||||
         * but while it was not open, try to re-open the persistent key
 | 
			
		||||
 | 
			
		||||
@ -197,7 +197,7 @@ void validate_module_init_key_based( int count )
 | 
			
		||||
    psa_set_key_type( &attributes, PSA_KEY_TYPE_RAW_DATA );
 | 
			
		||||
    status = psa_import_key( &attributes, data, sizeof( data ), &handle );
 | 
			
		||||
    TEST_EQUAL( status, PSA_ERROR_BAD_STATE );
 | 
			
		||||
    TEST_EQUAL( handle, 0 );
 | 
			
		||||
    TEST_ASSERT( psa_key_handle_is_null( handle ) );
 | 
			
		||||
}
 | 
			
		||||
/* END_CASE */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -177,7 +177,7 @@ void persistent_key_destroy( int owner_id_arg, int key_id_arg, int restart,
 | 
			
		||||
    /* Check key slot storage is removed */
 | 
			
		||||
    TEST_EQUAL( psa_is_key_present_in_storage( key_id ), 0 );
 | 
			
		||||
    TEST_EQUAL( psa_open_key( key_id, &handle ), PSA_ERROR_DOES_NOT_EXIST );
 | 
			
		||||
    TEST_EQUAL( handle, 0 );
 | 
			
		||||
    TEST_ASSERT( psa_key_handle_is_null( handle ) );
 | 
			
		||||
 | 
			
		||||
    /* Shutdown and restart */
 | 
			
		||||
    PSA_DONE();
 | 
			
		||||
 | 
			
		||||
@ -674,7 +674,7 @@ static int smoke_test_key( psa_key_handle_t handle )
 | 
			
		||||
                                         buffer, sizeof( buffer ), &length ) );
 | 
			
		||||
 | 
			
		||||
    SMOKE_ASSERT( psa_copy_key( handle, &attributes, &handle2 ) );
 | 
			
		||||
    if( handle2 != 0 )
 | 
			
		||||
    if( ! psa_key_handle_is_null( handle2 ) )
 | 
			
		||||
        PSA_ASSERT( psa_close_key( handle2 ) );
 | 
			
		||||
 | 
			
		||||
    SMOKE_ASSERT( psa_mac_sign_setup( &mac_operation, handle, PSA_ALG_CMAC ) );
 | 
			
		||||
 | 
			
		||||
@ -152,7 +152,7 @@ void transient_slot_lifecycle( int usage_arg, int alg_arg,
 | 
			
		||||
    psa_set_key_type( &attributes, type );
 | 
			
		||||
    PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
 | 
			
		||||
                                &handle ) );
 | 
			
		||||
    TEST_ASSERT( handle != 0 );
 | 
			
		||||
    TEST_ASSERT( ! psa_key_handle_is_null( handle ) );
 | 
			
		||||
    PSA_ASSERT( psa_get_key_attributes( handle, &attributes ) );
 | 
			
		||||
    TEST_EQUAL( psa_get_key_type( &attributes ), type );
 | 
			
		||||
 | 
			
		||||
@ -210,7 +210,7 @@ void persistent_slot_lifecycle( int lifetime_arg, int owner_id_arg, int id_arg,
 | 
			
		||||
    psa_set_key_enrollment_algorithm( &attributes, alg2 );
 | 
			
		||||
    PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len,
 | 
			
		||||
                                &handle ) );
 | 
			
		||||
    TEST_ASSERT( handle != 0 );
 | 
			
		||||
    TEST_ASSERT( ! psa_key_handle_is_null( handle ) );
 | 
			
		||||
 | 
			
		||||
#if defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER)
 | 
			
		||||
    TEST_EQUAL( psa_open_key( wrong_owner_id, &invalid_handle ),
 | 
			
		||||
@ -342,7 +342,7 @@ void create_existent( int lifetime_arg, int owner_id_arg, int id_arg,
 | 
			
		||||
    psa_set_key_algorithm( &attributes, 0 );
 | 
			
		||||
    PSA_ASSERT( psa_import_key( &attributes, material1, sizeof( material1 ),
 | 
			
		||||
                                &handle1 ) );
 | 
			
		||||
    TEST_ASSERT( handle1 != 0 );
 | 
			
		||||
    TEST_ASSERT( ! psa_key_handle_is_null( handle1 ) );
 | 
			
		||||
 | 
			
		||||
    if( reopen_policy == CLOSE_BEFORE )
 | 
			
		||||
        PSA_ASSERT( psa_close_key( handle1 ) );
 | 
			
		||||
@ -351,7 +351,7 @@ void create_existent( int lifetime_arg, int owner_id_arg, int id_arg,
 | 
			
		||||
    TEST_EQUAL( psa_import_key( &attributes, material2, sizeof( material2 ),
 | 
			
		||||
                                &handle2 ),
 | 
			
		||||
                PSA_ERROR_ALREADY_EXISTS );
 | 
			
		||||
    TEST_EQUAL( handle2, 0 );
 | 
			
		||||
    TEST_ASSERT( psa_key_handle_is_null( handle2 ) );
 | 
			
		||||
 | 
			
		||||
    if( reopen_policy == CLOSE_AFTER )
 | 
			
		||||
        PSA_ASSERT( psa_close_key( handle1 ) );
 | 
			
		||||
@ -394,7 +394,7 @@ void open_fail( int id_arg,
 | 
			
		||||
    PSA_ASSERT( psa_crypto_init( ) );
 | 
			
		||||
 | 
			
		||||
    TEST_EQUAL( psa_open_key( id, &handle ), expected_status );
 | 
			
		||||
    TEST_EQUAL( handle, 0 );
 | 
			
		||||
    TEST_ASSERT( psa_key_handle_is_null( handle ) );
 | 
			
		||||
 | 
			
		||||
exit:
 | 
			
		||||
    PSA_DONE( );
 | 
			
		||||
@ -422,7 +422,7 @@ void create_fail( int lifetime_arg, int id_arg,
 | 
			
		||||
    TEST_EQUAL( psa_import_key( &attributes, material, sizeof( material ),
 | 
			
		||||
                                &handle ),
 | 
			
		||||
                expected_status );
 | 
			
		||||
    TEST_EQUAL( handle, 0 );
 | 
			
		||||
    TEST_ASSERT( psa_key_handle_is_null( handle ) );
 | 
			
		||||
 | 
			
		||||
exit:
 | 
			
		||||
    PSA_DONE( );
 | 
			
		||||
@ -631,7 +631,7 @@ void copy_to_occupied( int source_lifetime_arg, int source_id_arg,
 | 
			
		||||
    TEST_EQUAL( psa_copy_key( source_handle,
 | 
			
		||||
                              &attributes, &new_handle ),
 | 
			
		||||
                PSA_ERROR_ALREADY_EXISTS );
 | 
			
		||||
    TEST_EQUAL( new_handle , 0 );
 | 
			
		||||
    TEST_ASSERT( psa_key_handle_is_null( new_handle ) );
 | 
			
		||||
 | 
			
		||||
    /* Test that the target slot is unaffected. */
 | 
			
		||||
    PSA_ASSERT( psa_get_key_attributes( target_handle, &attributes2 ) );
 | 
			
		||||
@ -691,7 +691,7 @@ void invalid_handle( int handle_construction,
 | 
			
		||||
    PSA_ASSERT( psa_import_key( &attributes,
 | 
			
		||||
                                material, sizeof( material ),
 | 
			
		||||
                                &valid_handle ) );
 | 
			
		||||
    TEST_ASSERT( valid_handle != 0 );
 | 
			
		||||
    TEST_ASSERT( ! psa_key_handle_is_null( valid_handle ) );
 | 
			
		||||
 | 
			
		||||
    /* Construct an invalid handle as specified in the test case data. */
 | 
			
		||||
    switch( handle_construction )
 | 
			
		||||
@ -766,7 +766,7 @@ void many_transient_handles( int max_handles_arg )
 | 
			
		||||
        if( status == PSA_ERROR_INSUFFICIENT_MEMORY )
 | 
			
		||||
            break;
 | 
			
		||||
        PSA_ASSERT( status );
 | 
			
		||||
        TEST_ASSERT( handles[i] != 0 );
 | 
			
		||||
        TEST_ASSERT( ! psa_key_handle_is_null( handles[i] ) );
 | 
			
		||||
        for( j = 0; j < i; j++ )
 | 
			
		||||
            TEST_ASSERT( handles[i] != handles[j] );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user