pub struct W<F>(/* private fields */);
Expand description
Wraps scalar or field element
Field element and scalar, derived by ff, initially are not compatible with [elliptic-curve] crate and cannot be used together. This struct wraps scalar or field element, and implements required traits.
Implementations§
Source§impl<F: PrimeField> W<F>
impl<F: PrimeField> W<F>
Sourcepub fn to_be_bytes(&self) -> F::Repr
pub fn to_be_bytes(&self) -> F::Repr
Converts integer to byte array in big-endian
Sourcepub fn to_le_bytes(&self) -> F::Repr
pub fn to_le_bytes(&self) -> F::Repr
Converts integer to byte array in little-endian
Sourcepub fn from_be_bytes(bytes: F::Repr) -> CtOption<Self>
pub fn from_be_bytes(bytes: F::Repr) -> CtOption<Self>
Constructs integer from its bytes representation in big-endian
Returns None
if it overflows maximum allowed value
Sourcepub fn from_le_bytes(bytes: F::Repr) -> CtOption<Self>
pub fn from_le_bytes(bytes: F::Repr) -> CtOption<Self>
Constructs integer from its bytes representation in little-endian
Returns None
if it overflows maximum allowed value
Sourcepub fn from_be_bytes_mod_order(bytes: &[u8]) -> Self
pub fn from_be_bytes_mod_order(bytes: &[u8]) -> Self
Constructs integer from bytes in big-endian
Integer is reduced modulo max allowed value ($p$ if it’s field element, $n$ if it’s a scalar)
Sourcepub fn from_le_bytes_mod_order(bytes: &[u8]) -> Self
pub fn from_le_bytes_mod_order(bytes: &[u8]) -> Self
Constructs integer from bytes in little-endian
Integer is reduced modulo max allowed value ($p$ if it’s field element, $n$ if it’s a scalar)
Sourcepub fn from_uint_mod_order(uint: &U256) -> Self
pub fn from_uint_mod_order(uint: &U256) -> Self
Constructs integer from U256
Integer is reduced modulo max allowed value ($p$ if it’s field element, $n$ if it’s a scalar)
Source§impl<F: PrimeField> W<F>
impl<F: PrimeField> W<F>
Source§impl W<FieldElementCore>
impl W<FieldElementCore>
Trait Implementations§
Source§impl<'r, F: AddAssign<&'r F>> AddAssign<&'r W<F>> for W<F>
impl<'r, F: AddAssign<&'r F>> AddAssign<&'r W<F>> for W<F>
Source§fn add_assign(&mut self, rhs: &'r W<F>)
fn add_assign(&mut self, rhs: &'r W<F>)
+=
operation. Read moreSource§impl<F: AddAssign> AddAssign for W<F>
impl<F: AddAssign> AddAssign for W<F>
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+=
operation. Read moreSource§impl<F: ConditionallySelectable> ConditionallySelectable for W<F>
impl<F: ConditionallySelectable> ConditionallySelectable for W<F>
Source§fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self
fn conditional_select(a: &Self, b: &Self, choice: Choice) -> Self
Source§fn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
Source§fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
fn conditional_swap(a: &mut Self, b: &mut Self, choice: Choice)
self
and other
if choice == 1
; otherwise,
reassign both unto themselves. Read moreSource§impl<F: ConstantTimeEq> ConstantTimeEq for W<F>
impl<F: ConstantTimeEq> ConstantTimeEq for W<F>
Source§impl<F: Field> Field for W<F>
impl<F: Field> Field for W<F>
Source§fn random(rng: impl RngCore) -> Self
fn random(rng: impl RngCore) -> Self
Source§fn invert(&self) -> CtOption<Self>
fn invert(&self) -> CtOption<Self>
Source§fn sqrt(&self) -> CtOption<Self>
fn sqrt(&self) -> CtOption<Self>
Source§fn sqrt_ratio(num: &Self, div: &Self) -> (Choice, Self)
fn sqrt_ratio(num: &Self, div: &Self) -> (Choice, Self)
Source§fn is_zero_vartime(&self) -> bool
fn is_zero_vartime(&self) -> bool
Source§impl From<&W<ScalarCore>> for ScalarPrimitive<StarkCurve>
impl From<&W<ScalarCore>> for ScalarPrimitive<StarkCurve>
Source§impl<F: PrimeField, C: Curve> From<ScalarPrimitive<C>> for W<F>
impl<F: PrimeField, C: Curve> From<ScalarPrimitive<C>> for W<F>
Source§fn from(s: ScalarPrimitive<C>) -> Self
fn from(s: ScalarPrimitive<C>) -> Self
Source§impl From<W<ScalarCore>> for ScalarPrimitive<StarkCurve>
impl From<W<ScalarCore>> for ScalarPrimitive<StarkCurve>
Source§impl<F: PrimeField> FromUintUnchecked for W<F>
impl<F: PrimeField> FromUintUnchecked for W<F>
Source§impl<'r, F: MulAssign<&'r F>> MulAssign<&'r W<F>> for W<F>
impl<'r, F: MulAssign<&'r F>> MulAssign<&'r W<F>> for W<F>
Source§fn mul_assign(&mut self, rhs: &'r W<F>)
fn mul_assign(&mut self, rhs: &'r W<F>)
*=
operation. Read moreSource§impl<F: MulAssign> MulAssign for W<F>
impl<F: MulAssign> MulAssign for W<F>
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*=
operation. Read moreSource§impl<F: Ord> Ord for W<F>
impl<F: Ord> Ord for W<F>
Source§impl<F: PartialOrd> PartialOrd for W<F>
impl<F: PartialOrd> PartialOrd for W<F>
Source§impl<F> PrimeField for W<F>
impl<F> PrimeField for W<F>
Source§const MODULUS: &'static str = F::MODULUS
const MODULUS: &'static str = F::MODULUS
Source§const NUM_BITS: u32 = F::NUM_BITS
const NUM_BITS: u32 = F::NUM_BITS
Source§const CAPACITY: u32 = F::CAPACITY
const CAPACITY: u32 = F::CAPACITY
Source§const MULTIPLICATIVE_GENERATOR: Self
const MULTIPLICATIVE_GENERATOR: Self
modulus - 1
order. This element must also be
a quadratic nonresidue. Read moreSource§const ROOT_OF_UNITY: Self
const ROOT_OF_UNITY: Self
2^s
root of unity. Read moreSource§const ROOT_OF_UNITY_INV: Self
const ROOT_OF_UNITY_INV: Self
Self::ROOT_OF_UNITY
.Source§type Repr = GenericArray<u8, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
type Repr = GenericArray<u8, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
Source§fn from_repr(repr: Self::Repr) -> CtOption<Self>
fn from_repr(repr: Self::Repr) -> CtOption<Self>
Source§fn to_repr(&self) -> Self::Repr
fn to_repr(&self) -> Self::Repr
Source§fn from_str_vartime(s: &str) -> Option<Self>
fn from_str_vartime(s: &str) -> Option<Self>
Source§impl<F> Reduce<Uint<crypto_bigint::::uint::U256::{constant#0}>> for W<F>
impl<F> Reduce<Uint<crypto_bigint::::uint::U256::{constant#0}>> for W<F>
Source§type Bytes = <W<F> as PrimeField>::Repr
type Bytes = <W<F> as PrimeField>::Repr
Reduce::reduce_bytes
.Source§fn reduce_bytes(bytes: &Self::Bytes) -> Self
fn reduce_bytes(bytes: &Self::Bytes) -> Self
Source§impl<F: ShlAssign<usize>> ShlAssign<usize> for W<F>
impl<F: ShlAssign<usize>> ShlAssign<usize> for W<F>
Source§fn shl_assign(&mut self, rhs: usize)
fn shl_assign(&mut self, rhs: usize)
<<=
operation. Read moreSource§impl<F> ShrAssign<usize> for W<F>
impl<F> ShrAssign<usize> for W<F>
Source§fn shr_assign(&mut self, rhs: usize)
fn shr_assign(&mut self, rhs: usize)
>>=
operation. Read moreSource§impl<'r, F: SubAssign<&'r F>> SubAssign<&'r W<F>> for W<F>
impl<'r, F: SubAssign<&'r F>> SubAssign<&'r W<F>> for W<F>
Source§fn sub_assign(&mut self, rhs: &'r W<F>)
fn sub_assign(&mut self, rhs: &'r W<F>)
-=
operation. Read moreSource§impl<F: SubAssign> SubAssign for W<F>
impl<F: SubAssign> SubAssign for W<F>
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-=
operation. Read more