Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
mnt4_pp.hpp
Go to the documentation of this file.
1 
12 #ifndef MNT4_PP_HPP_
13 #define MNT4_PP_HPP_
14 
20 
21 namespace libff
22 {
23 
24 class mnt4_pp
25 {
26 public:
27  static const std::string name;
28 
29  typedef mnt4_Fr Fp_type;
30  typedef mnt4_G1 G1_type;
31  typedef mnt4_G2 G2_type;
36  typedef mnt4_Fq Fq_type;
37  typedef mnt4_Fq2 Fqe_type;
38  typedef mnt4_Fq4 Fqk_type;
39  typedef mnt4_GT GT_type;
40 
41  static const bool has_affine_pairing = true;
42 
43  static void init_public_params();
44  static mnt4_GT final_exponentiation(const mnt4_Fq4 &elt);
45 
46  static mnt4_G1_precomp precompute_G1(const mnt4_G1 &P);
47  static mnt4_G2_precomp precompute_G2(const mnt4_G2 &Q);
48 
49  static mnt4_Fq4 miller_loop(
50  const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q);
51 
53  const mnt4_G1 &P);
55  const mnt4_G2 &Q);
58  const mnt4_affine_ate_G2_precomputation &prec_Q);
59 
61  const mnt4_affine_ate_G1_precomputation &prec_P1,
62  const mnt4_affine_ate_G2_precomputation &prec_Q1,
63  const mnt4_affine_ate_G1_precomputation &prec_P2,
64  const mnt4_affine_ate_G2_precomputation &prec_Q2);
66  const mnt4_affine_ate_G1_precomputation &prec_P1,
67  const mnt4_affine_ate_G2_precomputation &prec_Q1,
68  const mnt4_affine_ate_G1_precomputation &prec_P2,
69  const mnt4_affine_ate_G2_precomputation &prec_Q2,
70  const mnt4_affine_ate_G1_precomputation &prec_P3,
71  const mnt4_affine_ate_G2_precomputation &prec_Q3);
72 
74  const mnt4_G1_precomp &prec_P1,
75  const mnt4_G2_precomp &prec_Q1,
76  const mnt4_G1_precomp &prec_P2,
77  const mnt4_G2_precomp &prec_Q2);
78 
79  /* the following are used in test files */
80  static mnt4_Fq4 pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
81  static mnt4_Fq4 reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
82  static mnt4_Fq4 affine_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
83 };
84 
85 } // namespace libff
86 
87 #endif // MNT4_PP_HPP_
libff::mnt4_pp::precompute_G2
static mnt4_G2_precomp precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:33
libff::mnt4_ate_G2_precomp
Definition: mnt4_pairing.hpp:98
libff::mnt4_G2
Definition: mnt4_g2.hpp:26
libff::mnt4_ate_G1_precomp
Definition: mnt4_pairing.hpp:63
libff
Definition: ffi.cpp:8
libff::mnt4_pp::affine_ate_precompute_G2
static mnt4_affine_ate_G2_precomputation affine_ate_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:50
libff::mnt4_pp::name
static const std::string name
Definition: mnt4_pp.hpp:27
libff::mnt4_pp::affine_reduced_pairing
static mnt4_Fq4 affine_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:106
libff::mnt4_pp::double_miller_loop
static mnt4_Fq4 double_miller_loop(const mnt4_G1_precomp &prec_P1, const mnt4_G2_precomp &prec_Q1, const mnt4_G1_precomp &prec_P2, const mnt4_G2_precomp &prec_Q2)
Definition: mnt4_pp.cpp:87
libff::mnt4_pp::affine_ate_G2_precomp_type
mnt4_affine_ate_G2_precomputation affine_ate_G2_precomp_type
Definition: mnt4_pp.hpp:35
libff::mnt4_pp::Fqe_type
mnt4_Fq2 Fqe_type
Definition: mnt4_pp.hpp:37
libff::mnt4_pp::GT_type
mnt4_GT GT_type
Definition: mnt4_pp.hpp:39
libff::mnt4_G1
Definition: mnt4_g1.hpp:26
libff::mnt4_pp::Fp_type
mnt4_Fr Fp_type
Definition: mnt4_pp.hpp:29
libff::mnt4_pp::affine_ate_precompute_G1
static mnt4_affine_ate_G1_precomputation affine_ate_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pp.cpp:44
libff::mnt4_pp::affine_ate_e_over_e_miller_loop
static mnt4_Fq4 affine_ate_e_over_e_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P1, const mnt4_affine_ate_G2_precomputation &prec_Q1, const mnt4_affine_ate_G1_precomputation &prec_P2, const mnt4_affine_ate_G2_precomputation &prec_Q2)
Definition: mnt4_pp.cpp:63
libff::mnt4_pp::G2_precomp_type
mnt4_G2_precomp G2_precomp_type
Definition: mnt4_pp.hpp:33
libff::mnt4_pp::G1_type
mnt4_G1 G1_type
Definition: mnt4_pp.hpp:30
libff::mnt4_pp::affine_ate_e_times_e_over_e_miller_loop
static mnt4_Fq4 affine_ate_e_times_e_over_e_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P1, const mnt4_affine_ate_G2_precomputation &prec_Q1, const mnt4_affine_ate_G1_precomputation &prec_P2, const mnt4_affine_ate_G2_precomputation &prec_Q2, const mnt4_affine_ate_G1_precomputation &prec_P3, const mnt4_affine_ate_G2_precomputation &prec_Q3)
Definition: mnt4_pp.cpp:73
mnt4_pairing.hpp
libff::mnt4_pp::init_public_params
static void init_public_params()
Definition: mnt4_pp.cpp:21
libff::Fp4_model
Definition: fp4.hpp:26
public_params.hpp
libff::mnt4_pp
Definition: mnt4_pp.hpp:24
mnt4_init.hpp
libff::mnt4_pp::affine_ate_miller_loop
static mnt4_Fq4 affine_ate_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P, const mnt4_affine_ate_G2_precomputation &prec_Q)
Definition: mnt4_pp.cpp:56
libff::Fp_model
Definition: fp.hpp:20
libff::mnt4_pp::miller_loop
static mnt4_Fq4 miller_loop(const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q)
Definition: mnt4_pp.cpp:38
mnt4_g2.hpp
libff::mnt4_pp::has_affine_pairing
static const bool has_affine_pairing
Definition: mnt4_pp.hpp:41
libff::mnt4_affine_ate_G1_precomputation
Definition: mnt4_pairing.hpp:31
libff::mnt4_pp::G2_type
mnt4_G2 G2_type
Definition: mnt4_pp.hpp:31
libff::mnt4_pp::Fq_type
mnt4_Fq Fq_type
Definition: mnt4_pp.hpp:36
libff::mnt4_pp::reduced_pairing
static mnt4_Fq4 reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:101
libff::Fp2_model< mnt4_q_limbs, mnt4_modulus_q >
libff::mnt4_pp::G1_precomp_type
mnt4_G1_precomp G1_precomp_type
Definition: mnt4_pp.hpp:32
libff::mnt4_pp::pairing
static mnt4_Fq4 pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:96
libff::mnt4_pp::final_exponentiation
static mnt4_GT final_exponentiation(const mnt4_Fq4 &elt)
Definition: mnt4_pp.cpp:23
libff::mnt4_affine_ate_G2_precomputation
Definition: mnt4_pairing.hpp:46
libff::mnt4_pp::precompute_G1
static mnt4_G1_precomp precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pp.cpp:28
libff::mnt4_pp::affine_ate_G1_precomp_type
mnt4_affine_ate_G1_precomputation affine_ate_G1_precomp_type
Definition: mnt4_pp.hpp:34
mnt4_g1.hpp
libff::mnt4_pp::Fqk_type
mnt4_Fq4 Fqk_type
Definition: mnt4_pp.hpp:38