@@ -562,11 +562,19 @@ impl Ord for Witness {
562
562
563
563
impl Witness {
564
564
/// Turn a signature into (part of) a satisfaction
565
- fn signature < Pk : ToPublicKey , S : Satisfier < Pk > > ( sat : S , pk : & Pk ) -> Self {
566
- match sat. lookup_ec_sig ( pk) {
567
- Some ( sig) => Witness :: Stack ( vec ! [ sig. serialize( ) ] ) ,
568
- // Signatures cannot be forged
569
- None => Witness :: Impossible ,
565
+ fn signature < Pk : ToPublicKey , S : Satisfier < Pk > , Ctx : ScriptContext > ( sat : S , pk : & Pk ) -> Self {
566
+ if Ctx :: is_tap ( ) {
567
+ match sat. lookup_schnorr_sig ( pk) {
568
+ Some ( sig) => Witness :: Stack ( vec ! [ sig. serialize( ) ] ) ,
569
+ // Signatures cannot be forged
570
+ None => Witness :: Impossible ,
571
+ }
572
+ } else {
573
+ match sat. lookup_ec_sig ( pk) {
574
+ Some ( sig) => Witness :: Stack ( vec ! [ sig. serialize( ) ] ) ,
575
+ // Signatures cannot be forged
576
+ None => Witness :: Impossible ,
577
+ }
570
578
}
571
579
}
572
580
@@ -904,7 +912,7 @@ impl Satisfaction {
904
912
{
905
913
match * term {
906
914
Terminal :: PkK ( ref pk) => Satisfaction {
907
- stack : Witness :: signature ( stfr, pk) ,
915
+ stack : Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) ,
908
916
has_sig : true ,
909
917
} ,
910
918
Terminal :: PkH ( ref pkh) => Satisfaction {
@@ -1065,7 +1073,7 @@ impl Satisfaction {
1065
1073
let mut sig_count = 0 ;
1066
1074
let mut sigs = Vec :: with_capacity ( k) ;
1067
1075
for pk in keys {
1068
- match Witness :: signature ( stfr, pk) {
1076
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
1069
1077
Witness :: Stack ( sig) => {
1070
1078
sigs. push ( sig) ;
1071
1079
sig_count += 1 ;
@@ -1107,7 +1115,7 @@ impl Satisfaction {
1107
1115
let mut sig_count = 0 ;
1108
1116
let mut sigs = vec ! [ vec![ vec![ ] ] ; keys. len( ) ] ;
1109
1117
for ( i, pk) in keys. iter ( ) . enumerate ( ) {
1110
- match Witness :: signature ( stfr, pk) {
1118
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
1111
1119
Witness :: Stack ( sig) => {
1112
1120
sigs[ i] = sig;
1113
1121
sig_count += 1 ;
0 commit comments