@@ -539,23 +539,25 @@ void musig_api_tests(secp256k1_scratch_space *scratch) {
539
539
CHECK (ecount == 3 );
540
540
541
541
ecount = 0 ;
542
- {
543
- unsigned char tmp_sig [64 ];
544
- memcpy (tmp_sig , pre_sig , sizeof (tmp_sig ));
545
- CHECK (secp256k1_musig_adapt (none , tmp_sig , sec_adaptor , nonce_parity ) == 1 );
546
- CHECK (secp256k1_musig_adapt (none , NULL , sec_adaptor , 0 ) == 0 );
547
- CHECK (ecount == 1 );
548
- CHECK (secp256k1_musig_adapt (none , max64 , sec_adaptor , 0 ) == 0 );
549
- CHECK (ecount == 1 );
550
- CHECK (secp256k1_musig_adapt (none , tmp_sig , NULL , 0 ) == 0 );
551
- CHECK (ecount == 2 );
552
- CHECK (secp256k1_musig_adapt (none , tmp_sig , max64 , nonce_parity ) == 0 );
553
- CHECK (ecount == 2 );
554
- CHECK (secp256k1_musig_adapt (none , tmp_sig , sec_adaptor , 2 ) == 0 );
555
- CHECK (ecount == 3 );
556
- }
542
+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , sec_adaptor , nonce_parity ) == 1 );
543
+ CHECK (secp256k1_musig_adapt (none , NULL , pre_sig , sec_adaptor , 0 ) == 0 );
544
+ CHECK (ecount == 1 );
545
+ CHECK (secp256k1_musig_adapt (none , final_sig , NULL , sec_adaptor , 0 ) == 0 );
546
+ CHECK (ecount == 2 );
547
+ CHECK (secp256k1_musig_adapt (none , final_sig , max64 , sec_adaptor , 0 ) == 0 );
548
+ CHECK (ecount == 2 );
549
+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , NULL , 0 ) == 0 );
550
+ CHECK (ecount == 3 );
551
+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , max64 , 0 ) == 0 );
552
+ CHECK (ecount == 3 );
553
+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , sec_adaptor , 2 ) == 0 );
554
+ CHECK (ecount == 4 );
555
+ /* sig and pre_sig argument point to the same location */
557
556
memcpy (final_sig , pre_sig , sizeof (final_sig ));
558
- CHECK (secp256k1_musig_adapt (none , final_sig , sec_adaptor , nonce_parity ) == 1 );
557
+ CHECK (secp256k1_musig_adapt (none , final_sig , final_sig , sec_adaptor , nonce_parity ) == 1 );
558
+ CHECK (secp256k1_schnorrsig_verify (vrfy , final_sig , msg , sizeof (msg ), & agg_pk ) == 1 );
559
+
560
+ CHECK (secp256k1_musig_adapt (none , final_sig , pre_sig , sec_adaptor , nonce_parity ) == 1 );
559
561
CHECK (secp256k1_schnorrsig_verify (vrfy , final_sig , msg , sizeof (msg ), & agg_pk ) == 1 );
560
562
561
563
/** Secret adaptor can be extracted from signature */
@@ -647,6 +649,7 @@ void scriptless_atomic_swap(secp256k1_scratch_space *scratch) {
647
649
* while the indices 0 and 1 refer to the two signers. Here signer 0 is
648
650
* sending a-coins to signer 1, while signer 1 is sending b-coins to signer
649
651
* 0. Signer 0 produces the adaptor signatures. */
652
+ unsigned char pre_sig_a [64 ];
650
653
unsigned char final_sig_a [64 ];
651
654
unsigned char pre_sig_b [64 ];
652
655
unsigned char final_sig_b [64 ];
@@ -733,17 +736,16 @@ void scriptless_atomic_swap(secp256k1_scratch_space *scratch) {
733
736
* signature from signer 1 and adapts it. This results in a complete
734
737
* signature which is broadcasted by signer 0 to take B-coins. */
735
738
CHECK (secp256k1_musig_partial_sig_agg (ctx , pre_sig_b , & session_b , partial_sig_b_ptr , 2 ) == 1 );
736
- memcpy (final_sig_b , pre_sig_b , sizeof (final_sig_b ));
737
- CHECK (secp256k1_musig_adapt (ctx , final_sig_b , sec_adaptor , nonce_parity_b ) == 1 );
739
+ CHECK (secp256k1_musig_adapt (ctx , final_sig_b , pre_sig_b , sec_adaptor , nonce_parity_b ) == 1 );
738
740
CHECK (secp256k1_schnorrsig_verify (ctx , final_sig_b , msg32_b , sizeof (msg32_b ), & agg_pk_b ) == 1 );
739
741
740
742
/* Step 6: Signer 1 signs, extracts adaptor from the published signature,
741
743
* and adapts the signature to take A-coins. */
742
744
CHECK (secp256k1_musig_partial_sign (ctx , & partial_sig_a [1 ], & secnonce_a [1 ], & keypair_a [1 ], & keyagg_cache_a , & session_a ) == 1 );
743
- CHECK (secp256k1_musig_partial_sig_agg (ctx , final_sig_a , & session_a , partial_sig_a_ptr , 2 ) == 1 );
745
+ CHECK (secp256k1_musig_partial_sig_agg (ctx , pre_sig_a , & session_a , partial_sig_a_ptr , 2 ) == 1 );
744
746
CHECK (secp256k1_musig_extract_adaptor (ctx , sec_adaptor_extracted , final_sig_b , pre_sig_b , nonce_parity_b ) == 1 );
745
747
CHECK (memcmp (sec_adaptor_extracted , sec_adaptor , sizeof (sec_adaptor )) == 0 ); /* in real life we couldn't check this, of course */
746
- CHECK (secp256k1_musig_adapt (ctx , final_sig_a , sec_adaptor_extracted , nonce_parity_a ) == 1 );
748
+ CHECK (secp256k1_musig_adapt (ctx , final_sig_a , pre_sig_a , sec_adaptor_extracted , nonce_parity_a ) == 1 );
747
749
CHECK (secp256k1_schnorrsig_verify (ctx , final_sig_a , msg32_a , sizeof (msg32_a ), & agg_pk_a ) == 1 );
748
750
}
749
751
0 commit comments