1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)
}