Skip to content

Commit b5dd680

Browse files
authored
Merge pull request #3623 from adi2011/peer-storage/encrypt-decrypt
Peer Storage Feature – Part 2
2 parents 0848e7a + e39d99a commit b5dd680

File tree

17 files changed

+628
-150
lines changed

17 files changed

+628
-150
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ use lightning::onion_message::messenger::{Destination, MessageRouter, OnionMessa
6262
use lightning::routing::router::{
6363
InFlightHtlcs, Path, PaymentParameters, Route, RouteHop, RouteParameters, Router,
6464
};
65-
use lightning::sign::{EntropySource, InMemorySigner, NodeSigner, Recipient, SignerProvider};
65+
use lightning::sign::{
66+
EntropySource, InMemorySigner, NodeSigner, PeerStorageKey, Recipient, SignerProvider,
67+
};
6668
use lightning::types::payment::{PaymentHash, PaymentPreimage, PaymentSecret};
6769
use lightning::util::config::UserConfig;
6870
use lightning::util::hash_tables::*;
@@ -189,6 +191,7 @@ struct TestChainMonitor {
189191
Arc<FuzzEstimator>,
190192
Arc<dyn Logger>,
191193
Arc<TestPersister>,
194+
Arc<KeyProvider>,
192195
>,
193196
>,
194197
pub latest_monitors: Mutex<HashMap<ChannelId, LatestMonitorState>>,
@@ -205,6 +208,8 @@ impl TestChainMonitor {
205208
logger.clone(),
206209
feeest,
207210
Arc::clone(&persister),
211+
Arc::clone(&keys),
212+
keys.get_peer_storage_key(),
208213
)),
209214
logger,
210215
keys,
@@ -338,6 +343,10 @@ impl NodeSigner for KeyProvider {
338343
unreachable!()
339344
}
340345

346+
fn get_peer_storage_key(&self) -> PeerStorageKey {
347+
PeerStorageKey { inner: [42; 32] }
348+
}
349+
341350
fn sign_bolt12_invoice(
342351
&self, _invoice: &UnsignedBolt12Invoice,
343352
) -> Result<schnorr::Signature, ()> {

fuzz/src/full_stack.rs

Lines changed: 45 additions & 30 deletions
Large diffs are not rendered by default.

fuzz/src/onion_message.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use lightning::onion_message::messenger::{
2323
};
2424
use lightning::onion_message::offers::{OffersMessage, OffersMessageHandler};
2525
use lightning::onion_message::packet::OnionMessageContents;
26-
use lightning::sign::{EntropySource, NodeSigner, Recipient, SignerProvider};
26+
use lightning::sign::{EntropySource, NodeSigner, PeerStorageKey, Recipient, SignerProvider};
2727
use lightning::types::features::InitFeatures;
2828
use lightning::util::logger::Logger;
2929
use lightning::util::ser::{LengthReadable, Writeable, Writer};
@@ -249,6 +249,10 @@ impl NodeSigner for KeyProvider {
249249
) -> Result<bitcoin::secp256k1::ecdsa::Signature, ()> {
250250
unreachable!()
251251
}
252+
253+
fn get_peer_storage_key(&self) -> PeerStorageKey {
254+
unreachable!()
255+
}
252256
}
253257

254258
impl SignerProvider for KeyProvider {

lightning-background-processor/src/lib.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ use lightning::routing::utxo::UtxoLookup;
3737
use lightning::sign::ChangeDestinationSource;
3838
#[cfg(feature = "std")]
3939
use lightning::sign::ChangeDestinationSourceSync;
40+
use lightning::sign::EntropySource;
4041
use lightning::sign::OutputSpender;
4142
use lightning::util::logger::Logger;
4243
use lightning::util::persist::{KVStore, Persister};
@@ -668,14 +669,14 @@ use futures_util::{dummy_waker, OptionalSelector, Selector, SelectorOutput};
668669
/// # fn send_data(&mut self, _data: &[u8], _resume_read: bool) -> usize { 0 }
669670
/// # fn disconnect_socket(&mut self) {}
670671
/// # }
671-
/// # type ChainMonitor<B, F, FE> = lightning::chain::chainmonitor::ChainMonitor<lightning::sign::InMemorySigner, Arc<F>, Arc<B>, Arc<FE>, Arc<Logger>, Arc<Store>>;
672+
/// # type ChainMonitor<B, F, FE> = lightning::chain::chainmonitor::ChainMonitor<lightning::sign::InMemorySigner, Arc<F>, Arc<B>, Arc<FE>, Arc<Logger>, Arc<Store>, Arc<lightning::sign::KeysManager>>;
672673
/// # type NetworkGraph = lightning::routing::gossip::NetworkGraph<Arc<Logger>>;
673674
/// # type P2PGossipSync<UL> = lightning::routing::gossip::P2PGossipSync<Arc<NetworkGraph>, Arc<UL>, Arc<Logger>>;
674675
/// # type ChannelManager<B, F, FE> = lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor<B, F, FE>, B, FE, Logger>;
675676
/// # type OnionMessenger<B, F, FE> = lightning::onion_message::messenger::OnionMessenger<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<Logger>, Arc<ChannelManager<B, F, FE>>, Arc<lightning::onion_message::messenger::DefaultMessageRouter<Arc<NetworkGraph>, Arc<Logger>, Arc<lightning::sign::KeysManager>>>, Arc<ChannelManager<B, F, FE>>, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler>;
676677
/// # type LiquidityManager<B, F, FE> = lightning_liquidity::LiquidityManager<Arc<lightning::sign::KeysManager>, Arc<ChannelManager<B, F, FE>>, Arc<F>>;
677678
/// # type Scorer = RwLock<lightning::routing::scoring::ProbabilisticScorer<Arc<NetworkGraph>, Arc<Logger>>>;
678-
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger>;
679+
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger, F, Store>;
679680
/// #
680681
/// # struct Node<
681682
/// # B: lightning::chain::chaininterface::BroadcasterInterface + Send + Sync + 'static,
@@ -780,8 +781,9 @@ pub async fn process_events_async<
780781
EventHandlerFuture: core::future::Future<Output = Result<(), ReplayEvent>>,
781782
EventHandler: Fn(Event) -> EventHandlerFuture,
782783
PS: 'static + Deref + Send,
784+
ES: 'static + Deref + Send,
783785
M: 'static
784-
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>>
786+
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>>
785787
+ Send
786788
+ Sync,
787789
CM: 'static + Deref,
@@ -813,6 +815,7 @@ where
813815
L::Target: 'static + Logger,
814816
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
815817
PS::Target: 'static + Persister<'a, CM, L, S>,
818+
ES::Target: 'static + EntropySource,
816819
CM::Target: AChannelManager,
817820
OM::Target: AOnionMessenger,
818821
PM::Target: APeerManager,
@@ -976,8 +979,11 @@ impl BackgroundProcessor {
976979
P: 'static + Deref,
977980
EH: 'static + EventHandler + Send,
978981
PS: 'static + Deref + Send,
982+
ES: 'static + Deref + Send,
979983
M: 'static
980-
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>>
984+
+ Deref<
985+
Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>,
986+
>
981987
+ Send
982988
+ Sync,
983989
CM: 'static + Deref + Send,
@@ -1005,6 +1011,7 @@ impl BackgroundProcessor {
10051011
L::Target: 'static + Logger,
10061012
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
10071013
PS::Target: 'static + Persister<'a, CM, L, S>,
1014+
ES::Target: 'static + EntropySource,
10081015
CM::Target: AChannelManager,
10091016
OM::Target: AOnionMessenger,
10101017
PM::Target: APeerManager,
@@ -1174,7 +1181,7 @@ mod tests {
11741181
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
11751182
use lightning::routing::router::{CandidateRouteHop, DefaultRouter, Path, RouteHop};
11761183
use lightning::routing::scoring::{ChannelUsage, LockableScore, ScoreLookUp, ScoreUpdate};
1177-
use lightning::sign::{ChangeDestinationSourceSync, InMemorySigner, KeysManager};
1184+
use lightning::sign::{ChangeDestinationSourceSync, InMemorySigner, KeysManager, NodeSigner};
11781185
use lightning::types::features::{ChannelFeatures, NodeFeatures};
11791186
use lightning::types::payment::PaymentHash;
11801187
use lightning::util::config::UserConfig;
@@ -1250,6 +1257,7 @@ mod tests {
12501257
Arc<test_utils::TestFeeEstimator>,
12511258
Arc<test_utils::TestLogger>,
12521259
Arc<FilesystemStore>,
1260+
Arc<KeysManager>,
12531261
>;
12541262

12551263
type PGS = Arc<
@@ -1301,6 +1309,7 @@ mod tests {
13011309
Arc<test_utils::TestLogger>,
13021310
IgnoringMessageHandler,
13031311
Arc<KeysManager>,
1312+
IgnoringMessageHandler,
13041313
>,
13051314
>,
13061315
liquidity_manager: Arc<LM>,
@@ -1662,6 +1671,8 @@ mod tests {
16621671
logger.clone(),
16631672
fee_estimator.clone(),
16641673
kv_store.clone(),
1674+
keys_manager.clone(),
1675+
keys_manager.get_peer_storage_key(),
16651676
));
16661677
let best_block = BestBlock::from_network(network);
16671678
let params = ChainParameters { network, best_block };
@@ -1715,6 +1726,7 @@ mod tests {
17151726
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
17161727
onion_message_handler: messenger.clone(),
17171728
custom_message_handler: IgnoringMessageHandler {},
1729+
send_only_message_handler: IgnoringMessageHandler {},
17181730
};
17191731
let peer_manager = Arc::new(PeerManager::new(
17201732
msg_handler,

lightning-block-sync/src/init.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ where
7676
/// P: chainmonitor::Persist<SP::EcdsaSigner>,
7777
/// >(
7878
/// block_source: &B,
79-
/// chain_monitor: &ChainMonitor<SP::EcdsaSigner, &C, &T, &F, &L, &P>,
79+
/// chain_monitor: &ChainMonitor<SP::EcdsaSigner, &C, &T, &F, &L, &P, &ES>,
8080
/// config: UserConfig,
8181
/// entropy_source: &ES,
8282
/// node_signer: &NS,
@@ -109,7 +109,7 @@ where
109109
/// config,
110110
/// vec![&mut monitor],
111111
/// );
112-
/// <(BlockHash, ChannelManager<&ChainMonitor<SP::EcdsaSigner, &C, &T, &F, &L, &P>, &T, &ES, &NS, &SP, &F, &R, &MR, &L>)>::read(
112+
/// <(BlockHash, ChannelManager<&ChainMonitor<SP::EcdsaSigner, &C, &T, &F, &L, &P, &ES>, &T, &ES, &NS, &SP, &F, &R, &MR, &L>)>::read(
113113
/// &mut Cursor::new(&serialized_manager), read_args).unwrap()
114114
/// };
115115
///

lightning-liquidity/tests/common/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#![allow(unused_macros)]
66

77
use lightning::chain::Filter;
8-
use lightning::sign::EntropySource;
8+
use lightning::sign::{EntropySource, NodeSigner};
99

1010
use bitcoin::blockdata::constants::{genesis_block, ChainHash};
1111
use bitcoin::blockdata::transaction::Transaction;
@@ -101,6 +101,7 @@ type ChainMonitor = chainmonitor::ChainMonitor<
101101
Arc<test_utils::TestFeeEstimator>,
102102
Arc<test_utils::TestLogger>,
103103
Arc<FilesystemStore>,
104+
Arc<KeysManager>,
104105
>;
105106

106107
type PGS = Arc<
@@ -130,6 +131,7 @@ pub(crate) struct Node {
130131
>,
131132
>,
132133
Arc<KeysManager>,
134+
Arc<ChainMonitor>,
133135
>,
134136
>,
135137
pub(crate) liquidity_manager:
@@ -429,6 +431,8 @@ pub(crate) fn create_liquidity_node(
429431
logger.clone(),
430432
fee_estimator.clone(),
431433
kv_store.clone(),
434+
keys_manager.clone(),
435+
keys_manager.get_peer_storage_key(),
432436
));
433437
let best_block = BestBlock::from_network(network);
434438
let chain_params = ChainParameters { network, best_block };
@@ -467,6 +471,7 @@ pub(crate) fn create_liquidity_node(
467471
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
468472
onion_message_handler: IgnoringMessageHandler {},
469473
custom_message_handler: Arc::clone(&liquidity_manager),
474+
send_only_message_handler: Arc::clone(&chain_monitor),
470475
};
471476
let peer_manager =
472477
Arc::new(PeerManager::new(msg_handler, 0, &seed, logger.clone(), keys_manager.clone()));

lightning-net-tokio/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,7 @@ mod tests {
837837
route_handler: Arc::clone(&a_handler),
838838
onion_message_handler: Arc::new(IgnoringMessageHandler {}),
839839
custom_message_handler: Arc::new(IgnoringMessageHandler {}),
840+
send_only_message_handler: Arc::new(IgnoringMessageHandler {}),
840841
};
841842
let a_manager = Arc::new(PeerManager::new(
842843
a_msg_handler,
@@ -860,6 +861,7 @@ mod tests {
860861
route_handler: Arc::clone(&b_handler),
861862
onion_message_handler: Arc::new(IgnoringMessageHandler {}),
862863
custom_message_handler: Arc::new(IgnoringMessageHandler {}),
864+
send_only_message_handler: Arc::new(IgnoringMessageHandler {}),
863865
};
864866
let b_manager = Arc::new(PeerManager::new(
865867
b_msg_handler,
@@ -922,6 +924,7 @@ mod tests {
922924
onion_message_handler: Arc::new(IgnoringMessageHandler {}),
923925
route_handler: Arc::new(lightning::ln::peer_handler::IgnoringMessageHandler {}),
924926
custom_message_handler: Arc::new(IgnoringMessageHandler {}),
927+
send_only_message_handler: Arc::new(IgnoringMessageHandler {}),
925928
};
926929
let a_manager = Arc::new(PeerManager::new(
927930
a_msg_handler,

0 commit comments

Comments
 (0)