pub trait CurveAffine:
PrimeCurveAffine<Scalar = Self::ScalarExt, Curve = Self::CurveExt>
+ Default
+ Add<Output = <Self as PrimeCurveAffine>::Curve>
+ Sub<Output = <Self as PrimeCurveAffine>::Curve>
+ ConditionallySelectable
+ ConstantTimeEq
+ From<<Self as PrimeCurveAffine>::Curve> {
type ScalarExt: WithSmallOrderMulGroup<3> + Ord;
type Base: WithSmallOrderMulGroup<3> + Ord;
type CurveExt: CurveExt<AffineExt = Self, ScalarExt = <Self as CurveAffine>::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§
Sourcetype ScalarExt: WithSmallOrderMulGroup<3> + Ord
type ScalarExt: WithSmallOrderMulGroup<3> + Ord
The scalar field of this elliptic curve.
Sourcetype Base: WithSmallOrderMulGroup<3> + Ord
type Base: WithSmallOrderMulGroup<3> + Ord
The base field over which this elliptic curve is constructed.
Sourcetype CurveExt: CurveExt<AffineExt = Self, ScalarExt = <Self as CurveAffine>::ScalarExt>
type CurveExt: CurveExt<AffineExt = Self, ScalarExt = <Self as CurveAffine>::ScalarExt>
The projective form of the curve
Required Methods§
Sourcefn coordinates(&self) -> CtOption<Coordinates<Self>>
fn coordinates(&self) -> CtOption<Coordinates<Self>>
Gets the coordinates of this point.
Returns None if this is the identity.
Sourcefn from_xy(x: Self::Base, y: Self::Base) -> CtOption<Self>
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.
Sourcefn is_on_curve(&self) -> Choice
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.
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.