@@ -17,10 +17,10 @@ use bitcoin::blockdata::witness::Witness;
17
17
use bitcoin:: hashes:: { hash160, sha256, Hash } ;
18
18
use bitcoin:: util:: taproot:: { ControlBlock , TAPROOT_ANNEX_PREFIX } ;
19
19
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 } ;
22
22
use crate :: prelude:: * ;
23
- use crate :: { BareCtx , Legacy , Miniscript , MiniscriptKey , Segwitv0 , Tap , Translator } ;
23
+ use crate :: { BareCtx , Legacy , Miniscript , Segwitv0 , Tap , ToPublicKey , Translator } ;
24
24
25
25
/// Attempts to parse a slice as a Bitcoin public key, checking compressedness
26
26
/// if asked to, but otherwise dropping it
@@ -143,7 +143,8 @@ pub(super) fn from_txdata<'txin>(
143
143
match ssig_stack. pop ( ) {
144
144
Some ( elem) => {
145
145
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
+ {
147
148
Ok ( (
148
149
Inner :: PublicKey ( pk. into ( ) , PubkeyType :: Pkh ) ,
149
150
ssig_stack,
@@ -164,11 +165,12 @@ pub(super) fn from_txdata<'txin>(
164
165
match wit_stack. pop ( ) {
165
166
Some ( elem) => {
166
167
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 ( ) ) {
168
170
Ok ( (
169
171
Inner :: PublicKey ( pk. into ( ) , PubkeyType :: Wpkh ) ,
170
172
wit_stack,
171
- Some ( bitcoin:: Script :: new_p2pkh ( & pk . to_pubkeyhash ( ) . into ( ) ) ) , // bip143, why..
173
+ Some ( bitcoin:: Script :: new_p2pkh ( & hash160 . into ( ) ) ) , // bip143, why..
172
174
) )
173
175
} else {
174
176
Err ( Error :: IncorrectWPubkeyHash )
@@ -274,17 +276,13 @@ pub(super) fn from_txdata<'txin>(
274
276
Err ( Error :: NonEmptyScriptSig )
275
277
} else {
276
278
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 ( ) ) [ ..]
281
281
{
282
282
Ok ( (
283
283
Inner :: PublicKey ( pk. into ( ) , PubkeyType :: ShWpkh ) ,
284
284
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..
288
286
) )
289
287
} else {
290
288
Err ( Error :: IncorrectWScriptHash )
@@ -382,10 +380,6 @@ impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::PublicKey, Ctx> {
382
380
Ok ( BitcoinKey :: Fullkey ( * pk) )
383
381
}
384
382
385
- fn pkh ( & mut self , pkh : & hash160:: Hash ) -> Result < TypedHash160 , ( ) > {
386
- Ok ( TypedHash160 :: FullKey ( * pkh) )
387
- }
388
-
389
383
translate_hash_clone ! ( bitcoin:: PublicKey , BitcoinKey , ( ) ) ;
390
384
}
391
385
@@ -404,9 +398,6 @@ impl<Ctx: ScriptContext> ToNoChecks for Miniscript<bitcoin::XOnlyPublicKey, Ctx>
404
398
Ok ( BitcoinKey :: XOnlyPublicKey ( * pk) )
405
399
}
406
400
407
- fn pkh ( & mut self , pkh : & hash160:: Hash ) -> Result < TypedHash160 , ( ) > {
408
- Ok ( TypedHash160 :: XonlyKey ( * pkh) )
409
- }
410
401
translate_hash_clone ! ( bitcoin:: XOnlyPublicKey , BitcoinKey , ( ) ) ;
411
402
}
412
403
self . real_translate_pk ( & mut TranslateXOnlyPk )
@@ -452,8 +443,8 @@ mod tests {
452
443
)
453
444
. unwrap ( ) ;
454
445
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 ( ) ;
457
448
let wpkh_spk = bitcoin:: Script :: new_v0_p2wpkh ( & wpkhash) ;
458
449
let wpkh_scripthash = hash160:: Hash :: hash ( & wpkh_spk[ ..] ) . into ( ) ;
459
450
0 commit comments