Add checks for private parameter in ecdsa_sign()
diff --git a/ChangeLog b/ChangeLog
index 6a1be98..a90ee11 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,6 +14,8 @@
* Fix leap year calculation in x509_date_is_valid() to ensure that invalid
dates on leap years with 100 and 400 intervals are handled correctly. Found
by Nicholas Wilson. #694
+ * Add a check for invalid private parameters in ecdsa_sign.
+ Reported by Yolan Romailler.
= mbed TLS 1.3.21 branch released 2017-08-10
diff --git a/library/ecdsa.c b/library/ecdsa.c
index 3f72d85..e95b802 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -110,6 +110,10 @@
if( grp->N.p == NULL )
return( POLARSSL_ERR_ECP_BAD_INPUT_DATA );
+ /* Make sure d is in range 1..n-1 */
+ if( mpi_cmp_int( d, 1 ) < 0 || mpi_cmp_mpi( d, &grp->N ) >= 0 )
+ return( POLARSSL_ERR_ECP_INVALID_KEY );
+
ecp_point_init( &R );
mpi_init( &k ); mpi_init( &e ); mpi_init( &t );