4444//! .quantity(5)?
4545//! .payer_note("foo".to_string())
4646//! .build()?
47- //! .sign::<_, Infallible>(|digest| Ok(secp_ctx.sign_schnorr_no_aux_rand(digest, &keys)))
47+ //! .sign::<_, Infallible>(|digest, _, _, _ | Ok(secp_ctx.sign_schnorr_no_aux_rand(digest, &keys)))
4848//! .expect("failed verifying signature")
4949//! .write(&mut buffer)
5050//! .unwrap();
@@ -306,7 +306,9 @@ impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerId
306306 let secp_ctx = secp_ctx. unwrap ( ) ;
307307 let keys = keys. unwrap ( ) ;
308308 let invoice_request = unsigned_invoice_request
309- . sign :: < _ , Infallible > ( |digest| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( digest, & keys) ) )
309+ . sign :: < _ , Infallible > (
310+ |digest, _, _, _| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( digest, & keys) )
311+ )
310312 . unwrap ( ) ;
311313 Ok ( invoice_request)
312314 }
@@ -352,7 +354,7 @@ impl<'a> UnsignedInvoiceRequest<'a> {
352354 /// This is not exported to bindings users as functions are not yet mapped.
353355 pub fn sign < F , E > ( self , sign : F ) -> Result < InvoiceRequest , SignError < E > >
354356 where
355- F : FnOnce ( & Message ) -> Result < Signature , E >
357+ F : FnOnce ( & Message , & str , & [ u8 ] , & [ u8 ] ) -> Result < Signature , E >
356358 {
357359 // Use the offer bytes instead of the offer TLV stream as the offer may have contained
358360 // unknown TLV records, which are not stored in `OfferContents`.
@@ -364,8 +366,9 @@ impl<'a> UnsignedInvoiceRequest<'a> {
364366 let mut bytes = Vec :: new ( ) ;
365367 unsigned_tlv_stream. write ( & mut bytes) . unwrap ( ) ;
366368
369+ let metadata = self . offer . metadata ( ) . map ( |metadata| metadata. as_slice ( ) ) . unwrap_or ( & [ ] ) ;
367370 let pubkey = self . invoice_request . payer_id ;
368- let signature = merkle:: sign_message ( sign, SIGNATURE_TAG , & bytes, pubkey) ?;
371+ let signature = merkle:: sign_message ( sign, SIGNATURE_TAG , & bytes, metadata , pubkey) ?;
369372
370373 // Append the signature TLV record to the bytes.
371374 let signature_tlv_stream = SignatureTlvStreamRef {
@@ -591,7 +594,7 @@ impl InvoiceRequest {
591594}
592595
593596impl InvoiceRequestContents {
594- pub fn metadata ( & self ) -> & [ u8 ] {
597+ pub ( super ) fn metadata ( & self ) -> & [ u8 ] {
595598 self . inner . metadata ( )
596599 }
597600
@@ -923,7 +926,8 @@ mod tests {
923926 tlv_stream. write ( & mut bytes) . unwrap ( ) ;
924927
925928 let signature = merkle:: sign_message (
926- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, recipient_pubkey ( )
929+ recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, invoice_request. metadata ( ) ,
930+ recipient_pubkey ( )
927931 ) . unwrap ( ) ;
928932 signature_tlv_stream. signature = Some ( & signature) ;
929933
@@ -947,7 +951,7 @@ mod tests {
947951 tlv_stream. write ( & mut bytes) . unwrap ( ) ;
948952
949953 let signature = merkle:: sign_message (
950- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, recipient_pubkey ( )
954+ recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, & metadata , recipient_pubkey ( )
951955 ) . unwrap ( ) ;
952956 signature_tlv_stream. signature = Some ( & signature) ;
953957
@@ -993,7 +997,8 @@ mod tests {
993997 tlv_stream. write ( & mut bytes) . unwrap ( ) ;
994998
995999 let signature = merkle:: sign_message (
996- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, recipient_pubkey ( )
1000+ recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, invoice_request. metadata ( ) ,
1001+ recipient_pubkey ( )
9971002 ) . unwrap ( ) ;
9981003 signature_tlv_stream. signature = Some ( & signature) ;
9991004
@@ -1017,7 +1022,8 @@ mod tests {
10171022 tlv_stream. write ( & mut bytes) . unwrap ( ) ;
10181023
10191024 let signature = merkle:: sign_message (
1020- recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, recipient_pubkey ( )
1025+ recipient_sign, INVOICE_SIGNATURE_TAG , & bytes, invoice_request. metadata ( ) ,
1026+ recipient_pubkey ( )
10211027 ) . unwrap ( ) ;
10221028 signature_tlv_stream. signature = Some ( & signature) ;
10231029
@@ -1357,7 +1363,7 @@ mod tests {
13571363 . build ( ) . unwrap ( )
13581364 . request_invoice ( vec ! [ 1 ; 32 ] , payer_pubkey ( ) ) . unwrap ( )
13591365 . build ( ) . unwrap ( )
1360- . sign ( |_| Err ( ( ) ) )
1366+ . sign ( |_, _ , _ , _ | Err ( ( ) ) )
13611367 {
13621368 Ok ( _) => panic ! ( "expected error" ) ,
13631369 Err ( e) => assert_eq ! ( e, SignError :: Signing ( ( ) ) ) ,
@@ -1771,7 +1777,9 @@ mod tests {
17711777 . build ( ) . unwrap ( )
17721778 . request_invoice ( vec ! [ 1 ; 32 ] , keys. public_key ( ) ) . unwrap ( )
17731779 . build ( ) . unwrap ( )
1774- . sign :: < _ , Infallible > ( |digest| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( digest, & keys) ) )
1780+ . sign :: < _ , Infallible > (
1781+ |digest, _, _, _| Ok ( secp_ctx. sign_schnorr_no_aux_rand ( digest, & keys) )
1782+ )
17751783 . unwrap ( ) ;
17761784
17771785 let mut encoded_invoice_request = Vec :: new ( ) ;
0 commit comments