|
23 | 23 | //! use bitcoin::hashes::Hash;
|
24 | 24 | //! use bitcoin::secp256k1::{KeyPair, PublicKey, Secp256k1, SecretKey};
|
25 | 25 | //! use core::convert::{Infallible, TryFrom};
|
| 26 | +//! use lightning::offers::invoice::UnsignedBolt12Invoice; |
26 | 27 | //! use lightning::offers::invoice_request::InvoiceRequest;
|
27 | 28 | //! use lightning::offers::refund::Refund;
|
28 | 29 | //! use lightning::util::ser::Writeable;
|
|
57 | 58 | //! .allow_mpp()
|
58 | 59 | //! .fallback_v0_p2wpkh(&wpubkey_hash)
|
59 | 60 | //! .build()?
|
60 |
| -//! .sign::<_, Infallible>( |
61 |
| -//! |message| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys)) |
| 61 | +//! .sign::<_, Infallible>(|message: &UnsignedBolt12Invoice| |
| 62 | +//! Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys)) |
62 | 63 | //! )
|
63 | 64 | //! .expect("failed verifying signature")
|
64 | 65 | //! .write(&mut buffer)
|
|
90 | 91 | //! .allow_mpp()
|
91 | 92 | //! .fallback_v0_p2wpkh(&wpubkey_hash)
|
92 | 93 | //! .build()?
|
93 |
| -//! .sign::<_, Infallible>( |
94 |
| -//! |message| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys)) |
| 94 | +//! .sign::<_, Infallible>(|message: &UnsignedBolt12Invoice| |
| 95 | +//! Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys)) |
95 | 96 | //! )
|
96 | 97 | //! .expect("failed verifying signature")
|
97 | 98 | //! .write(&mut buffer)
|
@@ -119,7 +120,7 @@ use crate::ln::features::{BlindedHopFeatures, Bolt12InvoiceFeatures, InvoiceRequ
|
119 | 120 | use crate::ln::inbound_payment::ExpandedKey;
|
120 | 121 | use crate::ln::msgs::DecodeError;
|
121 | 122 | use crate::offers::invoice_request::{INVOICE_REQUEST_PAYER_ID_TYPE, INVOICE_REQUEST_TYPES, IV_BYTES as INVOICE_REQUEST_IV_BYTES, InvoiceRequest, InvoiceRequestContents, InvoiceRequestTlvStream, InvoiceRequestTlvStreamRef};
|
122 |
| -use crate::offers::merkle::{SignError, SignatureTlvStream, SignatureTlvStreamRef, TaggedHash, TlvStream, WithoutSignatures, self}; |
| 123 | +use crate::offers::merkle::{SignError, SignFunction, SignatureTlvStream, SignatureTlvStreamRef, TaggedHash, TlvStream, WithoutSignatures, self}; |
123 | 124 | use crate::offers::offer::{Amount, OFFER_TYPES, OfferTlvStream, OfferTlvStreamRef, Quantity};
|
124 | 125 | use crate::offers::parse::{Bolt12ParseError, Bolt12SemanticError, ParsedMessage};
|
125 | 126 | use crate::offers::payer::{PAYER_METADATA_TYPE, PayerTlvStream, PayerTlvStreamRef};
|
@@ -320,8 +321,8 @@ macro_rules! invoice_derived_signing_pubkey_builder_methods { ($self: ident, $se
|
320 | 321 | let mut unsigned_invoice = UnsignedBolt12Invoice::new(invreq_bytes, invoice.clone());
|
321 | 322 |
|
322 | 323 | let invoice = unsigned_invoice
|
323 |
| - .sign::<_, Infallible>( |
324 |
| - |message| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys)) |
| 324 | + .sign::<_, Infallible>(|message: &UnsignedBolt12Invoice| |
| 325 | + Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &keys)) |
325 | 326 | )
|
326 | 327 | .unwrap();
|
327 | 328 | Ok(invoice)
|
@@ -528,11 +529,9 @@ macro_rules! unsigned_invoice_sign_method { ($self: ident, $self_type: ty $(, $s
|
528 | 529 | /// Signs the [`TaggedHash`] of the invoice using the given function.
|
529 | 530 | ///
|
530 | 531 | /// Note: The hash computation may have included unknown, odd TLV records.
|
531 |
| - /// |
532 |
| - /// This is not exported to bindings users as functions aren't currently mapped. |
533 | 532 | pub fn sign<F, E>($($self_mut)* $self: $self_type, sign: F) -> Result<Bolt12Invoice, SignError<E>>
|
534 | 533 | where
|
535 |
| - F: FnOnce(&Self) -> Result<Signature, E> |
| 534 | + F: SignFunction<Self, E>, |
536 | 535 | {
|
537 | 536 | let pubkey = $self.contents.fields().signing_pubkey;
|
538 | 537 | let signature = merkle::sign_message(sign, &$self, pubkey)?;
|
@@ -2007,7 +2006,7 @@ mod tests {
|
2007 | 2006 | .sign(payer_sign).unwrap()
|
2008 | 2007 | .respond_with_no_std(payment_paths(), payment_hash(), now()).unwrap()
|
2009 | 2008 | .build().unwrap()
|
2010 |
| - .sign(|_| Err(())) |
| 2009 | + .sign(fail_sign) |
2011 | 2010 | {
|
2012 | 2011 | Ok(_) => panic!("expected error"),
|
2013 | 2012 | Err(e) => assert_eq!(e, SignError::Signing(())),
|
|
0 commit comments