Stub out ChaCha20 non-HMAC encryption/decryption in fuzztarget
[rust-lightning] / src / util / chacha20poly1305rfc.rs
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};