Skip to content

Commit 5dff03f

Browse files
committed
Calculate Trampoline onion packet sizes dynamically.
1 parent 856ce97 commit 5dff03f

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

lightning/src/ln/onion_utils.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -553,12 +553,20 @@ 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, length: u16,
556+
prng_seed: [u8; 32], associated_data: &PaymentHash,
557557
) -> Result<msgs::TrampolineOnionPacket, ()> {
558-
let mut packet_data = vec![0u8; length as usize];
558+
let packet_length: usize = payloads
559+
.iter()
560+
.map(|p| {
561+
let mut payload_len = LengthCalculatingWriter(0);
562+
p.write(&mut payload_len).expect("Failed to calculate length");
563+
payload_len.0 + 32
564+
})
565+
.sum();
559566

567+
let mut packet_data = vec![0u8; packet_length];
560568
let mut chacha = ChaCha20::new(&prng_seed, &[0; 8]);
561-
chacha.process(&vec![0u8; length as usize], &mut packet_data);
569+
chacha.process(&vec![0u8; packet_length], &mut packet_data);
562570

563571
construct_onion_packet_with_init_noise::<_, _>(
564572
payloads,

0 commit comments

Comments
 (0)