Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
bls12_377_init.hpp
Go to the documentation of this file.
1 
8 // Reference:
9 // - [BCGMMW18]:
10 // Title: "ZEXE: Enabling Decentralized Private Computation"
11 // ePrint: https://eprint.iacr.org/2018/962.pdf
12 
13 #ifndef BLS12_377_INIT_HPP_
14 #define BLS12_377_INIT_HPP_
20 
21 namespace libff
22 {
23 
24 const mp_size_t bls12_377_r_bitcount = 253;
25 const mp_size_t bls12_377_q_bitcount = 377;
26 
27 const mp_size_t bls12_377_r_limbs =
28  (bls12_377_r_bitcount + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
29 const mp_size_t bls12_377_q_limbs =
30  (bls12_377_q_bitcount + GMP_NUMB_BITS - 1) / GMP_NUMB_BITS;
31 
32 // Declare the r modulus from bw6_761_modulus_r. We must instantiate the field
33 // model templates using references to the SAME bigint, otherwise Fr<bw6_761_pp>
34 // and Fq<bls12_377_pp> are different types (see the Fp_model type parameters).
36 
38 // Ideally, we would use a reference:
39 //
40 // bigint<bls12_377_q_limbs> &bls12_377_modulus_q = bw6_761_modulus_r;
41 //
42 // but bls12_377_modulus_q cannot then be used as a template parameter. We are
43 // forced to use a macro. Note that bw6_761_modulus_r is initialized by both
44 // bw6_761_init() and bls12_377_init() (whether references or macros are used).
45 #define bls12_377_modulus_q bw6_761_modulus_r
46 
54 
55 // Parameters for Barreto-Lynn-Scott curve E/Fq : y^2 = x^3 + b
58 // Parameters for twisted Barreto-Lynn-Scott curve E'/Fq2 : y^2 = x^3 + b/xi
65 
66 // Coefficient \beta in endomorphism (x, y) -> (\beta * x, y)
72 
73 // Coefficients for G2 untwist-frobenius-twist
78 
79 // Coefficients used in bls12_377_G2::mul_by_cofactor
82 
83 // Parameters for pairing
86 // The embedding degree (k) = 12
90 
92 
93 class bls12_377_G1;
94 class bls12_377_G2;
95 
96 } // namespace libff
97 #endif // BLS12_377_INIT_HPP_
libff::bls12_377_r_bitcount
const mp_size_t bls12_377_r_bitcount
Definition: bls12_377_init.hpp:24
libff::Fp6_3over2_model
Definition: fp6_3over2.hpp:19
libff::bls12_377_g2_untwist_frobenius_twist_v_inverse
bls12_377_Fq12 bls12_377_g2_untwist_frobenius_twist_v_inverse
Definition: bls12_377_init.cpp:36
libff::bls12_377_g2_untwist_frobenius_twist_v
bls12_377_Fq12 bls12_377_g2_untwist_frobenius_twist_v
Definition: bls12_377_init.cpp:34
libff::bw6_761_modulus_r
bigint< bls12_377_q_limbs > bw6_761_modulus_r
Definition: bw6_761_init.cpp:14
libff::bls12_377_G2
Definition: bls12_377_g2.hpp:21
libff::bls12_377_final_exponent_is_z_neg
bool bls12_377_final_exponent_is_z_neg
Definition: bls12_377_init.cpp:48
libff
Definition: ffi.cpp:8
libff::bls12_377_modulus_r
bigint< bls12_377_r_limbs > bls12_377_modulus_r
Definition: bls12_377_init.cpp:11
libff::bls12_377_ate_loop_count
bigint< bls12_377_q_limbs > bls12_377_ate_loop_count
Definition: bls12_377_init.cpp:43
libff::bls12_377_final_exponent_z
bigint< bls12_377_q_limbs > bls12_377_final_exponent_z
Definition: bls12_377_init.cpp:47
fp.hpp
libff::bls12_377_Fr
Fp_model< bls12_377_r_limbs, bls12_377_modulus_r > bls12_377_Fr
Definition: bls12_377_init.hpp:47
libff::bls12_377_final_exponent
bigint< 12 *bls12_377_q_limbs > bls12_377_final_exponent
Definition: bls12_377_init.cpp:46
libff::bls12_377_Fq12
Fp12_2over3over2_model< bls12_377_q_limbs, bls12_377_modulus_q > bls12_377_Fq12
Definition: bls12_377_init.hpp:52
libff::bls12_377_coeff_b
bls12_377_Fq bls12_377_coeff_b
Definition: bls12_377_init.cpp:16
libff::bls12_377_Fq
Fp_model< bls12_377_q_limbs, bls12_377_modulus_q > bls12_377_Fq
Definition: bls12_377_init.hpp:48
libff::bls12_377_twist_coeff_b
bls12_377_Fq2 bls12_377_twist_coeff_b
Definition: bls12_377_init.cpp:19
libff::bls12_377_g2_untwist_frobenius_twist_w_3
bls12_377_Fq12 bls12_377_g2_untwist_frobenius_twist_w_3
Definition: bls12_377_init.cpp:35
libff::bls12_377_twist_mul_by_q_X
bls12_377_Fq2 bls12_377_twist_mul_by_q_X
Definition: bls12_377_init.cpp:22
libff::bls12_377_G1
Definition: bls12_377_g1.hpp:21
libff::bls12_377_g1_safe_subgroup_check_c1
bigint< bls12_377_r_limbs > bls12_377_g1_safe_subgroup_check_c1
Definition: bls12_377_init.cpp:27
fp6_3over2.hpp
libff::bls12_377_g1_proof_of_safe_subgroup_non_member_y
bls12_377_Fq bls12_377_g1_proof_of_safe_subgroup_non_member_y
Definition: bls12_377_init.cpp:30
libff::bls12_377_GT
bls12_377_Fq12 bls12_377_GT
Definition: bls12_377_init.hpp:53
libff::bls12_377_twist_mul_by_q_Y
bls12_377_Fq2 bls12_377_twist_mul_by_q_Y
Definition: bls12_377_init.cpp:23
libff::bls12_377_g1_proof_of_safe_subgroup_non_member_x
bls12_377_Fq bls12_377_g1_proof_of_safe_subgroup_non_member_x
Definition: bls12_377_init.cpp:29
libff::bls12_377_g2_mul_by_cofactor_h2_1
bigint< bls12_377_r_limbs > bls12_377_g2_mul_by_cofactor_h2_1
Definition: bls12_377_init.cpp:41
libff::bls12_377_Fq2
Fp2_model< bls12_377_q_limbs, bls12_377_modulus_q > bls12_377_Fq2
Definition: bls12_377_init.hpp:49
libff::bls12_377_Fq6
Fp6_3over2_model< bls12_377_q_limbs, bls12_377_modulus_q > bls12_377_Fq6
Definition: bls12_377_init.hpp:50
fp2.hpp
libff::bls12_377_g1_proof_of_safe_subgroup_w
bigint< bls12_377_r_limbs > bls12_377_g1_proof_of_safe_subgroup_w
Definition: bls12_377_init.cpp:28
libff::bls12_377_twist_mul_by_b_c1
bls12_377_Fq bls12_377_twist_mul_by_b_c1
Definition: bls12_377_init.cpp:21
fp12_2over3over2.hpp
libff::bigint
Definition: bigint.hpp:20
public_params.hpp
libff::Fp12_2over3over2_model
Definition: fp12_2over3over2.hpp:20
libff::bls12_377_r_limbs
const mp_size_t bls12_377_r_limbs
Definition: bls12_377_init.hpp:27
libff::bls12_377_trace_of_frobenius
bigint< bls12_377_r_limbs > bls12_377_trace_of_frobenius
Definition: bls12_377_init.cpp:17
libff::bls12_377_twist
bls12_377_Fq2 bls12_377_twist
Definition: bls12_377_init.cpp:18
libff::Fp_model
Definition: fp.hpp:20
libff::bls12_377_g2_untwist_frobenius_twist_w_3_inverse
bls12_377_Fq12 bls12_377_g2_untwist_frobenius_twist_w_3_inverse
Definition: bls12_377_init.cpp:37
libff::Fp2_model< bls12_377_q_limbs, bls12_377_modulus_q >
libff::bls12_377_ate_is_loop_count_neg
bool bls12_377_ate_is_loop_count_neg
Definition: bls12_377_init.cpp:44
libff::init_bls12_377_params
void init_bls12_377_params()
Definition: bls12_377_init.cpp:50
libff::bls12_377_q_limbs
const mp_size_t bls12_377_q_limbs
Definition: bls12_377_init.hpp:29
libff::bls12_377_g2_mul_by_cofactor_h2_0
bigint< bls12_377_r_limbs > bls12_377_g2_mul_by_cofactor_h2_0
Definition: bls12_377_init.cpp:40
libff::bls12_377_q_bitcount
const mp_size_t bls12_377_q_bitcount
Definition: bls12_377_init.hpp:25
libff::bls12_377_twist_mul_by_b_c0
bls12_377_Fq bls12_377_twist_mul_by_b_c0
Definition: bls12_377_init.cpp:20
libff::bls12_377_g1_endomorphism_beta
bls12_377_Fq bls12_377_g1_endomorphism_beta
Definition: bls12_377_init.cpp:26