#[allow(deprecated)] use aes::cipher::{KeyIvInit, StreamCipher};
pub struct ObfuscatedCipher {
rx: ctr::Ctr128BE<aes::Aes256>,
tx: ctr::Ctr128BE<aes::Aes256>,
}
impl ObfuscatedCipher {
pub fn new(init: &[u8; 64]) -> Self {
let init_rev = init.iter().copied().rev().collect::<Vec<_>>();
#[allow(deprecated)] Self {
rx: ctr::Ctr128BE::<aes::Aes256>::new(
init_rev[8..40].try_into().unwrap(),
init_rev[40..56].try_into().unwrap(),
),
tx: ctr::Ctr128BE::<aes::Aes256>::new(
init[8..40].try_into().unwrap(),
init[40..56].try_into().unwrap(),
),
}
}
pub fn encrypt(&mut self, buffer: &mut [u8]) {
self.tx.apply_keystream(buffer);
}
pub fn decrypt(&mut self, buffer: &mut [u8]) {
self.rx.apply_keystream(buffer);
}
}