Trait elliptic_curve::Field
source · [−]pub trait Field: 'static + Eq + Copy + Clone + Default + Send + Sync + Debug + ConditionallySelectable + ConstantTimeEq + Add<Self, Output = Self, Output = Self> + Sub<Self, Output = Self, Output = Self> + Mul<Self, Output = Self, Output = Self> + Neg<Output = Self> + for<'a> Add<&'a Self> + for<'a> Mul<&'a Self> + for<'a> Sub<&'a Self> + MulAssign<Self> + AddAssign<Self> + SubAssign<Self> + for<'a> MulAssign<&'a Self> + for<'a> AddAssign<&'a Self> + for<'a> SubAssign<&'a Self> {
fn random(rng: impl RngCore) -> Self;
fn zero() -> Self;
fn one() -> Self;
fn square(&self) -> Self;
fn double(&self) -> Self;
fn invert(&self) -> CtOption<Self>;
fn sqrt(&self) -> CtOption<Self>;
fn is_zero(&self) -> Choice { ... }
fn is_zero_vartime(&self) -> bool { ... }
fn cube(&self) -> Self { ... }
fn pow_vartime<S>(&self, exp: S) -> Self
where
S: AsRef<[u64]>,
{ ... }
}
Expand description
This trait represents an element of a field.
Required Methods
Returns an element chosen uniformly at random using a user-provided RNG.
Computes the multiplicative inverse of this element, failing if the element is zero.
Provided Methods
fn is_zero_vartime(&self) -> bool
fn is_zero_vartime(&self) -> bool
Returns true iff this element is zero.
Security
This method provides no constant-time guarantees. Implementors of the
Field
trait may optimise this method using non-constant-time logic.
fn pow_vartime<S>(&self, exp: S) -> Self where
S: AsRef<[u64]>,
fn pow_vartime<S>(&self, exp: S) -> Self where
S: AsRef<[u64]>,
Exponentiates self
by exp
, where exp
is a little-endian order
integer exponent.
This operation is variable time with respect to the exponent. If the exponent is fixed, this operation is effectively constant time.