Skip to content

Commit 69f8a65

Browse files
Simplify test_trampoline_unblinded_receive
No need to construct unused blinded hop data or hardcode session privs/prng seeds.
1 parent ebf378c commit 69f8a65

File tree

1 file changed

+18
-39
lines changed

1 file changed

+18
-39
lines changed

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2216,7 +2216,6 @@ fn test_trampoline_unblinded_receive() {
22162216
connect_blocks(&nodes[i], (TOTAL_NODE_COUNT as u32) * CHAN_CONFIRM_DEPTH + 1 - nodes[i].best_block_info().1);
22172217
}
22182218

2219-
let alice_node_id = nodes[0].node().get_our_node_id();
22202219
let bob_node_id = nodes[1].node().get_our_node_id();
22212220
let carol_node_id = nodes[2].node().get_our_node_id();
22222221

@@ -2225,28 +2224,6 @@ fn test_trampoline_unblinded_receive() {
22252224

22262225
let amt_msat = 1000;
22272226
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash(&nodes[2], Some(amt_msat), None);
2228-
let payee_tlvs = blinded_path::payment::TrampolineForwardTlvs {
2229-
next_trampoline: alice_node_id,
2230-
payment_constraints: PaymentConstraints {
2231-
max_cltv_expiry: u32::max_value(),
2232-
htlc_minimum_msat: amt_msat,
2233-
},
2234-
features: BlindedHopFeatures::empty(),
2235-
payment_relay: PaymentRelay {
2236-
cltv_expiry_delta: 0,
2237-
fee_proportional_millionths: 0,
2238-
fee_base_msat: 0,
2239-
},
2240-
next_blinding_override: None,
2241-
};
2242-
2243-
let carol_unblinded_tlvs = payee_tlvs.encode();
2244-
let path = [((carol_node_id, None), WithoutLength(&carol_unblinded_tlvs))];
2245-
let carol_alice_trampoline_session_priv = secret_from_hex("a0f4b8d7b6c2d0ffdfaf718f76e9decaef4d9fb38a8c4addb95c4007cc3eee03");
2246-
let carol_blinding_point = PublicKey::from_secret_key(&secp_ctx, &carol_alice_trampoline_session_priv);
2247-
let carol_blinded_hops = blinded_path::utils::construct_blinded_hops(
2248-
&secp_ctx, path.into_iter(), &carol_alice_trampoline_session_priv,
2249-
).unwrap();
22502227

22512228
let route = Route {
22522229
paths: vec![Path {
@@ -2283,58 +2260,60 @@ fn test_trampoline_unblinded_receive() {
22832260
cltv_expiry_delta: 24,
22842261
},
22852262
],
2286-
hops: carol_blinded_hops,
2287-
blinding_point: carol_blinding_point,
2263+
// The blinded path data is unused because we replace the onion of the last hop
2264+
hops: vec![BlindedHop {
2265+
blinded_node_id: PublicKey::from_slice(&[2; 33]).unwrap(),
2266+
encrypted_payload: vec![42; 32]
2267+
}],
2268+
blinding_point: PublicKey::from_slice(&[2; 33]).unwrap(),
22882269
excess_final_cltv_expiry_delta: 39,
22892270
final_value_msat: amt_msat,
22902271
})
22912272
}],
22922273
route_params: None,
22932274
};
22942275

2276+
// We need the session priv to construct an invalid onion packet later.
2277+
let override_random_bytes = [42; 32];
2278+
*nodes[0].keys_manager.override_random_bytes.lock().unwrap() = Some(override_random_bytes);
22952279
nodes[0].node.send_payment_with_route(route.clone(), payment_hash, RecipientOnionFields::spontaneous_empty(), PaymentId(payment_hash.0)).unwrap();
22962280

22972281
let replacement_onion = {
22982282
// create a substitute onion where the last Trampoline hop is an unblinded receive, which we
22992283
// (deliberately) do not support out of the box, therefore necessitating this workaround
2300-
let trampoline_secret_key = secret_from_hex("0134928f7b7ca6769080d70f16be84c812c741f545b49a34db47ce338a205799");
2301-
let prng_seed = secret_from_hex("fe02b4b9054302a3ddf4e1e9f7c411d644aebbd295218ab009dca94435f775a9");
2284+
let outer_session_priv = SecretKey::from_slice(&override_random_bytes[..]).unwrap();
2285+
let trampoline_session_priv = onion_utils::compute_trampoline_session_priv(&outer_session_priv);
23022286
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
23032287

23042288
let blinded_tail = route.paths[0].blinded_tail.clone().unwrap();
2305-
let (mut trampoline_payloads, outer_total_msat, outer_starting_htlc_offset) = onion_utils::build_trampoline_onion_payloads(&blinded_tail, amt_msat, &recipient_onion_fields, 32, &None).unwrap();
2306-
2307-
// pop the last dummy hop
2308-
trampoline_payloads.pop();
2309-
2310-
trampoline_payloads.push(msgs::OutboundTrampolinePayload::Receive {
2289+
let (_, _, outer_starting_htlc_offset) = onion_utils::build_trampoline_onion_payloads(&blinded_tail, amt_msat, &recipient_onion_fields, 32, &None).unwrap();
2290+
let trampoline_payloads = vec![msgs::OutboundTrampolinePayload::Receive {
23112291
payment_data: Some(msgs::FinalOnionHopData {
23122292
payment_secret,
23132293
total_msat: amt_msat,
23142294
}),
23152295
sender_intended_htlc_amt_msat: amt_msat,
23162296
cltv_expiry_height: 104,
2317-
});
2297+
}];
23182298

2319-
let trampoline_onion_keys = onion_utils::construct_trampoline_onion_keys(&secp_ctx, &route.paths[0].blinded_tail.as_ref().unwrap(), &trampoline_secret_key);
2299+
let trampoline_onion_keys = onion_utils::construct_trampoline_onion_keys(&secp_ctx, &route.paths[0].blinded_tail.as_ref().unwrap(), &trampoline_session_priv);
23202300
let trampoline_packet = onion_utils::construct_trampoline_onion_packet(
23212301
trampoline_payloads,
23222302
trampoline_onion_keys,
2323-
prng_seed.secret_bytes(),
2303+
override_random_bytes,
23242304
&payment_hash,
23252305
None,
23262306
).unwrap();
23272307

23282308
// Use a different session key to construct the replacement onion packet. Note that the sender isn't aware of
23292309
// this and won't be able to decode the fulfill hold times.
2330-
let outer_session_priv = secret_from_hex("e52c20461ed7acd46c4e7b591a37610519179482887bd73bf3b94617f8f03677");
23312310

2332-
let (outer_payloads, _, _) = onion_utils::build_onion_payloads(&route.paths[0], outer_total_msat, &recipient_onion_fields, outer_starting_htlc_offset, &None, None, Some(trampoline_packet)).unwrap();
2311+
let (outer_payloads, _, _) = onion_utils::build_onion_payloads(&route.paths[0], amt_msat, &recipient_onion_fields, outer_starting_htlc_offset, &None, None, Some(trampoline_packet)).unwrap();
23332312
let outer_onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.clone().paths[0], &outer_session_priv);
23342313
let outer_packet = onion_utils::construct_onion_packet(
23352314
outer_payloads,
23362315
outer_onion_keys,
2337-
prng_seed.secret_bytes(),
2316+
override_random_bytes,
23382317
&payment_hash,
23392318
).unwrap();
23402319

0 commit comments

Comments
 (0)