darkfi_sdk::crypto::pasta_prelude

Trait PrimeCurveAffine

pub trait PrimeCurveAffine:
    Sized
    + GroupEncoding
    + Copy
    + Clone
    + Send
    + Sync
    + Debug
    + PartialEq
    + Eq
    + 'static
    + Neg<Output = Self>
    + Mul<Self::Scalar, Output = Self::Curve, Output = Self::Curve>
    + for<'r> Mul<&'r Self::Scalar> {
    type Scalar: PrimeField;
    type Curve: PrimeCurve<Affine = Self, Scalar = Self::Scalar>;

    // Required methods
    fn identity() -> Self;
    fn generator() -> Self;
    fn is_identity(&self) -> Choice;
    fn to_curve(&self) -> Self::Curve;
}
Expand description

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

Required Associated Types§

type Scalar: PrimeField

type Curve: PrimeCurve<Affine = Self, Scalar = Self::Scalar>

Required Methods§

fn identity() -> Self

Returns the additive identity.

fn generator() -> Self

Returns a fixed generator of unknown exponent.

fn is_identity(&self) -> Choice

Determines if this point represents the point at infinity; the additive identity.

fn to_curve(&self) -> Self::Curve

Converts this element to its curve representation.

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.

Implementations on Foreign Types§

§

impl PrimeCurveAffine for EpAffine

§

type Curve = Ep

§

type Scalar = Fq

§

fn generator() -> EpAffine

§

fn identity() -> EpAffine

§

fn is_identity(&self) -> Choice

§

fn to_curve(&self) -> <EpAffine as PrimeCurveAffine>::Curve

§

impl PrimeCurveAffine for EqAffine

§

type Curve = Eq

§

type Scalar = Fp

§

fn generator() -> EqAffine

§

fn identity() -> EqAffine

§

fn is_identity(&self) -> Choice

§

fn to_curve(&self) -> <EqAffine as PrimeCurveAffine>::Curve

Implementors§