@@ -60,8 +60,13 @@ pub trait Satisfier<Pk: MiniscriptKey + ToPublicKey> {
6060 None
6161 }
6262
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 > {
6570 None
6671 }
6772
@@ -183,8 +188,8 @@ where
183188 self . get ( & key. to_pubkeyhash ( SigType :: Ecdsa ) ) . map ( |x| x. 1 )
184189 }
185190
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 ( ) )
188193 }
189194
190195 fn lookup_raw_pkh_ecdsa_sig (
@@ -224,10 +229,14 @@ impl<'a, Pk: MiniscriptKey + ToPublicKey, S: Satisfier<Pk>> Satisfier<Pk> for &'
224229 ( * * self ) . lookup_tap_leaf_script_sig ( p, h)
225230 }
226231
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 > {
228233 ( * * self ) . lookup_raw_pkh_pk ( pkh)
229234 }
230235
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+
231240 fn lookup_raw_pkh_ecdsa_sig (
232241 & self ,
233242 pkh : & hash160:: Hash ,
@@ -290,10 +299,14 @@ impl<'a, Pk: MiniscriptKey + ToPublicKey, S: Satisfier<Pk>> Satisfier<Pk> for &'
290299 ( * * self ) . lookup_tap_key_spend_sig ( )
291300 }
292301
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 > {
294303 ( * * self ) . lookup_raw_pkh_pk ( pkh)
295304 }
296305
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+
297310 fn lookup_raw_pkh_ecdsa_sig (
298311 & self ,
299312 pkh : & hash160:: Hash ,
@@ -406,7 +419,7 @@ macro_rules! impl_tuple_satisfier {
406419 fn lookup_raw_pkh_pk(
407420 & self ,
408421 key_hash: & hash160:: Hash ,
409- ) -> Option <Pk > {
422+ ) -> Option <bitcoin :: PublicKey > {
410423 let & ( $( ref $ty, ) * ) = self ;
411424 $(
412425 if let Some ( result) = $ty. lookup_raw_pkh_pk( key_hash) {
@@ -416,6 +429,19 @@ macro_rules! impl_tuple_satisfier {
416429 None
417430 }
418431
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+
419445 fn lookup_tap_control_block_map(
420446 & self ,
421447 ) -> Option <& BTreeMap <ControlBlock , ( bitcoin:: Script , LeafVersion ) >> {
0 commit comments