@@ -488,11 +488,19 @@ impl Ord for Witness {
488488
489489impl Witness {
490490 /// Turn a signature into (part of) a satisfaction
491- fn signature < Pk : ToPublicKey , S : Satisfier < Pk > > ( sat : S , pk : & Pk ) -> Self {
492- match sat. lookup_ecdsa_sig ( pk) {
493- Some ( sig) => Witness :: Stack ( vec ! [ sig. to_vec( ) ] ) ,
494- // Signatures cannot be forged
495- None => Witness :: Impossible ,
491+ fn signature < Pk : ToPublicKey , S : Satisfier < Pk > , Ctx : ScriptContext > ( sat : S , pk : & Pk ) -> Self {
492+ if Ctx :: is_tap ( ) {
493+ match sat. lookup_schnorr_sig ( pk) {
494+ Some ( sig) => Witness :: Stack ( vec ! [ sig. to_vec( ) ] ) ,
495+ // Signatures cannot be forged
496+ None => Witness :: Impossible ,
497+ }
498+ } else {
499+ match sat. lookup_ecdsa_sig ( pk) {
500+ Some ( sig) => Witness :: Stack ( vec ! [ sig. to_vec( ) ] ) ,
501+ // Signatures cannot be forged
502+ None => Witness :: Impossible ,
503+ }
496504 }
497505 }
498506
@@ -828,7 +836,7 @@ impl Satisfaction {
828836 {
829837 match * term {
830838 Terminal :: PkK ( ref pk) => Satisfaction {
831- stack : Witness :: signature ( stfr, pk) ,
839+ stack : Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) ,
832840 has_sig : true ,
833841 } ,
834842 Terminal :: PkH ( ref pkh) => Satisfaction {
@@ -989,7 +997,7 @@ impl Satisfaction {
989997 let mut sig_count = 0 ;
990998 let mut sigs = Vec :: with_capacity ( k) ;
991999 for pk in keys {
992- match Witness :: signature ( stfr, pk) {
1000+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
9931001 Witness :: Stack ( sig) => {
9941002 sigs. push ( sig) ;
9951003 sig_count += 1 ;
@@ -1031,7 +1039,7 @@ impl Satisfaction {
10311039 let mut sig_count = 0 ;
10321040 let mut sigs = vec ! [ vec![ vec![ ] ] ; keys. len( ) ] ;
10331041 for ( i, pk) in keys. iter ( ) . rev ( ) . enumerate ( ) {
1034- match Witness :: signature ( stfr, pk) {
1042+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
10351043 Witness :: Stack ( sig) => {
10361044 sigs[ i] = sig;
10371045 sig_count += 1 ;
0 commit comments