1
1
// Imports that need to be added manually
2
2
use bech32:: u5;
3
3
use bitcoin:: blockdata:: script:: ScriptBuf ;
4
- use bitcoin:: secp256k1:: { PublicKey , Scalar , Secp256k1 , SecretKey , self } ;
5
4
use bitcoin:: secp256k1:: ecdh:: SharedSecret ;
6
5
use bitcoin:: secp256k1:: ecdsa:: RecoverableSignature ;
7
6
use bitcoin:: secp256k1:: schnorr;
7
+ use bitcoin:: secp256k1:: { self , PublicKey , Scalar , Secp256k1 , SecretKey } ;
8
8
9
- use lightning:: blinded_path:: { BlindedPath , EmptyNodeIdLookUp } ;
10
9
use lightning:: blinded_path:: message:: ForwardNode ;
10
+ use lightning:: blinded_path:: { BlindedPath , EmptyNodeIdLookUp } ;
11
11
use lightning:: ln:: features:: InitFeatures ;
12
12
use lightning:: ln:: msgs:: { self , DecodeError , OnionMessageHandler } ;
13
13
use lightning:: ln:: script:: ShutdownScript ;
14
14
use lightning:: offers:: invoice:: UnsignedBolt12Invoice ;
15
15
use lightning:: offers:: invoice_request:: UnsignedInvoiceRequest ;
16
- use lightning:: sign:: { Recipient , KeyMaterial , EntropySource , NodeSigner , SignerProvider } ;
17
- use lightning:: util:: test_channel_signer:: TestChannelSigner ;
18
- use lightning:: util:: logger:: Logger ;
19
- use lightning:: util:: ser:: { Readable , Writeable , Writer } ;
20
- use lightning:: onion_message:: messenger:: { CustomOnionMessageHandler , Destination , MessageRouter , OnionMessagePath , OnionMessenger , PendingOnionMessage , Responder , ResponseInstruction } ;
16
+ use lightning:: onion_message:: messenger:: {
17
+ CustomOnionMessageHandler , Destination , MessageRouter , OnionMessagePath , OnionMessenger ,
18
+ PendingOnionMessage , Responder , ResponseInstruction ,
19
+ } ;
21
20
use lightning:: onion_message:: offers:: { OffersMessage , OffersMessageHandler } ;
22
21
use lightning:: onion_message:: packet:: OnionMessageContents ;
22
+ use lightning:: sign:: { EntropySource , KeyMaterial , NodeSigner , Recipient , SignerProvider } ;
23
+ use lightning:: util:: logger:: Logger ;
24
+ use lightning:: util:: ser:: { Readable , Writeable , Writer } ;
25
+ use lightning:: util:: test_channel_signer:: TestChannelSigner ;
23
26
24
27
use crate :: utils:: test_logger;
25
28
@@ -33,17 +36,19 @@ pub fn do_test<L: Logger>(data: &[u8], logger: &L) {
33
36
let mut secret_bytes = [ 1 ; 32 ] ;
34
37
secret_bytes[ 31 ] = 2 ;
35
38
let secret = SecretKey :: from_slice ( & secret_bytes) . unwrap ( ) ;
36
- let keys_manager = KeyProvider {
37
- node_secret : secret,
38
- counter : AtomicU64 :: new ( 0 ) ,
39
- } ;
39
+ let keys_manager = KeyProvider { node_secret : secret, counter : AtomicU64 :: new ( 0 ) } ;
40
40
let node_id_lookup = EmptyNodeIdLookUp { } ;
41
41
let message_router = TestMessageRouter { } ;
42
42
let offers_msg_handler = TestOffersMessageHandler { } ;
43
43
let custom_msg_handler = TestCustomMessageHandler { } ;
44
44
let onion_messenger = OnionMessenger :: new (
45
- & keys_manager, & keys_manager, logger, & node_id_lookup, & message_router,
46
- & offers_msg_handler, & custom_msg_handler
45
+ & keys_manager,
46
+ & keys_manager,
47
+ logger,
48
+ & node_id_lookup,
49
+ & message_router,
50
+ & offers_msg_handler,
51
+ & custom_msg_handler,
47
52
) ;
48
53
49
54
let peer_node_id = {
@@ -79,13 +84,9 @@ struct TestMessageRouter {}
79
84
80
85
impl MessageRouter for TestMessageRouter {
81
86
fn find_path (
82
- & self , _sender : PublicKey , _peers : Vec < PublicKey > , destination : Destination
87
+ & self , _sender : PublicKey , _peers : Vec < PublicKey > , destination : Destination ,
83
88
) -> Result < OnionMessagePath , ( ) > {
84
- Ok ( OnionMessagePath {
85
- intermediate_nodes : vec ! [ ] ,
86
- destination,
87
- first_node_addresses : None ,
88
- } )
89
+ Ok ( OnionMessagePath { intermediate_nodes : vec ! [ ] , destination, first_node_addresses : None } )
89
90
}
90
91
91
92
fn create_blinded_paths < T : secp256k1:: Signing + secp256k1:: Verification > (
@@ -98,7 +99,9 @@ impl MessageRouter for TestMessageRouter {
98
99
struct TestOffersMessageHandler { }
99
100
100
101
impl OffersMessageHandler for TestOffersMessageHandler {
101
- fn handle_message ( & self , _message : OffersMessage , _responder : Option < Responder > ) -> ResponseInstruction < OffersMessage > {
102
+ fn handle_message (
103
+ & self , _message : OffersMessage , _responder : Option < Responder > ,
104
+ ) -> ResponseInstruction < OffersMessage > {
102
105
ResponseInstruction :: NoResponse
103
106
}
104
107
}
@@ -128,16 +131,20 @@ struct TestCustomMessageHandler {}
128
131
129
132
impl CustomOnionMessageHandler for TestCustomMessageHandler {
130
133
type CustomMessage = TestCustomMessage ;
131
- fn handle_custom_message ( & self , message : Self :: CustomMessage , responder : Option < Responder > ) -> ResponseInstruction < Self :: CustomMessage > {
134
+ fn handle_custom_message (
135
+ & self , message : Self :: CustomMessage , responder : Option < Responder > ,
136
+ ) -> ResponseInstruction < Self :: CustomMessage > {
132
137
match responder {
133
138
Some ( responder) => responder. respond ( message) ,
134
- None => ResponseInstruction :: NoResponse
139
+ None => ResponseInstruction :: NoResponse ,
135
140
}
136
141
}
137
- fn read_custom_message < R : io:: Read > ( & self , _message_type : u64 , buffer : & mut R ) -> Result < Option < Self :: CustomMessage > , msgs:: DecodeError > {
142
+ fn read_custom_message < R : io:: Read > (
143
+ & self , _message_type : u64 , buffer : & mut R ,
144
+ ) -> Result < Option < Self :: CustomMessage > , msgs:: DecodeError > {
138
145
let mut buf = Vec :: new ( ) ;
139
146
buffer. read_to_end ( & mut buf) ?;
140
- return Ok ( Some ( TestCustomMessage { } ) )
147
+ return Ok ( Some ( TestCustomMessage { } ) ) ;
141
148
}
142
149
fn release_pending_custom_messages ( & self ) -> Vec < PendingOnionMessage < Self :: CustomMessage > > {
143
150
vec ! [ ]
@@ -159,39 +166,48 @@ struct KeyProvider {
159
166
impl EntropySource for KeyProvider {
160
167
fn get_secure_random_bytes ( & self ) -> [ u8 ; 32 ] {
161
168
let ctr = self . counter . fetch_add ( 1 , Ordering :: Relaxed ) ;
162
- [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
163
- ( ctr >> 8 * 7 ) as u8 , ( ctr >> 8 * 6 ) as u8 , ( ctr >> 8 * 5 ) as u8 , ( ctr >> 8 * 4 ) as u8 , ( ctr >> 8 * 3 ) as u8 , ( ctr >> 8 * 2 ) as u8 , ( ctr >> 8 * 1 ) as u8 , 14 , ( ctr >> 8 * 0 ) as u8 ]
169
+ #[ rustfmt:: skip]
170
+ let random_bytes = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
171
+ ( ctr >> 8 * 7 ) as u8 , ( ctr >> 8 * 6 ) as u8 , ( ctr >> 8 * 5 ) as u8 , ( ctr >> 8 * 4 ) as u8 ,
172
+ ( ctr >> 8 * 3 ) as u8 , ( ctr >> 8 * 2 ) as u8 , ( ctr >> 8 * 1 ) as u8 , 14 , ( ctr >> 8 * 0 ) as u8 ] ;
173
+ random_bytes
164
174
}
165
175
}
166
176
167
177
impl NodeSigner for KeyProvider {
168
178
fn get_node_id ( & self , recipient : Recipient ) -> Result < PublicKey , ( ) > {
169
179
let node_secret = match recipient {
170
180
Recipient :: Node => Ok ( & self . node_secret ) ,
171
- Recipient :: PhantomNode => Err ( ( ) )
181
+ Recipient :: PhantomNode => Err ( ( ) ) ,
172
182
} ?;
173
183
Ok ( PublicKey :: from_secret_key ( & Secp256k1 :: signing_only ( ) , node_secret) )
174
184
}
175
185
176
- fn ecdh ( & self , recipient : Recipient , other_key : & PublicKey , tweak : Option < & Scalar > ) -> Result < SharedSecret , ( ) > {
186
+ fn ecdh (
187
+ & self , recipient : Recipient , other_key : & PublicKey , tweak : Option < & Scalar > ,
188
+ ) -> Result < SharedSecret , ( ) > {
177
189
let mut node_secret = match recipient {
178
190
Recipient :: Node => Ok ( self . node_secret . clone ( ) ) ,
179
- Recipient :: PhantomNode => Err ( ( ) )
191
+ Recipient :: PhantomNode => Err ( ( ) ) ,
180
192
} ?;
181
193
if let Some ( tweak) = tweak {
182
194
node_secret = node_secret. mul_tweak ( tweak) . map_err ( |_| ( ) ) ?;
183
195
}
184
196
Ok ( SharedSecret :: new ( other_key, & node_secret) )
185
197
}
186
198
187
- fn get_inbound_payment_key_material ( & self ) -> KeyMaterial { unreachable ! ( ) }
199
+ fn get_inbound_payment_key_material ( & self ) -> KeyMaterial {
200
+ unreachable ! ( )
201
+ }
188
202
189
- fn sign_invoice ( & self , _hrp_bytes : & [ u8 ] , _invoice_data : & [ u5 ] , _recipient : Recipient ) -> Result < RecoverableSignature , ( ) > {
203
+ fn sign_invoice (
204
+ & self , _hrp_bytes : & [ u8 ] , _invoice_data : & [ u5 ] , _recipient : Recipient ,
205
+ ) -> Result < RecoverableSignature , ( ) > {
190
206
unreachable ! ( )
191
207
}
192
208
193
209
fn sign_bolt12_invoice_request (
194
- & self , _invoice_request : & UnsignedInvoiceRequest
210
+ & self , _invoice_request : & UnsignedInvoiceRequest ,
195
211
) -> Result < schnorr:: Signature , ( ) > {
196
212
unreachable ! ( )
197
213
}
@@ -202,7 +218,9 @@ impl NodeSigner for KeyProvider {
202
218
unreachable ! ( )
203
219
}
204
220
205
- fn sign_gossip_message ( & self , _msg : lightning:: ln:: msgs:: UnsignedGossipMessage ) -> Result < bitcoin:: secp256k1:: ecdsa:: Signature , ( ) > {
221
+ fn sign_gossip_message (
222
+ & self , _msg : lightning:: ln:: msgs:: UnsignedGossipMessage ,
223
+ ) -> Result < bitcoin:: secp256k1:: ecdsa:: Signature , ( ) > {
206
224
unreachable ! ( )
207
225
}
208
226
}
@@ -212,17 +230,29 @@ impl SignerProvider for KeyProvider {
212
230
#[ cfg( taproot) ]
213
231
type TaprootSigner = TestChannelSigner ;
214
232
215
- fn generate_channel_keys_id ( & self , _inbound : bool , _channel_value_satoshis : u64 , _user_channel_id : u128 ) -> [ u8 ; 32 ] { unreachable ! ( ) }
233
+ fn generate_channel_keys_id (
234
+ & self , _inbound : bool , _channel_value_satoshis : u64 , _user_channel_id : u128 ,
235
+ ) -> [ u8 ; 32 ] {
236
+ unreachable ! ( )
237
+ }
216
238
217
- fn derive_channel_signer ( & self , _channel_value_satoshis : u64 , _channel_keys_id : [ u8 ; 32 ] ) -> Self :: EcdsaSigner {
239
+ fn derive_channel_signer (
240
+ & self , _channel_value_satoshis : u64 , _channel_keys_id : [ u8 ; 32 ] ,
241
+ ) -> Self :: EcdsaSigner {
218
242
unreachable ! ( )
219
243
}
220
244
221
- fn read_chan_signer ( & self , _data : & [ u8 ] ) -> Result < TestChannelSigner , DecodeError > { unreachable ! ( ) }
245
+ fn read_chan_signer ( & self , _data : & [ u8 ] ) -> Result < TestChannelSigner , DecodeError > {
246
+ unreachable ! ( )
247
+ }
222
248
223
- fn get_destination_script ( & self , _channel_keys_id : [ u8 ; 32 ] ) -> Result < ScriptBuf , ( ) > { unreachable ! ( ) }
249
+ fn get_destination_script ( & self , _channel_keys_id : [ u8 ; 32 ] ) -> Result < ScriptBuf , ( ) > {
250
+ unreachable ! ( )
251
+ }
224
252
225
- fn get_shutdown_scriptpubkey ( & self ) -> Result < ShutdownScript , ( ) > { unreachable ! ( ) }
253
+ fn get_shutdown_scriptpubkey ( & self ) -> Result < ShutdownScript , ( ) > {
254
+ unreachable ! ( )
255
+ }
226
256
}
227
257
228
258
#[ cfg( test) ]
@@ -238,8 +268,20 @@ mod tests {
238
268
}
239
269
impl Logger for TrackingLogger {
240
270
fn log ( & self , record : Record ) {
241
- * self . lines . lock ( ) . unwrap ( ) . entry ( ( record. module_path . to_string ( ) , format ! ( "{}" , record. args) ) ) . or_insert ( 0 ) += 1 ;
242
- println ! ( "{:<5} [{} : {}, {}] {}" , record. level. to_string( ) , record. module_path, record. file, record. line, record. args) ;
271
+ * self
272
+ . lines
273
+ . lock ( )
274
+ . unwrap ( )
275
+ . entry ( ( record. module_path . to_string ( ) , format ! ( "{}" , record. args) ) )
276
+ . or_insert ( 0 ) += 1 ;
277
+ println ! (
278
+ "{:<5} [{} : {}, {}] {}" ,
279
+ record. level. to_string( ) ,
280
+ record. module_path,
281
+ record. file,
282
+ record. line,
283
+ record. args
284
+ ) ;
243
285
}
244
286
}
245
287
0 commit comments