AesBlockX2

Struct AesBlockX2 

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

Implementations§

Source§

impl AesBlockX2

Source

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

Source

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

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 AesBlockX2

Source

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

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: &[AesBlockX2]) -> AesBlockX2

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: &[AesBlockX2]) -> AesBlockX2

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: &[AesBlockX2]) -> AesBlockX2

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 AesBlockX2

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 AesBlockX2

Source§

type Output = AesBlockX2

The resulting type after applying the & operator.
Source§

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

Performs the & operation. Read more
Source§

impl BitAndAssign for AesBlockX2

Source§

fn bitand_assign(&mut self, rhs: Self)

Performs the &= operation. Read more
Source§

impl BitOr for AesBlockX2

Source§

type Output = AesBlockX2

The resulting type after applying the | operator.
Source§

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

Performs the | operation. Read more
Source§

impl BitOrAssign for AesBlockX2

Source§

fn bitor_assign(&mut self, rhs: Self)

Performs the |= operation. Read more
Source§

impl BitXor for AesBlockX2

Source§

type Output = AesBlockX2

The resulting type after applying the ^ operator.
Source§

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

Performs the ^ operation. Read more
Source§

impl BitXorAssign for AesBlockX2

Source§

fn bitxor_assign(&mut self, rhs: Self)

Performs the ^= operation. Read more
Source§

impl Clone for AesBlockX2

Source§

fn clone(&self) -> AesBlockX2

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 AesBlockX2

Source§

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

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

impl Default for AesBlockX2

Source§

fn default() -> Self

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

impl From<&[u8; 32]> for AesBlockX2

Source§

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

Converts to this type from the input type.
Source§

impl From<[AesBlock; 2]> for AesBlockX2

Source§

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

Converts to this type from the input type.
Source§

impl From<[u8; 32]> for AesBlockX2

Source§

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

The conversion of u8 array to AesBlock is done using

Source§

impl From<(AesBlock, AesBlock)> for AesBlockX2

Source§

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

Converts to this type from the input type.
Source§

impl From<AesBlock> for AesBlockX2

Source§

fn from(value: AesBlock) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX2> for [AesBlock; 2]

Source§

fn from(value: AesBlockX2) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX2> for [u8; 32]

Source§

fn from(value: AesBlockX2) -> Self

Converts to this type from the input type.
Source§

impl From<AesBlockX2> for (AesBlock, AesBlock)

Source§

fn from(value: AesBlockX2) -> 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 Not for AesBlockX2

Source§

type Output = AesBlockX2

The resulting type after applying the ! operator.
Source§

fn not(self) -> Self::Output

Performs the unary ! operation. Read more
Source§

impl PartialEq for AesBlockX2

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 AesBlockX2

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 AesBlockX2

Source§

impl Eq for AesBlockX2

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.