Randomize secp contexts for marginally better sidechannel resistance
[rust-lightning] / lightning / src / util / test_utils.rs
index 4b40123434c9602b8871d682d676e9dfe56d756f..c2d22a4a060f1df23143b38863952ca5af368354 100644 (file)
@@ -69,7 +69,7 @@ impl keysinterface::KeysInterface for OnlyReadsKeysInterface {
        fn get_destination_script(&self) -> Script { unreachable!(); }
        fn get_shutdown_pubkey(&self) -> PublicKey { unreachable!(); }
        fn get_channel_signer(&self, _inbound: bool, _channel_value_satoshis: u64) -> EnforcingSigner { unreachable!(); }
-       fn get_secure_random_bytes(&self) -> [u8; 32] { unreachable!(); }
+       fn get_secure_random_bytes(&self) -> [u8; 32] { [0; 32] }
 
        fn read_chan_signer(&self, reader: &[u8]) -> Result<Self::Signer, msgs::DecodeError> {
                EnforcingSigner::read(&mut std::io::Cursor::new(reader))
@@ -98,9 +98,7 @@ impl<'a> TestChainMonitor<'a> {
                }
        }
 }
-impl<'a> chain::Watch for TestChainMonitor<'a> {
-       type ChanSigner = EnforcingSigner;
-
+impl<'a> chain::Watch<EnforcingSigner> for TestChainMonitor<'a> {
        fn watch_channel(&self, funding_txo: OutPoint, monitor: channelmonitor::ChannelMonitor<EnforcingSigner>) -> Result<(), channelmonitor::ChannelMonitorUpdateErr> {
                // At every point where we get a monitor update, we should be able to send a useful monitor
                // to a watchtower and disk...
@@ -211,7 +209,7 @@ impl msgs::ChannelMessageHandler for TestChannelMessageHandler {
        fn handle_funding_created(&self, _their_node_id: &PublicKey, _msg: &msgs::FundingCreated) {}
        fn handle_funding_signed(&self, _their_node_id: &PublicKey, _msg: &msgs::FundingSigned) {}
        fn handle_funding_locked(&self, _their_node_id: &PublicKey, _msg: &msgs::FundingLocked) {}
-       fn handle_shutdown(&self, _their_node_id: &PublicKey, _msg: &msgs::Shutdown) {}
+       fn handle_shutdown(&self, _their_node_id: &PublicKey, _their_features: &InitFeatures, _msg: &msgs::Shutdown) {}
        fn handle_closing_signed(&self, _their_node_id: &PublicKey, _msg: &msgs::ClosingSigned) {}
        fn handle_update_add_htlc(&self, _their_node_id: &PublicKey, _msg: &msgs::UpdateAddHTLC) {}
        fn handle_update_fulfill_htlc(&self, _their_node_id: &PublicKey, _msg: &msgs::UpdateFulfillHTLC) {}
@@ -255,12 +253,14 @@ fn get_dummy_channel_announcement(short_chan_id: u64) -> msgs::ChannelAnnounceme
                excess_data: Vec::new(),
        };
 
-       msgs::ChannelAnnouncement {
-               node_signature_1: Signature::from(FFISignature::new()),
-               node_signature_2: Signature::from(FFISignature::new()),
-               bitcoin_signature_1: Signature::from(FFISignature::new()),
-               bitcoin_signature_2: Signature::from(FFISignature::new()),
-               contents: unsigned_ann,
+       unsafe {
+               msgs::ChannelAnnouncement {
+                       node_signature_1: Signature::from(FFISignature::new()),
+                       node_signature_2: Signature::from(FFISignature::new()),
+                       bitcoin_signature_1: Signature::from(FFISignature::new()),
+                       bitcoin_signature_2: Signature::from(FFISignature::new()),
+                       contents: unsigned_ann,
+               }
        }
 }
 
@@ -268,7 +268,7 @@ fn get_dummy_channel_update(short_chan_id: u64) -> msgs::ChannelUpdate {
        use bitcoin::secp256k1::ffi::Signature as FFISignature;
        let network = Network::Testnet;
        msgs::ChannelUpdate {
-               signature: Signature::from(FFISignature::new()),
+               signature: Signature::from(unsafe { FFISignature::new() }),
                contents: msgs::UnsignedChannelUpdate {
                        chain_hash: genesis_block(network).header.block_hash(),
                        short_channel_id: short_chan_id,