1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-08-01 10:06:53 +03:00

Merged blinding additions for EC, RSA and DHM into development

This commit is contained in:
Paul Bakker
2013-09-10 14:44:27 +02:00
20 changed files with 527 additions and 117 deletions

View File

@ -239,7 +239,7 @@ int main( int argc, char *argv[] )
fflush( stdout );
n = dhm.len;
if( ( ret = dhm_calc_secret( &dhm, buf, &n ) ) != 0 )
if( ( ret = dhm_calc_secret( &dhm, buf, &n, NULL, NULL ) ) != 0 )
{
printf( " failed\n ! dhm_calc_secret returned %d\n\n", ret );
goto exit;

View File

@ -242,7 +242,7 @@ int main( int argc, char *argv[] )
printf( "\n . Shared secret: " );
fflush( stdout );
if( ( ret = dhm_calc_secret( &dhm, buf, &n ) ) != 0 )
if( ( ret = dhm_calc_secret( &dhm, buf, &n, NULL, NULL ) ) != 0 )
{
printf( " failed\n ! dhm_calc_secret returned %d\n\n", ret );
goto exit;

View File

@ -92,7 +92,7 @@ int main( int argc, char *argv[] )
#else
int main( int argc, char *argv[] )
{
int keysize;
int ret, keysize;
unsigned long i, j, tsc;
unsigned char tmp[64];
#if defined(POLARSSL_ARC4_C)
@ -431,25 +431,33 @@ int main( int argc, char *argv[] )
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
buf[0] = 0;
rsa_public( &rsa, buf, buf );
ret = rsa_public( &rsa, buf, buf );
}
printf( "%9lu public/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu public/s\n", i / 3 );
printf( HEADER_FORMAT, "RSA-1024" );
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
buf[0] = 0;
rsa_private( &rsa, buf, buf );
ret = rsa_private( &rsa, myrand, NULL, buf, buf );
}
printf( "%9lu private/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu private/s\n", i / 3 );
rsa_free( &rsa );
@ -460,25 +468,33 @@ int main( int argc, char *argv[] )
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
buf[0] = 0;
rsa_public( &rsa, buf, buf );
ret = rsa_public( &rsa, buf, buf );
}
printf( "%9lu public/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu public/s\n", i / 3 );
printf( HEADER_FORMAT, "RSA-2048" );
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
buf[0] = 0;
rsa_private( &rsa, buf, buf );
ret = rsa_private( &rsa, myrand, NULL, buf, buf );
}
printf( "%9lu private/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu private/s\n", i / 3 );
rsa_free( &rsa );
@ -489,25 +505,33 @@ int main( int argc, char *argv[] )
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
buf[0] = 0;
rsa_public( &rsa, buf, buf );
ret = rsa_public( &rsa, buf, buf );
}
printf( "%9lu public/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu public/s\n", i / 3 );
printf( HEADER_FORMAT, "RSA-4096" );
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
buf[0] = 0;
rsa_private( &rsa, buf, buf );
ret = rsa_private( &rsa, myrand, NULL, buf, buf );
}
printf( "%9lu private/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu private/s\n", i / 3 );
rsa_free( &rsa );
#endif
@ -525,13 +549,34 @@ int main( int argc, char *argv[] )
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
dhm_make_public( &dhm, dhm.len, buf, dhm.len, myrand, NULL );
dhm_calc_secret( &dhm, buf, &olen );
olen = sizeof( buf );
ret |= dhm_make_public( &dhm, dhm.len, buf, dhm.len, myrand, NULL );
ret |= dhm_calc_secret( &dhm, buf, &olen, NULL, NULL );
}
printf( "%9lu handshake/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu handshake/s\n", i / 3 );
printf( HEADER_FORMAT, "fixed-DHM-1024" );
fflush( stdout );
set_alarm( 3 );
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
olen = sizeof( buf );
ret |= dhm_calc_secret( &dhm, buf, &olen, myrand, NULL );
}
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu handshake/s\n", i / 3 );
dhm_free( &dhm );
@ -547,16 +592,36 @@ int main( int argc, char *argv[] )
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
dhm_make_public( &dhm, dhm.len, buf, dhm.len, myrand, NULL );
dhm_calc_secret( &dhm, buf, &olen );
olen = sizeof( buf );
ret |= dhm_make_public( &dhm, dhm.len, buf, dhm.len, myrand, NULL );
ret |= dhm_calc_secret( &dhm, buf, &olen, myrand, NULL );
}
printf( "%9lu handshake/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu handshake/s\n", i / 3 );
printf( HEADER_FORMAT, "fixed-DHM-2048" );
fflush( stdout );
set_alarm( 3 );
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
olen = sizeof( buf );
ret |= dhm_calc_secret( &dhm, buf, &olen, NULL, NULL );
}
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu handshake/s\n", i / 3 );
dhm_free( &dhm );
memset( &dhm, 0, sizeof( dhm_context ) );
mpi_read_string( &dhm.P, 16, POLARSSL_DHM_RFC3526_MODP_3072_P );
@ -569,13 +634,34 @@ int main( int argc, char *argv[] )
fflush( stdout );
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
dhm_make_public( &dhm, dhm.len, buf, dhm.len, myrand, NULL );
dhm_calc_secret( &dhm, buf, &olen );
olen = sizeof( buf );
ret |= dhm_make_public( &dhm, dhm.len, buf, dhm.len, myrand, NULL );
ret |= dhm_calc_secret( &dhm, buf, &olen, NULL, NULL );
}
printf( "%9lu handshake/s\n", i / 3 );
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu handshake/s\n", i / 3 );
printf( HEADER_FORMAT, "fixed-DHM-3072" );
fflush( stdout );
set_alarm( 3 );
ret = 0;
for( i = 1; ! alarmed && ! ret ; i++ )
{
olen = sizeof( buf );
ret |= dhm_calc_secret( &dhm, buf, &olen, myrand, NULL );
}
if( ret != 0 )
printf( "FAILED\n" );
else
printf( "%9lu handshake/s\n", i / 3 );
dhm_free( &dhm );
#endif

View File

@ -28,6 +28,29 @@ int main( int argc, char *argv[] )
#else
static int myrand( void *rng_state, unsigned char *output, size_t len )
{
size_t use_len;
int rnd;
if( rng_state != NULL )
rng_state = NULL;
while( len > 0 )
{
use_len = len;
if( use_len > sizeof(int) )
use_len = sizeof(int);
rnd = rand();
memcpy( output, &rnd, use_len );
output += use_len;
len -= use_len;
}
return( 0 );
}
static void dhm_bench_case( const char *s, const char *p,
const char *g, const char *x )
{
@ -161,7 +184,7 @@ static void ecp_bench_case( size_t dp, const char *s, const char *m )
set_alarm( 3 );
for( i = 1; ! alarmed; i++ )
ecp_mul( &grp, &R, &M, &grp.G );
ecp_mul( &grp, &R, &M, &grp.G, myrand, NULL );
printf( "%9lu mul/s\n", i / 3 );