pub trait GLVParameters: Send + Sync + 'static + CurveConfig {
    type Curve: CurveGroup<Config = Self>;
Show 12 associated constants and 3 methods const COEFF_A1: Self::BaseField; const COEFF_A2: Self::BaseField; const COEFF_A3: Self::BaseField; const COEFF_B1: Self::BaseField; const COEFF_B2: Self::BaseField; const COEFF_B3: Self::BaseField; const COEFF_C1: Self::BaseField; const COEFF_C2: Self::BaseField; const COEFF_N11: Self::ScalarField; const COEFF_N12: Self::ScalarField; const COEFF_N21: Self::ScalarField; const COEFF_N22: Self::ScalarField; fn endomorphism(
        base: &<Self::Curve as CurveGroup>::Affine
    ) -> <Self::Curve as CurveGroup>::Affine; fn scalar_decomposition(
        k: &Self::ScalarField
    ) -> (Self::ScalarField, Self::ScalarField); fn glv_mul(
        base: &<Self::Curve as CurveGroup>::Affine,
        scalar: &Self::ScalarField
    ) -> Self::Curve;
}
Expand description

The GLV parameters for computing the endomorphism and scalar decomposition.

Required Associated Types

A representation of curve points that enables efficient arithmetic by avoiding inversions.

Required Associated Constants

Coefficient a_1 of f(y) = a_1 * (y + a_2) * (y + a_3).

Coefficient a_2 of f(y) = a_1 * (y + a_2) * (y + a_3).

Coefficient a_3 of f(y) = a_1 * (y + a_2) * (y + a_3).

Coefficient b_1 of g(y) = b_1 * (y + b_2) * (y + b_3).

Coefficient b_2 of g(y) = b_1 * (y + b_2) * (y + b_3).

Coefficient b_3 of g(y) = b_1 * (y + b_2) * (y + b_3).

Coefficient c_1 of h(y) = (y + c_1) * (y + c_2).

Coefficient c_2 of h(y) = (y + c_1) * (y + c_2).

The first element of the matrix for scalar decomposition.

The second element of the matrix for scalar decomposition.

The third element of the matrix for scalar decomposition.

The forth element of the matrix for the scalar decomposition.

Required Methods

Maps a point G to phi(G):= lambda G where psi is the endomorphism.

Decomposes a scalar s into k1, k2, s.t. s = k1 + lambda k2,

Performs GLV multiplication.

Implementors