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".