Skip to content

Commit 42e1d49

Browse files
committed
Use EnforcingChannelKeys in fuzz targets to get more coverage
1 parent fd66af6 commit 42e1d49

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

fuzz/fuzz_targets/chanmon_fail_consistency.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,13 @@ use bitcoin_hashes::sha256d::Hash as Sha256d;
3232
use lightning::chain::chaininterface;
3333
use lightning::chain::transaction::OutPoint;
3434
use lightning::chain::chaininterface::{BroadcasterInterface,ConfirmationTarget,ChainListener,FeeEstimator,ChainWatchInterfaceUtil};
35-
use lightning::chain::keysinterface::{InMemoryChannelKeys, KeysInterface};
35+
use lightning::chain::keysinterface::{KeysInterface, InMemoryChannelKeys};
3636
use lightning::ln::channelmonitor;
3737
use lightning::ln::channelmonitor::{ChannelMonitor, ChannelMonitorUpdateErr, HTLCUpdate};
3838
use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage, ChannelManagerReadArgs};
3939
use lightning::ln::router::{Route, RouteHop};
4040
use lightning::ln::msgs::{CommitmentUpdate, ChannelMessageHandler, ErrorAction, LightningError, UpdateAddHTLC, LocalFeatures};
41+
use lightning::util::enforcing_trait_impls::EnforcingChannelKeys;
4142
use lightning::util::events;
4243
use lightning::util::logger::Logger;
4344
use lightning::util::config::UserConfig;
@@ -139,7 +140,7 @@ struct KeyProvider {
139140
channel_id: atomic::AtomicU8,
140141
}
141142
impl KeysInterface for KeyProvider {
142-
type ChanKeySigner = InMemoryChannelKeys;
143+
type ChanKeySigner = EnforcingChannelKeys;
143144

144145
fn get_node_secret(&self) -> SecretKey {
145146
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()
@@ -157,15 +158,15 @@ impl KeysInterface for KeyProvider {
157158
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())
158159
}
159160

160-
fn get_channel_keys(&self, _inbound: bool) -> InMemoryChannelKeys {
161-
InMemoryChannelKeys {
161+
fn get_channel_keys(&self, _inbound: bool) -> EnforcingChannelKeys {
162+
EnforcingChannelKeys::new(InMemoryChannelKeys {
162163
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(),
163164
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(),
164165
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(),
165166
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(),
166167
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(),
167168
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],
168-
}
169+
})
169170
}
170171

171172
fn get_onion_rand(&self) -> (SecretKey, [u8; 32]) {
@@ -234,7 +235,7 @@ pub fn do_test(data: &[u8]) {
234235
channel_monitors: &monitor_refs,
235236
};
236237

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

fuzz/fuzz_targets/full_stack_target.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage
3434
use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor};
3535
use lightning::ln::router::Router;
3636
use lightning::util::events::{EventsProvider,Event};
37+
use lightning::util::enforcing_trait_impls::EnforcingChannelKeys;
3738
use lightning::util::logger::Logger;
3839
use lightning::util::config::UserConfig;
3940

@@ -145,7 +146,7 @@ impl<'a> Hash for Peer<'a> {
145146
}
146147

147148
struct MoneyLossDetector<'a, 'b> {
148-
manager: Arc<ChannelManager<'b, InMemoryChannelKeys>>,
149+
manager: Arc<ChannelManager<'b, EnforcingChannelKeys>>,
149150
monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint>>,
150151
handler: PeerManager<Peer<'a>>,
151152

@@ -158,7 +159,7 @@ struct MoneyLossDetector<'a, 'b> {
158159
blocks_connected: u32,
159160
}
160161
impl<'a, 'b> MoneyLossDetector<'a, 'b> {
161-
pub fn new(peers: &'a RefCell<[bool; 256]>, manager: Arc<ChannelManager<'b, InMemoryChannelKeys>>, monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint>>, handler: PeerManager<Peer<'a>>) -> Self {
162+
pub fn new(peers: &'a RefCell<[bool; 256]>, manager: Arc<ChannelManager<'b, EnforcingChannelKeys>>, monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint>>, handler: PeerManager<Peer<'a>>) -> Self {
162163
MoneyLossDetector {
163164
manager,
164165
monitor,
@@ -238,7 +239,7 @@ struct KeyProvider {
238239
counter: AtomicU64,
239240
}
240241
impl KeysInterface for KeyProvider {
241-
type ChanKeySigner = InMemoryChannelKeys;
242+
type ChanKeySigner = EnforcingChannelKeys;
242243

243244
fn get_node_secret(&self) -> SecretKey {
244245
self.node_secret.clone()
@@ -256,9 +257,9 @@ impl KeysInterface for KeyProvider {
256257
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())
257258
}
258259

259-
fn get_channel_keys(&self, inbound: bool) -> InMemoryChannelKeys {
260+
fn get_channel_keys(&self, inbound: bool) -> EnforcingChannelKeys {
260261
let ctr = self.counter.fetch_add(1, Ordering::Relaxed) as u8;
261-
if inbound {
262+
EnforcingChannelKeys::new(if inbound {
262263
InMemoryChannelKeys {
263264
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(),
264265
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(),
@@ -276,7 +277,7 @@ impl KeysInterface for KeyProvider {
276277
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(),
277278
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],
278279
}
279-
}
280+
})
280281
}
281282

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

0 commit comments

Comments
 (0)