@@ -19,18 +19,12 @@ const KEY_ROTATION_INDEX: u32 = 1000;
19
19
/// Returned after a successful handshake to encrypt and decrypt communication with peer nodes.
20
20
/// It should not normally be manually instantiated.
21
21
/// Automatically handles key rotation.
22
- /// For decryption, it is recommended to call `decrypt_message_stream` for automatic buffering.
23
22
pub struct Conduit {
24
- pub ( super ) encryptor : Encryptor ,
25
-
26
- #[ cfg( feature = "fuzztarget" ) ]
23
+ pub encryptor : Encryptor ,
27
24
pub decryptor : Decryptor ,
28
- #[ cfg( not( feature = "fuzztarget" ) ) ]
29
- pub ( super ) decryptor : Decryptor ,
30
-
31
25
}
32
26
33
- pub ( super ) struct Encryptor {
27
+ pub struct Encryptor {
34
28
sending_key : SymmetricKey ,
35
29
sending_chaining_key : SymmetricKey ,
36
30
sending_nonce : u32 ,
@@ -74,15 +68,6 @@ impl Conduit {
74
68
}
75
69
}
76
70
77
- /// Encrypt data to be sent to peer
78
- pub fn encrypt ( & mut self , buffer : & [ u8 ] ) -> Vec < u8 > {
79
- self . encryptor . encrypt ( buffer)
80
- }
81
-
82
- pub ( super ) fn read ( & mut self , data : & [ u8 ] ) -> Result < ( ) , String > {
83
- self . decryptor . read ( data)
84
- }
85
-
86
71
fn increment_nonce ( nonce : & mut u32 , chaining_key : & mut SymmetricKey , key : & mut SymmetricKey ) {
87
72
* nonce += 1 ;
88
73
if * nonce == KEY_ROTATION_INDEX {
@@ -99,7 +84,7 @@ impl Conduit {
99
84
}
100
85
101
86
impl Encryptor {
102
- pub ( super ) fn encrypt ( & mut self , buffer : & [ u8 ] ) -> Vec < u8 > {
87
+ pub fn encrypt ( & mut self , buffer : & [ u8 ] ) -> Vec < u8 > {
103
88
if buffer. len ( ) > LN_MAX_MSG_LEN {
104
89
panic ! ( "Attempted to encrypt message longer than 65535 bytes!" ) ;
105
90
}
@@ -250,7 +235,7 @@ mod tests {
250
235
let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
251
236
252
237
let message: Vec < u8 > = vec ! [ ] ;
253
- let encrypted_message = connected_peer. encrypt ( & message) ;
238
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
254
239
assert_eq ! ( encrypted_message. len( ) , 2 + 16 + 16 ) ;
255
240
256
241
remote_peer. decryptor . read ( & encrypted_message[ ..] ) . unwrap ( ) ;
@@ -266,7 +251,7 @@ mod tests {
266
251
let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
267
252
268
253
let message: Vec < u8 > = vec ! [ 1 ] ;
269
- let encrypted_message = connected_peer. encrypt ( & message) ;
254
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
270
255
271
256
remote_peer. decryptor . read ( & encrypted_message[ ..1 ] ) . unwrap ( ) ;
272
257
assert ! ( remote_peer. decryptor. next( ) . is_none( ) ) ;
@@ -283,7 +268,7 @@ mod tests {
283
268
let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
284
269
285
270
let message: Vec < u8 > = vec ! [ 1 ] ;
286
- let encrypted_message = connected_peer. encrypt ( & message) ;
271
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
287
272
288
273
remote_peer. decryptor . read ( & encrypted_message[ ..20 ] ) . unwrap ( ) ;
289
274
assert ! ( remote_peer. decryptor. next( ) . is_none( ) ) ;
@@ -299,11 +284,11 @@ mod tests {
299
284
let ( mut connected_peer, _remote_peer) = setup_peers ( ) ;
300
285
let message = hex:: decode ( "68656c6c6f" ) . unwrap ( ) ;
301
286
302
- let encrypted_message = connected_peer. encrypt ( & message) ;
287
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
303
288
assert_eq ! ( encrypted_message, hex:: decode( "cf2b30ddf0cf3f80e7c35a6e6730b59fe802473180f396d88a8fb0db8cbcf25d2f214cf9ea1d95" ) . unwrap( ) ) ;
304
289
305
290
// the second time the same message is encrypted, the ciphertext should be different
306
- let encrypted_message = connected_peer. encrypt ( & message) ;
291
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
307
292
assert_eq ! ( encrypted_message, hex:: decode( "72887022101f0b6753e0c7de21657d35a4cb2a1f5cde2650528bbc8f837d0f0d7ad833b1a256a1" ) . unwrap( ) ) ;
308
293
}
309
294
@@ -316,7 +301,7 @@ mod tests {
316
301
let mut encrypted_messages: Vec < Vec < u8 > > = Vec :: new ( ) ;
317
302
318
303
for _ in 0 ..1002 {
319
- let encrypted_message = connected_peer. encrypt ( & message) ;
304
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
320
305
encrypted_messages. push ( encrypted_message) ;
321
306
}
322
307
@@ -334,7 +319,7 @@ mod tests {
334
319
let mut encrypted_messages: Vec < Vec < u8 > > = Vec :: new ( ) ;
335
320
336
321
for _ in 0 ..1002 {
337
- let encrypted_message = connected_peer. encrypt ( & message) ;
322
+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
338
323
encrypted_messages. push ( encrypted_message) ;
339
324
}
340
325
@@ -343,15 +328,15 @@ mod tests {
343
328
let mut current_encrypted_message = encrypted_messages. remove ( 0 ) ;
344
329
let next_encrypted_message = encrypted_messages. remove ( 0 ) ;
345
330
current_encrypted_message. extend_from_slice ( & next_encrypted_message) ;
346
- remote_peer. read ( & current_encrypted_message[ ..] ) . unwrap ( ) ;
331
+ remote_peer. decryptor . read ( & current_encrypted_message[ ..] ) . unwrap ( ) ;
347
332
348
333
let decrypted_message = remote_peer. decryptor . next ( ) . unwrap ( ) ;
349
334
assert_eq ! ( decrypted_message, message) ;
350
335
}
351
336
352
337
for _ in 0 ..501 {
353
338
// decrypt messages directly from buffer without adding to it
354
- remote_peer. read ( & [ ] ) . unwrap ( ) ;
339
+ remote_peer. decryptor . read ( & [ ] ) . unwrap ( ) ;
355
340
let decrypted_message = remote_peer. decryptor . next ( ) . unwrap ( ) ;
356
341
assert_eq ! ( decrypted_message, message) ;
357
342
}
@@ -361,10 +346,10 @@ mod tests {
361
346
#[ test]
362
347
fn decryption_failure_errors ( ) {
363
348
let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
364
- let encrypted = remote_peer. encrypt ( & [ 1 ] ) ;
349
+ let encrypted = remote_peer. encryptor . encrypt ( & [ 1 ] ) ;
365
350
366
351
connected_peer. decryptor . receiving_key = [ 0 ; 32 ] ;
367
- assert_eq ! ( connected_peer. read( & encrypted) , Err ( "invalid hmac" . to_string( ) ) ) ;
352
+ assert_eq ! ( connected_peer. decryptor . read( & encrypted) , Err ( "invalid hmac" . to_string( ) ) ) ;
368
353
}
369
354
370
355
// Test next()::None
@@ -379,8 +364,8 @@ mod tests {
379
364
#[ test]
380
365
fn decryptor_iterator_one_item_valid ( ) {
381
366
let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
382
- let encrypted = remote_peer. encrypt ( & [ 1 ] ) ;
383
- connected_peer. read ( & encrypted) . unwrap ( ) ;
367
+ let encrypted = remote_peer. encryptor . encrypt ( & [ 1 ] ) ;
368
+ connected_peer. decryptor . read ( & encrypted) . unwrap ( ) ;
384
369
385
370
assert_eq ! ( connected_peer. decryptor. next( ) , Some ( vec![ 1 ] ) ) ;
386
371
assert_eq ! ( connected_peer. decryptor. next( ) , None ) ;
@@ -397,7 +382,7 @@ mod tests {
397
382
fn max_message_len_encryption ( ) {
398
383
let ( mut connected_peer, _) = setup_peers ( ) ;
399
384
let msg = [ 4u8 ; LN_MAX_MSG_LEN + 1 ] ;
400
- let _should_panic = connected_peer. encrypt ( & msg) ;
385
+ let _should_panic = connected_peer. encryptor . encrypt ( & msg) ;
401
386
}
402
387
403
388
#[ test]
@@ -407,6 +392,6 @@ mod tests {
407
392
408
393
// MSG should not exceed LN_MAX_MSG_LEN + 16
409
394
let msg = [ 4u8 ; LN_MAX_MSG_LEN + 17 ] ;
410
- connected_peer. read ( & msg) . unwrap ( ) ;
395
+ connected_peer. decryptor . read ( & msg) . unwrap ( ) ;
411
396
}
412
397
}
0 commit comments