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
// Required 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;
// Provided methods
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
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.