@@ -19,18 +19,12 @@ const KEY_ROTATION_INDEX: u32 = 1000;
1919/// Returned after a successful handshake to encrypt and decrypt communication with peer nodes.
2020/// It should not normally be manually instantiated.
2121/// Automatically handles key rotation.
22- /// For decryption, it is recommended to call `decrypt_message_stream` for automatic buffering.
2322pub struct Conduit {
24- pub ( super ) encryptor : Encryptor ,
25-
26- #[ cfg( feature = "fuzztarget" ) ]
23+ pub encryptor : Encryptor ,
2724 pub decryptor : Decryptor ,
28- #[ cfg( not( feature = "fuzztarget" ) ) ]
29- pub ( super ) decryptor : Decryptor ,
30-
3125}
3226
33- pub ( super ) struct Encryptor {
27+ pub struct Encryptor {
3428 sending_key : SymmetricKey ,
3529 sending_chaining_key : SymmetricKey ,
3630 sending_nonce : u32 ,
@@ -74,15 +68,6 @@ impl Conduit {
7468 }
7569 }
7670
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-
8671 fn increment_nonce ( nonce : & mut u32 , chaining_key : & mut SymmetricKey , key : & mut SymmetricKey ) {
8772 * nonce += 1 ;
8873 if * nonce == KEY_ROTATION_INDEX {
@@ -99,7 +84,7 @@ impl Conduit {
9984}
10085
10186impl Encryptor {
102- pub ( super ) fn encrypt ( & mut self , buffer : & [ u8 ] ) -> Vec < u8 > {
87+ pub fn encrypt ( & mut self , buffer : & [ u8 ] ) -> Vec < u8 > {
10388 if buffer. len ( ) > LN_MAX_MSG_LEN {
10489 panic ! ( "Attempted to encrypt message longer than 65535 bytes!" ) ;
10590 }
@@ -250,7 +235,7 @@ mod tests {
250235 let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
251236
252237 let message: Vec < u8 > = vec ! [ ] ;
253- let encrypted_message = connected_peer. encrypt ( & message) ;
238+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
254239 assert_eq ! ( encrypted_message. len( ) , 2 + 16 + 16 ) ;
255240
256241 remote_peer. decryptor . read ( & encrypted_message[ ..] ) . unwrap ( ) ;
@@ -266,7 +251,7 @@ mod tests {
266251 let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
267252
268253 let message: Vec < u8 > = vec ! [ 1 ] ;
269- let encrypted_message = connected_peer. encrypt ( & message) ;
254+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
270255
271256 remote_peer. decryptor . read ( & encrypted_message[ ..1 ] ) . unwrap ( ) ;
272257 assert ! ( remote_peer. decryptor. next( ) . is_none( ) ) ;
@@ -283,7 +268,7 @@ mod tests {
283268 let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
284269
285270 let message: Vec < u8 > = vec ! [ 1 ] ;
286- let encrypted_message = connected_peer. encrypt ( & message) ;
271+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
287272
288273 remote_peer. decryptor . read ( & encrypted_message[ ..20 ] ) . unwrap ( ) ;
289274 assert ! ( remote_peer. decryptor. next( ) . is_none( ) ) ;
@@ -299,11 +284,11 @@ mod tests {
299284 let ( mut connected_peer, _remote_peer) = setup_peers ( ) ;
300285 let message = hex:: decode ( "68656c6c6f" ) . unwrap ( ) ;
301286
302- let encrypted_message = connected_peer. encrypt ( & message) ;
287+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
303288 assert_eq ! ( encrypted_message, hex:: decode( "cf2b30ddf0cf3f80e7c35a6e6730b59fe802473180f396d88a8fb0db8cbcf25d2f214cf9ea1d95" ) . unwrap( ) ) ;
304289
305290 // 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) ;
307292 assert_eq ! ( encrypted_message, hex:: decode( "72887022101f0b6753e0c7de21657d35a4cb2a1f5cde2650528bbc8f837d0f0d7ad833b1a256a1" ) . unwrap( ) ) ;
308293 }
309294
@@ -316,7 +301,7 @@ mod tests {
316301 let mut encrypted_messages: Vec < Vec < u8 > > = Vec :: new ( ) ;
317302
318303 for _ in 0 ..1002 {
319- let encrypted_message = connected_peer. encrypt ( & message) ;
304+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
320305 encrypted_messages. push ( encrypted_message) ;
321306 }
322307
@@ -334,7 +319,7 @@ mod tests {
334319 let mut encrypted_messages: Vec < Vec < u8 > > = Vec :: new ( ) ;
335320
336321 for _ in 0 ..1002 {
337- let encrypted_message = connected_peer. encrypt ( & message) ;
322+ let encrypted_message = connected_peer. encryptor . encrypt ( & message) ;
338323 encrypted_messages. push ( encrypted_message) ;
339324 }
340325
@@ -343,15 +328,15 @@ mod tests {
343328 let mut current_encrypted_message = encrypted_messages. remove ( 0 ) ;
344329 let next_encrypted_message = encrypted_messages. remove ( 0 ) ;
345330 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 ( ) ;
347332
348333 let decrypted_message = remote_peer. decryptor . next ( ) . unwrap ( ) ;
349334 assert_eq ! ( decrypted_message, message) ;
350335 }
351336
352337 for _ in 0 ..501 {
353338 // decrypt messages directly from buffer without adding to it
354- remote_peer. read ( & [ ] ) . unwrap ( ) ;
339+ remote_peer. decryptor . read ( & [ ] ) . unwrap ( ) ;
355340 let decrypted_message = remote_peer. decryptor . next ( ) . unwrap ( ) ;
356341 assert_eq ! ( decrypted_message, message) ;
357342 }
@@ -361,10 +346,10 @@ mod tests {
361346 #[ test]
362347 fn decryption_failure_errors ( ) {
363348 let ( mut connected_peer, mut remote_peer) = setup_peers ( ) ;
364- let encrypted = remote_peer. encrypt ( & [ 1 ] ) ;
349+ let encrypted = remote_peer. encryptor . encrypt ( & [ 1 ] ) ;
365350
366351 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( ) ) ) ;
368353 }
369354
370355 // Test next()::None
@@ -379,8 +364,8 @@ mod tests {
379364 #[ test]
380365 fn decryptor_iterator_one_item_valid ( ) {
381366 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 ( ) ;
384369
385370 assert_eq ! ( connected_peer. decryptor. next( ) , Some ( vec![ 1 ] ) ) ;
386371 assert_eq ! ( connected_peer. decryptor. next( ) , None ) ;
@@ -397,7 +382,7 @@ mod tests {
397382 fn max_message_len_encryption ( ) {
398383 let ( mut connected_peer, _) = setup_peers ( ) ;
399384 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) ;
401386 }
402387
403388 #[ test]
@@ -407,6 +392,6 @@ mod tests {
407392
408393 // MSG should not exceed LN_MAX_MSG_LEN + 16
409394 let msg = [ 4u8 ; LN_MAX_MSG_LEN + 17 ] ;
410- connected_peer. read ( & msg) . unwrap ( ) ;
395+ connected_peer. decryptor . read ( & msg) . unwrap ( ) ;
411396 }
412397}
0 commit comments