pub struct Config;
Trait Implementations§
Source§impl CurveConfig for Config
impl CurveConfig for Config
Source§const COFACTOR: &'static [u64] = _
const COFACTOR: &'static [u64] = _
COFACTOR = (x - 1)^2 / 3 = 76329603384216526031706109802092473003
Source§const COFACTOR_INV: Fr = _
const COFACTOR_INV: Fr = _
COFACTOR_INV = COFACTOR^{-1} mod r = 52435875175126190458656871551744051925719901746859129887267498875565241663483
Source§type ScalarField = Fp<MontBackend<FrConfig, 4>, 4>
type ScalarField = Fp<MontBackend<FrConfig, 4>, 4>
Finite prime field corresponding to an appropriate prime-order subgroup
of the curve group.
fn cofactor_is_one() -> bool
Source§impl GLVConfig for Config
impl GLVConfig for Config
Source§const ENDO_COEFFS: &'static [Self::BaseField] = _
const ENDO_COEFFS: &'static [Self::BaseField] = _
Constants that are used to calculate
phi(G) := lambda*G
.
The coefficients of the endomorphismSource§const LAMBDA: Self::ScalarField = _
const LAMBDA: Self::ScalarField = _
The eigenvalue corresponding to the endomorphism.
Source§const SCALAR_DECOMP_COEFFS: [(bool, <Self::ScalarField as PrimeField>::BigInt); 4] = _
const SCALAR_DECOMP_COEFFS: [(bool, <Self::ScalarField as PrimeField>::BigInt); 4] = _
A 4-element vector representing a 2x2 matrix of coefficients the for scalar decomposition, s.t. k-th entry in the vector is at col i, row j in the matrix, with ij = BE binary decomposition of k.
The entries are the LLL-reduced bases.
The determinant of this matrix must equal
ScalarField::characteristic()
.fn endomorphism(p: &G1Projective) -> G1Projective
fn endomorphism_affine(p: &Affine<Self>) -> Affine<Self>
Source§fn scalar_decomposition(
k: Self::ScalarField,
) -> ((bool, Self::ScalarField), (bool, Self::ScalarField))
fn scalar_decomposition( k: Self::ScalarField, ) -> ((bool, Self::ScalarField), (bool, Self::ScalarField))
Decomposes a scalar s into k1, k2, s.t. s = k1 + lambda k2,
fn glv_mul_projective( p: Projective<Self>, k: Self::ScalarField, ) -> Projective<Self>
fn glv_mul_affine(p: Affine<Self>, k: Self::ScalarField) -> Affine<Self>
Source§impl SWCurveConfig for Config
impl SWCurveConfig for Config
Source§fn mul_by_a(_: Self::BaseField) -> Self::BaseField
fn mul_by_a(_: Self::BaseField) -> Self::BaseField
Helper method for computing
elem * Self::COEFF_A
. Read moreSource§fn mul_projective(p: &G1Projective, scalar: &[u64]) -> G1Projective
fn mul_projective(p: &G1Projective, scalar: &[u64]) -> G1Projective
Default implementation of group multiplication for projective
coordinates
Source§fn is_in_correct_subgroup_assuming_on_curve(p: &G1Affine) -> bool
fn is_in_correct_subgroup_assuming_on_curve(p: &G1Affine) -> bool
Check if the provided curve point is in the prime-order subgroup. Read more
Source§fn clear_cofactor(p: &G1Affine) -> G1Affine
fn clear_cofactor(p: &G1Affine) -> G1Affine
Performs cofactor clearing.
The default method is simply to multiply by the cofactor.
Some curves can implement a more efficient algorithm.
Source§fn deserialize_with_mode<R: Read>(
reader: R,
compress: Compress,
validate: Validate,
) -> Result<Affine<Self>, SerializationError>
fn deserialize_with_mode<R: Read>( reader: R, compress: Compress, validate: Validate, ) -> Result<Affine<Self>, SerializationError>
If
validate
is Yes
, calls check()
to make sure the element is valid.Source§fn serialize_with_mode<W: Write>(
item: &Affine<Self>,
writer: W,
compress: Compress,
) -> Result<(), SerializationError>
fn serialize_with_mode<W: Write>( item: &Affine<Self>, writer: W, compress: Compress, ) -> Result<(), SerializationError>
If uncompressed, serializes both x and y coordinates as well as a bit for whether it is
infinity. If compressed, serializes x coordinate with two bits to encode whether y is
positive, negative, or infinity.
fn serialized_size(compress: Compress) -> usize
Source§fn add_b(elem: Self::BaseField) -> Self::BaseField
fn add_b(elem: Self::BaseField) -> Self::BaseField
Helper method for computing
elem + Self::COEFF_B
. Read moreSource§fn mul_affine(base: &Affine<Self>, scalar: &[u64]) -> Projective<Self>
fn mul_affine(base: &Affine<Self>, scalar: &[u64]) -> Projective<Self>
Default implementation of group multiplication for affine
coordinates.
Source§fn msm(
bases: &[Affine<Self>],
scalars: &[Self::ScalarField],
) -> Result<Projective<Self>, usize>
fn msm( bases: &[Affine<Self>], scalars: &[Self::ScalarField], ) -> Result<Projective<Self>, usize>
Default implementation for multi scalar multiplication
Source§impl WBConfig for Config
impl WBConfig for Config
const ISOGENY_MAP: IsogenyMap<'static, Self::IsogenousCurve, Self> = g1_swu_iso::ISOGENY_MAP_TO_G1
type IsogenousCurve = SwuIsoConfig
impl Eq for Config
impl StructuralPartialEq for Config
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more