pub struct Fr(_);
Expand description
Represents an element of the scalar field $\mathbb{F}_q$ of the BLS12-381 elliptic curve construction.
The inner representation blst_fr
is stored in Montgomery form as little-endian u64
limbs.
Implementations
sourceimpl Scalar
impl Scalar
sourcepub fn from_bytes_le(bytes: &[u8; 32]) -> CtOption<Scalar>
pub fn from_bytes_le(bytes: &[u8; 32]) -> CtOption<Scalar>
Attempts to convert a little-endian byte representation of
a scalar into a Scalar
, failing if the input is not canonical.
sourcepub fn from_bytes_be(be_bytes: &[u8; 32]) -> CtOption<Scalar>
pub fn from_bytes_be(be_bytes: &[u8; 32]) -> CtOption<Scalar>
Attempts to convert a big-endian byte representation of
a scalar into a Scalar
, failing if the input is not canonical.
sourcepub fn to_bytes_le(&self) -> [u8; 32]
pub fn to_bytes_le(&self) -> [u8; 32]
Converts an element of Scalar
into a byte representation in
little-endian byte order.
sourcepub fn to_bytes_be(&self) -> [u8; 32]
pub fn to_bytes_be(&self) -> [u8; 32]
Converts an element of Scalar
into a byte representation in
big-endian byte order.
pub fn from_u64s_le(bytes: &[u64; 4]) -> CtOption<Scalar>
pub fn is_quad_res(&self) -> Choice
pub fn legendre(&self) -> i8
pub fn char() -> <Scalar as PrimeField>::Repr
pub fn num_bits(&self) -> u32
sourcepub fn square_assign(&mut self)
pub fn square_assign(&mut self)
Calculates the square
of this element.
Trait Implementations
sourceimpl AddAssign<&Scalar> for Scalar
impl AddAssign<&Scalar> for Scalar
sourcefn add_assign(&mut self, rhs: &Scalar)
fn add_assign(&mut self, rhs: &Scalar)
+=
operation. Read moresourceimpl AddAssign<Scalar> for Scalar
impl AddAssign<Scalar> for Scalar
sourcefn add_assign(&mut self, rhs: Scalar)
fn add_assign(&mut self, rhs: Scalar)
+=
operation. Read moresourceimpl ConditionallySelectable for Scalar
impl ConditionallySelectable for Scalar
sourcefn conditional_assign(&mut self, other: &Self, choice: Choice)
fn conditional_assign(&mut self, other: &Self, choice: Choice)
sourceimpl ConstantTimeEq for Scalar
impl ConstantTimeEq for Scalar
sourceimpl<'de> Deserialize<'de> for Scalar
impl<'de> Deserialize<'de> for Scalar
sourcefn deserialize<D>(d: D) -> Result<Scalar, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(d: D) -> Result<Scalar, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
sourceimpl Field for Scalar
impl Field for Scalar
sourcefn random(rng: impl RngCore) -> Scalar
fn random(rng: impl RngCore) -> Scalar
sourcefn invert(&self) -> CtOption<Scalar>
fn invert(&self) -> CtOption<Scalar>
sourcefn sqrt(&self) -> CtOption<Scalar>
fn sqrt(&self) -> CtOption<Scalar>
sourcefn is_zero_vartime(&self) -> bool
fn is_zero_vartime(&self) -> bool
sourcefn pow_vartime<S>(&self, exp: S) -> Selfwhere
S: AsRef<[u64]>,
fn pow_vartime<S>(&self, exp: S) -> Selfwhere
S: AsRef<[u64]>,
sourceimpl Into<blst_scalar> for Scalar
impl Into<blst_scalar> for Scalar
sourcefn into(self) -> blst_scalar
fn into(self) -> blst_scalar
sourceimpl Mul<&Scalar> for &G1Projective
impl Mul<&Scalar> for &G1Projective
type Output = G1Projective
type Output = G1Projective
*
operator.sourceimpl Mul<&Scalar> for &G2Projective
impl Mul<&Scalar> for &G2Projective
type Output = G2Projective
type Output = G2Projective
*
operator.sourceimpl Mul<&Scalar> for G1Affine
impl Mul<&Scalar> for G1Affine
type Output = G1Projective
type Output = G1Projective
*
operator.sourcefn mul(self, rhs: &Scalar) -> G1Projective
fn mul(self, rhs: &Scalar) -> G1Projective
*
operation. Read moresourceimpl Mul<&Scalar> for G1Projective
impl Mul<&Scalar> for G1Projective
type Output = G1Projective
type Output = G1Projective
*
operator.sourcefn mul(self, rhs: &Scalar) -> G1Projective
fn mul(self, rhs: &Scalar) -> G1Projective
*
operation. Read moresourceimpl Mul<&Scalar> for G2Affine
impl Mul<&Scalar> for G2Affine
type Output = G2Projective
type Output = G2Projective
*
operator.sourcefn mul(self, rhs: &Scalar) -> G2Projective
fn mul(self, rhs: &Scalar) -> G2Projective
*
operation. Read moresourceimpl Mul<&Scalar> for G2Projective
impl Mul<&Scalar> for G2Projective
type Output = G2Projective
type Output = G2Projective
*
operator.sourcefn mul(self, rhs: &Scalar) -> G2Projective
fn mul(self, rhs: &Scalar) -> G2Projective
*
operation. Read moresourceimpl Mul<Scalar> for &G1Affine
impl Mul<Scalar> for &G1Affine
type Output = G1Projective
type Output = G1Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G1Projective
fn mul(self, rhs: Scalar) -> G1Projective
*
operation. Read moresourceimpl Mul<Scalar> for &G1Projective
impl Mul<Scalar> for &G1Projective
type Output = G1Projective
type Output = G1Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G1Projective
fn mul(self, rhs: Scalar) -> G1Projective
*
operation. Read moresourceimpl Mul<Scalar> for &G2Affine
impl Mul<Scalar> for &G2Affine
type Output = G2Projective
type Output = G2Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G2Projective
fn mul(self, rhs: Scalar) -> G2Projective
*
operation. Read moresourceimpl Mul<Scalar> for &G2Projective
impl Mul<Scalar> for &G2Projective
type Output = G2Projective
type Output = G2Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G2Projective
fn mul(self, rhs: Scalar) -> G2Projective
*
operation. Read moresourceimpl Mul<Scalar> for G1Affine
impl Mul<Scalar> for G1Affine
type Output = G1Projective
type Output = G1Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G1Projective
fn mul(self, rhs: Scalar) -> G1Projective
*
operation. Read moresourceimpl Mul<Scalar> for G1Projective
impl Mul<Scalar> for G1Projective
type Output = G1Projective
type Output = G1Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G1Projective
fn mul(self, rhs: Scalar) -> G1Projective
*
operation. Read moresourceimpl Mul<Scalar> for G2Affine
impl Mul<Scalar> for G2Affine
type Output = G2Projective
type Output = G2Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G2Projective
fn mul(self, rhs: Scalar) -> G2Projective
*
operation. Read moresourceimpl Mul<Scalar> for G2Projective
impl Mul<Scalar> for G2Projective
type Output = G2Projective
type Output = G2Projective
*
operator.sourcefn mul(self, rhs: Scalar) -> G2Projective
fn mul(self, rhs: Scalar) -> G2Projective
*
operation. Read moresourceimpl MulAssign<&Scalar> for G1Affine
impl MulAssign<&Scalar> for G1Affine
sourcefn mul_assign(&mut self, rhs: &Scalar)
fn mul_assign(&mut self, rhs: &Scalar)
*=
operation. Read moresourceimpl MulAssign<&Scalar> for G1Projective
impl MulAssign<&Scalar> for G1Projective
sourcefn mul_assign(&mut self, rhs: &Scalar)
fn mul_assign(&mut self, rhs: &Scalar)
*=
operation. Read moresourceimpl MulAssign<&Scalar> for G2Affine
impl MulAssign<&Scalar> for G2Affine
sourcefn mul_assign(&mut self, rhs: &Scalar)
fn mul_assign(&mut self, rhs: &Scalar)
*=
operation. Read moresourceimpl MulAssign<&Scalar> for G2Projective
impl MulAssign<&Scalar> for G2Projective
sourcefn mul_assign(&mut self, rhs: &Scalar)
fn mul_assign(&mut self, rhs: &Scalar)
*=
operation. Read moresourceimpl MulAssign<&Scalar> for Scalar
impl MulAssign<&Scalar> for Scalar
sourcefn mul_assign(&mut self, rhs: &Scalar)
fn mul_assign(&mut self, rhs: &Scalar)
*=
operation. Read moresourceimpl MulAssign<Scalar> for G1Affine
impl MulAssign<Scalar> for G1Affine
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*=
operation. Read moresourceimpl MulAssign<Scalar> for G1Projective
impl MulAssign<Scalar> for G1Projective
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*=
operation. Read moresourceimpl MulAssign<Scalar> for G2Affine
impl MulAssign<Scalar> for G2Affine
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*=
operation. Read moresourceimpl MulAssign<Scalar> for G2Projective
impl MulAssign<Scalar> for G2Projective
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*=
operation. Read moresourceimpl MulAssign<Scalar> for Poly
impl MulAssign<Scalar> for Poly
sourcefn mul_assign(&mut self, rhs: Fr)
fn mul_assign(&mut self, rhs: Fr)
*=
operation. Read moresourceimpl MulAssign<Scalar> for Scalar
impl MulAssign<Scalar> for Scalar
sourcefn mul_assign(&mut self, rhs: Scalar)
fn mul_assign(&mut self, rhs: Scalar)
*=
operation. Read moresourceimpl Ord for Scalar
impl Ord for Scalar
1.21.0 · sourcefn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 · sourcefn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
1.50.0 · sourcefn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,
sourceimpl PartialEq<Scalar> for SecretKey
impl PartialEq<Scalar> for SecretKey
Utility to compare between blsttc and blst types
sourceimpl PartialOrd<Scalar> for Scalar
impl PartialOrd<Scalar> for Scalar
sourcefn partial_cmp(&self, other: &Scalar) -> Option<Ordering>
fn partial_cmp(&self, other: &Scalar) -> Option<Ordering>
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresourceimpl PrimeField for Scalar
impl PrimeField for Scalar
sourcefn from_repr(repr: <Scalar as PrimeField>::Repr) -> CtOption<Scalar>
fn from_repr(repr: <Scalar as PrimeField>::Repr) -> CtOption<Scalar>
Converts a little-endian non-Montgomery form repr
into a Montgomery form Scalar
.
sourcefn to_repr(&self) -> <Scalar as PrimeField>::Repr
fn to_repr(&self) -> <Scalar as PrimeField>::Repr
Converts a Montgomery form Scalar
into little-endian non-Montgomery from.
type Repr = [u8; 32]
type Repr = [u8; 32]
sourceconst CAPACITY: u32 = 254u32
const CAPACITY: u32 = 254u32
sourcefn from_repr_vartime(repr: <Scalar as PrimeField>::Repr) -> Option<Scalar>
fn from_repr_vartime(repr: <Scalar as PrimeField>::Repr) -> Option<Scalar>
sourcefn multiplicative_generator() -> Scalar
fn multiplicative_generator() -> Scalar
modulus - 1
order. This element must
also be a quadratic nonresidue. Read moresourcefn root_of_unity() -> Scalar
fn root_of_unity() -> Scalar
2^s
root of unity. Read moresourcefn from_str_vartime(s: &str) -> Option<Self>
fn from_str_vartime(s: &str) -> Option<Self>
sourceimpl PrimeFieldBits for Scalar
impl PrimeFieldBits for Scalar
sourcefn to_le_bits(&self) -> BitArray<<Scalar as PrimeFieldBits>::ReprBits, Lsb0>
fn to_le_bits(&self) -> BitArray<<Scalar as PrimeFieldBits>::ReprBits, Lsb0>
sourcefn char_le_bits() -> BitArray<<Scalar as PrimeFieldBits>::ReprBits, Lsb0>
fn char_le_bits() -> BitArray<<Scalar as PrimeFieldBits>::ReprBits, Lsb0>
sourceimpl Serialize for Scalar
impl Serialize for Scalar
sourcefn serialize<S>(
&self,
s: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
s: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
sourceimpl SubAssign<&Scalar> for Scalar
impl SubAssign<&Scalar> for Scalar
sourcefn sub_assign(&mut self, rhs: &Scalar)
fn sub_assign(&mut self, rhs: &Scalar)
-=
operation. Read moresourceimpl SubAssign<Scalar> for Scalar
impl SubAssign<Scalar> for Scalar
sourcefn sub_assign(&mut self, rhs: Scalar)
fn sub_assign(&mut self, rhs: Scalar)
-=
operation. Read moreimpl Copy for Scalar
impl Eq for Scalar
Auto Trait Implementations
impl RefUnwindSafe for Scalar
impl Send for Scalar
impl Sync for Scalar
impl Unpin for Scalar
impl UnwindSafe for Scalar
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> ConditionallyNegatable for Twhere
T: ConditionallySelectable,
&'a T: for<'a> Neg<Output = T>,
impl<T> ConditionallyNegatable for Twhere
T: ConditionallySelectable,
&'a T: for<'a> Neg<Output = T>,
sourcefn conditional_negate(&mut self, choice: Choice)
fn conditional_negate(&mut self, choice: Choice)
impl<T> FmtForward for T
impl<T> FmtForward for T
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read morefn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read morefn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
self
, then passes self.as_ref()
into the pipe function.fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
Self: Deref<Target = T>,
T: 'a + ?Sized,
R: 'a,
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere
Self: Deref<Target = T>,
T: 'a + ?Sized,
R: 'a,
self
, then passes self.deref()
into the pipe function.impl<T> Tap for T
impl<T> Tap for T
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Borrow<B>
of a value. Read morefn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
BorrowMut<B>
of a value. Read morefn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
AsRef<R>
view of a value. Read morefn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
AsMut<R>
view of a value. Read morefn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
Deref::Target
of a value. Read morefn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
Deref::Target
of a value. Read morefn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds. Read morefn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds. Read morefn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds. Read morefn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds. Read morefn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds. Read more