@ -138,16 +138,15 @@ int secp256k1_ecdsa_sign_recoverable(const secp256k1_context* ctx, secp256k1_ecd
secp256k1_scalar_set_b32 ( & sec , seckey , & overflow ) ;
secp256k1_scalar_set_b32 ( & sec , seckey , & overflow ) ;
/* Fail if the secret key is invalid. */
/* Fail if the secret key is invalid. */
if ( ! overflow & & ! secp256k1_scalar_is_zero ( & sec ) ) {
if ( ! overflow & & ! secp256k1_scalar_is_zero ( & sec ) ) {
unsigned char nonce32 [ 32 ] ;
unsigned int count = 0 ;
unsigned int count = 0 ;
secp256k1_scalar_set_b32 ( & msg , msg32 , NULL ) ;
secp256k1_scalar_set_b32 ( & msg , msg32 , NULL ) ;
while ( 1 ) {
while ( 1 ) {
unsigned char nonce32 [ 32 ] ;
ret = noncefp ( nonce32 , msg32 , seckey , NULL , ( void * ) noncedata , count ) ;
ret = noncefp ( nonce32 , msg32 , seckey , NULL , ( void * ) noncedata , count ) ;
if ( ! ret ) {
if ( ! ret ) {
break ;
break ;
}
}
secp256k1_scalar_set_b32 ( & non , nonce32 , & overflow ) ;
secp256k1_scalar_set_b32 ( & non , nonce32 , & overflow ) ;
memset ( nonce32 , 0 , 32 ) ;
if ( ! secp256k1_scalar_is_zero ( & non ) & & ! overflow ) {
if ( ! secp256k1_scalar_is_zero ( & non ) & & ! overflow ) {
if ( secp256k1_ecdsa_sig_sign ( & ctx - > ecmult_gen_ctx , & r , & s , & sec , & msg , & non , & recid ) ) {
if ( secp256k1_ecdsa_sig_sign ( & ctx - > ecmult_gen_ctx , & r , & s , & sec , & msg , & non , & recid ) ) {
break ;
break ;
@ -155,6 +154,7 @@ int secp256k1_ecdsa_sign_recoverable(const secp256k1_context* ctx, secp256k1_ecd
}
}
count + + ;
count + + ;
}
}
memset ( nonce32 , 0 , 32 ) ;
secp256k1_scalar_clear ( & msg ) ;
secp256k1_scalar_clear ( & msg ) ;
secp256k1_scalar_clear ( & non ) ;
secp256k1_scalar_clear ( & non ) ;
secp256k1_scalar_clear ( & sec ) ;
secp256k1_scalar_clear ( & sec ) ;