Trait groupy::CurveProjective[][src]

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

Associated Types

type Engine: ScalarEngine<Fr = Self::Scalar>[src]

type Scalar: PrimeField + SqrtField[src]

type Base: SqrtField[src]

type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar>[src]

Required methods

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

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

fn zero() -> Self[src]

Returns the additive identity.

fn one() -> Self[src]

Returns a fixed generator of unknown exponent.

fn is_zero(&self) -> bool[src]

Determines if this point is the point at infinity.

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

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

fn is_normalized(&self) -> bool[src]

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

fn double(&mut self)[src]

Doubles this element.

fn add_assign(&mut self, other: &Self)[src]

Adds another element to this element.

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

Adds an affine element to this element.

fn negate(&mut self)[src]

Negates this element.

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

Performs scalar multiplication of this element.

fn into_affine(&self) -> Self::Affine[src]

Converts this element into its affine representation.

fn recommended_wnaf_for_scalar(
    scalar: <Self::Scalar as PrimeField>::Repr
) -> usize
[src]

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[src]

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[src]

Provided methods

fn sub_assign(&mut self, other: &Self)[src]

Subtracts another element from this element.

Implementors