pub trait AffineRepr:
Sized
+ Eq
+ 'static
+ CanonicalSerialize
+ CanonicalDeserialize
+ Copy
+ Clone
+ Default
+ UniformRand
+ Send
+ Sync
+ Hash
+ Debug
+ Display
+ Zeroize
+ Neg
+ From<Self::Group>
+ Into<Self::Group>
+ Add<Output = Self::Group, Output = Self::Group, Output = Self::Group, Output = Self::Group>
+ for<'a> Add<&'a Self>
+ Add<Self::Group>
+ for<'a> Add<&'a Self::Group>
+ Sub<Output = Self::Group, Output = Self::Group, Output = Self::Group, Output = Self::Group>
+ for<'a> Sub<&'a Self>
+ Sub<Self::Group>
+ for<'a> Sub<&'a Self::Group>
+ Mul<Self::ScalarField, Output = Self::Group, Output = Self::Group>
+ for<'a> Mul<&'a Self::ScalarField> {
type Config: CurveConfig<ScalarField = Self::ScalarField, BaseField = Self::BaseField>;
type ScalarField: PrimeField + Into<<Self::ScalarField as PrimeField>::BigInt>;
type BaseField: Field;
type Group: CurveGroup<Config = Self::Config, Affine = Self, ScalarField = Self::ScalarField, BaseField = Self::BaseField> + From<Self> + Into<Self> + MulAssign<Self::ScalarField>;
Show 13 methods
// Required methods
fn xy(&self) -> Option<(Self::BaseField, Self::BaseField)>;
fn zero() -> Self;
fn generator() -> Self;
fn from_random_bytes(bytes: &[u8]) -> Option<Self>;
fn mul_bigint(&self, by: impl AsRef<[u64]>) -> Self::Group;
fn clear_cofactor(&self) -> Self;
fn mul_by_cofactor_to_group(&self) -> Self::Group;
// Provided methods
fn x(&self) -> Option<Self::BaseField> { ... }
fn y(&self) -> Option<Self::BaseField> { ... }
fn is_zero(&self) -> bool { ... }
fn into_group(self) -> Self::Group { ... }
fn mul_by_cofactor(&self) -> Self { ... }
fn mul_by_cofactor_inv(&self) -> Self { ... }
}
Expand description
The canonical representation of an elliptic curve group element. This should represent the affine coordinates of the point corresponding to this group element.
The point is guaranteed to be in the correct prime order subgroup.
Required Associated Types§
type Config: CurveConfig<ScalarField = Self::ScalarField, BaseField = Self::BaseField>
type ScalarField: PrimeField + Into<<Self::ScalarField as PrimeField>::BigInt>
Sourcetype Group: CurveGroup<Config = Self::Config, Affine = Self, ScalarField = Self::ScalarField, BaseField = Self::BaseField> + From<Self> + Into<Self> + MulAssign<Self::ScalarField>
type Group: CurveGroup<Config = Self::Config, Affine = Self, ScalarField = Self::ScalarField, BaseField = Self::BaseField> + From<Self> + Into<Self> + MulAssign<Self::ScalarField>
The projective representation of points on this curve.
Required Methods§
Sourcefn xy(&self) -> Option<(Self::BaseField, Self::BaseField)>
fn xy(&self) -> Option<(Self::BaseField, Self::BaseField)>
Returns the x and y coordinates of this affine point.
Sourcefn from_random_bytes(bytes: &[u8]) -> Option<Self>
fn from_random_bytes(bytes: &[u8]) -> Option<Self>
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.
Sourcefn mul_bigint(&self, by: impl AsRef<[u64]>) -> Self::Group
fn mul_bigint(&self, by: impl AsRef<[u64]>) -> Self::Group
Performs scalar multiplication of this element with mixed addition.
Sourcefn clear_cofactor(&self) -> Self
fn clear_cofactor(&self) -> Self
Performs cofactor clearing. The default method is simply to multiply by the cofactor. For some curve families more efficient methods exist.
Sourcefn mul_by_cofactor_to_group(&self) -> Self::Group
fn mul_by_cofactor_to_group(&self) -> Self::Group
Multiplies this element by the cofactor and output the resulting projective element.
Provided Methods§
Sourcefn into_group(self) -> Self::Group
fn into_group(self) -> Self::Group
Converts self into the projective representation.
Sourcefn mul_by_cofactor(&self) -> Self
fn mul_by_cofactor(&self) -> Self
Multiplies this element by the cofactor.
Sourcefn mul_by_cofactor_inv(&self) -> Self
fn mul_by_cofactor_inv(&self) -> Self
Multiplies this element by the inverse of the cofactor in
Self::ScalarField
.
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.