@@ -7,6 +7,7 @@ use bitcoin::secp256k1::ecdsa::RecoverableSignature;
7
7
use bitcoin:: secp256k1:: schnorr;
8
8
9
9
use lightning:: sign:: { Recipient , KeyMaterial , EntropySource , NodeSigner , SignerProvider } ;
10
+ use lightning:: ln:: features:: InitFeatures ;
10
11
use lightning:: ln:: msgs:: { self , DecodeError , OnionMessageHandler } ;
11
12
use lightning:: ln:: script:: ShutdownScript ;
12
13
use lightning:: offers:: invoice:: UnsignedBolt12Invoice ;
@@ -39,9 +40,20 @@ pub fn do_test<L: Logger>(data: &[u8], logger: &L) {
39
40
& keys_manager, & keys_manager, logger, & message_router, & offers_msg_handler,
40
41
& custom_msg_handler
41
42
) ;
42
- let mut pk = [ 2 ; 33 ] ; pk[ 1 ] = 0xff ;
43
- let peer_node_id_not_used = PublicKey :: from_slice ( & pk) . unwrap ( ) ;
44
- onion_messenger. handle_onion_message ( & peer_node_id_not_used, & msg) ;
43
+
44
+ let peer_node_id = {
45
+ let mut secret_bytes = [ 0 ; 32 ] ;
46
+ secret_bytes[ 31 ] = 2 ;
47
+ let secret = SecretKey :: from_slice ( & secret_bytes) . unwrap ( ) ;
48
+ PublicKey :: from_secret_key ( & Secp256k1 :: signing_only ( ) , & secret)
49
+ } ;
50
+
51
+ let mut features = InitFeatures :: empty ( ) ;
52
+ features. set_onion_messages_optional ( ) ;
53
+ let init = msgs:: Init { features, networks : None , remote_network_address : None } ;
54
+
55
+ onion_messenger. peer_connected ( & peer_node_id, & init, false ) . unwrap ( ) ;
56
+ onion_messenger. handle_onion_message ( & peer_node_id, & msg) ;
45
57
}
46
58
}
47
59
@@ -211,6 +223,50 @@ mod tests {
211
223
212
224
#[ test]
213
225
fn test_no_onion_message_breakage ( ) {
226
+ let one_hop_om = "\
227
+ 020000000000000000000000000000000000000000000000000000000000000e01055600020000000000000\
228
+ 000000000000000000000000000000000000000000000000e01ae0276020000000000000000000000000000\
229
+ 000000000000000000000000000000000002020000000000000000000000000000000000000000000000000\
230
+ 000000000000e0101022a0000000000000000000000000000014551231950b75fc4402da1732fc9bebf0010\
231
+ 9500000000000000000000000000000004106d000000000000000000000000000000fd1092202a2a2a2a2a2\
232
+ a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0000000000000000000000000000000000\
233
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
234
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
235
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
236
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
237
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
238
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
239
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
240
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
241
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
242
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
243
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
244
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
245
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
246
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
247
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
248
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
249
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
250
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
251
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
252
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
253
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
254
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
255
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
256
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
257
+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\
258
+ 000000000000000000000000000000000000000005600000000000000000000000000000000000000000000\
259
+ 000000000000000000";
260
+ let logger = TrackingLogger { lines : Mutex :: new ( HashMap :: new ( ) ) } ;
261
+ super :: do_test ( & :: hex:: decode ( one_hop_om) . unwrap ( ) , & logger) ;
262
+ {
263
+ let log_entries = logger. lines . lock ( ) . unwrap ( ) ;
264
+ assert_eq ! ( log_entries. get( & ( "lightning::onion_message::messenger" . to_string( ) ,
265
+ "Received an onion message with path_id None and a reply_path" . to_string( ) ) ) , Some ( & 1 ) ) ;
266
+ assert_eq ! ( log_entries. get( & ( "lightning::onion_message::messenger" . to_string( ) ,
267
+ "Sending onion message when responding to Custom onion message with path_id None" . to_string( ) ) ) , Some ( & 1 ) ) ;
268
+ }
269
+
214
270
let two_unblinded_hops_om = "\
215
271
020000000000000000000000000000000000000000000000000000000000000e01055600020000000000000\
216
272
000000000000000000000000000000000000000000000000e01350433042102020202020202020202020202\
0 commit comments