Trait pairing_ce::CurveProjective
source · pub trait CurveProjective: PartialEq + Eq + Sized + Copy + Clone + Send + Sync + Debug + Display + Rand + 'static {
type Engine: Engine<Fr = Self::Scalar>;
type Scalar: PrimeField + SqrtField;
type Base: SqrtField;
type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar, Base = Self::Base>;
Show 18 methods
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> { ... }
}
Expand description
Projective representation of an elliptic curve point guaranteed to be in the correct prime order subgroup.
Required Associated Types§
type Engine: Engine<Fr = Self::Scalar>
type Scalar: PrimeField + SqrtField
type Base: SqrtField
type Affine: CurveAffine<Projective = Self, Scalar = Self::Scalar, Base = Self::Base>
Required Methods§
sourcefn batch_normalization(v: &mut [Self])
fn batch_normalization(v: &mut [Self])
Normalizes a slice of projective elements so that conversion to affine is cheap.
sourcefn is_normalized(&self) -> bool
fn is_normalized(&self) -> bool
Checks if the point is already “normalized” so that cheap affine conversion is possible.
sourcefn add_assign(&mut self, other: &Self)
fn add_assign(&mut self, other: &Self)
Adds another element to this element.
sourcefn add_assign_mixed(&mut self, other: &Self::Affine)
fn add_assign_mixed(&mut self, other: &Self::Affine)
Adds an affine element to this element.
sourcefn mul_assign<S: Into<<Self::Scalar as PrimeField>::Repr>>(&mut self, other: S)
fn mul_assign<S: Into<<Self::Scalar as PrimeField>::Repr>>(&mut self, other: S)
Performs scalar multiplication of this element.
sourcefn into_affine(&self) -> Self::Affine
fn into_affine(&self) -> Self::Affine
Converts this element into its affine representation.
sourcefn recommended_wnaf_for_scalar(
scalar: <Self::Scalar as PrimeField>::Repr
) -> usize
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.
sourcefn recommended_wnaf_for_num_scalars(num_scalars: usize) -> usize
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.
Provided Methods§
sourcefn sub_assign(&mut self, other: &Self)
fn sub_assign(&mut self, other: &Self)
Subtracts another element from this element.
sourcefn as_xyz(&self) -> (&Self::Base, &Self::Base, &Self::Base)
fn as_xyz(&self) -> (&Self::Base, &Self::Base, &Self::Base)
Returns references to underlying X, Y and Z coordinates. Users should check for infinity outside of this call
sourcefn into_xyz_unchecked(self) -> (Self::Base, Self::Base, Self::Base)
fn into_xyz_unchecked(self) -> (Self::Base, Self::Base, Self::Base)
Returns underlying X, Y and Z coordinates. Users should check for infinity outside of this call
sourcefn from_xyz_unchecked(_x: Self::Base, _y: Self::Base, _z: Self::Base) -> Self
fn from_xyz_unchecked(_x: Self::Base, _y: Self::Base, _z: Self::Base) -> Self
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
sourcefn from_xyz_checked(
_x: Self::Base,
_y: Self::Base,
_z: Self::Base
) -> Result<Self, GroupDecodingError>
fn from_xyz_checked(
_x: Self::Base,
_y: Self::Base,
_z: Self::Base
) -> Result<Self, GroupDecodingError>
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