Skip to content

Commit

Permalink
Make FinalOnionHopData public
Browse files Browse the repository at this point in the history
In 4b5db8c, `channelmanager::PendingHTLCRouting` was made
public, exposing a `FinalOnionHopData` field to the world. However,
`FinalOnionHopData` was left crate-private, making the enum
impossible to construct.

There isn't a strong reason for this (even though the
`FinalOnionHopData` API is somewhat confusing, being separated from
the rest of the onion structs), so we expose it here.
  • Loading branch information
TheBlueMatt committed Dec 15, 2023
1 parent 7d3b14d commit 1350daa
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions lightning/src/ln/msgs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1668,23 +1668,31 @@ pub trait OnionMessageHandler: EventsProvider {
fn provided_init_features(&self, their_node_id: &PublicKey) -> InitFeatures;
}

#[derive(Clone)]
#[cfg_attr(test, derive(Debug, PartialEq))]
/// Information communicated in the onion to the recipient for multi-part tracking and proof that
/// the payment is associated with an invoice.
pub struct FinalOnionHopData {
/// When sending a multi-part payment, this secret is used to identify a payment across HTLCs.
/// Because it is generated by the recipient and included in the invoice, it also provides
/// proof to the recipient that the payment was sent by someone with the generated invoice.
pub payment_secret: PaymentSecret,
/// The intended total amount that this payment is for.
///
/// Message serialization may panic if this value is more than 21 million Bitcoin.
pub total_msat: u64,
}

mod fuzzy_internal_msgs {
use bitcoin::secp256k1::PublicKey;
use crate::blinded_path::payment::{PaymentConstraints, PaymentRelay};
use crate::prelude::*;
use crate::ln::{PaymentPreimage, PaymentSecret};
use crate::ln::features::BlindedHopFeatures;
use super::FinalOnionHopData;

// These types aren't intended to be pub, but are exposed for direct fuzzing (as we deserialize
// them from untrusted input):
#[derive(Clone)]
#[cfg_attr(test, derive(Debug, PartialEq))]
pub struct FinalOnionHopData {
pub payment_secret: PaymentSecret,
/// The total value, in msat, of the payment as received by the ultimate recipient.
/// Message serialization may panic if this value is more than 21 million Bitcoin.
pub total_msat: u64,
}

pub enum InboundOnionPayload {
Forward {
Expand Down

0 comments on commit 1350daa

Please sign in to comment.