Stub out ChaCha20 non-HMAC encryption/decryption in fuzztarget
authorMatt Corallo <git@bluematt.me>
Fri, 3 Aug 2018 00:05:14 +0000 (20:05 -0400)
committerMatt Corallo <git@bluematt.me>
Fri, 3 Aug 2018 02:37:28 +0000 (22:37 -0400)
src/ln/channelmanager.rs
src/util/chacha20poly1305rfc.rs

index 76272d4e6973a651935a829deeee7fcd2cf03687..29d260ba6886c8826ff4510f8215a3c097e27d2e 100644 (file)
@@ -19,13 +19,13 @@ use ln::msgs;
 use ln::msgs::{HandleError,ChannelMessageHandler,MsgEncodable,MsgDecodable};
 use util::{byte_utils, events, internal_traits, rng};
 use util::sha2::Sha256;
+use util::chacha20poly1305rfc::ChaCha20;
 
 use crypto;
 use crypto::mac::{Mac,MacResult};
 use crypto::hmac::Hmac;
 use crypto::digest::Digest;
 use crypto::symmetriccipher::SynchronousStreamCipher;
-use crypto::chacha20::ChaCha20;
 
 use std::{ptr, mem};
 use std::collections::HashMap;
index 9c86d44b4949e24e86abcc043d5c2de885cef7c1..1aeaf61d21a4054502cd3ec1e076b67a1bf24c96 100644 (file)
 #[cfg(not(feature = "fuzztarget"))]
 mod real_chachapoly {
        use crypto::aead::{AeadEncryptor,AeadDecryptor};
-       use crypto::chacha20::ChaCha20;
        use crypto::symmetriccipher::SynchronousStreamCipher;
        use crypto::poly1305::Poly1305;
        use crypto::mac::Mac;
        use crypto::util::fixed_time_eq;
 
+       pub use crypto::chacha20::ChaCha20;
+
        use util::byte_utils;
 
        #[derive(Clone, Copy)]
@@ -104,11 +105,12 @@ mod real_chachapoly {
        }
 }
 #[cfg(not(feature = "fuzztarget"))]
-pub use self::real_chachapoly::ChaCha20Poly1305RFC;
+pub use self::real_chachapoly::{ChaCha20Poly1305RFC, ChaCha20};
 
 #[cfg(feature = "fuzztarget")]
 mod fuzzy_chachapoly {
        use crypto::aead::{AeadEncryptor,AeadDecryptor};
+       use crypto::symmetriccipher::SynchronousStreamCipher;
 
        #[derive(Clone, Copy)]
        pub struct ChaCha20Poly1305RFC {
@@ -155,6 +157,22 @@ mod fuzzy_chachapoly {
                        true
                }
        }
+
+       pub struct ChaCha20 {}
+
+       impl ChaCha20 {
+               pub fn new(key: &[u8], nonce: &[u8]) -> ChaCha20 {
+                       assert!(key.len() == 16 || key.len() == 32);
+                       assert!(nonce.len() == 8 || nonce.len() == 12);
+                       Self {}
+               }
+       }
+
+       impl SynchronousStreamCipher for ChaCha20 {
+               fn process(&mut self, input: &[u8], output: &mut [u8]) {
+                       output.copy_from_slice(input);
+               }
+       }
 }
 #[cfg(feature = "fuzztarget")]
-pub use self::fuzzy_chachapoly::ChaCha20Poly1305RFC;
+pub use self::fuzzy_chachapoly::{ChaCha20Poly1305RFC, ChaCha20};