Trait pairing_ce::GenericCurveProjective[][src]

pub trait GenericCurveProjective: PartialEq + Eq + Sized + Copy + Clone + Send + Sync + Debug + Display + Rand + 'static {
    type Scalar: PrimeField;
    type Base: SqrtField;
    type Affine: GenericCurveAffine<Projective = Self, Scalar = Self::Scalar>;
    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 sub_assign(&mut self, other: &Self) { ... }
fn as_xyz(&self) -> (&Self::Base, &Self::Base, &Self::Base) { ... }
fn into_xyz_unchecked(self) -> (Self::Base, Self::Base, Self::Base) { ... }
fn from_xyz_unchecked(
        _x: Self::Base,
        _y: Self::Base,
        _z: Self::Base
    ) -> Self { ... }
fn from_xyz_checked(
        _x: Self::Base,
        _y: Self::Base,
        _z: Self::Base
    ) -> Result<Self, GroupDecodingError> { ... } }

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

Associated Types

type Scalar: PrimeField[src]

type Base: SqrtField[src]

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

Loading content...

Required methods

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

Loading content...

Provided methods

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

Subtracts another element from this element.

fn as_xyz(&self) -> (&Self::Base, &Self::Base, &Self::Base)[src]

Returns references to underlying X, Y and Z coordinates. Users should check for infinity outside of this call

fn into_xyz_unchecked(self) -> (Self::Base, Self::Base, Self::Base)[src]

Returns underlying X, Y and Z coordinates. Users should check for infinity outside of this call

fn from_xyz_unchecked(_x: Self::Base, _y: Self::Base, _z: Self::Base) -> Self[src]

Creates a point from raw X, Y and Z coordinates. Point of infinity is encoded as (0,1,0) by default. On-curve check is NOT performed

fn from_xyz_checked(
    _x: Self::Base,
    _y: Self::Base,
    _z: Self::Base
) -> Result<Self, GroupDecodingError>
[src]

Creates a point from raw X, Y and Z coordinates. Point of infinity is encoded as (0,1,0) by default. On-curve check is performed

Loading content...

Implementors

impl<G: CurveProjective> GenericCurveProjective for G[src]

type Scalar = Self::Scalar

type Base = Self::Base

type Affine = Self::Affine

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(v: &mut [Self])[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 sub_assign(&mut self, other: &Self)[src]

Subtracts another element from 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 as_xyz(&self) -> (&Self::Base, &Self::Base, &Self::Base)[src]

Returns references to underlying X, Y and Z coordinates. Users should check for infinity outside of this call

fn into_xyz_unchecked(self) -> (Self::Base, Self::Base, Self::Base)[src]

Returns underlying X, Y and Z coordinates. Users should check for infinity outside of this call

fn from_xyz_unchecked(_x: Self::Base, _y: Self::Base, _z: Self::Base) -> Self[src]

Creates a point from raw X, Y and Z coordinates. Point of infinity is encoded as (0,1,0) by default. On-curve check is NOT performed

fn from_xyz_checked(
    _x: Self::Base,
    _y: Self::Base,
    _z: Self::Base
) -> Result<Self, GroupDecodingError>
[src]

Creates a point from raw X, Y and Z coordinates. Point of infinity is encoded as (0,1,0) by default. On-curve check is performed

Loading content...