@@ -865,8 +865,9 @@ impl TryFrom<ParsedMessage<FullInvoiceTlvStream>> for Invoice {
865
865
None => return Err ( ParseError :: InvalidSemantics ( SemanticError :: MissingSignature ) ) ,
866
866
Some ( signature) => signature,
867
867
} ;
868
+ let message = TaggedHash :: new ( SIGNATURE_TAG , & bytes) ;
868
869
let pubkey = contents. fields ( ) . signing_pubkey ;
869
- merkle:: verify_signature ( & signature, SIGNATURE_TAG , & bytes , pubkey) ?;
870
+ merkle:: verify_signature ( & signature, message , pubkey) ?;
870
871
871
872
Ok ( Invoice { bytes, contents, signature } )
872
873
}
@@ -968,7 +969,7 @@ mod tests {
968
969
use crate :: ln:: inbound_payment:: ExpandedKey ;
969
970
use crate :: ln:: msgs:: DecodeError ;
970
971
use crate :: offers:: invoice_request:: InvoiceRequestTlvStreamRef ;
971
- use crate :: offers:: merkle:: { SignError , SignatureTlvStreamRef , self } ;
972
+ use crate :: offers:: merkle:: { SignError , SignatureTlvStreamRef , TaggedHash , self } ;
972
973
use crate :: offers:: offer:: { OfferBuilder , OfferTlvStreamRef , Quantity } ;
973
974
use crate :: offers:: parse:: { ParseError , SemanticError } ;
974
975
use crate :: offers:: payer:: PayerTlvStreamRef ;
@@ -1023,11 +1024,9 @@ mod tests {
1023
1024
assert_eq ! ( invoice. fallbacks( ) , vec![ ] ) ;
1024
1025
assert_eq ! ( invoice. features( ) , & Bolt12InvoiceFeatures :: empty( ) ) ;
1025
1026
assert_eq ! ( invoice. signing_pubkey( ) , recipient_pubkey( ) ) ;
1026
- assert ! (
1027
- merkle:: verify_signature(
1028
- & invoice. signature, SIGNATURE_TAG , & invoice. bytes, recipient_pubkey( )
1029
- ) . is_ok( )
1030
- ) ;
1027
+
1028
+ let message = TaggedHash :: new ( SIGNATURE_TAG , & invoice. bytes ) ;
1029
+ assert ! ( merkle:: verify_signature( & invoice. signature, message, recipient_pubkey( ) ) . is_ok( ) ) ;
1031
1030
1032
1031
let digest = Message :: from_slice ( & invoice. signable_hash ( ) ) . unwrap ( ) ;
1033
1032
let pubkey = recipient_pubkey ( ) . into ( ) ;
@@ -1106,11 +1105,9 @@ mod tests {
1106
1105
assert_eq ! ( invoice. fallbacks( ) , vec![ ] ) ;
1107
1106
assert_eq ! ( invoice. features( ) , & Bolt12InvoiceFeatures :: empty( ) ) ;
1108
1107
assert_eq ! ( invoice. signing_pubkey( ) , recipient_pubkey( ) ) ;
1109
- assert ! (
1110
- merkle:: verify_signature(
1111
- & invoice. signature, SIGNATURE_TAG , & invoice. bytes, recipient_pubkey( )
1112
- ) . is_ok( )
1113
- ) ;
1108
+
1109
+ let message = TaggedHash :: new ( SIGNATURE_TAG , & invoice. bytes ) ;
1110
+ assert ! ( merkle:: verify_signature( & invoice. signature, message, recipient_pubkey( ) ) . is_ok( ) ) ;
1114
1111
1115
1112
assert_eq ! (
1116
1113
invoice. as_tlv_stream( ) ,
0 commit comments