@@ -137,6 +137,43 @@ void test_xonly_pubkey(void) {
137
137
secp256k1_context_destroy (verify );
138
138
}
139
139
140
+ void test_xonly_pubkey_comparison (void ) {
141
+ unsigned char pk1_ser [32 ] = {
142
+ 0x58 , 0x84 , 0xb3 , 0xa2 , 0x4b , 0x97 , 0x37 , 0x88 , 0x92 , 0x38 , 0xa6 , 0x26 , 0x62 , 0x52 , 0x35 , 0x11 ,
143
+ 0xd0 , 0x9a , 0xa1 , 0x1b , 0x80 , 0x0b , 0x5e , 0x93 , 0x80 , 0x26 , 0x11 , 0xef , 0x67 , 0x4b , 0xd9 , 0x23
144
+ };
145
+ const unsigned char pk2_ser [32 ] = {
146
+ 0xde , 0x36 , 0x0e , 0x87 , 0x59 , 0x8f , 0x3c , 0x01 , 0x36 , 0x2a , 0x2a , 0xb8 , 0xc6 , 0xf4 , 0x5e , 0x4d ,
147
+ 0xb2 , 0xc2 , 0xd5 , 0x03 , 0xa7 , 0xf9 , 0xf1 , 0x4f , 0xa8 , 0xfa , 0x95 , 0xa8 , 0xe9 , 0x69 , 0x76 , 0x1c
148
+ };
149
+ secp256k1_xonly_pubkey pk1 ;
150
+ secp256k1_xonly_pubkey pk2 ;
151
+ int ecount = 0 ;
152
+ secp256k1_context * none = api_test_context (SECP256K1_CONTEXT_NONE , & ecount );
153
+
154
+ CHECK (secp256k1_xonly_pubkey_parse (none , & pk1 , pk1_ser ) == 1 );
155
+ CHECK (secp256k1_xonly_pubkey_parse (none , & pk2 , pk2_ser ) == 1 );
156
+
157
+ CHECK (secp256k1_xonly_pubkey_cmp (none , NULL , & pk2 ) < 0 );
158
+ CHECK (ecount == 1 );
159
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk1 , NULL ) > 0 );
160
+ CHECK (ecount == 2 );
161
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk1 , & pk2 ) < 0 );
162
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk2 , & pk1 ) > 0 );
163
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk1 , & pk1 ) == 0 );
164
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk2 , & pk2 ) == 0 );
165
+ CHECK (ecount == 2 );
166
+ memset (& pk1 , 0 , sizeof (pk1 )); /* illegal pubkey */
167
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk1 , & pk2 ) < 0 );
168
+ CHECK (ecount == 3 );
169
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk1 , & pk1 ) == 0 );
170
+ CHECK (ecount == 5 );
171
+ CHECK (secp256k1_xonly_pubkey_cmp (none , & pk2 , & pk1 ) > 0 );
172
+ CHECK (ecount == 6 );
173
+
174
+ secp256k1_context_destroy (none );
175
+ }
176
+
140
177
void test_xonly_pubkey_tweak (void ) {
141
178
unsigned char zeros64 [64 ] = { 0 };
142
179
unsigned char overflows [32 ];
@@ -540,6 +577,7 @@ void run_extrakeys_tests(void) {
540
577
test_xonly_pubkey_tweak ();
541
578
test_xonly_pubkey_tweak_check ();
542
579
test_xonly_pubkey_tweak_recursive ();
580
+ test_xonly_pubkey_comparison ();
543
581
544
582
/* keypair tests */
545
583
test_keypair ();
0 commit comments