@@ -58,7 +58,9 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
5858 /// them.
5959 pub fn branches ( & self ) -> Vec < & Miniscript < Pk , Ctx > > {
6060 match self . node {
61- Terminal :: PkK ( _) | Terminal :: PkH ( _) | Terminal :: Multi ( _, _) => vec ! [ ] ,
61+ Terminal :: PkK ( _) | Terminal :: PkH ( _) | Terminal :: RawPkH ( _) | Terminal :: Multi ( _, _) => {
62+ vec ! [ ]
63+ }
6264
6365 Terminal :: Alt ( ref node)
6466 | Terminal :: Swap ( ref node)
@@ -123,7 +125,7 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
123125 /// `miniscript.iter_pubkeys().collect()`.
124126 pub fn get_leapk ( & self ) -> Vec < Pk > {
125127 match self . node {
126- Terminal :: PkK ( ref key) => vec ! [ key. clone( ) ] ,
128+ Terminal :: PkK ( ref key) | Terminal :: PkH ( ref key ) => vec ! [ key. clone( ) ] ,
127129 Terminal :: Multi ( _, ref keys) | Terminal :: MultiA ( _, ref keys) => keys. clone ( ) ,
128130 _ => vec ! [ ] ,
129131 }
@@ -140,8 +142,8 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
140142 /// for example `miniscript.iter_pubkey_hashes().collect()`.
141143 pub fn get_leapkh ( & self ) -> Vec < Pk :: Hash > {
142144 match self . node {
143- Terminal :: PkH ( ref hash) => vec ! [ hash. clone( ) ] ,
144- Terminal :: PkK ( ref key) => vec ! [ key. to_pubkeyhash( ) ] ,
145+ Terminal :: RawPkH ( ref hash) => vec ! [ hash. clone( ) ] ,
146+ Terminal :: PkK ( ref key) | Terminal :: PkH ( ref key ) => vec ! [ key. to_pubkeyhash( ) ] ,
145147 Terminal :: Multi ( _, ref keys) | Terminal :: MultiA ( _, ref keys) => {
146148 keys. iter ( ) . map ( Pk :: to_pubkeyhash) . collect ( )
147149 }
@@ -158,8 +160,10 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
158160 /// function, for example `miniscript.iter_pubkeys_and_hashes().collect()`.
159161 pub fn get_leapk_pkh ( & self ) -> Vec < PkPkh < Pk > > {
160162 match self . node {
161- Terminal :: PkH ( ref hash) => vec ! [ PkPkh :: HashedPubkey ( hash. clone( ) ) ] ,
162- Terminal :: PkK ( ref key) => vec ! [ PkPkh :: PlainPubkey ( key. clone( ) ) ] ,
163+ Terminal :: RawPkH ( ref hash) => vec ! [ PkPkh :: HashedPubkey ( hash. clone( ) ) ] ,
164+ Terminal :: PkH ( ref key) | Terminal :: PkK ( ref key) => {
165+ vec ! [ PkPkh :: PlainPubkey ( key. clone( ) ) ]
166+ }
163167 Terminal :: Multi ( _, ref keys) | Terminal :: MultiA ( _, ref keys) => keys
164168 . iter ( )
165169 . map ( |key| PkPkh :: PlainPubkey ( key. clone ( ) ) )
@@ -174,7 +178,7 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
174178 /// NB: The function analyzes only single miniscript item and not any of its descendants in AST.
175179 pub fn get_nth_pk ( & self , n : usize ) -> Option < Pk > {
176180 match ( & self . node , n) {
177- ( & Terminal :: PkK ( ref key) , 0 ) => Some ( key. clone ( ) ) ,
181+ ( & Terminal :: PkK ( ref key) , 0 ) | ( & Terminal :: PkH ( ref key ) , 0 ) => Some ( key. clone ( ) ) ,
178182 ( & Terminal :: Multi ( _, ref keys) , _) | ( & Terminal :: MultiA ( _, ref keys) , _) => {
179183 keys. get ( n) . cloned ( )
180184 }
@@ -191,8 +195,10 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
191195 /// NB: The function analyzes only single miniscript item and not any of its descendants in AST.
192196 pub fn get_nth_pkh ( & self , n : usize ) -> Option < Pk :: Hash > {
193197 match ( & self . node , n) {
194- ( & Terminal :: PkH ( ref hash) , 0 ) => Some ( hash. clone ( ) ) ,
195- ( & Terminal :: PkK ( ref key) , 0 ) => Some ( key. to_pubkeyhash ( ) ) ,
198+ ( & Terminal :: RawPkH ( ref hash) , 0 ) => Some ( hash. clone ( ) ) ,
199+ ( & Terminal :: PkK ( ref key) , 0 ) | ( & Terminal :: PkH ( ref key) , 0 ) => {
200+ Some ( key. to_pubkeyhash ( ) )
201+ }
196202 ( & Terminal :: Multi ( _, ref keys) , _) | ( & Terminal :: MultiA ( _, ref keys) , _) => {
197203 keys. get ( n) . map ( Pk :: to_pubkeyhash)
198204 }
@@ -206,8 +212,10 @@ impl<Pk: MiniscriptKey, Ctx: ScriptContext> Miniscript<Pk, Ctx> {
206212 /// NB: The function analyzes only single miniscript item and not any of its descendants in AST.
207213 pub fn get_nth_pk_pkh ( & self , n : usize ) -> Option < PkPkh < Pk > > {
208214 match ( & self . node , n) {
209- ( & Terminal :: PkH ( ref hash) , 0 ) => Some ( PkPkh :: HashedPubkey ( hash. clone ( ) ) ) ,
210- ( & Terminal :: PkK ( ref key) , 0 ) => Some ( PkPkh :: PlainPubkey ( key. clone ( ) ) ) ,
215+ ( & Terminal :: RawPkH ( ref hash) , 0 ) => Some ( PkPkh :: HashedPubkey ( hash. clone ( ) ) ) ,
216+ ( & Terminal :: PkH ( ref key) , 0 ) | ( & Terminal :: PkK ( ref key) , 0 ) => {
217+ Some ( PkPkh :: PlainPubkey ( key. clone ( ) ) )
218+ }
211219 ( & Terminal :: Multi ( _, ref keys) , _) | ( & Terminal :: MultiA ( _, ref keys) , _) => {
212220 keys. get ( n) . map ( |key| PkPkh :: PlainPubkey ( key. clone ( ) ) )
213221 }
@@ -493,7 +501,7 @@ pub mod test {
493501
494502 pub fn gen_testcases ( ) -> Vec < TestData > {
495503 let k = gen_bitcoin_pubkeys ( 10 , true ) ;
496- let h : Vec < hash160:: Hash > = k
504+ let _h : Vec < hash160:: Hash > = k
497505 . iter ( )
498506 . map ( |pk| hash160:: Hash :: hash ( & pk. to_bytes ( ) ) )
499507 . collect ( ) ;
@@ -520,11 +528,11 @@ pub mod test {
520528 false ,
521529 ) ,
522530 ( ms_str!( "c:pk_k({})" , k[ 0 ] ) , vec![ k[ 0 ] ] , vec![ ] , true ) ,
523- ( ms_str!( "c:pk_h({})" , h [ 6 ] ) , vec![ ] , vec![ h [ 6 ] ] , true ) ,
531+ ( ms_str!( "c:pk_h({})" , k [ 0 ] ) , vec![ k [ 0 ] ] , vec![ ] , true ) ,
524532 (
525- ms_str!( "and_v(vc:pk_k({}),c:pk_h({}))" , k[ 0 ] , h [ 1 ] ) ,
526- vec![ k[ 0 ] ] ,
527- vec![ h [ 1 ] ] ,
533+ ms_str!( "and_v(vc:pk_k({}),c:pk_h({}))" , k[ 0 ] , k [ 1 ] ) ,
534+ vec![ k[ 0 ] , k [ 1 ] ] ,
535+ vec![ ] ,
528536 false ,
529537 ) ,
530538 (
@@ -538,10 +546,10 @@ pub mod test {
538546 "andor(c:pk_k({}),jtv:sha256({}),c:pk_h({}))" ,
539547 k[ 1 ] ,
540548 sha256_hash,
541- h [ 2 ]
549+ k [ 2 ]
542550 ) ,
543- vec![ k[ 1 ] ] ,
544- vec![ h [ 2 ] ] ,
551+ vec![ k[ 1 ] , k [ 2 ] ] ,
552+ vec![ ] ,
545553 false ,
546554 ) ,
547555 (
@@ -585,12 +593,12 @@ pub mod test {
585593 k[ 4 ] ,
586594 k[ 6 ] ,
587595 k[ 9 ] ,
588- h [ 8 ] ,
589- h [ 7 ] ,
590- h [ 0 ]
596+ k [ 1 ] ,
597+ k [ 3 ] ,
598+ k [ 5 ]
591599 ) ,
592- vec![ k[ 0 ] , k[ 2 ] , k[ 4 ] , k[ 6 ] , k[ 9 ] ] ,
593- vec![ h [ 8 ] , h [ 7 ] , h [ 0 ] ] ,
600+ vec![ k[ 0 ] , k[ 2 ] , k[ 4 ] , k[ 6 ] , k[ 9 ] , k [ 1 ] , k [ 3 ] , k [ 5 ] ] ,
601+ vec![ ] ,
594602 false ,
595603 ) ,
596604 ]
0 commit comments