pub struct WireMod3 { /* private fields */ }Expand description
Representation of a mod-3 wire.
We represent a mod-3 wire by 64 mod-3 elements. These elements are
stored as follows: the least-significant bits of each element are stored
in lsb and the most-significant bits of each element are stored in
msb. This representation allows for efficient addition and
multiplication as described here by the paper “Hardware Implementation
of Finite Fields of Characteristic Three.” D. Page, N.P. Smart. CHES
2002. Link:
https://link.springer.com/content/pdf/10.1007/3-540-36400-5_38.pdf.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for WireMod3
impl<'de> Deserialize<'de> for WireMod3
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
Source§impl WireLabel for WireMod3
impl WireLabel for WireMod3
Source§fn rand_delta<R: CryptoRng + Rng>(rng: &mut R, q: u16) -> Self
fn rand_delta<R: CryptoRng + Rng>(rng: &mut R, q: u16) -> Self
Get a random wire label mod
q, with the first digit set to 1Source§fn plus_eq<'a>(&'a mut self, other: &Self) -> &'a mut Self
fn plus_eq<'a>(&'a mut self, other: &Self) -> &'a mut Self
Add another wire digit-wise into this one. Assumes that both wires have
the same modulus.
Source§fn from_block(inp: Block, q: u16) -> Self
fn from_block(inp: Block, q: u16) -> Self
Pack the wire into a
Block.Source§fn hash_to_mod(hash: Block, q: u16) -> Self
fn hash_to_mod(hash: Block, q: u16) -> Self
Subroutine of hashback that converts the hash block into a valid wire of the given
modulus. Also useful when batching hashes ahead of time for later conversion.
Source§fn hashback(&self, tweak: Block, q: u16) -> Self
fn hashback(&self, tweak: Block, q: u16) -> Self
Compute the hash of this wire, converting the result back to a wire. Read more
Source§fn negate_mov(self) -> Self
fn negate_mov(self) -> Self
Negate all the digits
mod q, consuming it for chained computations.Source§fn cmul_mov(self, c: u16) -> Self
fn cmul_mov(self, c: u16) -> Self
Multiply each digit by a constant
c mod q, consuming it for chained computations.Source§fn cmul(&self, c: u16) -> Self
fn cmul(&self, c: u16) -> Self
Multiply each digit by a constant
c mod q, returning a new wire.Source§fn plus_mov(self, other: &Self) -> Self
fn plus_mov(self, other: &Self) -> Self
Add another wire into this one, consuming it for chained computations.
impl ArithmeticWire for WireMod3
impl Copy for WireMod3
impl StructuralPartialEq for WireMod3
Auto Trait Implementations§
impl Freeze for WireMod3
impl RefUnwindSafe for WireMod3
impl Send for WireMod3
impl Sync for WireMod3
impl Unpin for WireMod3
impl UnwindSafe for WireMod3
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,
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§impl<T> IsSameType<T> for T
impl<T> IsSameType<T> for T
§type EqualityProposition = TrueEqualityProposition
type EqualityProposition = TrueEqualityProposition
The [
EqualityProposition] that Self == T