Trait snarkvm_curves::traits::pairing_engine::AffineCurve[][src]

pub trait AffineCurve: Eq + Sized + ToBytes + FromBytes + CanonicalSerialize + ConstantSerializedSize + CanonicalDeserialize + Copy + Clone + Default + Send + Sync + Hash + Debug + Display + Neg<Output = Self> + Zero + 'static + From<Self::Projective> {
    type ScalarField: PrimeField + SquareRootField + Into<<Self::ScalarField as PrimeField>::BigInteger>;
    type BaseField: Field;
    type Projective: ProjectiveCurve<Affine = Self, ScalarField = Self::ScalarField> + From<Self> + Into<Self>;
Show methods fn prime_subgroup_generator() -> Self;
fn from_x_coordinate(x: Self::BaseField, greatest: bool) -> Option<Self>;
fn from_y_coordinate(y: Self::BaseField, greatest: bool) -> Option<Self>;
fn add(self, other: &Self) -> Self;
fn mul<S: Into<<Self::ScalarField as PrimeField>::BigInteger>>(
        &self,
        other: S
    ) -> Self::Projective;
fn mul_by_cofactor_to_projective(&self) -> Self::Projective;
fn into_projective(&self) -> Self::Projective;
fn from_random_bytes(bytes: &[u8]) -> Option<Self>;
fn mul_by_cofactor_inv(&self) -> Self;
fn is_in_correct_subgroup_assuming_on_curve(&self) -> bool;
fn to_x_coordinate(&self) -> Self::BaseField;
fn to_y_coordinate(&self) -> Self::BaseField;
fn is_on_curve(&self) -> bool; fn mul_by_cofactor(&self) -> Self { ... }
}
Expand description

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

Associated Types

Required methods

Returns a fixed generator of unknown exponent.

Attempts to construct an affine point given an x-coordinate. The point is not guaranteed to be in the prime order subgroup.

If and only if greatest is set will the lexicographically largest y-coordinate be selected.

Attempts to construct an affine point given a y-coordinate. The point is not guaranteed to be in the prime order subgroup.

If and only if greatest is set will the lexicographically largest y-coordinate be selected.

Performs the standard addition operation of this element with a given other element.

Performs scalar multiplication of this element with mixed addition.

Multiply this element by the cofactor and output the resulting projective element.

Converts this element into its projective representation.

Returns a group element if the set of bytes forms a valid group element, otherwise returns None. This function is primarily intended for sampling random group elements from a hash-function or RNG output.

Multiply this element by the inverse of the cofactor modulo the size of Self::ScalarField.

Checks that the point is in the prime order subgroup given the point on the curve.

Returns the x-coordinate of the point.

Returns the y-coordinate of the point.

Checks that the current point is on the elliptic curve.

Provided methods

Multiply this element by the cofactor.

Implementors