pub use cipher::{
IvSizeUser, KeyIvInit, KeySizeUser, StreamCipherCoreWrapper,
array::Array,
consts::{U12, U32, U64},
};
use crate::{ChaChaCore, R8, R12, R20, Rounds, variants::Ietf};
pub type Key = Array<u8, U32>;
pub type Nonce = Array<u8, U12>;
pub type ChaCha8 = StreamCipherCoreWrapper<ChaChaCore<R8, Ietf>>;
pub type ChaCha12 = StreamCipherCoreWrapper<ChaChaCore<R12, Ietf>>;
pub type ChaCha20 = StreamCipherCoreWrapper<ChaChaCore<R20, Ietf>>;
pub(crate) type Block = Array<u8, U64>;
impl<R: Rounds> KeySizeUser for ChaChaCore<R, Ietf> {
type KeySize = U32;
}
impl<R: Rounds> IvSizeUser for ChaChaCore<R, Ietf> {
type IvSize = U12;
}
impl<R: Rounds> KeyIvInit for ChaChaCore<R, Ietf> {
#[inline]
fn new(key: &Key, iv: &Nonce) -> Self {
ChaChaCore::<R, Ietf>::new_internal(key.as_ref(), iv.as_ref())
}
}