@@ -60,8 +60,13 @@ pub trait Satisfier<Pk: MiniscriptKey + ToPublicKey> {
60
60
None
61
61
}
62
62
63
- /// Given a raw `Pkh`, lookup corresponding `Pk`
64
- fn lookup_raw_pkh_pk ( & self , _: & hash160:: Hash ) -> Option < Pk > {
63
+ /// Given a raw `Pkh`, lookup corresponding [`bitcoin::PublicKey`]
64
+ fn lookup_raw_pkh_pk ( & self , _: & hash160:: Hash ) -> Option < bitcoin:: PublicKey > {
65
+ None
66
+ }
67
+
68
+ /// Given a raw `Pkh`, lookup corresponding [`bitcoin::XOnlyPublicKey`]
69
+ fn lookup_raw_pkh_x_only_pk ( & self , _: & hash160:: Hash ) -> Option < XOnlyPublicKey > {
65
70
None
66
71
}
67
72
@@ -183,8 +188,8 @@ where
183
188
self . get ( & key. to_pubkeyhash ( SigType :: Ecdsa ) ) . map ( |x| x. 1 )
184
189
}
185
190
186
- fn lookup_raw_pkh_pk ( & self , pk_hash : & hash160:: Hash ) -> Option < Pk > {
187
- self . get ( pk_hash) . map ( |x| x. 0 . clone ( ) )
191
+ fn lookup_raw_pkh_pk ( & self , pk_hash : & hash160:: Hash ) -> Option < bitcoin :: PublicKey > {
192
+ self . get ( pk_hash) . map ( |x| x. 0 . to_public_key ( ) )
188
193
}
189
194
190
195
fn lookup_raw_pkh_ecdsa_sig (
@@ -224,10 +229,14 @@ impl<'a, Pk: MiniscriptKey + ToPublicKey, S: Satisfier<Pk>> Satisfier<Pk> for &'
224
229
( * * self ) . lookup_tap_leaf_script_sig ( p, h)
225
230
}
226
231
227
- fn lookup_raw_pkh_pk ( & self , pkh : & hash160:: Hash ) -> Option < Pk > {
232
+ fn lookup_raw_pkh_pk ( & self , pkh : & hash160:: Hash ) -> Option < bitcoin :: PublicKey > {
228
233
( * * self ) . lookup_raw_pkh_pk ( pkh)
229
234
}
230
235
236
+ fn lookup_raw_pkh_x_only_pk ( & self , pkh : & hash160:: Hash ) -> Option < XOnlyPublicKey > {
237
+ ( * * self ) . lookup_raw_pkh_x_only_pk ( pkh)
238
+ }
239
+
231
240
fn lookup_raw_pkh_ecdsa_sig (
232
241
& self ,
233
242
pkh : & hash160:: Hash ,
@@ -290,10 +299,14 @@ impl<'a, Pk: MiniscriptKey + ToPublicKey, S: Satisfier<Pk>> Satisfier<Pk> for &'
290
299
( * * self ) . lookup_tap_key_spend_sig ( )
291
300
}
292
301
293
- fn lookup_raw_pkh_pk ( & self , pkh : & hash160:: Hash ) -> Option < Pk > {
302
+ fn lookup_raw_pkh_pk ( & self , pkh : & hash160:: Hash ) -> Option < bitcoin :: PublicKey > {
294
303
( * * self ) . lookup_raw_pkh_pk ( pkh)
295
304
}
296
305
306
+ fn lookup_raw_pkh_x_only_pk ( & self , pkh : & hash160:: Hash ) -> Option < XOnlyPublicKey > {
307
+ ( * * self ) . lookup_raw_pkh_x_only_pk ( pkh)
308
+ }
309
+
297
310
fn lookup_raw_pkh_ecdsa_sig (
298
311
& self ,
299
312
pkh : & hash160:: Hash ,
@@ -406,7 +419,7 @@ macro_rules! impl_tuple_satisfier {
406
419
fn lookup_raw_pkh_pk(
407
420
& self ,
408
421
key_hash: & hash160:: Hash ,
409
- ) -> Option <Pk > {
422
+ ) -> Option <bitcoin :: PublicKey > {
410
423
let & ( $( ref $ty, ) * ) = self ;
411
424
$(
412
425
if let Some ( result) = $ty. lookup_raw_pkh_pk( key_hash) {
@@ -416,6 +429,19 @@ macro_rules! impl_tuple_satisfier {
416
429
None
417
430
}
418
431
432
+ fn lookup_raw_pkh_x_only_pk(
433
+ & self ,
434
+ key_hash: & hash160:: Hash ,
435
+ ) -> Option <XOnlyPublicKey > {
436
+ let & ( $( ref $ty, ) * ) = self ;
437
+ $(
438
+ if let Some ( result) = $ty. lookup_raw_pkh_x_only_pk( key_hash) {
439
+ return Some ( result) ;
440
+ }
441
+ ) *
442
+ None
443
+ }
444
+
419
445
fn lookup_tap_control_block_map(
420
446
& self ,
421
447
) -> Option <& BTreeMap <ControlBlock , ( bitcoin:: Script , LeafVersion ) >> {
0 commit comments