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

Merged ECP improvements

This commit is contained in:
Paul Bakker
2013-11-26 15:19:17 +01:00
8 changed files with 572 additions and 308 deletions

View File

@ -50,10 +50,10 @@ ECP small subtraction #9
ecp_small_sub:0:"14":"11":0:"14":"36":0:27:30
ECP small multiplication negative
ecp_small_mul:-1:0:0:0:POLARSSL_ERR_ECP_BAD_INPUT_DATA
ecp_small_mul:-1:0:0:0:POLARSSL_ERR_ECP_INVALID_KEY
ECP small multiplication #0
ecp_small_mul:0:1:0:0:0
ecp_small_mul:0:1:0:0:POLARSSL_ERR_ECP_INVALID_KEY
ECP small multiplication #1
ecp_small_mul:1:0:17:42:0
@ -92,16 +92,10 @@ ECP small multiplication #12
ecp_small_mul:12:0:17:05:0
ECP small multiplication #13
ecp_small_mul:13:1:0:0:0
ecp_small_mul:13:1:0:0:POLARSSL_ERR_ECP_INVALID_KEY
ECP small multiplication #14
ecp_small_mul:1:0:17:42:0
ECP small multiplication #15
ecp_small_mul:2:0:20:01:0
ECP small multiplication too big
ecp_small_mul:-1:0:0:0:POLARSSL_ERR_ECP_BAD_INPUT_DATA
ecp_small_mul:14:0:17:42:POLARSSL_ERR_ECP_INVALID_KEY
ECP small check pubkey #1
ecp_small_check_pub:1:1:0:POLARSSL_ERR_ECP_INVALID_KEY

View File

@ -115,12 +115,15 @@ void ecp_small_mul( int m_str, int r_zero, int x_r, int y_r, int ret )
TEST_ASSERT( ecp_mul( &grp, &R, &m, &grp.G, NULL, NULL ) == ret );
if( r_zero )
TEST_ASSERT( mpi_cmp_int( &R.Z, 0 ) == 0 );
else
if( ret == 0 )
{
TEST_ASSERT( mpi_cmp_int( &R.X, x_r ) == 0 );
TEST_ASSERT( mpi_cmp_int( &R.Y, y_r ) == 0 );
if( r_zero )
TEST_ASSERT( mpi_cmp_int( &R.Z, 0 ) == 0 );
else
{
TEST_ASSERT( mpi_cmp_int( &R.X, x_r ) == 0 );
TEST_ASSERT( mpi_cmp_int( &R.Y, y_r ) == 0 );
}
}
/* try again with randomization */
@ -129,12 +132,15 @@ void ecp_small_mul( int m_str, int r_zero, int x_r, int y_r, int ret )
TEST_ASSERT( ecp_mul( &grp, &R, &m, &grp.G,
&rnd_pseudo_rand, &rnd_info ) == ret );
if( r_zero )
TEST_ASSERT( mpi_cmp_int( &R.Z, 0 ) == 0 );
else
if( ret == 0 )
{
TEST_ASSERT( mpi_cmp_int( &R.X, x_r ) == 0 );
TEST_ASSERT( mpi_cmp_int( &R.Y, y_r ) == 0 );
if( r_zero )
TEST_ASSERT( mpi_cmp_int( &R.Z, 0 ) == 0 );
else
{
TEST_ASSERT( mpi_cmp_int( &R.X, x_r ) == 0 );
TEST_ASSERT( mpi_cmp_int( &R.Y, y_r ) == 0 );
}
}
ecp_group_free( &grp );

View File

@ -181,6 +181,48 @@ mpi_copy_self:14
Base test mpi_swap #1
mpi_swap:0:1500
Test mpi_shrink #1
mpi_shrink:2:2:4:4
Test mpi_shrink #2
mpi_shrink:4:2:4:4
Test mpi_shrink #3
mpi_shrink:8:2:4:4
Test mpi_shrink #4
mpi_shrink:8:4:4:4
Test mpi_shrink #5
mpi_shrink:8:6:4:6
Test mpi_shrink #6
mpi_shrink:4:2:0:2
Test mpi_shrink #7
mpi_shrink:4:1:0:1
Test mpi_shrink #8
mpi_shrink:4:0:0:1
Test mpi_safe_cond_assign #1
mpi_safe_cond_assign:+1:"01":+1:"02"
Test mpi_safe_cond_assign #2
mpi_safe_cond_assign:+1:"FF000000000000000001":+1:"02"
Test mpi_safe_cond_assign #3
mpi_safe_cond_assign:+1:"01":+1:"FF000000000000000002"
Test mpi_safe_cond_assign #4
mpi_safe_cond_assign:+1:"01":-1:"02"
Test mpi_safe_cond_assign #5
mpi_safe_cond_assign:-1:"01":+1:"02"
Test mpi_safe_cond_assign #6
mpi_safe_cond_assign:-1:"01":-1:"02"
Base test mpi_add_abs #1
mpi_add_abs:10:"12345678":10:"642531":10:"12988209"

View File

@ -292,6 +292,45 @@ void mpi_copy_self( int input_X )
}
/* END_CASE */
/* BEGIN_CASE */
void mpi_shrink( int before, int used, int min, int after )
{
mpi X;
mpi_init( &X );
TEST_ASSERT( mpi_grow( &X, before ) == 0 );
TEST_ASSERT( used <= before );
memset( X.p, 0x2a, used * sizeof( t_uint ) );
TEST_ASSERT( mpi_shrink( &X, min ) == 0 );
TEST_ASSERT( X.n == (size_t) after );
mpi_free( &X );
}
/* END_CASE */
/* BEGIN_CASE */
void mpi_safe_cond_assign( int x_sign, char *x_str,
int y_sign, char *y_str )
{
mpi X, Y, XX;
mpi_init( &X ); mpi_init( &Y ); mpi_init( &XX );
TEST_ASSERT( mpi_read_string( &X, 16, x_str ) == 0 );
X.s = x_sign;
TEST_ASSERT( mpi_read_string( &Y, 16, y_str ) == 0 );
Y.s = y_sign;
TEST_ASSERT( mpi_copy( &XX, &X ) == 0 );
TEST_ASSERT( mpi_safe_cond_assign( &X, &Y, 0 ) == 0 );
TEST_ASSERT( mpi_cmp_mpi( &X, &XX ) == 0 );
TEST_ASSERT( mpi_safe_cond_assign( &X, &Y, 1 ) == 0 );
TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == 0 );
mpi_free( &X ); mpi_free( &Y ); mpi_free( &XX );
}
/* END_CASE */
/* BEGIN_CASE */
void mpi_swap( int input_X, int input_Y )
{