arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/bls12_377/src/lib.rs
bls12_377/src/lib.rsRaw
 1#![cfg_attr(not(feature = "std"), no_std)]
 2#![deny(
 3    warnings,
 4    unused,
 5    future_incompatible,
 6    nonstandard_style,
 7    rust_2018_idioms
 8)]
 9#![forbid(unsafe_code)]
10
11//! This library implements the BLS12_377 curve generated in [[BCGMMW20, “Zexe”]](https://eprint.iacr.org/2018/962).
12//! The name denotes that it is a Barreto--Lynn--Scott curve of embedding degree 12,
13//! defined over a 377-bit (prime) field. The main feature of this curve is that
14//! both the scalar field and the base field are highly 2-adic.
15//! (This is in contrast to the BLS12_381 curve for which only the scalar field is highly 2-adic.)
16//!
17//!
18//! Curve information:
19//! * Base field: q = 258664426012969094010652733694893533536393512754914660539884262666720468348340822774968888139573360124440321458177
20//! * Scalar field: r = 8444461749428370424248824938781546531375899335154063827935233455917409239041
21//! * valuation(q - 1, 2) = 46
22//! * valuation(r - 1, 2) = 47
23//! * G1 curve equation: y^2 = x^3 + 1
24//! * G2 curve equation: y^2 = x^3 + B, where
25//!    * B = Fq2(0, 155198655607781456406391640216936120121836107652948796323930557600032281009004493664981332883744016074664192874906)
26
27#[cfg(feature = "curve")]
28mod curves;
29
30mod fields;
31
32#[cfg(feature = "curve")]
33pub use curves::*;
34
35pub use fields::*;