mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-04 04:32:24 -05:00 
			
		
		
		
	Move PSA storage cleanup out of the slot_management test suite
Merge the two identical definitions of TEST_USES_KEY_ID and mbedtls_test_psa_purge_key_storage from test_suite_psa_crypto_slot_management.function and test_suite_psa_crypto_se_driver_hal.function into a single copy in common test code so that it can be used in all test suites. No semantic change. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
		
							parent
							
								
									b9ad79417d
								
							
						
					
					
						commit
						313ffb8f90
					
				@ -34,6 +34,19 @@
 | 
				
			|||||||
#include "mbedtls/psa_util.h"
 | 
					#include "mbedtls/psa_util.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C)
 | 
				
			||||||
 | 
					/* All test functions that create persistent keys must call
 | 
				
			||||||
 | 
					 * `TEST_USES_KEY_ID( key_id )` before creating a persistent key with this
 | 
				
			||||||
 | 
					 * identifier, and must call psa_purge_key_storage() in their cleanup
 | 
				
			||||||
 | 
					 * code. */
 | 
				
			||||||
 | 
					int mbedtls_test_uses_key_id( mbedtls_svc_key_id_t key_id );
 | 
				
			||||||
 | 
					void mbedtls_test_psa_purge_key_storage( void );
 | 
				
			||||||
 | 
					#define TEST_USES_KEY_ID( key_id )                       \
 | 
				
			||||||
 | 
					    TEST_ASSERT( mbedtls_test_uses_key_id( key_id ) )
 | 
				
			||||||
 | 
					#else /* MBEDTLS_PSA_CRYPTO_STORAGE_C */
 | 
				
			||||||
 | 
					#define TEST_USES_KEY_ID( key_id ) ( (void) ( key_id ) )
 | 
				
			||||||
 | 
					#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PSA_INIT( ) PSA_ASSERT( psa_crypto_init( ) )
 | 
					#define PSA_INIT( ) PSA_ASSERT( psa_crypto_init( ) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Check for things that have not been cleaned up properly in the
 | 
					/** Check for things that have not been cleaned up properly in the
 | 
				
			||||||
 | 
				
			|||||||
@ -28,6 +28,45 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <psa/crypto.h>
 | 
					#include <psa/crypto.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <psa_crypto_storage.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static mbedtls_svc_key_id_t key_ids_used_in_test[9];
 | 
				
			||||||
 | 
					static size_t num_key_ids_used;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Record a key id as potentially used in a test case. */
 | 
				
			||||||
 | 
					int mbedtls_test_uses_key_id( mbedtls_svc_key_id_t key_id )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
					    if( MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key_id ) >
 | 
				
			||||||
 | 
					        PSA_MAX_PERSISTENT_KEY_IDENTIFIER )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /* Don't touch key id values that designate non-key files. */
 | 
				
			||||||
 | 
					        return( 1 );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    for( i = 0; i < num_key_ids_used ; i++ )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if( mbedtls_svc_key_id_equal( key_id, key_ids_used_in_test[i] ) )
 | 
				
			||||||
 | 
					            return( 1 );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if( num_key_ids_used == ARRAY_LENGTH( key_ids_used_in_test ) )
 | 
				
			||||||
 | 
					        return( 0 );
 | 
				
			||||||
 | 
					    key_ids_used_in_test[num_key_ids_used] = key_id;
 | 
				
			||||||
 | 
					    ++num_key_ids_used;
 | 
				
			||||||
 | 
					    return( 1 );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Destroy all key ids that may have been created by the current test case. */
 | 
				
			||||||
 | 
					void mbedtls_test_psa_purge_key_storage( void )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
					    for( i = 0; i < num_key_ids_used; i++ )
 | 
				
			||||||
 | 
					        psa_destroy_persistent_key( key_ids_used_in_test[i] );
 | 
				
			||||||
 | 
					    num_key_ids_used = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char *mbedtls_test_helper_is_psa_leaking( void )
 | 
					const char *mbedtls_test_helper_is_psa_leaking( void )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    mbedtls_psa_stats_t stats;
 | 
					    mbedtls_psa_stats_t stats;
 | 
				
			||||||
 | 
				
			|||||||
@ -767,42 +767,6 @@ exit:
 | 
				
			|||||||
    return( ok );
 | 
					    return( ok );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static mbedtls_svc_key_id_t key_ids_used_in_test[9];
 | 
					 | 
				
			||||||
static size_t num_key_ids_used;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Record a key id as potentially used in a test case. */
 | 
					 | 
				
			||||||
int mbedtls_test_uses_key_id( mbedtls_svc_key_id_t key_id )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    size_t i;
 | 
					 | 
				
			||||||
    if( MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key_id ) >
 | 
					 | 
				
			||||||
        PSA_MAX_PERSISTENT_KEY_IDENTIFIER )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        /* Don't touch key id values that designate non-key files. */
 | 
					 | 
				
			||||||
        return( 1 );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    for( i = 0; i < num_key_ids_used ; i++ )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if( mbedtls_svc_key_id_equal( key_id, key_ids_used_in_test[i] ) )
 | 
					 | 
				
			||||||
            return( 1 );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if( num_key_ids_used == ARRAY_LENGTH( key_ids_used_in_test ) )
 | 
					 | 
				
			||||||
        return( 0 );
 | 
					 | 
				
			||||||
    key_ids_used_in_test[num_key_ids_used] = key_id;
 | 
					 | 
				
			||||||
    ++num_key_ids_used;
 | 
					 | 
				
			||||||
    return( 1 );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#define TEST_USES_KEY_ID( key_id )                       \
 | 
					 | 
				
			||||||
    TEST_ASSERT( mbedtls_test_uses_key_id( key_id ) )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Destroy all key ids that may have been created by the current test case. */
 | 
					 | 
				
			||||||
void mbedtls_test_psa_purge_key_storage( void )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    size_t i;
 | 
					 | 
				
			||||||
    for( i = 0; i < num_key_ids_used; i++ )
 | 
					 | 
				
			||||||
        psa_destroy_persistent_key( key_ids_used_in_test[i] );
 | 
					 | 
				
			||||||
    num_key_ids_used = 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void psa_purge_storage( void )
 | 
					static void psa_purge_storage( void )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    psa_key_location_t location;
 | 
					    psa_key_location_t location;
 | 
				
			||||||
 | 
				
			|||||||
@ -43,51 +43,6 @@ typedef enum
 | 
				
			|||||||
    INVALID_HANDLE_HUGE,
 | 
					    INVALID_HANDLE_HUGE,
 | 
				
			||||||
} invalid_handle_construction_t;
 | 
					} invalid_handle_construction_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* All test functions that create persistent keys must call
 | 
					 | 
				
			||||||
 * `TEST_USES_KEY_ID( key_id )` before creating a persistent key with this
 | 
					 | 
				
			||||||
 * identifier, and must call psa_purge_key_storage() in their cleanup
 | 
					 | 
				
			||||||
 * code. */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C)
 | 
					 | 
				
			||||||
static mbedtls_svc_key_id_t key_ids_used_in_test[9];
 | 
					 | 
				
			||||||
static size_t num_key_ids_used;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Record a key id as potentially used in a test case. */
 | 
					 | 
				
			||||||
int mbedtls_test_uses_key_id( mbedtls_svc_key_id_t key_id )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    size_t i;
 | 
					 | 
				
			||||||
    if( MBEDTLS_SVC_KEY_ID_GET_KEY_ID( key_id ) >
 | 
					 | 
				
			||||||
        PSA_MAX_PERSISTENT_KEY_IDENTIFIER )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        /* Don't touch key id values that designate non-key files. */
 | 
					 | 
				
			||||||
        return( 1 );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    for( i = 0; i < num_key_ids_used ; i++ )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if( mbedtls_svc_key_id_equal( key_id, key_ids_used_in_test[i] ) )
 | 
					 | 
				
			||||||
            return( 1 );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if( num_key_ids_used == ARRAY_LENGTH( key_ids_used_in_test ) )
 | 
					 | 
				
			||||||
        return( 0 );
 | 
					 | 
				
			||||||
    key_ids_used_in_test[num_key_ids_used] = key_id;
 | 
					 | 
				
			||||||
    ++num_key_ids_used;
 | 
					 | 
				
			||||||
    return( 1 );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#define TEST_USES_KEY_ID( key_id )                       \
 | 
					 | 
				
			||||||
    TEST_ASSERT( mbedtls_test_uses_key_id( key_id ) )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Destroy all key ids that may have been created by the current test case. */
 | 
					 | 
				
			||||||
void mbedtls_test_psa_purge_key_storage( void )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    size_t i;
 | 
					 | 
				
			||||||
    for( i = 0; i < num_key_ids_used; i++ )
 | 
					 | 
				
			||||||
        psa_destroy_persistent_key( key_ids_used_in_test[i] );
 | 
					 | 
				
			||||||
    num_key_ids_used = 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define TEST_USES_KEY_ID( key_id ) ( (void) ( key_id ) )
 | 
					 | 
				
			||||||
#endif /* MBEDTLS_PSA_CRYPTO_STORAGE_C */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** Apply \p invalidate_method to invalidate the specified key:
 | 
					/** Apply \p invalidate_method to invalidate the specified key:
 | 
				
			||||||
 * close it, destroy it, or do nothing;
 | 
					 * close it, destroy it, or do nothing;
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user