Skip to content

Commit dc0c4c0

Browse files
committed
Optionally pass Trampoline packet length parameter.
1 parent 85c7d76 commit dc0c4c0

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
@@ -418,9 +418,9 @@ pub(super) fn construct_onion_packet(
418418
#[allow(unused)]
419419
pub(super) fn construct_trampoline_onion_packet(
420420
payloads: Vec<msgs::OutboundTrampolinePayload>, onion_keys: Vec<OnionKeys>,
421-
prng_seed: [u8; 32], associated_data: &PaymentHash,
421+
prng_seed: [u8; 32], associated_data: &PaymentHash, length: Option<u16>,
422422
) -> Result<msgs::TrampolineOnionPacket, ()> {
423-
let packet_length: usize = payloads
423+
let minimum_packet_length: usize = payloads
424424
.iter()
425425
.map(|p| {
426426
let mut payload_len = LengthCalculatingWriter(0);
@@ -429,6 +429,17 @@ pub(super) fn construct_trampoline_onion_packet(
429429
})
430430
.sum();
431431

432+
assert!(
433+
minimum_packet_length < ONION_DATA_LEN,
434+
"Trampoline onion packet must be smaller than outer onion"
435+
);
436+
437+
let packet_length = length.unwrap_or(minimum_packet_length as u16) as usize;
438+
assert!(
439+
packet_length >= minimum_packet_length,
440+
"Packet length cannot be smaller than the payloads require."
441+
);
442+
432443
let mut packet_data = vec![0u8; packet_length];
433444
let mut chacha = ChaCha20::new(&prng_seed, &[0; 8]);
434445
chacha.process(&vec![0u8; packet_length], &mut packet_data);

0 commit comments

Comments
 (0)