Skip to content

Commit 4acc619

Browse files
committed
Avoid recomputing Ge normalized from Gej in Nonce process
In secp256k1_musig_nonce_process(), we already have aggnonce in normalized form. We don't need to recompute them again in secp256k1_musig_nonce_process_internal().
1 parent 725d895 commit 4acc619

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/modules/musig/session_impl.h

+14-13
Original file line numberDiff line numberDiff line change
@@ -393,17 +393,25 @@ static int secp256k1_musig_compute_noncehash(unsigned char *noncehash, secp256k1
393393
return 1;
394394
}
395395

396-
static int secp256k1_musig_nonce_process_internal(int *fin_nonce_parity, unsigned char *fin_nonce, secp256k1_scalar *b, secp256k1_gej *aggnoncej, const unsigned char *agg_pk32, const unsigned char *msg) {
396+
static int secp256k1_musig_nonce_process_internal(const secp256k1_context* ctx, int *fin_nonce_parity, unsigned char *fin_nonce, secp256k1_scalar *b, secp256k1_gej *aggnoncej, secp256k1_ge *aggnonce, const unsigned char *agg_pk32, const unsigned char *msg, const secp256k1_pubkey *adaptor) {
397397
unsigned char noncehash[32];
398398
secp256k1_ge fin_nonce_pt;
399399
secp256k1_gej fin_nonce_ptj;
400-
secp256k1_ge aggnonce[2];
401400

402-
secp256k1_ge_set_gej(&aggnonce[0], &aggnoncej[0]);
403-
secp256k1_ge_set_gej(&aggnonce[1], &aggnoncej[1]);
401+
/* Add public adaptor to nonce */
402+
if (adaptor != NULL) {
403+
secp256k1_ge adaptorp;
404+
if (!secp256k1_pubkey_load(ctx, &adaptorp, adaptor)) {
405+
return 0;
406+
}
407+
secp256k1_gej_add_ge_var(&aggnoncej[0], &aggnoncej[0], &adaptorp, NULL);
408+
secp256k1_ge_set_gej(&aggnonce[0], &aggnoncej[0]);
409+
}
410+
404411
if (!secp256k1_musig_compute_noncehash(noncehash, aggnonce, agg_pk32, msg)) {
405412
return 0;
406413
}
414+
407415
/* fin_nonce = aggnonce[0] + b*aggnonce[1] */
408416
secp256k1_scalar_set_b32(b, noncehash, NULL);
409417
secp256k1_ecmult(&fin_nonce_ptj, &aggnoncej[1], b, NULL);
@@ -442,15 +450,8 @@ int secp256k1_musig_nonce_process(const secp256k1_context* ctx, secp256k1_musig_
442450
}
443451
secp256k1_gej_set_ge(&aggnonce_ptj[0], &aggnonce_pt[0]);
444452
secp256k1_gej_set_ge(&aggnonce_ptj[1], &aggnonce_pt[1]);
445-
/* Add public adaptor to nonce */
446-
if (adaptor != NULL) {
447-
secp256k1_ge adaptorp;
448-
if (!secp256k1_pubkey_load(ctx, &adaptorp, adaptor)) {
449-
return 0;
450-
}
451-
secp256k1_gej_add_ge_var(&aggnonce_ptj[0], &aggnonce_ptj[0], &adaptorp, NULL);
452-
}
453-
if (!secp256k1_musig_nonce_process_internal(&session_i.fin_nonce_parity, fin_nonce, &session_i.noncecoef, aggnonce_ptj, agg_pk32, msg32)) {
453+
454+
if (!secp256k1_musig_nonce_process_internal(ctx, &session_i.fin_nonce_parity, fin_nonce, &session_i.noncecoef, aggnonce_ptj, aggnonce_pt, agg_pk32, msg32, adaptor)) {
454455
return 0;
455456
}
456457

0 commit comments

Comments
 (0)