AesBlockX4

Struct AesBlockX4 

Source
pub struct AesBlockX4(/* private fields */);

Implementations§

Source§

impl AesBlockX4

Source

pub const fn new(value: [u8; 64]) -> Self

Source

pub const fn to_bytes(self) -> [u8; 64]

Source

pub fn is_zero(self) -> bool

Source

pub fn enc(self, round_key: Self) -> Self

Performs one round of AES encryption function (ShiftRows->SubBytes->MixColumns->AddRoundKey)

Source

pub fn dec(self, round_key: Self) -> Self

Performs one round of AES decryption function (InvShiftRows->InvSubBytes->InvMixColumns->AddRoundKey)

Source

pub fn enc_last(self, round_key: Self) -> Self

Performs one round of AES encryption function without MixColumns (ShiftRows->SubBytes->AddRoundKey)

Source

pub fn dec_last(self, round_key: Self) -> Self

Performs one round of AES decryption function without InvMixColumns (InvShiftRows->InvSubBytes->AddRoundKey)

Source

pub fn mc(self) -> Self

Performs the MixColumns operation

Source

pub fn imc(self) -> Self

Performs the InvMixColumns operation

Source§

impl AesBlockX4

Source

pub fn chain_enc(self, keys: &[AesBlockX4]) -> AesBlockX4

Computes (self ^ keys[0]).enc(keys[1])...enc(keys[keys.len() - 1]) in the most optimized way

§Panics

If keys.len() == 0

Source

pub fn chain_dec(self, keys: &[AesBlockX4]) -> AesBlockX4

Computes (self ^ keys[0]).dec(keys[1])...dec(keys[keys.len() - 1]) in the most optimized way

§Panics

If keys.len() == 0

Source

pub fn chain_enc_with_last(self, keys: &[AesBlockX4]) -> AesBlockX4

Computes (self ^ keys[0]).enc(keys[1])...enc(keys[keys.len() - 2]).enc_last(keys[keys.len() - 1]) in the most optimized way

§Panics

If keys.len() < 2

Source

pub fn chain_dec_with_last(self, keys: &[AesBlockX4]) -> AesBlockX4

Computes (self ^ keys[0]).dec(keys[1])...dec(keys[keys.len() - 2]).dec_last(keys[keys.len() - 1]) in the most optimized way

§Panics

If keys.len() < 2

Source§

impl AesBlockX4

Source

pub const fn zero() -> Self

Source

pub fn store_to(self, dst: &mut [u8])

Stores the byte representation of the block to dst

§Panics

If dst doesn’t have enough space, i.e. 16 bytes for AesBlock, 32 bytes for AesBlockX2 and 64 bytes for AesBlockX4

Trait Implementations§

Source§

impl BitAnd for AesBlockX4

Source§

type Output = AesBlockX4

The resulting type after applying the & operator.
Source§

fn bitand(self, rhs: Self) -> Self::Output

Performs the & operation. Read more
Source§

impl BitAndAssign for AesBlockX4

Source§

fn bitand_assign(&mut self, rhs: Self)

Performs the &= operation. Read more
Source§

impl BitOr for AesBlockX4

Source§

type Output = AesBlockX4

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: Self) -> Self::Output

Performs the | operation. Read more
Source§

impl BitOrAssign for AesBlockX4

Source§

fn bitor_assign(&mut self, rhs: Self)

Performs the |= operation. Read more
Source§

impl BitXor for AesBlockX4

Source§

type Output = AesBlockX4

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, rhs: Self) -> Self::Output

Performs the ^ operation. Read more
Source§

impl BitXorAssign for AesBlockX4

Source§

fn bitxor_assign(&mut self, rhs: Self)

Performs the ^= operation. Read more
Source§

impl Clone for AesBlockX4

Source§

fn clone(&self) -> AesBlockX4

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AesBlockX4

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for AesBlockX4

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<&[u8; 64]> for AesBlockX4

Source§

fn from(value: &[u8; 64]) -> Self

Converts to this type from the input type.
Source§

impl From<[AesBlock; 4]> for AesBlockX4

Source§

fn from([a, b, c, d]: [AesBlock; 4]) -> Self

Converts to this type from the input type.
Source§

impl From<[AesBlockX2; 2]> for AesBlockX4

Source§

fn from([a, b]: [AesBlockX2; 2]) -> Self

Converts to this type from the input type.
Source§

impl From<[u8; 64]> for AesBlockX4

Source§

fn from(value: [u8; 64]) -> Self

The conversion of u8 array to AesBlock is done using

Source§

impl From<(AesBlock, AesBlock, AesBlock, AesBlock)> for AesBlockX4

Source§

fn from(value: (AesBlock, AesBlock, AesBlock, AesBlock)) -> Self

Converts to this type from the input type.
Source§

impl From<(AesBlockX2, AesBlockX2)> for AesBlockX4

Source§

fn from((hi, lo): (AesBlockX2, AesBlockX2)) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlock> for AesBlockX4

Source§

fn from(value: AesBlock) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX2> for AesBlockX4

Source§

fn from(value: AesBlockX2) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX4> for [AesBlock; 4]

Source§

fn from(value: AesBlockX4) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX4> for [AesBlockX2; 2]

Source§

fn from(value: AesBlockX4) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX4> for [u8; 64]

Source§

fn from(value: AesBlockX4) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX4> for (AesBlock, AesBlock, AesBlock, AesBlock)

Source§

fn from(value: AesBlockX4) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX4> for (AesBlockX2, AesBlockX2)

Source§

fn from(value: AesBlockX4) -> Self

Converts to this type from the input type.
Source§

impl Not for AesBlockX4

Source§

type Output = AesBlockX4

The resulting type after applying the ! operator.
Source§

fn not(self) -> Self::Output

Performs the unary ! operation. Read more
Source§

impl PartialEq for AesBlockX4

Available on not (crate feature nightly and (x86 or x86-64) and target feature vaes and target feature avx512f).
Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<&[u8]> for AesBlockX4

Source§

type Error = usize

The type returned in the event of a conversion error.
Source§

fn try_from(value: &[u8]) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Copy for AesBlockX4

Source§

impl Eq for AesBlockX4

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.