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;
#[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)]
}
}
#[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 {
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};