#[repr(transparent)]pub struct Block8(pub u8);Expand description
GF(2^8) in the tower basis: bit i is the coefficient of x^i modulo x^8 + x^4 + x^3 + x + 1, as in AES (FIPS-197 §4.2). The flat basis has the same modulus, and φ(a) = a^32.
Tuple Fields§
§0: u8Implementations§
Trait Implementations§
Source§impl AddAssign for Block8
impl AddAssign for Block8
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
Performs the
+= operation. Read moreSource§impl CanonicalDeserialize for Block8
impl CanonicalDeserialize for Block8
Source§impl CanonicalSerialize for Block8
impl CanonicalSerialize for Block8
impl Copy for Block8
Source§impl<'de> Deserialize<'de> for Block8
impl<'de> Deserialize<'de> for Block8
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Block8
Source§impl FlatPromote<Block8> for Block128
Available on non-crate feature table-math only.
impl FlatPromote<Block8> for Block128
Available on non-crate feature
table-math only.Source§impl FlatPromote<Block8> for Block16
impl FlatPromote<Block8> for Block16
Source§impl FlatPromote<Block8> for Block256
impl FlatPromote<Block8> for Block256
Source§impl FlatPromote<Block8> for Block32
impl FlatPromote<Block8> for Block32
Source§impl FlatPromote<Block8> for Block64
impl FlatPromote<Block8> for Block64
Source§impl HardwareField for Block8
impl HardwareField for Block8
Source§fn to_hardware(self) -> Flat<Self>
fn to_hardware(self) -> Flat<Self>
Maps
self to the flat basis: φ(self).Source§fn from_hardware(value: Flat<Self>) -> Self
fn from_hardware(value: Flat<Self>) -> Self
Maps
value back to the tower basis: φ⁻¹(value).Source§fn add_hardware_packed(
lhs: PackedFlat<Self>,
rhs: PackedFlat<Self>,
) -> PackedFlat<Self>
fn add_hardware_packed( lhs: PackedFlat<Self>, rhs: PackedFlat<Self>, ) -> PackedFlat<Self>
Adds two packed flat vectors lane by lane (XOR).
Source§fn mul_hardware_packed(
lhs: PackedFlat<Self>,
rhs: PackedFlat<Self>,
) -> PackedFlat<Self>
fn mul_hardware_packed( lhs: PackedFlat<Self>, rhs: PackedFlat<Self>, ) -> PackedFlat<Self>
Multiplies two packed flat vectors lane by lane.
Source§fn mul_hardware_scalar_packed(
lhs: PackedFlat<Self>,
rhs: Flat<Self>,
) -> PackedFlat<Self>
fn mul_hardware_scalar_packed( lhs: PackedFlat<Self>, rhs: Flat<Self>, ) -> PackedFlat<Self>
Multiplies every lane of
lhs by the flat scalar rhs.Source§impl Mul<Block8> for PackedBlock8
impl Mul<Block8> for PackedBlock8
Source§impl MulAssign for Block8
impl MulAssign for Block8
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
Performs the
*= operation. Read moreSource§impl PackableField for Block8
impl PackableField for Block8
impl StructuralPartialEq for Block8
Source§impl SubAssign for Block8
impl SubAssign for Block8
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
Performs the
-= operation. Read moreSource§impl TowerField for Block8
impl TowerField for Block8
Source§const EXTENSION_TAU: Self
const EXTENSION_TAU: Self
τ of the next level, F[X] / (X^2 + X + τ), for Block8 up.
Tr(τ) = 1 makes X^2 + X + τ irreducible.
Source§fn invert(&self) -> Self
fn invert(&self) -> Self
Returns
self^-1, or 0 for 0. No branch on the value in the default build.Source§fn from_uniform_bytes(bytes: &[u8; 32]) -> Self
fn from_uniform_bytes(bytes: &[u8; 32]) -> Self
Builds the element from the first
BITS bits
of bytes, little-endian; ignores the rest.Auto Trait Implementations§
impl Freeze for Block8
impl RefUnwindSafe for Block8
impl Send for Block8
impl Sync for Block8
impl Unpin for Block8
impl UnsafeUnpin for Block8
impl UnwindSafe for Block8
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<F> FlatPromote<F> for Fwhere
F: HardwareField,
impl<F> FlatPromote<F> for Fwhere
F: HardwareField,
Source§fn promote_flat(val: Flat<F>) -> Flat<F>
fn promote_flat(val: Flat<F>) -> Flat<F>
Maps a flat
FromF element into the flat basis of Self.Source§fn promote_flat_batch(input: &[Flat<FromF>], output: &mut [Flat<Self>])
fn promote_flat_batch(input: &[Flat<FromF>], output: &mut [Flat<Self>])
Promotes
input[i] into output[i] for every i below
the shorter length; the rest of output is left as it is.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more