Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Curve

Complete curve parameters for elliptic curves in Weierstrass form: y² = x³ + ax + b

Fields

  • p: Prime modulus of the base field Fp
  • n: Order of the curve (number of points in the prime-order subgroup)
  • a: Weierstrass a parameter
  • b: Weierstrass b parameter
  • g: Generator of the multiplicative group Fp* (for field operations)
  • min_one: (-1) mod p, precomputed for efficiency
  • min_one_order: (-1) mod n, precomputed for efficiency
  • G: Generator point of the curve’s prime-order subgroup
  • b_twist: Twist curve b parameter (b₀, b₁) where b = b₀ + i·b₁ in Fp2 (for pairing curves only)
  • modulus: Prime modulus p as 4 limbs of u96 for CircuitModulus operations
  • order_modulus: Curve order n as 4 limbs of u96 for CircuitModulus operations
  • eigenvalue: GLV endomorphism eigenvalue λ (for curves with efficient endomorphism)
  • nG_glv_fake_glv: Precomputed point 2^(nbits-1)·G for GLV decomposition
  • third_root_of_unity: Cubic root of unity in Fp (for curves supporting GLV/fake-GLV)

Fully qualified path: garaga::definitions::curves::Curve

pub struct Curve {
    pub p: u384,
    pub n: u256,
    pub a: u384,
    pub b: u384,
    pub g: u384,
    pub min_one: u384,
    pub min_one_order: u384,
    pub G: G1Point,
    pub b_twist: Option<(u384, u384)>,
    pub modulus: [BoundedInt<0, 79228162514264337593543950335>; 4],
    pub order_modulus: [BoundedInt<0, 79228162514264337593543950335>; 4],
    pub eigenvalue: Option<u384>,
    pub nG_glv_fake_glv: Option<G1Point>,
    pub third_root_of_unity: Option<u384>,
}

Members

p

Fully qualified path: garaga::definitions::curves::Curve::p

pub p: u384

n

Fully qualified path: garaga::definitions::curves::Curve::n

pub n: u256

a

Fully qualified path: garaga::definitions::curves::Curve::a

pub a: u384

b

Fully qualified path: garaga::definitions::curves::Curve::b

pub b: u384

g

Fully qualified path: garaga::definitions::curves::Curve::g

pub g: u384

min_one

Fully qualified path: garaga::definitions::curves::Curve::min_one

pub min_one: u384

min_one_order

Fully qualified path: garaga::definitions::curves::Curve::min_one_order

pub min_one_order: u384

G

Fully qualified path: garaga::definitions::curves::Curve::G

pub G: G1Point

b_twist

Fully qualified path: garaga::definitions::curves::Curve::b_twist

pub b_twist: Option<(u384, u384)>

modulus

Fully qualified path: garaga::definitions::curves::Curve::modulus

pub modulus: [BoundedInt<0, 79228162514264337593543950335>; 4]

order_modulus

Fully qualified path: garaga::definitions::curves::Curve::order_modulus

pub order_modulus: [BoundedInt<0, 79228162514264337593543950335>; 4]

eigenvalue

Fully qualified path: garaga::definitions::curves::Curve::eigenvalue

pub eigenvalue: Option<u384>

nG_glv_fake_glv

Fully qualified path: garaga::definitions::curves::Curve::nG_glv_fake_glv

pub nG_glv_fake_glv: Option<G1Point>

third_root_of_unity

Fully qualified path: garaga::definitions::curves::Curve::third_root_of_unity

pub third_root_of_unity: Option<u384>