Skip to content

Commit 1b21715

Browse files
committed
Update error message
For when other peer has sent a invalid `announcement_signatures`
1 parent f2b53e9 commit 1b21715

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2745,10 +2745,19 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
27452745

27462746
let were_node_one = announcement.node_id_1 == our_node_id;
27472747
let msghash = hash_to_message!(&Sha256dHash::hash(&announcement.encode()[..])[..]);
2748-
if self.secp_ctx.verify(&msghash, &msg.node_signature, if were_node_one { &announcement.node_id_2 } else { &announcement.node_id_1 }).is_err() ||
2749-
self.secp_ctx.verify(&msghash, &msg.bitcoin_signature, if were_node_one { &announcement.bitcoin_key_2 } else { &announcement.bitcoin_key_1 }).is_err() {
2750-
let chan_err: ChannelError = ChannelError::Close("Bad announcement_signatures node_signature".to_owned());
2751-
try_chan_entry!(self, Err(chan_err), channel_state, chan);
2748+
let their_node_key = if were_node_one { &announcement.node_id_2 } else { &announcement.node_id_1 };
2749+
let their_bitcoin_key = if were_node_one { &announcement.bitcoin_key_2 } else { &announcement.bitcoin_key_1 };
2750+
match (self.secp_ctx.verify(&msghash, &msg.node_signature, their_node_key),
2751+
self.secp_ctx.verify(&msghash, &msg.bitcoin_signature, their_bitcoin_key)) {
2752+
(Err(e), _) => {
2753+
let chan_err: ChannelError = ChannelError::Close(format!("Bad announcement_signatures. node_signature: {:?}. announcement_signatures was {:?}. their_node_key: {:?}", e, &announcement, their_node_key));
2754+
try_chan_entry!(self, Err(chan_err), channel_state, chan);
2755+
},
2756+
(_, Err(e)) => {
2757+
let chan_err: ChannelError = ChannelError::Close(format!("Bad announcement_signatures. bitcoin_signature: {:?}, announcement_signatures was {:?}. their_bitcoin_key: ({:?})", e, &announcement, their_bitcoin_key));
2758+
try_chan_entry!(self, Err(chan_err), channel_state, chan);
2759+
},
2760+
_ => {}
27522761
}
27532762

27542763
let our_node_sig = self.secp_ctx.sign(&msghash, &self.our_network_key);

0 commit comments

Comments
 (0)