pub trait CurveProjective:
PartialEq
+ Eq
+ Sized
+ Copy
+ Clone
+ Send
+ Sync
+ Debug
+ Display
+ 'static {
type Engine: Engine<Fr = Self::Scalar>;
type Scalar: PrimeField + SqrtField;
type Base: SqrtField;
type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar>;
Show 18 methods
// Required methods
fn random<R: RngCore>(rng: &mut R) -> Self;
fn zero() -> Self;
fn one() -> Self;
fn is_zero(&self) -> bool;
fn batch_normalization(v: &mut [Self]);
fn is_normalized(&self) -> bool;
fn double(&mut self);
fn add_assign(&mut self, other: &Self);
fn add_assign_mixed(&mut self, other: &Self::Affine);
fn negate(&mut self);
fn mul_assign<S: Into<<Self::Scalar as PrimeField>::Repr>>(
&mut self,
other: S,
);
fn into_affine(&self) -> Self::Affine;
fn recommended_wnaf_for_scalar(
scalar: <Self::Scalar as PrimeField>::Repr,
) -> usize;
fn recommended_wnaf_for_num_scalars(num_scalars: usize) -> usize;
fn as_tuple(&self) -> (&Self::Base, &Self::Base, &Self::Base);
unsafe fn as_tuple_mut(
&mut self,
) -> (&mut Self::Base, &mut Self::Base, &mut Self::Base);
// Provided methods
fn sub_assign(&mut self, other: &Self) { ... }
fn sub_assign_mixed(&mut self, other: &Self::Affine) { ... }
}
Expand description
Projective representation of an elliptic curve point guaranteed to be in the correct prime order subgroup.
Required Associated Types§
type Engine: Engine<Fr = Self::Scalar>
type Scalar: PrimeField + SqrtField
type Base: SqrtField
type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar>
Required Methods§
Sourcefn batch_normalization(v: &mut [Self])
fn batch_normalization(v: &mut [Self])
Normalizes a slice of projective elements so that conversion to affine is cheap.
Sourcefn is_normalized(&self) -> bool
fn is_normalized(&self) -> bool
Checks if the point is already “normalized” so that cheap affine conversion is possible.
Sourcefn add_assign(&mut self, other: &Self)
fn add_assign(&mut self, other: &Self)
Adds another element to this element.
Sourcefn add_assign_mixed(&mut self, other: &Self::Affine)
fn add_assign_mixed(&mut self, other: &Self::Affine)
Adds an affine element to this element.
Sourcefn mul_assign<S: Into<<Self::Scalar as PrimeField>::Repr>>(&mut self, other: S)
fn mul_assign<S: Into<<Self::Scalar as PrimeField>::Repr>>(&mut self, other: S)
Performs scalar multiplication of this element.
Sourcefn into_affine(&self) -> Self::Affine
fn into_affine(&self) -> Self::Affine
Converts this element into its affine representation.
Sourcefn recommended_wnaf_for_scalar(
scalar: <Self::Scalar as PrimeField>::Repr,
) -> usize
fn recommended_wnaf_for_scalar( scalar: <Self::Scalar as PrimeField>::Repr, ) -> usize
Recommends a wNAF window table size given a scalar. Always returns a number between 2 and 22, inclusive.
Sourcefn recommended_wnaf_for_num_scalars(num_scalars: usize) -> usize
fn recommended_wnaf_for_num_scalars(num_scalars: usize) -> usize
Recommends a wNAF window size given the number of scalars you intend to multiply a base by. Always returns a number between 2 and 22, inclusive.
Sourcefn as_tuple(&self) -> (&Self::Base, &Self::Base, &Self::Base)
fn as_tuple(&self) -> (&Self::Base, &Self::Base, &Self::Base)
Borrow references to the X, Y, and Z coordinates of this point.
Sourceunsafe fn as_tuple_mut(
&mut self,
) -> (&mut Self::Base, &mut Self::Base, &mut Self::Base)
unsafe fn as_tuple_mut( &mut self, ) -> (&mut Self::Base, &mut Self::Base, &mut Self::Base)
Borrow mutable references to the X, Y, and Z coordinates of this point. Unsafe, because incorrectly modifying the coordinates violates the guarantee that the point must be on the curve and in the correct subgroup.
Provided Methods§
Sourcefn sub_assign(&mut self, other: &Self)
fn sub_assign(&mut self, other: &Self)
Subtracts another element from this element.
Sourcefn sub_assign_mixed(&mut self, other: &Self::Affine)
fn sub_assign_mixed(&mut self, other: &Self::Affine)
Subtracts an affine element from this element
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.