Skip to content

Commit 88bd5cc

Browse files
committed
Optionally pass Trampoline packet length parameter.
1 parent 5dff03f commit 88bd5cc

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

lightning/src/ln/onion_utils.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,9 +553,9 @@ pub(super) fn construct_onion_packet(
553553
#[allow(unused)]
554554
pub(super) fn construct_trampoline_onion_packet(
555555
payloads: Vec<msgs::OutboundTrampolinePayload>, onion_keys: Vec<OnionKeys>,
556-
prng_seed: [u8; 32], associated_data: &PaymentHash,
556+
prng_seed: [u8; 32], associated_data: &PaymentHash, length: Option<u16>,
557557
) -> Result<msgs::TrampolineOnionPacket, ()> {
558-
let packet_length: usize = payloads
558+
let minimum_packet_length: usize = payloads
559559
.iter()
560560
.map(|p| {
561561
let mut payload_len = LengthCalculatingWriter(0);
@@ -564,6 +564,17 @@ pub(super) fn construct_trampoline_onion_packet(
564564
})
565565
.sum();
566566

567+
assert!(
568+
minimum_packet_length < ONION_DATA_LEN,
569+
"Trampoline onion packet must be smaller than outer onion"
570+
);
571+
572+
let packet_length = length.unwrap_or(minimum_packet_length as u16) as usize;
573+
assert!(
574+
packet_length >= minimum_packet_length,
575+
"Packet length cannot be smaller than the payloads require."
576+
);
577+
567578
let mut packet_data = vec![0u8; packet_length];
568579
let mut chacha = ChaCha20::new(&prng_seed, &[0; 8]);
569580
chacha.process(&vec![0u8; packet_length], &mut packet_data);

0 commit comments

Comments
 (0)