1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-07-30 22:43:08 +03:00

Added ecp_use_known_dp()

This commit is contained in:
Manuel Pégourié-Gonnard
2012-11-07 20:24:05 +01:00
committed by Paul Bakker
parent efaa31e9ae
commit a5402fee04
3 changed files with 88 additions and 5 deletions

View File

@ -154,7 +154,57 @@ cleanup:
return( ret );
}
#define dbg(X) printf(#X " = %s%lu\n", X.s < 0 ? "-" : "", X.p[0])
/*
* Set a group using well-known domain parameters
*/
int ecp_use_known_dp( ecp_group *grp, size_t index )
{
switch( index )
{
case POLARSSL_ECP_DP_SECP192R1:
return( ecp_group_read_string( grp, 16,
POLARSSL_ECP_SECP192R1_P,
POLARSSL_ECP_SECP192R1_B,
POLARSSL_ECP_SECP192R1_GX,
POLARSSL_ECP_SECP192R1_GY,
POLARSSL_ECP_SECP192R1_N )
);
case POLARSSL_ECP_DP_SECP224R1:
return( ecp_group_read_string( grp, 16,
POLARSSL_ECP_SECP224R1_P,
POLARSSL_ECP_SECP224R1_B,
POLARSSL_ECP_SECP224R1_GX,
POLARSSL_ECP_SECP224R1_GY,
POLARSSL_ECP_SECP224R1_N )
);
case POLARSSL_ECP_DP_SECP256R1:
return( ecp_group_read_string( grp, 16,
POLARSSL_ECP_SECP256R1_P,
POLARSSL_ECP_SECP256R1_B,
POLARSSL_ECP_SECP256R1_GX,
POLARSSL_ECP_SECP256R1_GY,
POLARSSL_ECP_SECP256R1_N )
);
case POLARSSL_ECP_DP_SECP384R1:
return( ecp_group_read_string( grp, 16,
POLARSSL_ECP_SECP384R1_P,
POLARSSL_ECP_SECP384R1_B,
POLARSSL_ECP_SECP384R1_GX,
POLARSSL_ECP_SECP384R1_GY,
POLARSSL_ECP_SECP384R1_N )
);
case POLARSSL_ECP_DP_SECP521R1:
return( ecp_group_read_string( grp, 16,
POLARSSL_ECP_SECP521R1_P,
POLARSSL_ECP_SECP521R1_B,
POLARSSL_ECP_SECP521R1_GX,
POLARSSL_ECP_SECP521R1_GY,
POLARSSL_ECP_SECP521R1_N )
);
}
return( POLARSSL_ERR_ECP_GENERIC );
}
/*
* Addition: R = P + Q, generic case (P != Q, P != 0, Q != 0, R != 0)
@ -476,7 +526,7 @@ int ecp_self_test( int verbose )
}
}
if (verbose != 0 )
if( verbose != 0 )
printf( "passed\n" );
MPI_CHK( ecp_copy( &mul_tbl[0], &O ) );
@ -507,9 +557,21 @@ int ecp_self_test( int verbose )
}
}
if (verbose != 0 )
if( verbose != 0 )
printf( "passed\n" );
if( verbose != 0 )
printf( " ECP test #3 (use_known_dp): " );
for( i = 0; i <= POLARSSL_ECP_DP_SECP521R1; i++ )
{
MPI_CHK( ecp_use_known_dp( &grp, i ) );
}
if( verbose != 0 )
printf( "passed\n" );
cleanup:
if( ret != 0 && verbose != 0 )