44
44
//! .quantity(5)?
45
45
//! .payer_note("foo".to_string())
46
46
//! .build()?
47
- //! .sign::<_, Infallible>(|digest , _, _, _ | Ok(secp_ctx.sign_schnorr_no_aux_rand(digest, &keys)))
47
+ //! .sign::<_, Infallible>(|message , _| Ok(secp_ctx.sign_schnorr_no_aux_rand(&message. digest() , &keys)))
48
48
//! .expect("failed verifying signature")
49
49
//! .write(&mut buffer)
50
50
//! .unwrap();
54
54
55
55
use bitcoin:: blockdata:: constants:: ChainHash ;
56
56
use bitcoin:: network:: constants:: Network ;
57
- use bitcoin:: secp256k1:: { KeyPair , Message , PublicKey , Secp256k1 , self } ;
57
+ use bitcoin:: secp256k1:: { KeyPair , PublicKey , Secp256k1 , self } ;
58
58
use bitcoin:: secp256k1:: schnorr:: Signature ;
59
59
use core:: convert:: { Infallible , TryFrom } ;
60
60
use core:: ops:: Deref ;
@@ -66,7 +66,7 @@ use crate::ln::features::InvoiceRequestFeatures;
66
66
use crate :: ln:: inbound_payment:: { ExpandedKey , IV_LEN , Nonce } ;
67
67
use crate :: ln:: msgs:: DecodeError ;
68
68
use crate :: offers:: invoice:: { BlindedPayInfo , DerivedSigningPubkey , ExplicitSigningPubkey , InvoiceBuilder } ;
69
- use crate :: offers:: merkle:: { SignError , SignatureTlvStream , SignatureTlvStreamRef , self } ;
69
+ use crate :: offers:: merkle:: { SignError , SignatureTlvStream , SignatureTlvStreamRef , TaggedBytes , self } ;
70
70
use crate :: offers:: offer:: { Offer , OfferContents , OfferTlvStream , OfferTlvStreamRef } ;
71
71
use crate :: offers:: parse:: { ParseError , ParsedMessage , SemanticError } ;
72
72
use crate :: offers:: payer:: { PayerContents , PayerTlvStream , PayerTlvStreamRef } ;
@@ -307,7 +307,7 @@ impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerId
307
307
let keys = keys. unwrap ( ) ;
308
308
let invoice_request = unsigned_invoice_request
309
309
. sign :: < _ , Infallible > (
310
- |digest , _, _ , _ | Ok ( secp_ctx. sign_schnorr_no_aux_rand ( digest, & keys) )
310
+ |message , _| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( & message . digest ( ) , & keys) )
311
311
)
312
312
. unwrap ( ) ;
313
313
Ok ( invoice_request)
@@ -354,7 +354,7 @@ impl<'a> UnsignedInvoiceRequest<'a> {
354
354
/// This is not exported to bindings users as functions are not yet mapped.
355
355
pub fn sign < F , E > ( self , sign : F ) -> Result < InvoiceRequest , SignError < E > >
356
356
where
357
- F : FnOnce ( & Message , & str , & [ u8 ] , & [ u8 ] ) -> Result < Signature , E >
357
+ F : FnOnce ( TaggedBytes , & [ u8 ] ) -> Result < Signature , E >
358
358
{
359
359
// Use the offer bytes instead of the offer TLV stream as the offer may have contained
360
360
// unknown TLV records, which are not stored in `OfferContents`.
@@ -366,9 +366,10 @@ impl<'a> UnsignedInvoiceRequest<'a> {
366
366
let mut bytes = Vec :: new ( ) ;
367
367
unsigned_tlv_stream. write ( & mut bytes) . unwrap ( ) ;
368
368
369
+ let message = TaggedBytes :: new ( SIGNATURE_TAG , & bytes) ;
369
370
let metadata = self . offer . metadata ( ) . map ( |metadata| metadata. as_slice ( ) ) . unwrap_or ( & [ ] ) ;
370
371
let pubkey = self . invoice_request . payer_id ;
371
- let signature = merkle:: sign_message ( sign, SIGNATURE_TAG , & bytes , metadata, pubkey) ?;
372
+ let signature = merkle:: sign_message ( sign, message , metadata, pubkey) ?;
372
373
373
374
// Append the signature TLV record to the bytes.
374
375
let signature_tlv_stream = SignatureTlvStreamRef {
@@ -793,7 +794,7 @@ mod tests {
793
794
use crate :: ln:: inbound_payment:: ExpandedKey ;
794
795
use crate :: ln:: msgs:: { DecodeError , MAX_VALUE_MSAT } ;
795
796
use crate :: offers:: invoice:: { Invoice , SIGNATURE_TAG as INVOICE_SIGNATURE_TAG } ;
796
- use crate :: offers:: merkle:: { SignError , SignatureTlvStreamRef , self } ;
797
+ use crate :: offers:: merkle:: { SignError , SignatureTlvStreamRef , TaggedBytes , self } ;
797
798
use crate :: offers:: offer:: { Amount , OfferBuilder , OfferTlvStreamRef , Quantity } ;
798
799
use crate :: offers:: parse:: { ParseError , SemanticError } ;
799
800
use crate :: offers:: payer:: PayerTlvStreamRef ;
@@ -925,9 +926,9 @@ mod tests {
925
926
let mut bytes = Vec :: new ( ) ;
926
927
tlv_stream. write ( & mut bytes) . unwrap ( ) ;
927
928
929
+ let message = TaggedBytes :: new ( INVOICE_SIGNATURE_TAG , & bytes) ;
928
930
let signature = merkle:: sign_message (
929
- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, invoice_request. metadata ( ) ,
930
- recipient_pubkey ( )
931
+ recipient_sign, message, invoice_request. metadata ( ) , recipient_pubkey ( )
931
932
) . unwrap ( ) ;
932
933
signature_tlv_stream. signature = Some ( & signature) ;
933
934
@@ -950,8 +951,9 @@ mod tests {
950
951
let mut bytes = Vec :: new ( ) ;
951
952
tlv_stream. write ( & mut bytes) . unwrap ( ) ;
952
953
954
+ let message = TaggedBytes :: new ( INVOICE_SIGNATURE_TAG , & bytes) ;
953
955
let signature = merkle:: sign_message (
954
- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes , & metadata, recipient_pubkey ( )
956
+ recipient_sign, message , & metadata, recipient_pubkey ( )
955
957
) . unwrap ( ) ;
956
958
signature_tlv_stream. signature = Some ( & signature) ;
957
959
@@ -996,9 +998,9 @@ mod tests {
996
998
let mut bytes = Vec :: new ( ) ;
997
999
tlv_stream. write ( & mut bytes) . unwrap ( ) ;
998
1000
1001
+ let message = TaggedBytes :: new ( INVOICE_SIGNATURE_TAG , & bytes) ;
999
1002
let signature = merkle:: sign_message (
1000
- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, invoice_request. metadata ( ) ,
1001
- recipient_pubkey ( )
1003
+ recipient_sign, message, invoice_request. metadata ( ) , recipient_pubkey ( )
1002
1004
) . unwrap ( ) ;
1003
1005
signature_tlv_stream. signature = Some ( & signature) ;
1004
1006
@@ -1021,9 +1023,9 @@ mod tests {
1021
1023
let mut bytes = Vec :: new ( ) ;
1022
1024
tlv_stream. write ( & mut bytes) . unwrap ( ) ;
1023
1025
1026
+ let message = TaggedBytes :: new ( INVOICE_SIGNATURE_TAG , & bytes) ;
1024
1027
let signature = merkle:: sign_message (
1025
- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, invoice_request. metadata ( ) ,
1026
- recipient_pubkey ( )
1028
+ recipient_sign, message, invoice_request. metadata ( ) , recipient_pubkey ( )
1027
1029
) . unwrap ( ) ;
1028
1030
signature_tlv_stream. signature = Some ( & signature) ;
1029
1031
@@ -1363,7 +1365,7 @@ mod tests {
1363
1365
. build ( ) . unwrap ( )
1364
1366
. request_invoice ( vec ! [ 1 ; 32 ] , payer_pubkey ( ) ) . unwrap ( )
1365
1367
. build ( ) . unwrap ( )
1366
- . sign ( |_, _, _ , _ | Err ( ( ) ) )
1368
+ . sign ( |_, _| Err ( ( ) ) )
1367
1369
{
1368
1370
Ok ( _) => panic ! ( "expected error" ) ,
1369
1371
Err ( e) => assert_eq ! ( e, SignError :: Signing ( ( ) ) ) ,
@@ -1778,7 +1780,7 @@ mod tests {
1778
1780
. request_invoice ( vec ! [ 1 ; 32 ] , keys. public_key ( ) ) . unwrap ( )
1779
1781
. build ( ) . unwrap ( )
1780
1782
. sign :: < _ , Infallible > (
1781
- |digest , _, _ , _ | Ok ( secp_ctx. sign_schnorr_no_aux_rand ( digest, & keys) )
1783
+ |message , _| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( & message . digest ( ) , & keys) )
1782
1784
)
1783
1785
. unwrap ( ) ;
1784
1786
0 commit comments