pub struct OptimizedMdsMatrices<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> {
pub M_hat: SquareMatrix<STATE_SIZE_MINUS_1, NUM_STATE_SIZE_MINUS_1_ELEMENTS>,
pub v: Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>,
pub w: Matrix<STATE_SIZE_MINUS_1, 1, STATE_SIZE_MINUS_1>,
pub M_prime: SquareMatrix<STATE_SIZE, NUM_MDS_ELEMENTS>,
pub M_doubleprime: SquareMatrix<STATE_SIZE, NUM_MDS_ELEMENTS>,
pub M_inverse: SquareMatrix<STATE_SIZE, NUM_MDS_ELEMENTS>,
pub M_hat_inverse: SquareMatrix<STATE_SIZE_MINUS_1, NUM_STATE_SIZE_MINUS_1_ELEMENTS>,
pub M_00: Fq,
pub M_i: Matrix<STATE_SIZE, STATE_SIZE, NUM_MDS_ELEMENTS>,
pub v_collection: [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_PARTIAL_ROUNDS],
pub w_hat_collection: [Matrix<STATE_SIZE_MINUS_1, 1, STATE_SIZE_MINUS_1>; N_PARTIAL_ROUNDS],
}Expand description
Represents an optimized MDS (maximum distance separable) matrix.
Fields§
§M_hat: SquareMatrix<STATE_SIZE_MINUS_1, NUM_STATE_SIZE_MINUS_1_ELEMENTS>A (t - 1) x (t - 1) MDS submatrix derived from the MDS matrix.
v: Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>A 1 x (t - 1) (row) vector derived from the MDS matrix.
w: Matrix<STATE_SIZE_MINUS_1, 1, STATE_SIZE_MINUS_1>A (t - 1) x 1 (column) vector derived from the MDS matrix.
M_prime: SquareMatrix<STATE_SIZE, NUM_MDS_ELEMENTS>A matrix formed from Mhat (an MDS submatrix of the MDS matrix).
M_doubleprime: SquareMatrix<STATE_SIZE, NUM_MDS_ELEMENTS>A sparse matrix formed from M,
M_inverse: SquareMatrix<STATE_SIZE, NUM_MDS_ELEMENTS>The inverse of the t x t MDS matrix (needed to compute round constants).
M_hat_inverse: SquareMatrix<STATE_SIZE_MINUS_1, NUM_STATE_SIZE_MINUS_1_ELEMENTS>The inverse of the (t - 1) x (t - 1) Mhat matrix.
M_00: FqElement at M00
M_i: Matrix<STATE_SIZE, STATE_SIZE, NUM_MDS_ELEMENTS>M_i
v_collection: [Matrix<1, STATE_SIZE_MINUS_1, STATE_SIZE_MINUS_1>; N_PARTIAL_ROUNDS]v_collection: one per partial round.
w_hat_collection: [Matrix<STATE_SIZE_MINUS_1, 1, STATE_SIZE_MINUS_1>; N_PARTIAL_ROUNDS]w_hat_collection: one per round
Trait Implementations§
Source§impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Clone for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Clone for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
Source§fn clone(
&self,
) -> OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
fn clone( &self, ) -> OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Debug for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Debug for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
Source§impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> PartialEq for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> PartialEq for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
Source§fn eq(
&self,
other: &OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>,
) -> bool
fn eq( &self, other: &OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>, ) -> bool
Tests for
self and other values to be equal, and is used by ==.impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Eq for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> StructuralPartialEq for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
Auto Trait Implementations§
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Freeze for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> RefUnwindSafe for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Send for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Sync for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> Unpin for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
impl<const N_ROUNDS: usize, const N_PARTIAL_ROUNDS: usize, const STATE_SIZE: usize, const STATE_SIZE_MINUS_1: usize, const NUM_MDS_ELEMENTS: usize, const NUM_STATE_SIZE_MINUS_1_ELEMENTS: usize> UnwindSafe for OptimizedMdsMatrices<N_ROUNDS, N_PARTIAL_ROUNDS, STATE_SIZE, STATE_SIZE_MINUS_1, NUM_MDS_ELEMENTS, NUM_STATE_SIZE_MINUS_1_ELEMENTS>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more