pub trait ProjectiveCurve:
Sized
+ CanonicalSerialize
+ CanonicalDeserialize
+ Copy
+ Clone
+ Debug
+ Display
+ Default
+ FromBytes
+ Send
+ Sync
+ 'static
+ Eq
+ Hash
+ Neg<Output = Self>
+ Uniform
+ Zero
+ Add<Output = Self, Output = Self>
+ Sub<Output = Self, Output = Self>
+ Mul<Self::ScalarField, Output = Self>
+ AddAssign
+ SubAssign
+ MulAssign<Self::ScalarField>
+ for<'a> Add<&'a Self>
+ for<'a> Sub<&'a Self>
+ for<'a> AddAssign<&'a Self>
+ for<'a> SubAssign<&'a Self>
+ PartialEq<Self::Affine>
+ ToBytes
+ Sum
+ From<Self::Affine> {
type Affine: AffineCurve<Projective = Self, ScalarField = Self::ScalarField> + From<Self> + Into<Self>;
type BaseField: Field;
type ScalarField: PrimeField + SquareRootField + Into<<Self::ScalarField as PrimeField>::BigInteger>;
// Required methods
fn prime_subgroup_generator() -> Self;
fn batch_normalization(v: &mut [Self]);
fn is_normalized(&self) -> bool;
fn add_assign_mixed(&mut self, other: &Self::Affine);
fn double(&self) -> Self;
fn double_in_place(&mut self);
fn to_affine(&self) -> Self::Affine;
// Provided methods
fn batch_normalization_into_affine(v: Vec<Self>) -> Vec<Self::Affine> { ... }
fn add_mixed(&self, other: &Self::Affine) -> Self { ... }
fn sub_assign_mixed(&mut self, other: &Self::Affine) { ... }
}
Expand description
Projective representation of an elliptic curve point guaranteed to be in the prime order subgroup.
Required Associated Types§
type Affine: AffineCurve<Projective = Self, ScalarField = Self::ScalarField> + From<Self> + Into<Self>
type BaseField: Field
type ScalarField: PrimeField + SquareRootField + Into<<Self::ScalarField as PrimeField>::BigInteger>
Required Methods§
sourcefn prime_subgroup_generator() -> Self
fn prime_subgroup_generator() -> Self
Returns a fixed generator of unknown exponent.
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_mixed(&mut self, other: &Self::Affine)
fn add_assign_mixed(&mut self, other: &Self::Affine)
Adds an affine element to this element.
sourcefn double_in_place(&mut self)
fn double_in_place(&mut self)
Sets self := self + self
.
Provided Methods§
sourcefn batch_normalization_into_affine(v: Vec<Self>) -> Vec<Self::Affine>
fn batch_normalization_into_affine(v: Vec<Self>) -> Vec<Self::Affine>
Normalizes a slice of projective elements and outputs a vector containing the affine equivalents.
sourcefn sub_assign_mixed(&mut self, other: &Self::Affine)
fn sub_assign_mixed(&mut self, other: &Self::Affine)
Adds an affine element to this element.
Object Safety§
This trait is not object safe.