Skip to content

Commit

Permalink
Remove PayerSigningPubkeyStrategy
Browse files Browse the repository at this point in the history
Now that InvoiceRequest::payer_signing_pubkey is always a derived
pubkey, there is no longer a need for PayerSigningPubkeyStrategy.
  • Loading branch information
jkczyz committed Sep 5, 2024
1 parent 67fc1e7 commit 3ebe951
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 29 deletions.
4 changes: 2 additions & 2 deletions lightning/src/ln/channelmanager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ use crate::ln::outbound_payment::{OutboundPayments, PaymentAttempts, PendingOutb
use crate::ln::wire::Encode;
use crate::offers::invoice::{Bolt12Invoice, DEFAULT_RELATIVE_EXPIRY, DerivedSigningPubkey, ExplicitSigningPubkey, InvoiceBuilder, UnsignedBolt12Invoice};
use crate::offers::invoice_error::InvoiceError;
use crate::offers::invoice_request::{DerivedPayerSigningPubkey, InvoiceRequestBuilder};
use crate::offers::invoice_request::InvoiceRequestBuilder;
use crate::offers::nonce::Nonce;
use crate::offers::offer::{Offer, OfferBuilder};
use crate::offers::parse::Bolt12SemanticError;
Expand Down Expand Up @@ -9065,7 +9065,7 @@ where
let secp_ctx = &self.secp_ctx;

let nonce = Nonce::from_entropy_source(entropy);
let builder: InvoiceRequestBuilder<DerivedPayerSigningPubkey, secp256k1::All> = offer
let builder: InvoiceRequestBuilder<secp256k1::All> = offer
.request_invoice(expanded_key, nonce, secp_ctx, payment_id)?
.into();
let builder = builder.chain_hash(self.chain_hash)?;
Expand Down
32 changes: 7 additions & 25 deletions lightning/src/offers/invoice_request.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@
//! let payment_id = PaymentId([1; 32]);
//! let mut buffer = Vec::new();
//!
//! # use lightning::offers::invoice_request::{DerivedPayerSigningPubkey, InvoiceRequestBuilder};
//! # <InvoiceRequestBuilder<DerivedPayerSigningPubkey, _>>::from(
//! # use lightning::offers::invoice_request::InvoiceRequestBuilder;
//! # <InvoiceRequestBuilder<_>>::from(
//! "lno1qcp4256ypq"
//! .parse::<Offer>()?
//! .request_invoice(&expanded_key, nonce, &secp_ctx, payment_id)?
Expand Down Expand Up @@ -111,11 +111,10 @@ pub(super) const IV_BYTES: &[u8; IV_LEN] = b"LDK Invreq ~~~~~";
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
///
/// [module-level documentation]: self
pub struct InvoiceRequestBuilder<'a, 'b, P: PayerSigningPubkeyStrategy, T: secp256k1::Signing> {
pub struct InvoiceRequestBuilder<'a, 'b, T: secp256k1::Signing> {
offer: &'a Offer,
invoice_request: InvoiceRequestContentsWithoutPayerSigningPubkey,
payer_signing_pubkey: Option<PublicKey>,
payer_signing_pubkey_strategy: core::marker::PhantomData<P>,
secp_ctx: Option<&'b Secp256k1<T>>,
}

Expand All @@ -129,22 +128,9 @@ pub struct InvoiceRequestWithDerivedPayerSigningPubkeyBuilder<'a, 'b> {
offer: &'a Offer,
invoice_request: InvoiceRequestContentsWithoutPayerSigningPubkey,
payer_signing_pubkey: Option<PublicKey>,
payer_signing_pubkey_strategy: core::marker::PhantomData<DerivedPayerSigningPubkey>,
secp_ctx: Option<&'b Secp256k1<secp256k1::All>>,
}

/// Indicates how [`InvoiceRequest::payer_signing_pubkey`] will be set.
///
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
pub trait PayerSigningPubkeyStrategy {}

/// [`InvoiceRequest::payer_signing_pubkey`] will be derived.
///
/// This is not exported to bindings users as builder patterns don't map outside of move semantics.
pub struct DerivedPayerSigningPubkey {}

impl PayerSigningPubkeyStrategy for DerivedPayerSigningPubkey {}

macro_rules! invoice_request_derived_payer_signing_pubkey_builder_methods { (
$self: ident, $self_type: ty, $secp_context: ty
) => {
Expand All @@ -160,7 +146,6 @@ macro_rules! invoice_request_derived_payer_signing_pubkey_builder_methods { (
offer,
invoice_request: Self::create_contents(offer, metadata),
payer_signing_pubkey: None,
payer_signing_pubkey_strategy: core::marker::PhantomData,
secp_ctx: Some(secp_ctx),
}
}
Expand Down Expand Up @@ -397,11 +382,8 @@ macro_rules! invoice_request_builder_test_methods { (
}
} }

impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, DerivedPayerSigningPubkey, T> {
impl<'a, 'b, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, T> {
invoice_request_derived_payer_signing_pubkey_builder_methods!(self, Self, T);
}

impl<'a, 'b, P: PayerSigningPubkeyStrategy, T: secp256k1::Signing> InvoiceRequestBuilder<'a, 'b, P, T> {
invoice_request_builder_methods!(self, Self, Self, self, T, mut);

#[cfg(test)]
Expand All @@ -423,14 +405,14 @@ impl<'a, 'b> InvoiceRequestWithDerivedPayerSigningPubkeyBuilder<'a, 'b> {

#[cfg(c_bindings)]
impl<'a, 'b> From<InvoiceRequestWithDerivedPayerSigningPubkeyBuilder<'a, 'b>>
for InvoiceRequestBuilder<'a, 'b, DerivedPayerSigningPubkey, secp256k1::All> {
for InvoiceRequestBuilder<'a, 'b, secp256k1::All> {
fn from(builder: InvoiceRequestWithDerivedPayerSigningPubkeyBuilder<'a, 'b>) -> Self {
let InvoiceRequestWithDerivedPayerSigningPubkeyBuilder {
offer, invoice_request, payer_signing_pubkey, payer_signing_pubkey_strategy, secp_ctx,
offer, invoice_request, payer_signing_pubkey, secp_ctx,
} = builder;

Self {
offer, invoice_request, payer_signing_pubkey, payer_signing_pubkey_strategy, secp_ctx,
offer, invoice_request, payer_signing_pubkey, secp_ctx,
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions lightning/src/offers/offer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ use crate::util::string::PrintableString;

#[cfg(not(c_bindings))]
use {
crate::offers::invoice_request::{DerivedPayerSigningPubkey, InvoiceRequestBuilder},
crate::offers::invoice_request::InvoiceRequestBuilder,
};
#[cfg(c_bindings)]
use {
Expand Down Expand Up @@ -747,7 +747,7 @@ macro_rules! request_invoice_derived_signing_pubkey { ($self: ident, $builder: t

#[cfg(not(c_bindings))]
impl Offer {
request_invoice_derived_signing_pubkey!(self, InvoiceRequestBuilder<'a, 'b, DerivedPayerSigningPubkey, T>);
request_invoice_derived_signing_pubkey!(self, InvoiceRequestBuilder<'a, 'b, T>);
}

#[cfg(c_bindings)]
Expand Down

0 comments on commit 3ebe951

Please sign in to comment.