@@ -488,11 +488,19 @@ impl Ord for Witness {
488
488
489
489
impl Witness {
490
490
/// 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
+ }
496
504
}
497
505
}
498
506
@@ -828,7 +836,7 @@ impl Satisfaction {
828
836
{
829
837
match * term {
830
838
Terminal :: PkK ( ref pk) => Satisfaction {
831
- stack : Witness :: signature ( stfr, pk) ,
839
+ stack : Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) ,
832
840
has_sig : true ,
833
841
} ,
834
842
Terminal :: PkH ( ref pkh) => Satisfaction {
@@ -989,7 +997,7 @@ impl Satisfaction {
989
997
let mut sig_count = 0 ;
990
998
let mut sigs = Vec :: with_capacity ( k) ;
991
999
for pk in keys {
992
- match Witness :: signature ( stfr, pk) {
1000
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
993
1001
Witness :: Stack ( sig) => {
994
1002
sigs. push ( sig) ;
995
1003
sig_count += 1 ;
@@ -1031,7 +1039,7 @@ impl Satisfaction {
1031
1039
let mut sig_count = 0 ;
1032
1040
let mut sigs = vec ! [ vec![ vec![ ] ] ; keys. len( ) ] ;
1033
1041
for ( i, pk) in keys. iter ( ) . rev ( ) . enumerate ( ) {
1034
- match Witness :: signature ( stfr, pk) {
1042
+ match Witness :: signature :: < _ , _ , Ctx > ( stfr, pk) {
1035
1043
Witness :: Stack ( sig) => {
1036
1044
sigs[ i] = sig;
1037
1045
sig_count += 1 ;
0 commit comments