mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-04-25 09:02:48 +00: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