[][src]Trait groupy::CurveProjective

pub trait CurveProjective: PartialEq + Eq + Sized + Copy + Clone + Send + Sync + Debug + Display + 'static {
    type Engine: ScalarEngine<Fr = Self::Scalar>;
    type Scalar: PrimeField + SqrtField;
    type Base: SqrtField;
    type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar>;
    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; fn sub_assign(&mut self, other: &Self) { ... } }

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

Associated Types

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

type Scalar: PrimeField + SqrtField

type Base: SqrtField

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

Loading content...

Required methods

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

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

fn zero() -> Self

Returns the additive identity.

fn one() -> Self

Returns a fixed generator of unknown exponent.

fn is_zero(&self) -> bool

Determines if this point is the point at infinity.

fn batch_normalization<S: BorrowMut<Self>>(v: &mut [S])

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

fn is_normalized(&self) -> bool

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

fn double(&mut self)

Doubles this element.

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

Adds another element to this element.

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

Adds an affine element to this element.

fn negate(&mut self)

Negates this element.

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

Performs scalar multiplication of this element.

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

Converts this element into its affine representation.

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.

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.

fn hash(msg: &[u8]) -> Self

Loading content...

Provided methods

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

Subtracts another element from this element.

Loading content...

Implementors

Loading content...