use crate::cipher::Ctr128BEReader;
use aes::Aes256;
use camellia::Camellia256;
use crypto_common::BlockSizeUser;
use std::io;
use std::io::Read;
pub(super) fn aes_ctr_cipher_reader<R: Read>(
mut reader: R,
key: &[u8],
) -> io::Result<Ctr128BEReader<R, Aes256>> {
let mut iv = vec![0u8; Aes256::block_size()];
reader.read_exact(&mut iv)?;
Ctr128BEReader::new(reader, key, &iv)
}
pub(super) fn camellia_ctr_cipher_reader<R: Read>(
mut reader: R,
key: &[u8],
) -> io::Result<Ctr128BEReader<R, Camellia256>> {
let mut iv = vec![0u8; Camellia256::block_size()];
reader.read_exact(&mut iv)?;
Ctr128BEReader::new(reader, key, &iv)
}