use crate::parameter::OWFParameters;
pub(crate) trait AddRoundKey<Rhs = Self> {
type Output;
fn add_round_key(&self, rhs: Rhs) -> Self::Output;
}
pub(crate) trait AddRoundKeyAssign<Rhs = Self> {
fn add_round_key_assign(&mut self, rhs: Rhs);
}
pub(crate) trait StateToBytes<O: OWFParameters> {
type Output;
fn state_to_bytes(&self) -> Self::Output;
}
pub(crate) trait InverseShiftRows<O: OWFParameters> {
type Output;
fn inverse_shift_rows(&self) -> Self::Output;
}
pub(crate) trait BytewiseMixColumns<O: OWFParameters> {
type Output;
fn bytewise_mix_columns(&self) -> Self::Output;
}
pub(crate) trait SBoxAffine<O: OWFParameters> {
type Output;
fn s_box_affine(&self, sq: bool) -> Self::Output;
}
pub(crate) trait ShiftRows {
fn shift_rows(&mut self);
}
pub(crate) trait InverseAffine {
fn inverse_affine(&mut self);
}
pub(crate) trait MixColumns<O> {
fn mix_columns(&mut self, sq: bool);
}
pub(crate) trait AddRoundKeyBytes<Rhs = Self> {
fn add_round_key_bytes(&mut self, rhs: Rhs, sq: bool);
}