Skip to content

Commit d80b377

Browse files
committed
fixup: Add method to derive Peer Storage encryption key
1 parent 6b287d9 commit d80b377

File tree

6 files changed

+19
-28
lines changed

6 files changed

+19
-28
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ use lightning::blinded_path::message::{BlindedMessagePath, MessageContext};
3737
use lightning::blinded_path::payment::{BlindedPaymentPath, ReceiveTlvs};
3838
use lightning::chain;
3939
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
40-
use lightning::chain::chainmonitor::PeerStorageKey;
4140
use lightning::chain::channelmonitor::{ChannelMonitor, MonitorEvent};
4241
use lightning::chain::transaction::OutPoint;
4342
use lightning::chain::{
@@ -63,7 +62,9 @@ use lightning::onion_message::messenger::{Destination, MessageRouter, OnionMessa
6362
use lightning::routing::router::{
6463
InFlightHtlcs, Path, PaymentParameters, Route, RouteHop, RouteParameters, Router,
6564
};
66-
use lightning::sign::{EntropySource, InMemorySigner, NodeSigner, Recipient, SignerProvider};
65+
use lightning::sign::{
66+
EntropySource, InMemorySigner, NodeSigner, PeerStorageKey, Recipient, SignerProvider,
67+
};
6768
use lightning::types::payment::{PaymentHash, PaymentPreimage, PaymentSecret};
6869
use lightning::util::config::UserConfig;
6970
use lightning::util::hash_tables::*;

lightning/src/chain/chainmonitor.rs

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use crate::ln::types::ChannelId;
3535
use crate::ln::msgs::{self, BaseMessageHandler, Init, MessageSendEvent};
3636
use crate::ln::our_peer_storage::OurPeerStorage;
3737
use crate::sign::ecdsa::EcdsaChannelSigner;
38+
use crate::sign::PeerStorageKey;
3839
use crate::events::{self, Event, EventHandler, ReplayEvent};
3940
use crate::util::logger::{Logger, WithContext};
4041
use crate::util::errors::APIError;
@@ -217,23 +218,6 @@ impl<ChannelSigner: EcdsaChannelSigner> Deref for LockedChannelMonitor<'_, Chann
217218
}
218219
}
219220

220-
/// Represents Secret Key used for encrypting Peer Storage.
221-
#[derive(Clone, PartialEq, Eq)]
222-
pub struct PeerStorageKey ([u8; 32]);
223-
224-
impl PeerStorageKey {
225-
/// Creates a new `PeerStorageKey` from a `[u8; 32]` array.
226-
pub fn new(key: [u8; 32]) -> Self {
227-
PeerStorageKey(key)
228-
}
229-
230-
/// Returns a reference to the inner `[u8; 32]` array.
231-
pub fn as_bytes(&self) -> &[u8; 32] {
232-
&self.0
233-
}
234-
}
235-
236-
237221
/// An implementation of [`chain::Watch`] for monitoring channels.
238222
///
239223
/// Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
@@ -702,7 +686,7 @@ where C::Target: chain::Filter,
702686
///
703687
/// This function collects the counterparty node IDs from all monitors into a `HashSet`,
704688
/// ensuring unique IDs are returned.
705-
fn get_peer_node_ids(&self) -> HashSet<PublicKey> {
689+
fn all_counterparty_node_ids(&self) -> HashSet<PublicKey> {
706690
let mon = self.monitors.read().unwrap();
707691
mon
708692
.values()

lightning/src/ln/blinded_payment_tests.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use crate::blinded_path::utils::is_padded;
1818
use crate::events::{Event, HTLCDestination, PaymentFailureReason};
1919
use crate::ln::types::ChannelId;
2020
use crate::types::payment::{PaymentHash, PaymentSecret};
21-
use crate::chain::chainmonitor::PeerStorageKey;
2221
use crate::ln::channelmanager;
2322
use crate::ln::channelmanager::{HTLCFailureMsg, PaymentId, RecipientOnionFields};
2423
use crate::types::features::{BlindedHopFeatures, ChannelFeatures, NodeFeatures};
@@ -34,7 +33,7 @@ use crate::offers::invoice::UnsignedBolt12Invoice;
3433
use crate::offers::nonce::Nonce;
3534
use crate::prelude::*;
3635
use crate::routing::router::{BlindedTail, Path, Payee, PaymentParameters, RouteHop, RouteParameters, TrampolineHop};
37-
use crate::sign::{NodeSigner, Recipient};
36+
use crate::sign::{NodeSigner, PeerStorageKey, Recipient};
3837
use crate::util::config::UserConfig;
3938
use crate::util::ser::{WithoutLength, Writeable};
4039
use crate::util::test_utils;

lightning/src/sign/mod.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ use bitcoin::{secp256k1, Psbt, Sequence, Txid, WPubkeyHash, Witness};
3737

3838
use lightning_invoice::RawBolt11Invoice;
3939

40-
use crate::chain::chainmonitor::PeerStorageKey;
4140
use crate::chain::transaction::OutPoint;
4241
use crate::crypto::utils::{hkdf_extract_expand_twice, sign, sign_with_aux_rand};
4342
use crate::ln::chan_utils;
@@ -795,6 +794,13 @@ pub trait ChannelSigner {
795794
fn channel_keys_id(&self) -> [u8; 32];
796795
}
797796

797+
/// Represents Secret Key used for encrypting Peer Storage.
798+
#[derive(Clone, PartialEq, Eq)]
799+
pub struct PeerStorageKey {
800+
/// Represents the key used to encrypt and decrypt Peer Storage.
801+
pub inner: [u8; 32],
802+
}
803+
798804
/// Specifies the recipient of an invoice.
799805
///
800806
/// This indicates to [`NodeSigner::sign_invoice`] what node secret key should be used to sign
@@ -1891,7 +1897,7 @@ impl KeysManager {
18911897
node_id,
18921898
inbound_payment_key: ExpandedKey::new(inbound_pmt_key_bytes),
18931899

1894-
peer_storage_key: PeerStorageKey::new(peer_storage_key.secret_bytes()),
1900+
peer_storage_key: PeerStorageKey { inner: peer_storage_key.secret_bytes() },
18951901

18961902
destination_script,
18971903
shutdown_pubkey,

lightning/src/util/dyn_signer.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use crate::prelude::*;
44

55
use core::any::Any;
66

7-
use crate::chain::chainmonitor::PeerStorageKey;
87
use crate::ln::chan_utils::{
98
ChannelPublicKeys, ChannelTransactionParameters, ClosingTransaction, CommitmentTransaction,
109
HTLCOutputInCommitment, HolderCommitmentTransaction,
@@ -18,7 +17,9 @@ use crate::sign::taproot::TaprootChannelSigner;
1817
use crate::sign::ChannelSigner;
1918
use crate::sign::InMemorySigner;
2019
use crate::sign::{EntropySource, HTLCDescriptor, OutputSpender, PhantomKeysManager};
21-
use crate::sign::{NodeSigner, Recipient, SignerProvider, SpendableOutputDescriptor};
20+
use crate::sign::{
21+
NodeSigner, PeerStorageKey, Recipient, SignerProvider, SpendableOutputDescriptor,
22+
};
2223
use bitcoin;
2324
use bitcoin::absolute::LockTime;
2425
use bitcoin::secp256k1::All;

lightning/src/util/test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::chain::chaininterface;
1515
use crate::chain::chaininterface::ConfirmationTarget;
1616
#[cfg(any(test, feature = "_externalize_tests"))]
1717
use crate::chain::chaininterface::FEERATE_FLOOR_SATS_PER_KW;
18-
use crate::chain::chainmonitor::{ChainMonitor, PeerStorageKey, Persist};
18+
use crate::chain::chainmonitor::{ChainMonitor, Persist};
1919
use crate::chain::channelmonitor::{
2020
ChannelMonitor, ChannelMonitorUpdate, ChannelMonitorUpdateStep, MonitorEvent,
2121
};
@@ -46,7 +46,7 @@ use crate::routing::router::{
4646
use crate::routing::scoring::{ChannelUsage, ScoreLookUp, ScoreUpdate};
4747
use crate::routing::utxo::{UtxoLookup, UtxoLookupError, UtxoResult};
4848
use crate::sign;
49-
use crate::sign::ChannelSigner;
49+
use crate::sign::{ChannelSigner, PeerStorageKey};
5050
use crate::sync::RwLock;
5151
use crate::types::features::{ChannelFeatures, InitFeatures, NodeFeatures};
5252
use crate::util::config::UserConfig;

0 commit comments

Comments
 (0)