@@ -17,10 +17,10 @@ use bitcoin::blockdata::witness::Witness;
1717use bitcoin:: hashes:: { hash160, sha256, Hash } ;
1818use bitcoin:: util:: taproot:: { ControlBlock , TAPROOT_ANNEX_PREFIX } ;
1919
20- use super :: { stack, BitcoinKey , Error , Stack , TypedHash160 } ;
21- use crate :: miniscript:: context:: { NoChecks , ScriptContext } ;
20+ use super :: { stack, BitcoinKey , Error , Stack } ;
21+ use crate :: miniscript:: context:: { NoChecks , ScriptContext , SigType } ;
2222use crate :: prelude:: * ;
23- use crate :: { BareCtx , Legacy , Miniscript , MiniscriptKey , Segwitv0 , Tap , Translator } ;
23+ use crate :: { BareCtx , Legacy , Miniscript , Segwitv0 , Tap , ToPublicKey , Translator } ;
2424
2525/// Attempts to parse a slice as a Bitcoin public key, checking compressedness
2626/// if asked to, but otherwise dropping it
@@ -143,7 +143,8 @@ pub(super) fn from_txdata<'txin>(
143143 match ssig_stack. pop ( ) {
144144 Some ( elem) => {
145145 let pk = pk_from_stack_elem ( & elem, false ) ?;
146- if * spk == bitcoin:: Script :: new_p2pkh ( & pk. to_pubkeyhash ( ) . into ( ) ) {
146+ if * spk == bitcoin:: Script :: new_p2pkh ( & pk. to_pubkeyhash ( SigType :: Ecdsa ) . into ( ) )
147+ {
147148 Ok ( (
148149 Inner :: PublicKey ( pk. into ( ) , PubkeyType :: Pkh ) ,
149150 ssig_stack,
@@ -164,11 +165,12 @@ pub(super) fn from_txdata<'txin>(
164165 match wit_stack. pop ( ) {
165166 Some ( elem) => {
166167 let pk = pk_from_stack_elem ( & elem, true ) ?;
167- if * spk == bitcoin:: Script :: new_v0_p2wpkh ( & pk. to_pubkeyhash ( ) . into ( ) ) {
168+ let hash160 = pk. to_pubkeyhash ( SigType :: Ecdsa ) ;
169+ if * spk == bitcoin:: Script :: new_v0_p2wpkh ( & hash160. into ( ) ) {
168170 Ok ( (
169171 Inner :: PublicKey ( pk. into ( ) , PubkeyType :: Wpkh ) ,
170172 wit_stack,
171- Some ( bitcoin:: Script :: new_p2pkh ( & pk . to_pubkeyhash ( ) . into ( ) ) ) , // bip143, why..
173+ Some ( bitcoin:: Script :: new_p2pkh ( & hash160 . into ( ) ) ) , // bip143, why..
172174 ) )
173175 } else {
174176 Err ( Error :: IncorrectWPubkeyHash )
@@ -274,17 +276,13 @@ pub(super) fn from_txdata<'txin>(
274276 Err ( Error :: NonEmptyScriptSig )
275277 } else {
276278 let pk = pk_from_stack_elem ( & elem, true ) ?;
277- if slice
278- == & bitcoin:: Script :: new_v0_p2wpkh (
279- & pk. to_pubkeyhash ( ) . into ( ) ,
280- ) [ ..]
279+ let hash160 = pk. to_pubkeyhash ( SigType :: Ecdsa ) ;
280+ if slice == & bitcoin:: Script :: new_v0_p2wpkh ( & hash160. into ( ) ) [ ..]
281281 {
282282 Ok ( (
283283 Inner :: PublicKey ( pk. into ( ) , PubkeyType :: ShWpkh ) ,
284284 wit_stack,
285- Some ( bitcoin:: Script :: new_p2pkh (
286- & pk. to_pubkeyhash ( ) . into ( ) ,
287- ) ) , // bip143, why..
285+ Some ( bitcoin:: Script :: new_p2pkh ( & hash160. into ( ) ) ) , // bip143, why..
288286 ) )
289287 } else {
290288 Err ( Error :: IncorrectWScriptHash )
@@ -382,10 +380,6 @@ impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::PublicKey, Ctx> {
382380 Ok ( BitcoinKey :: Fullkey ( * pk) )
383381 }
384382
385- fn pkh ( & mut self , pkh : & hash160:: Hash ) -> Result < TypedHash160 , ( ) > {
386- Ok ( TypedHash160 :: FullKey ( * pkh) )
387- }
388-
389383 translate_hash_clone ! ( bitcoin:: PublicKey , BitcoinKey , ( ) ) ;
390384 }
391385
@@ -404,9 +398,6 @@ impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::XOnlyPublicKey, Ctx>
404398 Ok ( BitcoinKey :: XOnlyPublicKey ( * pk) )
405399 }
406400
407- fn pkh ( & mut self , pkh : & hash160:: Hash ) -> Result < TypedHash160 , ( ) > {
408- Ok ( TypedHash160 :: XonlyKey ( * pkh) )
409- }
410401 translate_hash_clone ! ( bitcoin:: XOnlyPublicKey , BitcoinKey , ( ) ) ;
411402 }
412403 self . real_translate_pk ( & mut TranslateXOnlyPk )
@@ -452,8 +443,8 @@ mod tests {
452443 )
453444 . unwrap ( ) ;
454445
455- let pkhash = key. to_pubkeyhash ( ) . into ( ) ;
456- let wpkhash = key. to_pubkeyhash ( ) . into ( ) ;
446+ let pkhash = key. to_pubkeyhash ( SigType :: Ecdsa ) . into ( ) ;
447+ let wpkhash = key. to_pubkeyhash ( SigType :: Ecdsa ) . into ( ) ;
457448 let wpkh_spk = bitcoin:: Script :: new_v0_p2wpkh ( & wpkhash) ;
458449 let wpkh_scripthash = hash160:: Hash :: hash ( & wpkh_spk[ ..] ) . into ( ) ;
459450
0 commit comments