Skip to content

Commit 6ea3576

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 7708cca commit 6ea3576

File tree

5 files changed

+52
-64
lines changed

5 files changed

+52
-64
lines changed

lightning/src/ln/blinded_payment_tests.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ fn do_forward_checks_failure(check: ForwardCheckFail, intro_fails: bool) {
385385
ForwardCheckFail::ForwardPayloadEncodedAsReceive => {
386386
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
387387
let session_priv = SecretKey::from_slice(&[3; 32]).unwrap();
388-
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv).unwrap();
388+
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv);
389389
let cur_height = nodes[0].best_block_info().1;
390390
let (mut onion_payloads, ..) = onion_utils::build_onion_payloads(
391391
&route.paths[0], amt_msat, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -966,7 +966,7 @@ fn do_multi_hop_receiver_fail(check: ReceiveCheckFail) {
966966
},
967967
ReceiveCheckFail::OnionDecodeFail => {
968968
let session_priv = SecretKey::from_slice(&session_priv).unwrap();
969-
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv).unwrap();
969+
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv);
970970
let cur_height = nodes[0].best_block_info().1;
971971
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
972972
let (mut onion_payloads, ..) = onion_utils::build_onion_payloads(
@@ -2100,7 +2100,7 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
21002100
// pop the last dummy hop
21012101
trampoline_payloads.pop();
21022102

2103-
let trampoline_onion_keys = onion_utils::construct_trampoline_onion_keys(&secp_ctx, &route.paths[0].blinded_tail.as_ref().unwrap(), &trampoline_secret_key).unwrap();
2103+
let trampoline_onion_keys = onion_utils::construct_trampoline_onion_keys(&secp_ctx, &route.paths[0].blinded_tail.as_ref().unwrap(), &trampoline_secret_key);
21042104
let trampoline_packet = onion_utils::construct_trampoline_onion_packet(
21052105
trampoline_payloads,
21062106
trampoline_onion_keys,
@@ -2112,7 +2112,7 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
21122112
let outer_session_priv = secret_from_hex("e52c20461ed7acd46c4e7b591a37610519179482887bd73bf3b94617f8f03677");
21132113

21142114
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();
2115-
let outer_onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.clone().paths[0], &outer_session_priv).unwrap();
2115+
let outer_onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.clone().paths[0], &outer_session_priv);
21162116
let outer_packet = onion_utils::construct_onion_packet(
21172117
outer_payloads,
21182118
outer_onion_keys,
@@ -2294,7 +2294,7 @@ fn test_trampoline_unblinded_receive() {
22942294
cltv_expiry_height: 104,
22952295
});
22962296

2297-
let trampoline_onion_keys = onion_utils::construct_trampoline_onion_keys(&secp_ctx, &route.paths[0].blinded_tail.as_ref().unwrap(), &trampoline_secret_key).unwrap();
2297+
let trampoline_onion_keys = onion_utils::construct_trampoline_onion_keys(&secp_ctx, &route.paths[0].blinded_tail.as_ref().unwrap(), &trampoline_secret_key);
22982298
let trampoline_packet = onion_utils::construct_trampoline_onion_packet(
22992299
trampoline_payloads,
23002300
trampoline_onion_keys,
@@ -2306,7 +2306,7 @@ fn test_trampoline_unblinded_receive() {
23062306
let outer_session_priv = secret_from_hex("e52c20461ed7acd46c4e7b591a37610519179482887bd73bf3b94617f8f03677");
23072307

23082308
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();
2309-
let outer_onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.clone().paths[0], &outer_session_priv).unwrap();
2309+
let outer_onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.clone().paths[0], &outer_session_priv);
23102310
let outer_packet = onion_utils::construct_onion_packet(
23112311
outer_payloads,
23122312
outer_onion_keys,

lightning/src/ln/functional_tests.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -1501,7 +1501,7 @@ pub fn test_fee_spike_violation_fails_htlc() {
15011501

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

1504-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
1504+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv);
15051505
let recipient_onion_fields = RecipientOnionFields::secret_only(payment_secret);
15061506
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(&route.paths[0],
15071507
3460001, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -1687,7 +1687,7 @@ pub fn test_chan_reserve_violation_inbound_htlc_outbound_channel() {
16871687
let secp_ctx = Secp256k1::new();
16881688
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
16891689
let cur_height = nodes[1].node.best_block.read().unwrap().height + 1;
1690-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
1690+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv);
16911691
let recipient_onion_fields = RecipientOnionFields::secret_only(payment_secret);
16921692
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(&route.paths[0],
16931693
700_000, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -1867,7 +1867,7 @@ pub fn test_chan_reserve_violation_inbound_htlc_inbound_chan() {
18671867
let secp_ctx = Secp256k1::new();
18681868
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
18691869
let cur_height = nodes[0].node.best_block.read().unwrap().height + 1;
1870-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route_2.paths[0], &session_priv).unwrap();
1870+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route_2.paths[0], &session_priv);
18711871
let recipient_onion_fields = RecipientOnionFields::spontaneous_empty();
18721872
let (onion_payloads, htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(
18731873
&route_2.paths[0], recv_value_2, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -3919,7 +3919,7 @@ pub fn fail_backward_pending_htlc_upon_channel_failure() {
39193919
let recipient_onion_fields = RecipientOnionFields::secret_only(payment_secret);
39203920
let (onion_payloads, _amount_msat, cltv_expiry) = onion_utils::build_onion_payloads(
39213921
&route.paths[0], 50_000, &recipient_onion_fields, current_height, &None, None, None).unwrap();
3922-
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv).unwrap();
3922+
let onion_keys = onion_utils::construct_onion_keys(&secp_ctx, &route.paths[0], &session_priv);
39233923
let onion_routing_packet = onion_utils::construct_onion_packet(onion_payloads, onion_keys, [0; 32], &payment_hash).unwrap();
39243924

39253925
// Send a 0-msat update_add_htlc to fail the channel.
@@ -6932,7 +6932,7 @@ pub fn test_update_add_htlc_bolt2_receiver_check_max_htlc_limit() {
69326932
route.paths[0].hops[0].fee_msat = send_amt;
69336933
let session_priv = SecretKey::from_slice(&[42; 32]).unwrap();
69346934
let cur_height = nodes[0].node.best_block.read().unwrap().height + 1;
6935-
let onion_keys = onion_utils::construct_onion_keys(&Secp256k1::signing_only(), &route.paths[0], &session_priv).unwrap();
6935+
let onion_keys = onion_utils::construct_onion_keys(&Secp256k1::signing_only(), &route.paths[0], &session_priv);
69366936
let recipient_onion_fields = RecipientOnionFields::secret_only(our_payment_secret);
69376937
let (onion_payloads, _htlc_msat, htlc_cltv) = onion_utils::build_onion_payloads(
69386938
&route.paths[0], send_amt, &recipient_onion_fields, cur_height, &None, None, None).unwrap();
@@ -8749,7 +8749,7 @@ pub fn test_onion_value_mpp_set_calculation() {
87498749
let session_priv = [3; 32];
87508750
let height = nodes[0].best_block_info().1;
87518751
let session_priv = SecretKey::from_slice(&session_priv).unwrap();
8752-
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv).unwrap();
8752+
let mut onion_keys = onion_utils::construct_onion_keys(&Secp256k1::new(), &route.paths[0], &session_priv);
87538753
let recipient_onion_fields = RecipientOnionFields::secret_only(our_payment_secret);
87548754
let (mut onion_payloads, _, _) = onion_utils::build_onion_payloads(&route.paths[0], 100_000,
87558755
&recipient_onion_fields, height + 1, &None, None, None).unwrap();

lightning/src/ln/onion_payment.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ mod tests {
663663
recipient_onion.custom_tlvs.push((13377331, vec![0; 1156]));
664664

665665
let path = Path { hops, blinded_tail: None, };
666-
let onion_keys = super::onion_utils::construct_onion_keys(&secp_ctx, &path, &session_priv).unwrap();
666+
let onion_keys = super::onion_utils::construct_onion_keys(&secp_ctx, &path, &session_priv);
667667
let (onion_payloads, ..) = super::onion_utils::build_onion_payloads(
668668
&path, total_amt_msat, &recipient_onion, cur_height + 1, &Some(keysend_preimage), None, None
669669
).unwrap();

0 commit comments

Comments
 (0)