@@ -4,6 +4,7 @@ extern crate bincode;
4
4
extern crate secp256k1;
5
5
extern crate serde_cbor;
6
6
7
+ use secp256k1:: musig;
7
8
#[ cfg( feature = "global-context" ) ]
8
9
use secp256k1:: { Keypair , Secp256k1 } ;
9
10
use secp256k1:: { PublicKey , SecretKey , XOnlyPublicKey } ;
@@ -35,6 +36,43 @@ static XONLY_PK_BYTES: [u8; 32] = [
35
36
0x4a , 0xc8 , 0x87 , 0xfe , 0x91 , 0xdd , 0xd1 , 0x66 ,
36
37
] ;
37
38
39
+ #[ rustfmt:: skip]
40
+ static MUSIG_PUBLIC_NONCE_BYTES : [ u8 ; 74 ] = [
41
+ 0x42 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
42
+ 0x03 , 0xf4 , 0xa3 , 0x61 , 0xab , 0xd3 , 0xd5 , 0x05 ,
43
+ 0x35 , 0xbe , 0x08 , 0x42 , 0x1d , 0xbc , 0x73 , 0xb0 ,
44
+ 0xa8 , 0xf5 , 0x95 , 0x65 , 0x4a , 0xe3 , 0x23 , 0x8a ,
45
+ 0xfc , 0xaf , 0x25 , 0x99 , 0xf9 , 0x4e , 0x25 , 0x20 ,
46
+ 0x4c , 0x03 , 0x6b , 0xa1 , 0x74 , 0x21 , 0x44 , 0x33 ,
47
+ 0xe2 , 0x1f , 0x5c , 0xd0 , 0xfc , 0xb1 , 0x4b , 0x03 ,
48
+ 0x8e , 0xb4 , 0x0b , 0x05 , 0xb7 , 0xe7 , 0xc8 , 0x20 ,
49
+ 0xdd , 0x21 , 0xaa , 0x56 , 0x8f , 0xdb , 0x0a , 0x9d ,
50
+ 0xe4 , 0xd7 ,
51
+ ] ;
52
+
53
+ #[ rustfmt:: skip]
54
+ static MUSIG_AGGREGATED_NONCE_BYTES : [ u8 ; 74 ] = [
55
+ 0x42 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
56
+ 0x02 , 0x18 , 0xc3 , 0x0f , 0xe0 , 0xf5 , 0x67 , 0xa4 ,
57
+ 0xa9 , 0xc0 , 0x5e , 0xb4 , 0x83 , 0x5e , 0x27 , 0x35 ,
58
+ 0x41 , 0x9c , 0xf3 , 0x0f , 0x83 , 0x4c , 0x9c , 0xe2 ,
59
+ 0xfe , 0x34 , 0x30 , 0xf0 , 0x21 , 0xba , 0x4e , 0xac ,
60
+ 0xd5 , 0x03 , 0x11 , 0x2e , 0x97 , 0xbc , 0xf6 , 0xa0 ,
61
+ 0x22 , 0xd2 , 0x36 , 0xd7 , 0x1a , 0x93 , 0x57 , 0x82 ,
62
+ 0x4a , 0x2b , 0x19 , 0x51 , 0x5f , 0x98 , 0x01 , 0x31 ,
63
+ 0xb3 , 0x97 , 0x0b , 0x08 , 0x7c , 0xad , 0xf9 , 0x4c ,
64
+ 0xc4 , 0xa7 ,
65
+ ] ;
66
+
67
+ #[ rustfmt:: skip]
68
+ static MUSIG_PARTIAL_SIG_BYTES : [ u8 ; 40 ] = [
69
+ 0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
70
+ 0x28 , 0x9e , 0xeb , 0x2f , 0x5e , 0xfc , 0x31 , 0x4a ,
71
+ 0xa6 , 0xd8 , 0x7b , 0xf5 , 0x81 , 0x25 , 0x04 , 0x3c ,
72
+ 0x96 , 0xd1 , 0x5a , 0x00 , 0x7d , 0xb4 , 0xb6 , 0xaa ,
73
+ 0xaa , 0xc7 , 0xd1 , 0x80 , 0x86 , 0xf4 , 0x9a , 0x99 ,
74
+ ] ;
75
+
38
76
fn secret_key ( ) -> SecretKey {
39
77
SecretKey :: from_slice ( & SK_BYTES ) . expect ( "failed to create sk from slice" )
40
78
}
@@ -85,3 +123,23 @@ fn cbor() {
85
123
// It also adds a 1-byte length prefix and a byte of metadata for the whole vector.
86
124
assert_eq ! ( e. len( ) , 54 ) ;
87
125
}
126
+
127
+ #[ test]
128
+ fn musig ( ) {
129
+ let public_nonce: musig:: PublicNonce = bincode:: deserialize ( & MUSIG_PUBLIC_NONCE_BYTES ) . unwrap ( ) ;
130
+ let ser = bincode:: serialize ( & public_nonce) . unwrap ( ) ;
131
+
132
+ assert_eq ! ( ser, MUSIG_PUBLIC_NONCE_BYTES ) ;
133
+
134
+ let aggregated_nonce: musig:: AggregatedNonce =
135
+ bincode:: deserialize ( & MUSIG_AGGREGATED_NONCE_BYTES ) . unwrap ( ) ;
136
+ let ser = bincode:: serialize ( & aggregated_nonce) . unwrap ( ) ;
137
+
138
+ assert_eq ! ( ser, MUSIG_AGGREGATED_NONCE_BYTES ) ;
139
+
140
+ let partial_sig: musig:: PartialSignature =
141
+ bincode:: deserialize ( & MUSIG_PARTIAL_SIG_BYTES ) . unwrap ( ) ;
142
+ let ser = bincode:: serialize ( & partial_sig) . unwrap ( ) ;
143
+
144
+ assert_eq ! ( ser, MUSIG_PARTIAL_SIG_BYTES ) ;
145
+ }
0 commit comments