ECDH: Make benchmarks check MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
This commit is contained in:
parent
6ea2dea1c5
commit
9597238058
1 changed files with 62 additions and 65 deletions
|
@ -190,7 +190,12 @@ do { \
|
||||||
CODE; \
|
CODE; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
if( ret != 0 ) \
|
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED ) \
|
||||||
|
{ \
|
||||||
|
mbedtls_printf( "Feature Not Supported. Skipping.\n" ); \
|
||||||
|
ret = 0; \
|
||||||
|
} \
|
||||||
|
else if( ret != 0 ) \
|
||||||
{ \
|
{ \
|
||||||
PRINT_ERROR; \
|
PRINT_ERROR; \
|
||||||
} \
|
} \
|
||||||
|
@ -225,13 +230,17 @@ static int myrand( void *rng_state, unsigned char *output, size_t len )
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECDH_C)
|
#define CHECK_AND_CONTINUE( R ) \
|
||||||
static void check( int r )
|
{ \
|
||||||
{
|
int ret = ( R ); \
|
||||||
if( r != 0 )
|
if( ret == MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED ) { \
|
||||||
mbedtls_exit( 1 );
|
mbedtls_printf( "Feature not supported. Skipping.\n" ); \
|
||||||
}
|
continue; \
|
||||||
#endif
|
} \
|
||||||
|
else if( ret != 0 ) { \
|
||||||
|
mbedtls_exit( 1 ); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clear some memory that was used to prepare the context
|
* Clear some memory that was used to prepare the context
|
||||||
|
@ -904,22 +913,19 @@ int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
mbedtls_ecdh_init( &ecdh );
|
mbedtls_ecdh_init( &ecdh );
|
||||||
|
|
||||||
if( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) );
|
||||||
mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
CHECK_AND_CONTINUE( mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
||||||
myrand, NULL ) != 0 ||
|
myrand, NULL ) );
|
||||||
mbedtls_ecp_copy( &ecdh.Qp, &ecdh.Q ) != 0 )
|
CHECK_AND_CONTINUE( mbedtls_ecp_copy( &ecdh.Qp, &ecdh.Q ) );
|
||||||
{
|
|
||||||
mbedtls_exit( 1 );
|
|
||||||
}
|
|
||||||
ecp_clear_precomputed( &ecdh.grp );
|
ecp_clear_precomputed( &ecdh.grp );
|
||||||
|
|
||||||
mbedtls_snprintf( title, sizeof( title ), "ECDHE-%s",
|
mbedtls_snprintf( title, sizeof( title ), "ECDHE-%s",
|
||||||
curve_info->name );
|
curve_info->name );
|
||||||
TIME_PUBLIC( title, "handshake",
|
TIME_PUBLIC( title, "handshake",
|
||||||
ret |= mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
CHECK_AND_CONTINUE( mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
||||||
myrand, NULL );
|
|
||||||
ret |= mbedtls_ecdh_calc_secret( &ecdh, &olen, buf, sizeof( buf ),
|
|
||||||
myrand, NULL ) );
|
myrand, NULL ) );
|
||||||
|
CHECK_AND_CONTINUE( mbedtls_ecdh_calc_secret( &ecdh, &olen, buf, sizeof( buf ),
|
||||||
|
myrand, NULL ) ) );
|
||||||
mbedtls_ecdh_free( &ecdh );
|
mbedtls_ecdh_free( &ecdh );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -931,19 +937,16 @@ int main( int argc, char *argv[] )
|
||||||
mbedtls_ecdh_init( &ecdh );
|
mbedtls_ecdh_init( &ecdh );
|
||||||
mbedtls_mpi_init( &z );
|
mbedtls_mpi_init( &z );
|
||||||
|
|
||||||
if( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) );
|
||||||
mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Qp, myrand, NULL ) != 0 )
|
CHECK_AND_CONTINUE( mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Qp, myrand, NULL ) );
|
||||||
{
|
|
||||||
mbedtls_exit( 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
mbedtls_snprintf( title, sizeof(title), "ECDHE-%s",
|
mbedtls_snprintf( title, sizeof(title), "ECDHE-%s",
|
||||||
curve_info->name );
|
curve_info->name );
|
||||||
TIME_PUBLIC( title, "handshake",
|
TIME_PUBLIC( title, "handshake",
|
||||||
ret |= mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Q,
|
CHECK_AND_CONTINUE( mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Q,
|
||||||
myrand, NULL );
|
myrand, NULL ) );
|
||||||
ret |= mbedtls_ecdh_compute_shared( &ecdh.grp, &z, &ecdh.Qp, &ecdh.d,
|
CHECK_AND_CONTINUE( mbedtls_ecdh_compute_shared( &ecdh.grp, &z, &ecdh.Qp, &ecdh.d,
|
||||||
myrand, NULL ) );
|
myrand, NULL ) ) );
|
||||||
|
|
||||||
mbedtls_ecdh_free( &ecdh );
|
mbedtls_ecdh_free( &ecdh );
|
||||||
mbedtls_mpi_free( &z );
|
mbedtls_mpi_free( &z );
|
||||||
|
@ -955,22 +958,19 @@ int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
mbedtls_ecdh_init( &ecdh );
|
mbedtls_ecdh_init( &ecdh );
|
||||||
|
|
||||||
if( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) );
|
||||||
mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
CHECK_AND_CONTINUE( mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
||||||
myrand, NULL ) != 0 ||
|
myrand, NULL ) );
|
||||||
mbedtls_ecp_copy( &ecdh.Qp, &ecdh.Q ) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_copy( &ecdh.Qp, &ecdh.Q ) );
|
||||||
mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
CHECK_AND_CONTINUE( mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf),
|
||||||
myrand, NULL ) != 0 )
|
myrand, NULL ) );
|
||||||
{
|
|
||||||
mbedtls_exit( 1 );
|
|
||||||
}
|
|
||||||
ecp_clear_precomputed( &ecdh.grp );
|
ecp_clear_precomputed( &ecdh.grp );
|
||||||
|
|
||||||
mbedtls_snprintf( title, sizeof( title ), "ECDH-%s",
|
mbedtls_snprintf( title, sizeof( title ), "ECDH-%s",
|
||||||
curve_info->name );
|
curve_info->name );
|
||||||
TIME_PUBLIC( title, "handshake",
|
TIME_PUBLIC( title, "handshake",
|
||||||
ret |= mbedtls_ecdh_calc_secret( &ecdh, &olen, buf, sizeof( buf ),
|
CHECK_AND_CONTINUE( mbedtls_ecdh_calc_secret( &ecdh, &olen, buf, sizeof( buf ),
|
||||||
myrand, NULL ) );
|
myrand, NULL ) ) );
|
||||||
mbedtls_ecdh_free( &ecdh );
|
mbedtls_ecdh_free( &ecdh );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -982,19 +982,16 @@ int main( int argc, char *argv[] )
|
||||||
mbedtls_ecdh_init( &ecdh );
|
mbedtls_ecdh_init( &ecdh );
|
||||||
mbedtls_mpi_init( &z );
|
mbedtls_mpi_init( &z );
|
||||||
|
|
||||||
if( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) );
|
||||||
mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Qp,
|
CHECK_AND_CONTINUE( mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Qp,
|
||||||
myrand, NULL ) != 0 ||
|
myrand, NULL ) );
|
||||||
mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Q, myrand, NULL ) != 0 )
|
CHECK_AND_CONTINUE( mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Q, myrand, NULL ) );
|
||||||
{
|
|
||||||
mbedtls_exit( 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
mbedtls_snprintf( title, sizeof(title), "ECDH-%s",
|
mbedtls_snprintf( title, sizeof(title), "ECDH-%s",
|
||||||
curve_info->name );
|
curve_info->name );
|
||||||
TIME_PUBLIC( title, "handshake",
|
TIME_PUBLIC( title, "handshake",
|
||||||
ret |= mbedtls_ecdh_compute_shared( &ecdh.grp, &z, &ecdh.Qp, &ecdh.d,
|
CHECK_AND_CONTINUE( mbedtls_ecdh_compute_shared( &ecdh.grp, &z, &ecdh.Qp, &ecdh.d,
|
||||||
myrand, NULL ) );
|
myrand, NULL ) ) );
|
||||||
|
|
||||||
mbedtls_ecdh_free( &ecdh );
|
mbedtls_ecdh_free( &ecdh );
|
||||||
mbedtls_mpi_free( &z );
|
mbedtls_mpi_free( &z );
|
||||||
|
@ -1017,35 +1014,35 @@ int main( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
mbedtls_ecdh_init( &ecdh_srv );
|
mbedtls_ecdh_init( &ecdh_srv );
|
||||||
mbedtls_ecdh_init( &ecdh_cli );
|
mbedtls_ecdh_init( &ecdh_cli );
|
||||||
check( mbedtls_ecdh_setup( &ecdh_srv, curve_info->grp_id ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_setup( &ecdh_srv, curve_info->grp_id ) );
|
||||||
check( mbedtls_ecdh_setup( &ecdh_cli, curve_info->grp_id ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_setup( &ecdh_cli, curve_info->grp_id ) );
|
||||||
|
|
||||||
#if defined(MBEDTLS_ECDH_LEGACY_CONTEXT)
|
#if defined(MBEDTLS_ECDH_LEGACY_CONTEXT)
|
||||||
if (mbedtls_ecp_group_load(&ecdh_srv.grp, curve_info->grp_id) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_group_load(&ecdh_srv.grp, curve_info->grp_id));
|
||||||
mbedtls_ecdh_gen_public(&ecdh_srv.grp,
|
CHECK_AND_CONTINUE( mbedtls_ecdh_gen_public(&ecdh_srv.grp,
|
||||||
&ecdh_srv.d,
|
&ecdh_srv.d,
|
||||||
&ecdh_srv.Q, myrand, NULL) != 0)
|
&ecdh_srv.Q, myrand, NULL));
|
||||||
#else
|
#else
|
||||||
if( ecdh_srv.var == MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0 && (
|
if( ecdh_srv.var == MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0 ) {
|
||||||
mbedtls_ecp_group_load( &ecdh_srv.ctx.mbed_ecdh.grp, curve_info->grp_id ) != 0 ||
|
CHECK_AND_CONTINUE( mbedtls_ecp_group_load( &ecdh_srv.ctx.mbed_ecdh.grp, curve_info->grp_id ));
|
||||||
mbedtls_ecdh_gen_public( &ecdh_srv.ctx.mbed_ecdh.grp,
|
CHECK_AND_CONTINUE( mbedtls_ecdh_gen_public( &ecdh_srv.ctx.mbed_ecdh.grp,
|
||||||
&ecdh_srv.ctx.mbed_ecdh.d,
|
&ecdh_srv.ctx.mbed_ecdh.d,
|
||||||
&ecdh_srv.ctx.mbed_ecdh.Q, myrand, NULL ) != 0 ))
|
&ecdh_srv.ctx.mbed_ecdh.Q, myrand, NULL ));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
mbedtls_exit( 1 );
|
|
||||||
|
|
||||||
mbedtls_snprintf( title, sizeof( title ), "ECDHE-%s", curve_info->name );
|
mbedtls_snprintf( title, sizeof( title ), "ECDHE-%s", curve_info->name );
|
||||||
TIME_PUBLIC( title, "full handshake",
|
TIME_PUBLIC( title, "full handshake",
|
||||||
const unsigned char * p_srv = buf_srv;
|
const unsigned char * p_srv = buf_srv;
|
||||||
check( mbedtls_ecdh_make_params( &ecdh_srv, &olen, buf_srv, sizeof( buf_srv ), myrand, NULL ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_make_params( &ecdh_srv, &olen, buf_srv, sizeof( buf_srv ), myrand, NULL ) );
|
||||||
|
|
||||||
check( mbedtls_ecdh_read_params( &ecdh_cli, &p_srv, p_srv + olen ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_read_params( &ecdh_cli, &p_srv, p_srv + olen ) );
|
||||||
check( mbedtls_ecdh_make_public( &ecdh_cli, &olen, buf_cli, sizeof( buf_cli ), myrand, NULL ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_make_public( &ecdh_cli, &olen, buf_cli, sizeof( buf_cli ), myrand, NULL ) );
|
||||||
|
|
||||||
check( mbedtls_ecdh_read_public( &ecdh_srv, buf_cli, olen ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_read_public( &ecdh_srv, buf_cli, olen ) );
|
||||||
check( mbedtls_ecdh_calc_secret( &ecdh_srv, &olen, buf_srv, sizeof( buf_srv ), myrand, NULL ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_calc_secret( &ecdh_srv, &olen, buf_srv, sizeof( buf_srv ), myrand, NULL ) );
|
||||||
|
|
||||||
check( mbedtls_ecdh_calc_secret( &ecdh_cli, &olen, buf_cli, sizeof( buf_cli ), myrand, NULL ) );
|
CHECK_AND_CONTINUE( mbedtls_ecdh_calc_secret( &ecdh_cli, &olen, buf_cli, sizeof( buf_cli ), myrand, NULL ) );
|
||||||
);
|
);
|
||||||
|
|
||||||
mbedtls_ecdh_free( &ecdh_srv );
|
mbedtls_ecdh_free( &ecdh_srv );
|
||||||
|
|
Loading…
Reference in a new issue