Skip to content

Commit 4ac1fda

Browse files
committed
Rename get_inbound_payment_key to get_expanded_key
The use of ExpandedKey has grown beyond just encrypting inbound payment data-it now also supports BOLT 12 Offers, spontaneous payments, and authentication of various payment metadata. To reflect this broader purpose, this commit renames the function and updates its documentation accordingly.
1 parent 1c36624 commit 4ac1fda

14 files changed

+49
-43
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ impl NodeSigner for KeyProvider {
332332
Ok(SharedSecret::new(other_key, &node_secret))
333333
}
334334

335-
fn get_inbound_payment_key(&self) -> ExpandedKey {
335+
fn get_expanded_key(&self) -> ExpandedKey {
336336
#[rustfmt::skip]
337337
let random_bytes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, self.node_secret[31]];
338338
ExpandedKey::new(random_bytes)

fuzz/src/full_stack.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ use bitcoin::secp256k1::{self, Message, PublicKey, Scalar, Secp256k1, SecretKey}
8080

8181
use lightning::util::dyn_signer::DynSigner;
8282

83-
use std::collections::VecDeque;
8483
use std::cell::RefCell;
8584
use std::cmp;
85+
use std::collections::VecDeque;
8686
use std::sync::atomic::{AtomicU64, AtomicUsize, Ordering};
8787
use std::sync::{Arc, Mutex};
8888

@@ -406,7 +406,7 @@ impl NodeSigner for KeyProvider {
406406
Ok(SharedSecret::new(other_key, &node_secret))
407407
}
408408

409-
fn get_inbound_payment_key(&self) -> ExpandedKey {
409+
fn get_expanded_key(&self) -> ExpandedKey {
410410
self.inbound_payment_key
411411
}
412412

fuzz/src/onion_message.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ impl NodeSigner for KeyProvider {
255255
Ok(SharedSecret::new(other_key, &node_secret))
256256
}
257257

258-
fn get_inbound_payment_key(&self) -> ExpandedKey {
258+
fn get_expanded_key(&self) -> ExpandedKey {
259259
unreachable!()
260260
}
261261

lightning/src/ln/async_payments_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ fn create_static_invoice_builder<'a>(
255255

256256
let created_at = recipient.node.duration_since_epoch();
257257
let payment_secret = inbound_payment::create_for_spontaneous_payment(
258-
&recipient.keys_manager.get_inbound_payment_key(),
258+
&recipient.keys_manager.get_expanded_key(),
259259
amount_msat,
260260
relative_expiry_secs,
261261
created_at.as_secs(),
@@ -982,7 +982,7 @@ fn amount_doesnt_match_invreq() {
982982
valid_invreq = Some(invoice_request.clone());
983983
*invoice_request = offer
984984
.request_invoice(
985-
&nodes[0].keys_manager.get_inbound_payment_key(),
985+
&nodes[0].keys_manager.get_expanded_key(),
986986
Nonce::from_entropy_source(nodes[0].keys_manager),
987987
&secp_ctx,
988988
payment_id,

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub fn blinded_payment_path(
8787
};
8888

8989
let nonce = Nonce([42u8; 16]);
90-
let expanded_key = keys_manager.get_inbound_payment_key();
90+
let expanded_key = keys_manager.get_expanded_key();
9191
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
9292

9393
let mut secp_ctx = Secp256k1::new();
@@ -172,7 +172,7 @@ fn do_one_hop_blinded_path(success: bool) {
172172
payment_context: PaymentContext::Bolt12Refund(Bolt12RefundContext {}),
173173
};
174174
let nonce = Nonce([42u8; 16]);
175-
let expanded_key = chanmon_cfgs[1].keys_manager.get_inbound_payment_key();
175+
let expanded_key = chanmon_cfgs[1].keys_manager.get_expanded_key();
176176
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
177177

178178
let mut secp_ctx = Secp256k1::new();
@@ -226,7 +226,7 @@ fn mpp_to_one_hop_blinded_path() {
226226
payment_context: PaymentContext::Bolt12Refund(Bolt12RefundContext {}),
227227
};
228228
let nonce = Nonce([42u8; 16]);
229-
let expanded_key = chanmon_cfgs[3].keys_manager.get_inbound_payment_key();
229+
let expanded_key = chanmon_cfgs[3].keys_manager.get_expanded_key();
230230
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
231231
let blinded_path = BlindedPaymentPath::new(
232232
&[], nodes[3].node.get_our_node_id(), payee_tlvs, u64::MAX, TEST_FINAL_CLTV as u16,
@@ -1336,7 +1336,7 @@ fn custom_tlvs_to_blinded_path() {
13361336
payment_context: PaymentContext::Bolt12Refund(Bolt12RefundContext {}),
13371337
};
13381338
let nonce = Nonce([42u8; 16]);
1339-
let expanded_key = chanmon_cfgs[1].keys_manager.get_inbound_payment_key();
1339+
let expanded_key = chanmon_cfgs[1].keys_manager.get_expanded_key();
13401340
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
13411341
let mut secp_ctx = Secp256k1::new();
13421342
let blinded_path = BlindedPaymentPath::new(
@@ -1390,7 +1390,7 @@ fn fails_receive_tlvs_authentication() {
13901390
payment_context: PaymentContext::Bolt12Refund(Bolt12RefundContext {}),
13911391
};
13921392
let nonce = Nonce([42u8; 16]);
1393-
let expanded_key = chanmon_cfgs[1].keys_manager.get_inbound_payment_key();
1393+
let expanded_key = chanmon_cfgs[1].keys_manager.get_expanded_key();
13941394
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
13951395

13961396
let mut secp_ctx = Secp256k1::new();
@@ -1622,7 +1622,7 @@ fn route_blinding_spec_test_vector() {
16221622
}
16231623
Ok(SharedSecret::new(other_key, &node_secret))
16241624
}
1625-
fn get_inbound_payment_key(&self) -> ExpandedKey { unreachable!() }
1625+
fn get_expanded_key(&self) -> ExpandedKey { unreachable!() }
16261626
fn get_node_id(&self, _recipient: Recipient) -> Result<PublicKey, ()> { unreachable!() }
16271627
fn sign_invoice(
16281628
&self, _invoice: &RawBolt11Invoice, _recipient: Recipient,
@@ -1935,7 +1935,7 @@ fn test_trampoline_inbound_payment_decoding() {
19351935
}
19361936
Ok(SharedSecret::new(other_key, &node_secret))
19371937
}
1938-
fn get_inbound_payment_key(&self) -> ExpandedKey { unreachable!() }
1938+
fn get_expanded_key(&self) -> ExpandedKey { unreachable!() }
19391939
fn get_node_id(&self, _recipient: Recipient) -> Result<PublicKey, ()> { unreachable!() }
19401940
fn sign_invoice(
19411941
&self, _invoice: &RawBolt11Invoice, _recipient: Recipient,
@@ -2023,7 +2023,7 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
20232023
};
20242024

20252025
let nonce = Nonce([42u8; 16]);
2026-
let expanded_key = nodes[2].keys_manager.get_inbound_payment_key();
2026+
let expanded_key = nodes[2].keys_manager.get_expanded_key();
20272027
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
20282028
let carol_unblinded_tlvs = payee_tlvs.encode();
20292029

lightning/src/ln/channelmanager.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ pub enum PendingHTLCRouting {
315315
requires_blinded_error: bool,
316316
/// Set if we are receiving a keysend to a blinded path, meaning we created the
317317
/// [`PaymentSecret`] and should verify it using our
318-
/// [`NodeSigner::get_inbound_payment_key`].
318+
/// [`NodeSigner::get_expanded_key`].
319319
has_recipient_created_payment_secret: bool,
320320
/// The [`InvoiceRequest`] associated with the [`Offer`] corresponding to this payment.
321321
invoice_request: Option<InvoiceRequest>,
@@ -3732,7 +3732,7 @@ where
37323732
let mut secp_ctx = Secp256k1::new();
37333733
secp_ctx.seeded_randomize(&entropy_source.get_secure_random_bytes());
37343734

3735-
let expanded_inbound_key = node_signer.get_inbound_payment_key();
3735+
let expanded_inbound_key = node_signer.get_expanded_key();
37363736
let our_network_pubkey = node_signer.get_node_id(Recipient::Node).unwrap();
37373737

37383738
let flow = OffersMessageFlow::new(
@@ -16697,7 +16697,7 @@ where
1669716697
}
1669816698
}
1669916699

16700-
let expanded_inbound_key = args.node_signer.get_inbound_payment_key();
16700+
let expanded_inbound_key = args.node_signer.get_expanded_key();
1670116701

1670216702
let mut claimable_payments = hash_map_with_capacity(claimable_htlcs_list.len());
1670316703
if let Some(purposes) = claimable_htlc_purposes {

lightning/src/ln/inbound_payment.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ const AMT_MSAT_LEN: usize = 8;
3737
// retrieve said payment type bits.
3838
const METHOD_TYPE_OFFSET: usize = 5;
3939

40-
/// A set of keys that were HKDF-expanded. Returned by [`NodeSigner::get_inbound_payment_key`].
40+
/// A set of keys that were HKDF-expanded. Returned by [`NodeSigner::get_expanded_key`].
4141
///
42-
/// [`NodeSigner::get_inbound_payment_key`]: crate::sign::NodeSigner::get_inbound_payment_key
42+
/// [`NodeSigner::get_expanded_key`]: crate::sign::NodeSigner::get_expanded_key
4343
#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)]
4444
pub struct ExpandedKey {
4545
/// The key used to encrypt the bytes containing the payment metadata (i.e. the amount and
@@ -133,7 +133,7 @@ fn min_final_cltv_expiry_delta_from_metadata(bytes: [u8; METADATA_LEN]) -> u16 {
133133
/// `ChannelManager` is required. Useful for generating invoices for [phantom node payments] without
134134
/// a `ChannelManager`.
135135
///
136-
/// `keys` is generated by calling [`NodeSigner::get_inbound_payment_key`]. It is recommended to
136+
/// `keys` is generated by calling [`NodeSigner::get_expanded_key`]. It is recommended to
137137
/// cache this value and not regenerate it for each new inbound payment.
138138
///
139139
/// `current_time` is a Unix timestamp representing the current time.
@@ -142,7 +142,7 @@ fn min_final_cltv_expiry_delta_from_metadata(bytes: [u8; METADATA_LEN]) -> u16 {
142142
/// on versions of LDK prior to 0.0.114.
143143
///
144144
/// [phantom node payments]: crate::sign::PhantomKeysManager
145-
/// [`NodeSigner::get_inbound_payment_key`]: crate::sign::NodeSigner::get_inbound_payment_key
145+
/// [`NodeSigner::get_expanded_key`]: crate::sign::NodeSigner::get_expanded_key
146146
pub fn create<ES: Deref>(
147147
keys: &ExpandedKey, min_value_msat: Option<u64>, invoice_expiry_delta_secs: u32,
148148
entropy_source: &ES, current_time: u64, min_final_cltv_expiry_delta: Option<u16>,
@@ -321,7 +321,7 @@ fn construct_payment_secret(
321321
/// For payments including a custom `min_final_cltv_expiry_delta`, the metadata is constructed as:
322322
/// payment method (3 bits) || payment amount (8 bytes - 3 bits) || min_final_cltv_expiry_delta (2 bytes) || expiry (6 bytes)
323323
///
324-
/// In both cases the result is then encrypted using a key derived from [`NodeSigner::get_inbound_payment_key`].
324+
/// In both cases the result is then encrypted using a key derived from [`NodeSigner::get_expanded_key`].
325325
///
326326
/// Then on payment receipt, we verify in this method that the payment preimage and payment secret
327327
/// match what was constructed.
@@ -342,7 +342,7 @@ fn construct_payment_secret(
342342
///
343343
/// See [`ExpandedKey`] docs for more info on the individual keys used.
344344
///
345-
/// [`NodeSigner::get_inbound_payment_key`]: crate::sign::NodeSigner::get_inbound_payment_key
345+
/// [`NodeSigner::get_expanded_key`]: crate::sign::NodeSigner::get_expanded_key
346346
/// [`create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
347347
/// [`create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
348348
pub(super) fn verify<L: Deref>(

lightning/src/ln/invoice_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ where
195195
},
196196
};
197197

198-
let keys = node_signer.get_inbound_payment_key();
198+
let keys = node_signer.get_expanded_key();
199199
let (payment_hash, payment_secret) = if let Some(payment_hash) = payment_hash {
200200
let payment_secret = create_from_hash(
201201
&keys,

lightning/src/ln/max_payment_path_len_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ fn one_hop_blinded_path_with_custom_tlv() {
222222
payment_context: PaymentContext::Bolt12Refund(Bolt12RefundContext {}),
223223
};
224224
let nonce = Nonce([42u8; 16]);
225-
let expanded_key = chanmon_cfgs[2].keys_manager.get_inbound_payment_key();
225+
let expanded_key = chanmon_cfgs[2].keys_manager.get_expanded_key();
226226
let payee_tlvs = payee_tlvs.authenticate(nonce, &expanded_key);
227227
let mut secp_ctx = Secp256k1::new();
228228
let blinded_path = BlindedPaymentPath::new(

lightning/src/ln/msgs.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3589,7 +3589,7 @@ where
35893589
},
35903590
ChaChaPolyReadAdapter { readable: BlindedPaymentTlvs::Receive(receive_tlvs) } => {
35913591
let ReceiveTlvs { tlvs, authentication: (hmac, nonce) } = receive_tlvs;
3592-
let expanded_key = node_signer.get_inbound_payment_key();
3592+
let expanded_key = node_signer.get_expanded_key();
35933593
if tlvs.verify_for_offer_payment(hmac, nonce, &expanded_key).is_err() {
35943594
return Err(DecodeError::InvalidValue);
35953595
}
@@ -3741,7 +3741,7 @@ where
37413741
readable: BlindedTrampolineTlvs::Receive(receive_tlvs),
37423742
} => {
37433743
let ReceiveTlvs { tlvs, authentication: (hmac, nonce) } = receive_tlvs;
3744-
let expanded_key = node_signer.get_inbound_payment_key();
3744+
let expanded_key = node_signer.get_expanded_key();
37453745
if tlvs.verify_for_offer_payment(hmac, nonce, &expanded_key).is_err() {
37463746
return Err(DecodeError::InvalidValue);
37473747
}

0 commit comments

Comments
 (0)