@@ -2745,10 +2745,21 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
2745
2745
2746
2746
let were_node_one = announcement. node_id_1 == our_node_id;
2747
2747
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
+ {
2749
+ let their_node_key = if were_node_one { & announcement. node_id_2 } else { & announcement. node_id_1 } ;
2750
+ let their_bitcoin_key = if were_node_one { & announcement. bitcoin_key_2 } else { & announcement. bitcoin_key_1 } ;
2751
+ match ( self . secp_ctx . verify ( & msghash, & msg. node_signature , their_node_key) ,
2752
+ self . secp_ctx . verify ( & msghash, & msg. bitcoin_signature , their_bitcoin_key) ) {
2753
+ ( Err ( e) , _) => {
2754
+ let chan_err: ChannelError = ChannelError :: Close ( format ! ( "Bad announcement_signatures. node_signature: {:?}. announcement_signatures was {:?}. their_node_key: {:?}" , e, & announcement, their_node_key) ) ;
2755
+ try_chan_entry ! ( self , Err ( chan_err) , channel_state, chan) ;
2756
+ } ,
2757
+ ( _, Err ( e) ) => {
2758
+ let chan_err: ChannelError = ChannelError :: Close ( format ! ( "Bad announcement_signatures. bitcoin_signature: {:?}, announcement_signatures was {:?}. their_bitcoin_key: ({:?})" , e, & announcement, their_bitcoin_key) ) ;
2759
+ try_chan_entry ! ( self , Err ( chan_err) , channel_state, chan) ;
2760
+ } ,
2761
+ _ => { }
2762
+ }
2752
2763
}
2753
2764
2754
2765
let our_node_sig = self . secp_ctx . sign ( & msghash, & self . our_network_key ) ;
0 commit comments