pairing_plus

Trait CurveProjective

Source
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§

Source

type Engine: Engine<Fr = Self::Scalar>

Source

type Scalar: PrimeField + SqrtField

Source

type Base: SqrtField

Source

type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar>

Required Methods§

Source

fn random<R: RngCore>(rng: &mut R) -> Self

Generate a random curve point.

Source

fn zero() -> Self

Returns the additive identity.

Source

fn one() -> Self

Returns a fixed generator of unknown exponent.

Source

fn is_zero(&self) -> bool

Determines if this point is the point at infinity.

Source

fn batch_normalization(v: &mut [Self])

Normalizes a slice of projective elements so that conversion to affine is cheap.

Source

fn is_normalized(&self) -> bool

Checks if the point is already “normalized” so that cheap affine conversion is possible.

Source

fn double(&mut self)

Doubles this element.

Source

fn add_assign(&mut self, other: &Self)

Adds another element to this element.

Source

fn add_assign_mixed(&mut self, other: &Self::Affine)

Adds an affine element to this element.

Source

fn negate(&mut self)

Negates this element.

Source

fn mul_assign<S: Into<<Self::Scalar as PrimeField>::Repr>>(&mut self, other: S)

Performs scalar multiplication of this element.

Source

fn into_affine(&self) -> Self::Affine

Converts this element into its affine representation.

Source

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.

Source

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.

Source

fn as_tuple(&self) -> (&Self::Base, &Self::Base, &Self::Base)

Borrow references to the X, Y, and Z coordinates of this point.

Source

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§

Source

fn sub_assign(&mut self, other: &Self)

Subtracts another element from this element.

Source

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.

Implementors§