mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-06-29 16:52:54 +00:00
selftest: refactor to separate the list of tests from the logic
No behavior change.
This commit is contained in:
parent
0827d5c07d
commit
319ac801a8
|
@ -107,8 +107,8 @@ static int run_test_snprintf( void )
|
||||||
* self-test. If this fails, we attempt the test anyway, so no error is passed
|
* self-test. If this fails, we attempt the test anyway, so no error is passed
|
||||||
* back.
|
* back.
|
||||||
*/
|
*/
|
||||||
#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_ENTROPY_C) && \
|
#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_ENTROPY_C)
|
||||||
defined(MBEDTLS_ENTROPY_NV_SEED) && !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
#if defined(MBEDTLS_ENTROPY_NV_SEED) && !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
||||||
static void create_entropy_seed_file( void )
|
static void create_entropy_seed_file( void )
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
@ -136,8 +136,130 @@ static void create_entropy_seed_file( void )
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int mbedtls_entropy_self_test_wrapper( int verbose )
|
||||||
|
{
|
||||||
|
#if defined(MBEDTLS_ENTROPY_NV_SEED) && !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
||||||
|
create_entropy_seed_file( );
|
||||||
|
#endif
|
||||||
|
return( mbedtls_entropy_self_test( verbose ) );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_SELF_TEST)
|
||||||
|
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
|
||||||
|
int mbedtls_memory_buffer_alloc_free_and_self_test( int verbose )
|
||||||
|
{
|
||||||
|
if( verbose != 0 )
|
||||||
|
{
|
||||||
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
||||||
|
mbedtls_memory_buffer_alloc_status( );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
mbedtls_memory_buffer_alloc_free( );
|
||||||
|
return( mbedtls_memory_buffer_alloc_self_test( verbose ) );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
int ( *function )( int );
|
||||||
|
} selftest_t;
|
||||||
|
|
||||||
|
const selftest_t selftests[] =
|
||||||
|
{
|
||||||
|
#if defined(MBEDTLS_MD2_C)
|
||||||
|
{"md2", mbedtls_md2_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_MD4_C)
|
||||||
|
{"md4", mbedtls_md4_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_MD5_C)
|
||||||
|
{"md5", mbedtls_md5_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_RIPEMD160_C)
|
||||||
|
{"ripemd160", mbedtls_ripemd160_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_SHA1_C)
|
||||||
|
{"sha1", mbedtls_sha1_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_SHA256_C)
|
||||||
|
{"sha256", mbedtls_sha256_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_SHA512_C)
|
||||||
|
{"sha512", mbedtls_sha512_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_ARC4_C)
|
||||||
|
{"arc4", mbedtls_arc4_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_DES_C)
|
||||||
|
{"des", mbedtls_des_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_AES_C)
|
||||||
|
{"aes", mbedtls_aes_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_GCM_C) && defined(MBEDTLS_AES_C)
|
||||||
|
{"gcm", mbedtls_gcm_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_CCM_C) && defined(MBEDTLS_AES_C)
|
||||||
|
{"ccm", mbedtls_ccm_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_CMAC_C)
|
||||||
|
{"cmac", mbedtls_cmac_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_BASE64_C)
|
||||||
|
{"base64", mbedtls_base64_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_BIGNUM_C)
|
||||||
|
{"mpi", mbedtls_mpi_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_RSA_C)
|
||||||
|
{"rsa", mbedtls_rsa_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_X509_USE_C)
|
||||||
|
{"x509", mbedtls_x509_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_XTEA_C)
|
||||||
|
{"xtea", mbedtls_xtea_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_CAMELLIA_C)
|
||||||
|
{"camellia", mbedtls_camellia_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_CTR_DRBG_C)
|
||||||
|
{"ctr_drbg", mbedtls_ctr_drbg_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_HMAC_DRBG_C)
|
||||||
|
{"hmac_drbg", mbedtls_hmac_drbg_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_ECP_C)
|
||||||
|
{"ecp", mbedtls_ecp_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_ECJPAKE_C)
|
||||||
|
{"ecjpake", mbedtls_ecjpake_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_DHM_C)
|
||||||
|
{"dhm", mbedtls_dhm_self_test},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_ENTROPY_C)
|
||||||
|
{"entropy", mbedtls_entropy_self_test_wrapper},
|
||||||
|
#endif
|
||||||
|
#if defined(MBEDTLS_PKCS5_C)
|
||||||
|
{"pkcs5", mbedtls_pkcs5_self_test},
|
||||||
|
#endif
|
||||||
|
/* Slower test after the faster ones */
|
||||||
|
#if defined(MBEDTLS_TIMING_C)
|
||||||
|
{"timing", mbedtls_timing_self_test},
|
||||||
|
#endif
|
||||||
|
/* Heap test comes last */
|
||||||
|
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
|
||||||
|
{"memory_buffer_alloc", mbedtls_memory_buffer_alloc_free_and_self_test},
|
||||||
|
#endif
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
int main( int argc, char *argv[] )
|
int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
|
const selftest_t *test;
|
||||||
int v, suites_tested = 0, suites_failed = 0;
|
int v, suites_tested = 0, suites_failed = 0;
|
||||||
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_SELF_TEST)
|
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_SELF_TEST)
|
||||||
unsigned char buf[1000000];
|
unsigned char buf[1000000];
|
||||||
|
@ -182,244 +304,14 @@ int main( int argc, char *argv[] )
|
||||||
mbedtls_memory_buffer_alloc_init( buf, sizeof(buf) );
|
mbedtls_memory_buffer_alloc_init( buf, sizeof(buf) );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_MD2_C)
|
for( test = selftests; test->name != NULL; test++ )
|
||||||
if( mbedtls_md2_self_test( v ) != 0 )
|
|
||||||
{
|
{
|
||||||
suites_failed++;
|
if( test->function( v ) != 0 )
|
||||||
|
{
|
||||||
|
suites_failed++;
|
||||||
|
}
|
||||||
|
suites_tested++;
|
||||||
}
|
}
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_MD4_C)
|
|
||||||
if( mbedtls_md4_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_MD5_C)
|
|
||||||
if( mbedtls_md5_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_RIPEMD160_C)
|
|
||||||
if( mbedtls_ripemd160_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_SHA1_C)
|
|
||||||
if( mbedtls_sha1_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_SHA256_C)
|
|
||||||
if( mbedtls_sha256_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_SHA512_C)
|
|
||||||
if( mbedtls_sha512_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_ARC4_C)
|
|
||||||
if( mbedtls_arc4_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_DES_C)
|
|
||||||
if( mbedtls_des_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_AES_C)
|
|
||||||
if( mbedtls_aes_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_GCM_C) && defined(MBEDTLS_AES_C)
|
|
||||||
if( mbedtls_gcm_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_CCM_C) && defined(MBEDTLS_AES_C)
|
|
||||||
if( mbedtls_ccm_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_CMAC_C)
|
|
||||||
if( ( mbedtls_cmac_self_test( v ) ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_BASE64_C)
|
|
||||||
if( mbedtls_base64_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_BIGNUM_C)
|
|
||||||
if( mbedtls_mpi_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_RSA_C)
|
|
||||||
if( mbedtls_rsa_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_X509_USE_C)
|
|
||||||
if( mbedtls_x509_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_XTEA_C)
|
|
||||||
if( mbedtls_xtea_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_CAMELLIA_C)
|
|
||||||
if( mbedtls_camellia_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_CTR_DRBG_C)
|
|
||||||
if( mbedtls_ctr_drbg_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_HMAC_DRBG_C)
|
|
||||||
if( mbedtls_hmac_drbg_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECP_C)
|
|
||||||
if( mbedtls_ecp_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECJPAKE_C)
|
|
||||||
if( mbedtls_ecjpake_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_DHM_C)
|
|
||||||
if( mbedtls_dhm_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_C)
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_ENTROPY_NV_SEED) && !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
|
|
||||||
create_entropy_seed_file();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( mbedtls_entropy_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_PKCS5_C)
|
|
||||||
if( mbedtls_pkcs5_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Slow tests last */
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_TIMING_C)
|
|
||||||
if( mbedtls_timing_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( v != 0 )
|
|
||||||
{
|
|
||||||
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_MEMORY_DEBUG)
|
|
||||||
mbedtls_memory_buffer_alloc_status();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
|
|
||||||
mbedtls_memory_buffer_alloc_free();
|
|
||||||
if( mbedtls_memory_buffer_alloc_self_test( v ) != 0 )
|
|
||||||
{
|
|
||||||
suites_failed++;
|
|
||||||
}
|
|
||||||
suites_tested++;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
mbedtls_printf( " MBEDTLS_SELF_TEST not defined.\n" );
|
mbedtls_printf( " MBEDTLS_SELF_TEST not defined.\n" );
|
||||||
|
|
Loading…
Reference in a new issue