@@ -946,6 +946,47 @@ void musig_tweak_test(secp256k1_scratch_space *scratch) {
946
946
musig_tweak_test_helper (& Q_xonly , sk [0 ], sk [1 ], & pre_session_Q );
947
947
}
948
948
949
+ void musig_test_vectors (void ) {
950
+ secp256k1_xonly_pubkey combined_pk ;
951
+ unsigned char combined_pk_ser [32 ];
952
+ secp256k1_xonly_pubkey pk [2 ];
953
+ const unsigned char pk_ser1 [32 ] = {
954
+ 0xF9 , 0x30 , 0x8A , 0x01 , 0x92 , 0x58 , 0xC3 , 0x10 ,
955
+ 0x49 , 0x34 , 0x4F , 0x85 , 0xF8 , 0x9D , 0x52 , 0x29 ,
956
+ 0xB5 , 0x31 , 0xC8 , 0x45 , 0x83 , 0x6F , 0x99 , 0xB0 ,
957
+ 0x86 , 0x01 , 0xF1 , 0x13 , 0xBC , 0xE0 , 0x36 , 0xF9
958
+ };
959
+ const unsigned char pk_ser2 [32 ] = {
960
+ 0xDF , 0xF1 , 0xD7 , 0x7F , 0x2A , 0x67 , 0x1C , 0x5F ,
961
+ 0x36 , 0x18 , 0x37 , 0x26 , 0xDB , 0x23 , 0x41 , 0xBE ,
962
+ 0x58 , 0xFE , 0xAE , 0x1D , 0xA2 , 0xDE , 0xCE , 0xD8 ,
963
+ 0x43 , 0x24 , 0x0F , 0x7B , 0x50 , 0x2B , 0xA6 , 0x59
964
+ };
965
+ const unsigned char combined_pk_expected [32 ] = {
966
+ 0xD5 , 0x60 , 0x83 , 0x72 , 0xAE , 0x3C , 0xA2 , 0x56 ,
967
+ 0xEF , 0x51 , 0xF8 , 0x91 , 0x9C , 0xFD , 0x0F , 0x22 ,
968
+ 0xCD , 0x82 , 0x93 , 0x43 , 0x95 , 0x01 , 0x06 , 0x4E ,
969
+ 0xBE , 0xE4 , 0xBB , 0x12 , 0xC6 , 0xE7 , 0xDE , 0xE2 ,
970
+ };
971
+
972
+ CHECK (secp256k1_xonly_pubkey_parse (ctx , & pk [0 ], pk_ser1 ));
973
+ CHECK (secp256k1_xonly_pubkey_parse (ctx , & pk [1 ], pk_ser2 ));
974
+ CHECK (secp256k1_musig_pubkey_combine (ctx , NULL , & combined_pk , NULL , pk , 2 ) == 1 );
975
+ CHECK (secp256k1_xonly_pubkey_serialize (ctx , combined_pk_ser , & combined_pk ));
976
+ /* TODO: remove */
977
+ /* int i, j; */
978
+ /* printf("const unsigned char combined_pk_expected[32] = {\n"); */
979
+ /* for (i = 0; i < 4; i++) { */
980
+ /* printf(" "); */
981
+ /* for (j = 0; j < 8; j++) { */
982
+ /* printf("0x%02X, ", combined_pk_ser[i*8+j]); */
983
+ /* } */
984
+ /* printf("\n"); */
985
+ /* } */
986
+ /* printf("};\n"); */
987
+ CHECK (memcmp (combined_pk_ser , combined_pk_expected , sizeof (combined_pk_ser )) == 0 );
988
+ }
989
+
949
990
void run_musig_tests (void ) {
950
991
int i ;
951
992
secp256k1_scratch_space * scratch = secp256k1_scratch_space_create (ctx , 1024 * 1024 );
@@ -961,6 +1002,7 @@ void run_musig_tests(void) {
961
1002
scriptless_atomic_swap (scratch );
962
1003
musig_tweak_test (scratch );
963
1004
}
1005
+ musig_test_vectors ();
964
1006
sha256_tag_test ();
965
1007
966
1008
secp256k1_scratch_space_destroy (ctx , scratch );
0 commit comments