Skip to content

Commit 7785df3

Browse files
authored
Merge pull request #2227 from TheBlueMatt/2023-04-0.0.115-bindings
0.0.115 Bindings Updates
2 parents b734735 + 8d7615b commit 7785df3

File tree

25 files changed

+229
-60
lines changed

25 files changed

+229
-60
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ use lightning::chain::keysinterface::{KeyMaterial, InMemorySigner, Recipient, En
4141
use lightning::events;
4242
use lightning::events::MessageSendEventsProvider;
4343
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
44-
use lightning::ln::channelmanager::{ChainParameters, ChannelDetails, ChannelManager, PaymentSendFailure, ChannelManagerReadArgs, PaymentId, RecipientOnionFields};
44+
use lightning::ln::channelmanager::{ChainParameters, ChannelDetails, ChannelManager, PaymentSendFailure, ChannelManagerReadArgs, PaymentId};
45+
use lightning::ln::outbound_payment::RecipientOnionFields;
4546
use lightning::ln::channel::FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE;
4647
use lightning::ln::msgs::{self, CommitmentUpdate, ChannelMessageHandler, DecodeError, UpdateAddHTLC, Init};
4748
use lightning::ln::script::ShutdownScript;

fuzz/src/onion_message.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ use lightning::ln::script::ShutdownScript;
1111
use lightning::util::enforcing_trait_impls::EnforcingSigner;
1212
use lightning::util::logger::Logger;
1313
use lightning::util::ser::{Readable, Writeable, Writer};
14-
use lightning::onion_message::{CustomOnionMessageContents, CustomOnionMessageHandler, OnionMessenger};
14+
use lightning::onion_message::packet::CustomOnionMessageContents;
15+
use lightning::onion_message::messenger::{OnionMessenger, CustomOnionMessageHandler};
1516

1617
use crate::utils::test_logger;
1718

lightning-invoice/src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,15 @@ pub enum TaggedField {
455455
pub struct Sha256(/// This is not exported to bindings users as the native hash types are not currently mapped
456456
pub sha256::Hash);
457457

458+
impl Sha256 {
459+
/// Constructs a new [`Sha256`] from the given bytes, which are assumed to be the output of a
460+
/// single sha256 hash.
461+
#[cfg(c_bindings)]
462+
pub fn from_bytes(bytes: &[u8; 32]) -> Self {
463+
Self(sha256::Hash::from_slice(bytes).expect("from_slice only fails if len is not 32"))
464+
}
465+
}
466+
458467
/// Description string
459468
///
460469
/// # Invariants

lightning-invoice/src/payment.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ use lightning::chain;
1717
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
1818
use lightning::chain::keysinterface::{NodeSigner, SignerProvider, EntropySource};
1919
use lightning::ln::PaymentHash;
20-
use lightning::ln::channelmanager::{ChannelManager, PaymentId, Retry, RetryableSendFailure, RecipientOnionFields};
20+
use lightning::ln::channelmanager::{ChannelManager, PaymentId};
21+
use lightning::ln::outbound_payment::{RecipientOnionFields, RetryableSendFailure, Retry};
2122
use lightning::routing::router::{PaymentParameters, RouteParameters, Router};
2223
use lightning::util::logger::Logger;
2324

lightning-invoice/src/utils.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,8 @@ mod test {
667667
use lightning::chain::keysinterface::PhantomKeysManager;
668668
use lightning::events::{MessageSendEvent, MessageSendEventsProvider, Event};
669669
use lightning::ln::{PaymentPreimage, PaymentHash};
670-
use lightning::ln::channelmanager::{PhantomRouteHints, MIN_FINAL_CLTV_EXPIRY_DELTA, PaymentId, RecipientOnionFields, Retry};
670+
use lightning::ln::channelmanager::{PhantomRouteHints, MIN_FINAL_CLTV_EXPIRY_DELTA, PaymentId};
671+
use lightning::ln::outbound_payment::{RecipientOnionFields, Retry};
671672
use lightning::ln::functional_test_utils::*;
672673
use lightning::ln::msgs::ChannelMessageHandler;
673674
use lightning::routing::router::{PaymentParameters, RouteParameters};

lightning-persister/src/lib.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ extern crate libc;
2020
use bitcoin::hash_types::{BlockHash, Txid};
2121
use bitcoin::hashes::hex::FromHex;
2222
use lightning::chain::channelmonitor::ChannelMonitor;
23-
use lightning::chain::keysinterface::{EntropySource, SignerProvider};
23+
use lightning::chain::keysinterface::{EntropySource, SignerProvider, WriteableEcdsaChannelSigner};
2424
use lightning::util::ser::{ReadableArgs, Writeable};
2525
use lightning::util::persist::KVStorePersister;
2626
use std::fs;
@@ -59,12 +59,11 @@ impl FilesystemPersister {
5959
}
6060

6161
/// Read `ChannelMonitor`s from disk.
62-
pub fn read_channelmonitors<ES: Deref, SP: Deref> (
63-
&self, entropy_source: ES, signer_provider: SP
64-
) -> std::io::Result<Vec<(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::Signer>)>>
62+
pub fn read_channelmonitors<ES: Deref, WES: WriteableEcdsaChannelSigner, SP: SignerProvider<Signer = WES> + Sized, SPD: Deref<Target=SP>> (
63+
&self, entropy_source: ES, signer_provider: SPD
64+
) -> Result<Vec<(BlockHash, ChannelMonitor<WES>)>, std::io::Error>
6565
where
6666
ES::Target: EntropySource + Sized,
67-
SP::Target: SignerProvider + Sized
6867
{
6968
let mut path = PathBuf::from(&self.path_to_channel_data);
7069
path.push("monitors");
@@ -105,7 +104,7 @@ impl FilesystemPersister {
105104

106105
let contents = fs::read(&file.path())?;
107106
let mut buffer = Cursor::new(&contents);
108-
match <(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::Signer>)>::read(&mut buffer, (&*entropy_source, &*signer_provider)) {
107+
match <(BlockHash, ChannelMonitor<WES>)>::read(&mut buffer, (&*entropy_source, &*signer_provider)) {
109108
Ok((blockhash, channel_monitor)) => {
110109
if channel_monitor.get_funding_txo().0.txid != txid || channel_monitor.get_funding_txo().0.index != index {
111110
return Err(std::io::Error::new(std::io::ErrorKind::InvalidData,

lightning-rapid-gossip-sync/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ use lightning::io;
8181
use lightning::routing::gossip::NetworkGraph;
8282
use lightning::util::logger::Logger;
8383

84-
pub use crate::error::GraphSyncError;
84+
use crate::error::GraphSyncError;
8585

8686
/// Error types that these functions can return
87-
mod error;
87+
pub mod error;
8888

8989
/// Core functionality of this crate
9090
mod processing;

lightning/src/chain/channelmonitor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3772,8 +3772,8 @@ where
37723772

37733773
const MAX_ALLOC_SIZE: usize = 64*1024;
37743774

3775-
impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP)>
3776-
for (BlockHash, ChannelMonitor<SP::Signer>) {
3775+
impl<'a, 'b, ES: EntropySource, SP: SignerProvider<Signer=Signer>, Signer: WriteableEcdsaChannelSigner> ReadableArgs<(&'a ES, &'b SP)>
3776+
for (BlockHash, ChannelMonitor<Signer>) {
37773777
fn read<R: io::Read>(reader: &mut R, args: (&'a ES, &'b SP)) -> Result<Self, DecodeError> {
37783778
macro_rules! unwrap_obj {
37793779
($key: expr) => {

lightning/src/ln/channel.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5539,7 +5539,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
55395539
return None;
55405540
}
55415541
};
5542-
let our_node_sig = match node_signer.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelAnnouncement(&announcement)) {
5542+
let our_node_sig = match node_signer.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelAnnouncement(announcement.clone())) {
55435543
Err(_) => {
55445544
log_error!(logger, "Failed to generate node signature for channel_announcement. Channel will not be announced!");
55455545
return None;
@@ -5573,7 +5573,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
55735573
.map_err(|_| ChannelError::Ignore("Signer failed to retrieve own public key".to_owned()))?);
55745574
let were_node_one = announcement.node_id_1 == our_node_key;
55755575

5576-
let our_node_sig = node_signer.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelAnnouncement(&announcement))
5576+
let our_node_sig = node_signer.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelAnnouncement(announcement.clone()))
55775577
.map_err(|_| ChannelError::Ignore("Failed to generate node signature for channel_announcement".to_owned()))?;
55785578
let our_bitcoin_sig = self.holder_signer.sign_channel_announcement_with_funding_key(&announcement, &self.secp_ctx)
55795579
.map_err(|_| ChannelError::Ignore("Signer rejected channel_announcement".to_owned()))?;

lightning/src/ln/channelmanager.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ use core::time::Duration;
7777
use core::ops::Deref;
7878

7979
// Re-export this for use in the public API.
80-
pub use crate::ln::outbound_payment::{PaymentSendFailure, Retry, RetryableSendFailure, RecipientOnionFields};
80+
pub(crate) use crate::ln::outbound_payment::{PaymentSendFailure, Retry, RetryableSendFailure, RecipientOnionFields};
8181

8282
// We hold various information about HTLC relay in the HTLC objects in Channel itself:
8383
//
@@ -2650,7 +2650,7 @@ where
26502650
// If we returned an error and the `node_signer` cannot provide a signature for whatever
26512651
// reason`, we wouldn't be able to receive inbound payments through the corresponding
26522652
// channel.
2653-
let sig = self.node_signer.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelUpdate(&unsigned)).unwrap();
2653+
let sig = self.node_signer.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelUpdate(unsigned.clone())).unwrap();
26542654

26552655
Ok(msgs::ChannelUpdate {
26562656
signature: sig,

lightning/src/ln/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ pub mod channel;
3232
pub(crate) mod channel;
3333

3434
pub(crate) mod onion_utils;
35-
mod outbound_payment;
35+
pub mod outbound_payment;
3636
pub mod wire;
3737

3838
// Older rustc (which we support) refuses to let us call the get_payment_preimage_hash!() macro

lightning/src/ln/msgs.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -658,16 +658,17 @@ impl Readable for NetAddress {
658658
}
659659

660660
/// Represents the set of gossip messages that require a signature from a node's identity key.
661-
pub enum UnsignedGossipMessage<'a> {
661+
#[derive(Clone)]
662+
pub enum UnsignedGossipMessage {
662663
/// An unsigned channel announcement.
663-
ChannelAnnouncement(&'a UnsignedChannelAnnouncement),
664+
ChannelAnnouncement(UnsignedChannelAnnouncement),
664665
/// An unsigned channel update.
665-
ChannelUpdate(&'a UnsignedChannelUpdate),
666+
ChannelUpdate(UnsignedChannelUpdate),
666667
/// An unsigned node announcement.
667-
NodeAnnouncement(&'a UnsignedNodeAnnouncement)
668+
NodeAnnouncement(UnsignedNodeAnnouncement)
668669
}
669670

670-
impl<'a> Writeable for UnsignedGossipMessage<'a> {
671+
impl Writeable for UnsignedGossipMessage {
671672
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), io::Error> {
672673
match self {
673674
UnsignedGossipMessage::ChannelAnnouncement(ref msg) => msg.write(writer),

lightning/src/ln/peer_handler.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ use crate::util::ser::{VecWriter, Writeable, Writer};
2727
use crate::ln::peer_channel_encryptor::{PeerChannelEncryptor,NextNoiseStep};
2828
use crate::ln::wire;
2929
use crate::ln::wire::Encode;
30-
use crate::onion_message::{CustomOnionMessageContents, CustomOnionMessageHandler, SimpleArcOnionMessenger, SimpleRefOnionMessenger};
30+
use crate::onion_message::messenger::{CustomOnionMessageHandler, SimpleArcOnionMessenger, SimpleRefOnionMessenger};
31+
use crate::onion_message::packet::CustomOnionMessageContents;
3132
use crate::routing::gossip::{NetworkGraph, P2PGossipSync, NodeId, NodeAlias};
3233
use crate::util::atomic_counter::AtomicCounter;
3334
use crate::util::logger::Logger;
@@ -2160,7 +2161,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
21602161
excess_data: Vec::new(),
21612162
};
21622163
let node_announce_sig = match self.node_signer.sign_gossip_message(
2163-
msgs::UnsignedGossipMessage::NodeAnnouncement(&announcement)
2164+
msgs::UnsignedGossipMessage::NodeAnnouncement(announcement.clone())
21642165
) {
21652166
Ok(sig) => sig,
21662167
Err(_) => {

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ fn test_scid_alias_returned() {
506506
fee_proportional_millionths: last_hop[0].counterparty.forwarding_info.as_ref().unwrap().fee_proportional_millionths,
507507
excess_data: Vec::new(),
508508
};
509-
let signature = nodes[1].keys_manager.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelUpdate(&contents)).unwrap();
509+
let signature = nodes[1].keys_manager.sign_gossip_message(msgs::UnsignedGossipMessage::ChannelUpdate(contents.clone())).unwrap();
510510
let msg = msgs::ChannelUpdate { signature, contents };
511511

512512
let mut err_data = Vec::new();

lightning/src/offers/invoice.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ pub(super) const SIGNATURE_TAG: &'static str = concat!("lightning", "invoice", "
134134
///
135135
/// See [module-level documentation] for usage.
136136
///
137+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
138+
///
137139
/// [`InvoiceRequest`]: crate::offers::invoice_request::InvoiceRequest
138140
/// [`Refund`]: crate::offers::refund::Refund
139141
/// [module-level documentation]: self
@@ -145,12 +147,18 @@ pub struct InvoiceBuilder<'a, S: SigningPubkeyStrategy> {
145147
}
146148

147149
/// Indicates how [`Invoice::signing_pubkey`] was set.
150+
///
151+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
148152
pub trait SigningPubkeyStrategy {}
149153

150154
/// [`Invoice::signing_pubkey`] was explicitly set.
155+
///
156+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
151157
pub struct ExplicitSigningPubkey {}
152158

153159
/// [`Invoice::signing_pubkey`] was derived.
160+
///
161+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
154162
pub struct DerivedSigningPubkey {}
155163

156164
impl SigningPubkeyStrategy for ExplicitSigningPubkey {}
@@ -303,6 +311,8 @@ impl<'a, S: SigningPubkeyStrategy> InvoiceBuilder<'a, S> {
303311
///
304312
/// Successive calls to this method will add another address. Caller is responsible for not
305313
/// adding duplicate addresses and only calling if capable of receiving to P2TR addresses.
314+
///
315+
/// This is not exported to bindings users as TweakedPublicKey isn't yet mapped.
306316
pub fn fallback_v1_p2tr_tweaked(mut self, output_key: &TweakedPublicKey) -> Self {
307317
let address = FallbackAddress {
308318
version: WitnessVersion::V1.to_num(),
@@ -369,6 +379,8 @@ impl<'a> UnsignedInvoice<'a> {
369379
}
370380

371381
/// Signs the invoice using the given function.
382+
///
383+
/// This is not exported to bindings users as functions aren't currently mapped.
372384
pub fn sign<F, E>(self, sign: F) -> Result<Invoice, SignError<E>>
373385
where
374386
F: FnOnce(&Message) -> Result<Signature, E>
@@ -405,6 +417,8 @@ impl<'a> UnsignedInvoice<'a> {
405417
/// An invoice may be sent in response to an [`InvoiceRequest`] in the case of an offer or sent
406418
/// directly after scanning a refund. It includes all the information needed to pay a recipient.
407419
///
420+
/// This is not exported to bindings users as its name conflicts with the BOLT 11 Invoice type.
421+
///
408422
/// [`Offer`]: crate::offers::offer::Offer
409423
/// [`Refund`]: crate::offers::refund::Refund
410424
/// [`InvoiceRequest`]: crate::offers::invoice_request::InvoiceRequest
@@ -464,6 +478,8 @@ impl Invoice {
464478
///
465479
/// Blinded paths provide recipient privacy by obfuscating its node id. Note, however, that this
466480
/// privacy is lost if a public node id is used for [`Invoice::signing_pubkey`].
481+
///
482+
/// This is not exported to bindings users as a slice of tuples isn't exportable.
467483
pub fn payment_paths(&self) -> &[(BlindedPath, BlindedPayInfo)] {
468484
&self.contents.fields().payment_paths[..]
469485
}
@@ -504,6 +520,8 @@ impl Invoice {
504520

505521
/// Fallback addresses for paying the invoice on-chain, in order of most-preferred to
506522
/// least-preferred.
523+
///
524+
/// This is not exported to bindings users as Address is not yet mapped
507525
pub fn fallbacks(&self) -> Vec<Address> {
508526
let network = match self.network() {
509527
None => return Vec::new(),
@@ -568,6 +586,8 @@ impl Invoice {
568586
}
569587

570588
/// Signature of the invoice verified using [`Invoice::signing_pubkey`].
589+
///
590+
/// This is not exported to bindings users as SIgnature is not yet mapped.
571591
pub fn signature(&self) -> Signature {
572592
self.signature
573593
}

lightning/src/offers/invoice_request.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ pub(super) const IV_BYTES: &[u8; IV_LEN] = b"LDK Invreq ~~~~~";
8484
///
8585
/// See [module-level documentation] for usage.
8686
///
87+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
88+
///
8789
/// [module-level documentation]: self
8890
pub struct InvoiceRequestBuilder<'a, 'b, P: PayerIdStrategy, T: secp256k1::Signing> {
8991
offer: &'a Offer,
@@ -94,12 +96,18 @@ pub struct InvoiceRequestBuilder<'a, 'b, P: PayerIdStrategy, T: secp256k1::Signi
9496
}
9597

9698
/// Indicates how [`InvoiceRequest::payer_id`] will be set.
99+
///
100+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
97101
pub trait PayerIdStrategy {}
98102

99103
/// [`InvoiceRequest::payer_id`] will be explicitly set.
104+
///
105+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
100106
pub struct ExplicitPayerId {}
101107

102108
/// [`InvoiceRequest::payer_id`] will be derived.
109+
///
110+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
103111
pub struct DerivedPayerId {}
104112

105113
impl PayerIdStrategy for ExplicitPayerId {}
@@ -340,6 +348,8 @@ pub struct UnsignedInvoiceRequest<'a> {
340348

341349
impl<'a> UnsignedInvoiceRequest<'a> {
342350
/// Signs the invoice request using the given function.
351+
///
352+
/// This is not exported to bindings users as functions are not yet mapped.
343353
pub fn sign<F, E>(self, sign: F) -> Result<InvoiceRequest, SignError<E>>
344354
where
345355
F: FnOnce(&Message) -> Result<Signature, E>
@@ -454,6 +464,8 @@ impl InvoiceRequest {
454464

455465
/// Signature of the invoice request using [`payer_id`].
456466
///
467+
/// This is not exported to bindings users as Signature is not yet mapped.
468+
///
457469
/// [`payer_id`]: Self::payer_id
458470
pub fn signature(&self) -> Signature {
459471
self.signature
@@ -465,6 +477,8 @@ impl InvoiceRequest {
465477
/// See [`InvoiceRequest::respond_with_no_std`] for further details where the aforementioned
466478
/// creation time is used for the `created_at` parameter.
467479
///
480+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
481+
///
468482
/// [`Duration`]: core::time::Duration
469483
#[cfg(feature = "std")]
470484
pub fn respond_with(
@@ -493,6 +507,8 @@ impl InvoiceRequest {
493507
///
494508
/// Errors if the request contains unknown required features.
495509
///
510+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
511+
///
496512
/// [`Invoice::created_at`]: crate::offers::invoice::Invoice::created_at
497513
pub fn respond_with_no_std(
498514
&self, payment_paths: Vec<(BlindedPath, BlindedPayInfo)>, payment_hash: PaymentHash,
@@ -511,6 +527,8 @@ impl InvoiceRequest {
511527
///
512528
/// See [`InvoiceRequest::respond_with`] for further details.
513529
///
530+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
531+
///
514532
/// [`Invoice`]: crate::offers::invoice::Invoice
515533
#[cfg(feature = "std")]
516534
pub fn verify_and_respond_using_derived_keys<T: secp256k1::Signing>(
@@ -532,6 +550,8 @@ impl InvoiceRequest {
532550
///
533551
/// See [`InvoiceRequest::respond_with_no_std`] for further details.
534552
///
553+
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
554+
///
535555
/// [`Invoice`]: crate::offers::invoice::Invoice
536556
pub fn verify_and_respond_using_derived_keys_no_std<T: secp256k1::Signing>(
537557
&self, payment_paths: Vec<(BlindedPath, BlindedPayInfo)>, payment_hash: PaymentHash,
@@ -554,6 +574,8 @@ impl InvoiceRequest {
554574
/// keys need to sign an [`Invoice`] for the request if they could be extracted from the
555575
/// metadata.
556576
///
577+
/// This is not exported to bindings users as KeyPair is not yet mapped.
578+
///
557579
/// [`Invoice`]: crate::offers::invoice::Invoice
558580
pub fn verify<T: secp256k1::Signing>(
559581
&self, key: &ExpandedKey, secp_ctx: &Secp256k1<T>

0 commit comments

Comments
 (0)