ECDSA: Add mbedtls_ecdsa_can_do
This commit is contained in:
parent
8a0f5bb3c1
commit
0082f9df6f
3 changed files with 32 additions and 5 deletions
20
library/ecdsa.c
Normal file → Executable file
20
library/ecdsa.c
Normal file → Executable file
|
@ -263,9 +263,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp,
|
|||
mbedtls_mpi *pk = &k, *pr = r;
|
||||
|
||||
/* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */
|
||||
if( grp->id == MBEDTLS_ECP_DP_CURVE25519 ||
|
||||
grp->id == MBEDTLS_ECP_DP_CURVE448 ||
|
||||
grp->N.p == NULL )
|
||||
if( !mbedtls_ecdsa_can_do( grp->id ) || grp->N.p == NULL )
|
||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
||||
|
||||
/* Make sure d is in range 1..n-1 */
|
||||
|
@ -380,6 +378,20 @@ cleanup:
|
|||
return( ret );
|
||||
}
|
||||
|
||||
int mbedtls_ecdsa_can_do( mbedtls_ecp_group_id gid )
|
||||
{
|
||||
switch( gid )
|
||||
{
|
||||
#ifdef MBEDTLS_ECP_DP_CURVE25519_ENABLED
|
||||
case MBEDTLS_ECP_DP_CURVE25519: return 0;
|
||||
#endif
|
||||
#ifdef MBEDTLS_ECP_DP_CURVE448_ENABLED
|
||||
case MBEDTLS_ECP_DP_CURVE448: return 0;
|
||||
#endif
|
||||
default: return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Compute ECDSA signature of a hashed message
|
||||
*/
|
||||
|
@ -504,7 +516,7 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp,
|
|||
mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 );
|
||||
|
||||
/* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */
|
||||
if( grp->N.p == NULL )
|
||||
if( !mbedtls_ecdsa_can_do( grp->id ) || grp->N.p == NULL )
|
||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
||||
|
||||
ECDSA_RS_ENTER( ver );
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue