pub trait CurveArithmetic: Curve {
type AffinePoint: 'static + AffineCoordinates<FieldRepr = FieldBytes<Self>> + Copy + ConditionallySelectable + ConstantTimeEq + Debug + Default + DefaultIsZeroes + Eq + PartialEq + Sized + Send + Sync;
type ProjectivePoint: ConditionallySelectable + ConstantTimeEq + Default + DefaultIsZeroes + From<Self::AffinePoint> + Into<Self::AffinePoint> + LinearCombination + MulByGenerator + Curve<AffineRepr = Self::AffinePoint> + Group<Scalar = Self::Scalar>;
type Scalar: AsRef<Self::Scalar> + DefaultIsZeroes + From<ScalarPrimitive<Self>> + FromUintUnchecked<Uint = Self::Uint> + Into<FieldBytes<Self>> + Into<ScalarPrimitive<Self>> + Into<Self::Uint> + Invert<Output = CtOption<Self::Scalar>> + IsHigh + PartialOrd + Reduce<Self::Uint, Bytes = FieldBytes<Self>> + ShrAssign<usize> + Field + PrimeField<Repr = FieldBytes<Self>>;
}
Expand description
Elliptic curve with an arithmetic implementation.
Required Associated Types§
Sourcetype AffinePoint: 'static + AffineCoordinates<FieldRepr = FieldBytes<Self>> + Copy + ConditionallySelectable + ConstantTimeEq + Debug + Default + DefaultIsZeroes + Eq + PartialEq + Sized + Send + Sync
type AffinePoint: 'static + AffineCoordinates<FieldRepr = FieldBytes<Self>> + Copy + ConditionallySelectable + ConstantTimeEq + Debug + Default + DefaultIsZeroes + Eq + PartialEq + Sized + Send + Sync
Elliptic curve point in affine coordinates.
Sourcetype ProjectivePoint: ConditionallySelectable + ConstantTimeEq + Default + DefaultIsZeroes + From<Self::AffinePoint> + Into<Self::AffinePoint> + LinearCombination + MulByGenerator + Curve<AffineRepr = Self::AffinePoint> + Group<Scalar = Self::Scalar>
type ProjectivePoint: ConditionallySelectable + ConstantTimeEq + Default + DefaultIsZeroes + From<Self::AffinePoint> + Into<Self::AffinePoint> + LinearCombination + MulByGenerator + Curve<AffineRepr = Self::AffinePoint> + Group<Scalar = Self::Scalar>
Sourcetype Scalar: AsRef<Self::Scalar> + DefaultIsZeroes + From<ScalarPrimitive<Self>> + FromUintUnchecked<Uint = Self::Uint> + Into<FieldBytes<Self>> + Into<ScalarPrimitive<Self>> + Into<Self::Uint> + Invert<Output = CtOption<Self::Scalar>> + IsHigh + PartialOrd + Reduce<Self::Uint, Bytes = FieldBytes<Self>> + ShrAssign<usize> + Field + PrimeField<Repr = FieldBytes<Self>>
type Scalar: AsRef<Self::Scalar> + DefaultIsZeroes + From<ScalarPrimitive<Self>> + FromUintUnchecked<Uint = Self::Uint> + Into<FieldBytes<Self>> + Into<ScalarPrimitive<Self>> + Into<Self::Uint> + Invert<Output = CtOption<Self::Scalar>> + IsHigh + PartialOrd + Reduce<Self::Uint, Bytes = FieldBytes<Self>> + ShrAssign<usize> + Field + PrimeField<Repr = FieldBytes<Self>>
Scalar field modulo this curve’s order.
Note: the following bounds are provided by ff::Field
:
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.