Skip to content

Commit 81c3db0

Browse files
committed
Clean up error handling on onion keys construction
Onion keys construction can only fail if we have a key which is the inverse of a hash containing a public key which we generated (even indirectly). Because we prefer to panic if our RNG creates an insecure key (as it indicates operating is incredibly unsafe), we thus don't actually need to return an error from `construct_onion_keys_generic_callback`, which we clean up here.
1 parent 725d754 commit 81c3db0

File tree

5 files changed

+44
-53
lines changed

5 files changed

+44
-53
lines changed

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ fn do_forward_checks_failure(check: ForwardCheckFail, intro_fails: bool) {
384384
ForwardCheckFail::ForwardPayloadEncodedAsReceive => {
385385
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
386386
let session_priv = SecretKey::from_slice(&[3; 32]).unwrap();
387-
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv).unwrap();
387+
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv);
388388
let cur_height = nodes[0].best_block_info().1;
389389
let (mut onion_payloads, ..) = onion_utils::build_onion_payloads(
390390
&route.paths[0], amt_msat, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -965,7 +965,7 @@ fn do_multi_hop_receiver_fail(check: ReceiveCheckFail) {
965965
},
966966
ReceiveCheckFail::OnionDecodeFail => {
967967
let session_priv = SecretKey::from_slice(&session_priv).unwrap();
968-
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv).unwrap();
968+
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv);
969969
let cur_height = nodes[0].best_block_info().1;
970970
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
971971
let (mut onion_payloads, ..) = onion_utils::build_onion_payloads(

lightning/src/ln/functional_tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1434,7 +1434,7 @@ pub fn test_fee_spike_violation_fails_htlc() {
14341434

14351435
let cur_height = nodes[1].node.best_block.read().unwrap().height + 1;
14361436

1437-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
1437+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv);
14381438
let recipient_onion_fields = RecipientOnionFields::secret_only(payment_secret);
14391439
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(&route.paths[0],
14401440
3460001, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -1632,7 +1632,7 @@ pub fn test_chan_reserve_violation_inbound_htlc_outbound_channel() {
16321632
let secp_ctx = Secp256k1::new();
16331633
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
16341634
let cur_height = nodes[1].node.best_block.read().unwrap().height + 1;
1635-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
1635+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv);
16361636
let recipient_onion_fields = RecipientOnionFields::secret_only(payment_secret);
16371637
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(&route.paths[0],
16381638
700_000, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -1812,7 +1812,7 @@ pub fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
18121812
let secp_ctx = Secp256k1::new();
18131813
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
18141814
let cur_height = nodes[0].node.best_block.read().unwrap().height + 1;
1815-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route_2.paths[0], &session_priv).unwrap();
1815+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route_2.paths[0], &session_priv);
18161816
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
18171817
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(
18181818
&route_2.paths[0], recv_value_2, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -3864,7 +3864,7 @@ pub fn fail_backward_pending_htlc_upon_channel_failure() {
38643864
let recipient_onion_fields = RecipientOnionFields::secret_only(payment_secret);
38653865
let (onion_payloads, _amount_msat, cltv_expiry) = onion_utils::build_onion_payloads(
38663866
&route.paths[0], 50_000, &recipient_onion_fields, current_height, &None, None, None).unwrap();
3867-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
3867+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv);
38683868
let onion_routing_packet = onion_utils::construct_onion_packet(onion_payloads, onion_keys, [0; 32], &payment_hash).unwrap();
38693869

38703870
// Send a 0-msat update_add_htlc to fail the channel.
@@ -6876,7 +6876,7 @@ pub fn test_update_add_htlc_bolt2_receiver_check_max_htlc_limit() {
68766876
route.paths[0].hops[0].fee_msat = send_amt;
68776877
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
68786878
let cur_height = nodes[0].node.best_block.read().unwrap().height + 1;
6879-
let onion_keys = onion_utils::construct_onion_keys(&Secp256k1::signing_only(), &route.paths[0], &session_priv).unwrap();
6879+
let onion_keys = onion_utils::construct_onion_keys(&Secp256k1::signing_only(), &route.paths[0], &session_priv);
68806880
let recipient_onion_fields = RecipientOnionFields::secret_only(our_payment_secret);
68816881
let (onion_payloads, _htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(
68826882
&route.paths[0], send_amt, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -8691,7 +8691,7 @@ pub fn test_onion_value_mpp_set_calculation() {
86918691
let session_priv = [3; 32];
86928692
let height = nodes[0].best_block_info().1;
86938693
let session_priv = SecretKey::from_slice(&session_priv).unwrap();
8694-
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv).unwrap();
8694+
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv);
86958695
let recipient_onion_fields = RecipientOnionFields::secret_only(our_payment_secret);
86968696
let (mut onion_payloads, _, _) = onion_utils::build_onion_payloads(&route.paths[0], 100_000,
86978697
&recipient_onion_fields, height + 1, &None, None, None).unwrap();

lightning/src/ln/onion_payment.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ mod tests {
647647
recipient_onion.custom_tlvs.push((13377331, vec![0; 1156]));
648648

649649
let path = Path { hops, blinded_tail: None, };
650-
let onion_keys = super::onion_utils::construct_onion_keys(&secp_ctx, &path, &session_priv).unwrap();
650+
let onion_keys = super::onion_utils::construct_onion_keys(&secp_ctx, &path, &session_priv);
651651
let (onion_payloads, ..) = super::onion_utils::build_onion_payloads(
652652
&path, total_amt_msat, &recipient_onion, cur_height + 1, &Some(keysend_preimage), None, None
653653
).unwrap();

0 commit comments

Comments
 (0)