Trait CurveProjective

Source
pub trait CurveProjective:
    PartialEq
    + Eq
    + Sized
    + Copy
    + Clone
    + Send
    + Sync
    + Debug
    + Display
    + 'static
    + Serialize
    + Deserialize<'static> {
    type Engine: ScalarEngine<Fr = Self::Scalar>;
    type Scalar: PrimeField + SqrtField;
    type Base: SqrtField;
    type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar>;

Show 16 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<S: BorrowMut<Self>>(v: &mut [S]); 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 hash(msg: &[u8]) -> Self; // Provided method fn sub_assign(&mut self, other: &Self) { ... }
}
Expand description

Projective representation of an elliptic curve point guaranteed to be in the correct prime order subgroup.

Required Associated Types§

Source

type Engine: ScalarEngine<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

Returns an element chosen uniformly at random using a user-provided RNG.

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<S: BorrowMut<Self>>(v: &mut [S])

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 hash(msg: &[u8]) -> Self

Provided Methods§

Source

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

Subtracts another 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§