darkfi_sdk::crypto::pasta_prelude

Trait CurveAffine

pub trait CurveAffine:
    PrimeCurveAffine<Scalar = Self::ScalarExt, Curve = Self::CurveExt>
    + Default
    + Add<Output = Self::Curve>
    + Sub<Output = Self::Curve>
    + ConditionallySelectable
    + ConstantTimeEq
    + From<Self::Curve> {
    type ScalarExt: WithSmallOrderMulGroup<3> + Ord;
    type Base: WithSmallOrderMulGroup<3> + Ord;
    type CurveExt: CurveExt<AffineExt = Self, ScalarExt = Self::ScalarExt>;

    // Required methods
    fn coordinates(&self) -> CtOption<Coordinates<Self>>;
    fn from_xy(x: Self::Base, y: Self::Base) -> CtOption<Self>;
    fn is_on_curve(&self) -> Choice;
    fn a() -> Self::Base;
    fn b() -> Self::Base;
}
Expand description

This trait is the affine counterpart to Curve and is used for serialization, storage in memory, and inspection of $x$ and $y$ coordinates.

Requires the alloc feature flag because of hash_to_curve on CurveExt.

Required Associated Types§

type ScalarExt: WithSmallOrderMulGroup<3> + Ord

The scalar field of this elliptic curve.

type Base: WithSmallOrderMulGroup<3> + Ord

The base field over which this elliptic curve is constructed.

type CurveExt: CurveExt<AffineExt = Self, ScalarExt = Self::ScalarExt>

The projective form of the curve

Required Methods§

fn coordinates(&self) -> CtOption<Coordinates<Self>>

Gets the coordinates of this point.

Returns None if this is the identity.

fn from_xy(x: Self::Base, y: Self::Base) -> CtOption<Self>

Obtains a point given $(x, y)$, failing if it is not on the curve.

fn is_on_curve(&self) -> Choice

Returns whether or not this element is on the curve; should always be true unless an “unchecked” API was used.

fn a() -> Self::Base

Returns the curve constant $a$.

fn b() -> Self::Base

Returns the curve constant $b$.

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.

Implementors§

§

impl CurveAffine for EpAffine

§

type ScalarExt = Fq

§

type Base = Fp

§

type CurveExt = Ep

§

impl CurveAffine for EqAffine

§

type ScalarExt = Fp

§

type Base = Fq

§

type CurveExt = Eq