@@ -561,11 +561,19 @@ impl Ord for Witness {
561561
562562impl Witness {
563563 /// Turn a signature into (part of) a satisfaction
564- fn signature < Pk : ToPublicKey , S : Satisfier < Pk > > ( sat : S , pk : & Pk ) -> Self {
565- match sat. lookup_ec_sig ( pk) {
566- Some ( sig) => Witness :: Stack ( vec ! [ sig. serialize( ) ] ) ,
567- // Signatures cannot be forged
568- None => Witness :: Impossible ,
564+ fn signature < Pk : ToPublicKey , S : Satisfier < Pk > , Ctx : ScriptContext > ( sat : S , pk : & Pk ) -> Self {
565+ if Ctx :: is_tap ( ) {
566+ match sat. lookup_schnorr_sig ( pk) {
567+ Some ( sig) => Witness :: Stack ( vec ! [ sig. serialize( ) ] ) ,
568+ // Signatures cannot be forged
569+ None => Witness :: Impossible ,
570+ }
571+ } else {
572+ match sat. lookup_ec_sig ( pk) {
573+ Some ( sig) => Witness :: Stack ( vec ! [ sig. serialize( ) ] ) ,
574+ // Signatures cannot be forged
575+ None => Witness :: Impossible ,
576+ }
569577 }
570578 }
571579
@@ -903,7 +911,7 @@ impl Satisfaction {
903911 {
904912 match * term {
905913 Terminal :: PkK ( ref pk) => Satisfaction {
906- stack : Witness :: signature ( stfr, pk) ,
914+ stack : Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) ,
907915 has_sig : true ,
908916 } ,
909917 Terminal :: PkH ( ref pkh) => Satisfaction {
@@ -1064,7 +1072,7 @@ impl Satisfaction {
10641072 let mut sig_count = 0 ;
10651073 let mut sigs = Vec :: with_capacity ( k) ;
10661074 for pk in keys {
1067- match Witness :: signature ( stfr, pk) {
1075+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
10681076 Witness :: Stack ( sig) => {
10691077 sigs. push ( sig) ;
10701078 sig_count += 1 ;
@@ -1106,7 +1114,7 @@ impl Satisfaction {
11061114 let mut sig_count = 0 ;
11071115 let mut sigs = vec ! [ vec![ vec![ ] ] ; keys. len( ) ] ;
11081116 for ( i, pk) in keys. iter ( ) . enumerate ( ) {
1109- match Witness :: signature ( stfr, pk) {
1117+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
11101118 Witness :: Stack ( sig) => {
11111119 sigs[ i] = sig;
11121120 sig_count += 1 ;
0 commit comments