@@ -479,11 +479,19 @@ impl Ord for Witness {
479
479
480
480
impl Witness {
481
481
/// Turn a signature into (part of) a satisfaction
482
- fn signature < Pk : ToPublicKey , S : Satisfier < Pk > > ( sat : S , pk : & Pk ) -> Self {
483
- match sat. lookup_ec_sig ( pk) {
484
- Some ( sig) => Witness :: Stack ( vec ! [ sig. to_vec( ) ] ) ,
485
- // Signatures cannot be forged
486
- None => Witness :: Impossible ,
482
+ fn signature < Pk : ToPublicKey , S : Satisfier < Pk > , Ctx : ScriptContext > ( sat : S , pk : & Pk ) -> Self {
483
+ if Ctx :: is_tap ( ) {
484
+ match sat. lookup_schnorr_sig ( pk) {
485
+ Some ( sig) => Witness :: Stack ( vec ! [ sig. to_vec( ) ] ) ,
486
+ // Signatures cannot be forged
487
+ None => Witness :: Impossible ,
488
+ }
489
+ } else {
490
+ match sat. lookup_ec_sig ( pk) {
491
+ Some ( sig) => Witness :: Stack ( vec ! [ sig. to_vec( ) ] ) ,
492
+ // Signatures cannot be forged
493
+ None => Witness :: Impossible ,
494
+ }
487
495
}
488
496
}
489
497
@@ -819,7 +827,7 @@ impl Satisfaction {
819
827
{
820
828
match * term {
821
829
Terminal :: PkK ( ref pk) => Satisfaction {
822
- stack : Witness :: signature ( stfr, pk) ,
830
+ stack : Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) ,
823
831
has_sig : true ,
824
832
} ,
825
833
Terminal :: PkH ( ref pkh) => Satisfaction {
@@ -980,7 +988,7 @@ impl Satisfaction {
980
988
let mut sig_count = 0 ;
981
989
let mut sigs = Vec :: with_capacity ( k) ;
982
990
for pk in keys {
983
- match Witness :: signature ( stfr, pk) {
991
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
984
992
Witness :: Stack ( sig) => {
985
993
sigs. push ( sig) ;
986
994
sig_count += 1 ;
@@ -1022,7 +1030,7 @@ impl Satisfaction {
1022
1030
let mut sig_count = 0 ;
1023
1031
let mut sigs = vec ! [ vec![ vec![ ] ] ; keys. len( ) ] ;
1024
1032
for ( i, pk) in keys. iter ( ) . rev ( ) . enumerate ( ) {
1025
- match Witness :: signature ( stfr, pk) {
1033
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
1026
1034
Witness :: Stack ( sig) => {
1027
1035
sigs[ i] = sig;
1028
1036
sig_count += 1 ;
0 commit comments