@@ -561,11 +561,19 @@ impl Ord for Witness {
561
561
562
562
impl Witness {
563
563
/// 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
+ }
569
577
}
570
578
}
571
579
@@ -903,7 +911,7 @@ impl Satisfaction {
903
911
{
904
912
match * term {
905
913
Terminal :: PkK ( ref pk) => Satisfaction {
906
- stack : Witness :: signature ( stfr, pk) ,
914
+ stack : Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) ,
907
915
has_sig : true ,
908
916
} ,
909
917
Terminal :: PkH ( ref pkh) => Satisfaction {
@@ -1064,7 +1072,7 @@ impl Satisfaction {
1064
1072
let mut sig_count = 0 ;
1065
1073
let mut sigs = Vec :: with_capacity ( k) ;
1066
1074
for pk in keys {
1067
- match Witness :: signature ( stfr, pk) {
1075
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
1068
1076
Witness :: Stack ( sig) => {
1069
1077
sigs. push ( sig) ;
1070
1078
sig_count += 1 ;
@@ -1106,7 +1114,7 @@ impl Satisfaction {
1106
1114
let mut sig_count = 0 ;
1107
1115
let mut sigs = vec ! [ vec![ vec![ ] ] ; keys. len( ) ] ;
1108
1116
for ( i, pk) in keys. iter ( ) . enumerate ( ) {
1109
- match Witness :: signature ( stfr, pk) {
1117
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
1110
1118
Witness :: Stack ( sig) => {
1111
1119
sigs[ i] = sig;
1112
1120
sig_count += 1 ;
0 commit comments