Skip to content

Commit ae16c5c

Browse files
committed
Use EnforcingChannelKeys in fuzz targets to get more coverage
1 parent edab29e commit ae16c5c

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ use bitcoin_hashes::sha256d::Hash as Sha256d;
2424
use lightning::chain::chaininterface;
2525
use lightning::chain::transaction::OutPoint;
2626
use lightning::chain::chaininterface::{BroadcasterInterface,ConfirmationTarget,ChainListener,FeeEstimator,ChainWatchInterfaceUtil};
27-
use lightning::chain::keysinterface::{InMemoryChannelKeys, KeysInterface};
27+
use lightning::chain::keysinterface::{KeysInterface, InMemoryChannelKeys};
2828
use lightning::ln::channelmonitor;
2929
use lightning::ln::channelmonitor::{ChannelMonitor, ChannelMonitorUpdateErr, HTLCUpdate};
3030
use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage, ChannelManagerReadArgs};
3131
use lightning::ln::router::{Route, RouteHop};
3232
use lightning::ln::msgs::{CommitmentUpdate, ChannelMessageHandler, ErrorAction, LightningError, UpdateAddHTLC, LocalFeatures};
33+
use lightning::util::enforcing_trait_impls::EnforcingChannelKeys;
3334
use lightning::util::events;
3435
use lightning::util::logger::Logger;
3536
use lightning::util::config::UserConfig;
@@ -130,7 +131,7 @@ struct KeyProvider {
130131
channel_id: atomic::AtomicU8,
131132
}
132133
impl KeysInterface for KeyProvider {
133-
type ChanKeySigner = InMemoryChannelKeys;
134+
type ChanKeySigner = EnforcingChannelKeys;
134135

135136
fn get_node_secret(&self) -> SecretKey {
136137
SecretKey::from_slice(&[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_id]).unwrap()
@@ -148,15 +149,15 @@ impl KeysInterface for KeyProvider {
148149
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[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, 3, self.node_id]).unwrap())
149150
}
150151

151-
fn get_channel_keys(&self, _inbound: bool) -> InMemoryChannelKeys {
152-
InMemoryChannelKeys {
152+
fn get_channel_keys(&self, _inbound: bool) -> EnforcingChannelKeys {
153+
EnforcingChannelKeys::new(InMemoryChannelKeys {
153154
funding_key: SecretKey::from_slice(&[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, 4, self.node_id]).unwrap(),
154155
revocation_base_key: SecretKey::from_slice(&[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, 5, self.node_id]).unwrap(),
155156
payment_base_key: SecretKey::from_slice(&[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, 6, self.node_id]).unwrap(),
156157
delayed_payment_base_key: SecretKey::from_slice(&[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, 7, self.node_id]).unwrap(),
157158
htlc_base_key: SecretKey::from_slice(&[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, 8, self.node_id]).unwrap(),
158159
commitment_seed: [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, 9, self.node_id],
159-
}
160+
})
160161
}
161162

162163
fn get_onion_rand(&self) -> (SecretKey, [u8; 32]) {
@@ -225,7 +226,7 @@ pub fn do_test(data: &[u8]) {
225226
channel_monitors: &monitor_refs,
226227
};
227228

228-
let res = (<(Sha256d, ChannelManager<InMemoryChannelKeys>)>::read(&mut Cursor::new(&$ser.0), read_args).expect("Failed to read manager").1, monitor);
229+
let res = (<(Sha256d, ChannelManager<EnforcingChannelKeys>)>::read(&mut Cursor::new(&$ser.0), read_args).expect("Failed to read manager").1, monitor);
229230
for (_, was_good) in $old_monitors.latest_updates_good_at_last_ser.lock().unwrap().iter() {
230231
if !was_good {
231232
// If the last time we updated a monitor we didn't successfully update (and we

fuzz/src/full_stack.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage
2626
use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor};
2727
use lightning::ln::router::Router;
2828
use lightning::util::events::{EventsProvider,Event};
29+
use lightning::util::enforcing_trait_impls::EnforcingChannelKeys;
2930
use lightning::util::logger::Logger;
3031
use lightning::util::config::UserConfig;
3132

@@ -135,7 +136,7 @@ impl<'a> Hash for Peer<'a> {
135136
}
136137

137138
struct MoneyLossDetector<'a, 'b> {
138-
manager: Arc<ChannelManager<'b, InMemoryChannelKeys>>,
139+
manager: Arc<ChannelManager<'b, EnforcingChannelKeys>>,
139140
monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint>>,
140141
handler: PeerManager<Peer<'a>>,
141142

@@ -148,7 +149,7 @@ struct MoneyLossDetector<'a, 'b> {
148149
blocks_connected: u32,
149150
}
150151
impl<'a, 'b> MoneyLossDetector<'a, 'b> {
151-
pub fn new(peers: &'a RefCell<[bool; 256]>, manager: Arc<ChannelManager<'b, InMemoryChannelKeys>>, monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint>>, handler: PeerManager<Peer<'a>>) -> Self {
152+
pub fn new(peers: &'a RefCell<[bool; 256]>, manager: Arc<ChannelManager<'b, EnforcingChannelKeys>>, monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint>>, handler: PeerManager<Peer<'a>>) -> Self {
152153
MoneyLossDetector {
153154
manager,
154155
monitor,
@@ -228,7 +229,7 @@ struct KeyProvider {
228229
counter: AtomicU64,
229230
}
230231
impl KeysInterface for KeyProvider {
231-
type ChanKeySigner = InMemoryChannelKeys;
232+
type ChanKeySigner = EnforcingChannelKeys;
232233

233234
fn get_node_secret(&self) -> SecretKey {
234235
self.node_secret.clone()
@@ -246,9 +247,9 @@ impl KeysInterface for KeyProvider {
246247
PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[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, 0, 0]).unwrap())
247248
}
248249

249-
fn get_channel_keys(&self, inbound: bool) -> InMemoryChannelKeys {
250+
fn get_channel_keys(&self, inbound: bool) -> EnforcingChannelKeys {
250251
let ctr = self.counter.fetch_add(1, Ordering::Relaxed) as u8;
251-
if inbound {
252+
EnforcingChannelKeys::new(if inbound {
252253
InMemoryChannelKeys {
253254
funding_key: SecretKey::from_slice(&[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, ctr]).unwrap(),
254255
revocation_base_key: SecretKey::from_slice(&[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, 2, ctr]).unwrap(),
@@ -266,7 +267,7 @@ impl KeysInterface for KeyProvider {
266267
htlc_base_key: SecretKey::from_slice(&[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, 11, ctr]).unwrap(),
267268
commitment_seed: [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, 12, ctr],
268269
}
269-
}
270+
})
270271
}
271272

272273
fn get_onion_rand(&self) -> (SecretKey, [u8; 32]) {

0 commit comments

Comments
 (0)