Skip to content

Commit 865210e

Browse files
committed
f: update create_blinded_path to take receive_tlvs
1 parent c17affe commit 865210e

File tree

9 files changed

+147
-90
lines changed

9 files changed

+147
-90
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use bitcoin::hashes::sha256d::Hash as Sha256dHash;
3333
use bitcoin::hashes::Hash as TraitImport;
3434
use bitcoin::WPubkeyHash;
3535

36-
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
36+
use lightning::blinded_path::message::{self, BlindedMessagePath};
3737
use lightning::blinded_path::payment::{BlindedPaymentPath, ReceiveTlvs};
3838
use lightning::chain;
3939
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
@@ -141,8 +141,8 @@ impl MessageRouter for FuzzRouter {
141141
}
142142

143143
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
144-
&self, _recipient: PublicKey, _context: MessageContext, _custom_tlvs: Vec<u8>,
145-
_peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>,
144+
&self, _recipient: PublicKey, _receive_tlvs: message::ReceiveTlvs, _peers: Vec<PublicKey>,
145+
_secp_ctx: &Secp256k1<T>,
146146
) -> Result<Vec<BlindedMessagePath>, ()> {
147147
unreachable!()
148148
}

fuzz/src/full_stack.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use bitcoin::hashes::Hash as _;
3030
use bitcoin::hex::FromHex;
3131
use bitcoin::WPubkeyHash;
3232

33-
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
33+
use lightning::blinded_path::message::{self, BlindedMessagePath};
3434
use lightning::blinded_path::payment::{BlindedPaymentPath, ReceiveTlvs};
3535
use lightning::chain;
3636
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
@@ -176,8 +176,8 @@ impl MessageRouter for FuzzRouter {
176176
}
177177

178178
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
179-
&self, _recipient: PublicKey, _context: MessageContext, _custom_tlvs: Vec<u8>,
180-
_peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>,
179+
&self, _recipient: PublicKey, _receive_tlvs: message::ReceiveTlvs, _peers: Vec<PublicKey>,
180+
_secp_ctx: &Secp256k1<T>,
181181
) -> Result<Vec<BlindedMessagePath>, ()> {
182182
unreachable!()
183183
}

fuzz/src/onion_message.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use bitcoin::secp256k1::schnorr;
66
use bitcoin::secp256k1::{self, PublicKey, Scalar, Secp256k1, SecretKey};
77

88
use lightning::blinded_path::message::{
9-
AsyncPaymentsContext, BlindedMessagePath, MessageContext, OffersContext,
9+
AsyncPaymentsContext, BlindedMessagePath, OffersContext, ReceiveTlvs,
1010
};
1111
use lightning::blinded_path::EmptyNodeIdLookUp;
1212
use lightning::ln::msgs::{self, DecodeError, OnionMessageHandler};
@@ -99,8 +99,8 @@ impl MessageRouter for TestMessageRouter {
9999
}
100100

101101
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
102-
&self, _recipient: PublicKey, _context: MessageContext, _custom_tlvs: Vec<u8>,
103-
_peers: Vec<PublicKey>, _secp_ctx: &Secp256k1<T>,
102+
&self, _recipient: PublicKey, _receive_tlvs: ReceiveTlvs, _peers: Vec<PublicKey>,
103+
_secp_ctx: &Secp256k1<T>,
104104
) -> Result<Vec<BlindedMessagePath>, ()> {
105105
unreachable!()
106106
}

lightning-dns-resolver/src/lib.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ mod test {
159159
use bitcoin::secp256k1::{self, PublicKey, Secp256k1};
160160
use bitcoin::Block;
161161

162-
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
162+
use lightning::blinded_path::message::{BlindedMessagePath, MessageContext, ReceiveTlvs};
163163
use lightning::blinded_path::NodeIdLookUp;
164164
use lightning::events::{Event, PaymentPurpose};
165165
use lightning::ln::channelmanager::{PaymentId, Retry};
@@ -225,12 +225,11 @@ mod test {
225225
}
226226

227227
fn create_blinded_paths<T: secp256k1::Signing + secp256k1::Verification>(
228-
&self, recipient: PublicKey, context: MessageContext, custom_tlvs: Vec<u8>,
229-
_peers: Vec<PublicKey>, secp_ctx: &Secp256k1<T>,
228+
&self, recipient: PublicKey, receive_tlvs: ReceiveTlvs, _peers: Vec<PublicKey>,
229+
secp_ctx: &Secp256k1<T>,
230230
) -> Result<Vec<BlindedMessagePath>, ()> {
231231
let keys = KeysManager::new(&[0; 32], 42, 43);
232-
Ok(vec![BlindedMessagePath::one_hop(recipient, context, custom_tlvs, &keys, secp_ctx)
233-
.unwrap()])
232+
Ok(vec![BlindedMessagePath::one_hop(recipient, receive_tlvs, &keys, secp_ctx).unwrap()])
234233
}
235234
}
236235
impl Deref for DirectlyConnectedRouter {
@@ -332,14 +331,9 @@ mod test {
332331
let (msg, context) =
333332
payer.resolver.resolve_name(payment_id, name.clone(), &*payer_keys).unwrap();
334333
let query_context = MessageContext::DNSResolver(context);
335-
let reply_path = BlindedMessagePath::one_hop(
336-
payer_id,
337-
query_context,
338-
Vec::new(),
339-
&*payer_keys,
340-
&secp_ctx,
341-
)
342-
.unwrap();
334+
let receive_tlvs = ReceiveTlvs { context: Some(query_context), custom_tlvs: None };
335+
let reply_path =
336+
BlindedMessagePath::one_hop(payer_id, receive_tlvs, &*payer_keys, &secp_ctx).unwrap();
343337
payer.pending_messages.lock().unwrap().push((
344338
DNSResolverMessage::DNSSECQuery(msg),
345339
MessageSendInstructions::WithSpecifiedReplyPath {

lightning/src/blinded_path/message.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ impl Readable for BlindedMessagePath {
5555
impl BlindedMessagePath {
5656
/// Create a one-hop blinded path for a message.
5757
pub fn one_hop<ES: Deref, T: secp256k1::Signing + secp256k1::Verification>(
58-
recipient_node_id: PublicKey, context: MessageContext, custom_tlvs: Vec<u8>, entropy_source: ES, secp_ctx: &Secp256k1<T>
58+
recipient_node_id: PublicKey, receive_tlvs: ReceiveTlvs, entropy_source: ES, secp_ctx: &Secp256k1<T>
5959
) -> Result<Self, ()> where ES::Target: EntropySource {
60-
Self::new(&[], recipient_node_id, context, custom_tlvs, entropy_source, secp_ctx)
60+
Self::new(&[], recipient_node_id, receive_tlvs, entropy_source, secp_ctx)
6161
}
6262

6363
/// Create a path for an onion message, to be forwarded along `node_pks`. The last node
@@ -67,7 +67,7 @@ impl BlindedMessagePath {
6767
// TODO: make all payloads the same size with padding + add dummy hops
6868
pub fn new<ES: Deref, T: secp256k1::Signing + secp256k1::Verification>(
6969
intermediate_nodes: &[MessageForwardNode], recipient_node_id: PublicKey,
70-
context: MessageContext, custom_tlvs: Vec<u8>, entropy_source: ES, secp_ctx: &Secp256k1<T>,
70+
receive_tlvs: ReceiveTlvs, entropy_source: ES, secp_ctx: &Secp256k1<T>,
7171
) -> Result<Self, ()> where ES::Target: EntropySource {
7272
let introduction_node = IntroductionNode::NodeId(
7373
intermediate_nodes.first().map_or(recipient_node_id, |n| n.node_id)
@@ -80,7 +80,7 @@ impl BlindedMessagePath {
8080
blinding_point: PublicKey::from_secret_key(secp_ctx, &blinding_secret),
8181
blinded_hops: blinded_hops(
8282
secp_ctx, intermediate_nodes, recipient_node_id,
83-
context, custom_tlvs, &blinding_secret,
83+
receive_tlvs, &blinding_secret,
8484
).map_err(|_| ())?,
8585
}))
8686
}
@@ -236,8 +236,9 @@ pub(crate) struct ForwardTlvs {
236236
pub(crate) next_blinding_override: Option<PublicKey>,
237237
}
238238

239+
#[derive(Clone)]
239240
/// Similar to Forward Tlvs, but these TLVs are for the final node.
240-
pub(crate) struct ReceiveTlvs {
241+
pub struct ReceiveTlvs {
241242
/// If `context` is `Some`, it is used to identify the blinded path that this onion message is
242243
/// sending to. This is useful for receivers to check that said blinded path is being used in
243244
/// the right context.
@@ -468,7 +469,7 @@ impl_writeable_tlv_based!(DNSResolverContext, {
468469
/// Construct blinded onion message hops for the given `intermediate_nodes` and `recipient_node_id`.
469470
pub(super) fn blinded_hops<T: secp256k1::Signing + secp256k1::Verification>(
470471
secp_ctx: &Secp256k1<T>, intermediate_nodes: &[MessageForwardNode],
471-
recipient_node_id: PublicKey, context: MessageContext, custom_tlvs: Vec<u8>, session_priv: &SecretKey,
472+
recipient_node_id: PublicKey, receive_tlvs: ReceiveTlvs, session_priv: &SecretKey,
472473
) -> Result<Vec<BlindedHop>, secp256k1::Error> {
473474
let pks = intermediate_nodes.iter().map(|node| node.node_id)
474475
.chain(core::iter::once(recipient_node_id));
@@ -480,7 +481,7 @@ pub(super) fn blinded_hops<T: secp256k1::Signing + secp256k1::Verification>(
480481
None => NextMessageHop::NodeId(pubkey),
481482
})
482483
.map(|next_hop| ControlTlvs::Forward(ForwardTlvs { next_hop, next_blinding_override: None }))
483-
.chain(core::iter::once(ControlTlvs::Receive(ReceiveTlvs{ context: Some(context), custom_tlvs: Some(custom_tlvs) })));
484+
.chain(core::iter::once(ControlTlvs::Receive(receive_tlvs)));
484485

485486
let path = pks.zip(tlvs);
486487

lightning/src/ln/channelmanager.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use bitcoin::secp256k1::Secp256k1;
3333
use bitcoin::{secp256k1, Sequence, Weight};
3434

3535
use crate::events::FundingInfo;
36-
use crate::blinded_path::message::{AsyncPaymentsContext, MessageContext, OffersContext};
36+
use crate::blinded_path::message::{self, AsyncPaymentsContext, MessageContext, OffersContext};
3737
use crate::blinded_path::NodeIdLookUp;
3838
use crate::blinded_path::message::{BlindedMessagePath, MessageForwardNode};
3939
use crate::blinded_path::payment::{BlindedPaymentPath, Bolt12OfferContext, Bolt12RefundContext, PaymentConstraints, PaymentContext, ReceiveTlvs};
@@ -10420,8 +10420,13 @@ where
1042010420
.map(|(node_id, _)| *node_id)
1042110421
.collect::<Vec<_>>();
1042210422

10423+
let receive_tlvs = message::ReceiveTlvs {
10424+
context: Some(context),
10425+
custom_tlvs: None,
10426+
};
10427+
1042310428
self.message_router
10424-
.create_blinded_paths(recipient, context, Vec::new(), peers, secp_ctx)
10429+
.create_blinded_paths(recipient, receive_tlvs, peers, secp_ctx)
1042510430
.and_then(|paths| (!paths.is_empty()).then(|| paths).ok_or(()))
1042610431
}
1042710432

@@ -10448,8 +10453,13 @@ where
1044810453
})
1044910454
.collect::<Vec<_>>();
1045010455

10456+
let receive_tlvs = message::ReceiveTlvs {
10457+
context: Some(MessageContext::Offers(context)),
10458+
custom_tlvs: None,
10459+
};
10460+
1045110461
self.message_router
10452-
.create_compact_blinded_paths(recipient, MessageContext::Offers(context), Vec::new(), peers, secp_ctx)
10462+
.create_compact_blinded_paths(recipient, receive_tlvs, peers, secp_ctx)
1045310463
.and_then(|paths| (!paths.is_empty()).then(|| paths).ok_or(()))
1045410464
}
1045510465

0 commit comments

Comments
 (0)