Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
mnt6_pp.hpp
Go to the documentation of this file.
1 
12 #ifndef MNT6_PP_HPP_
13 #define MNT6_PP_HPP_
14 
20 
21 namespace libff
22 {
23 
24 class mnt6_pp
25 {
26 public:
27  static const std::string name;
28 
29  typedef mnt6_Fr Fp_type;
30  typedef mnt6_G1 G1_type;
31  typedef mnt6_G2 G2_type;
36  typedef mnt6_Fq Fq_type;
37  typedef mnt6_Fq3 Fqe_type;
38  typedef mnt6_Fq6 Fqk_type;
39  typedef mnt6_GT GT_type;
40 
41  static const bool has_affine_pairing = true;
42 
43  static void init_public_params();
44  static mnt6_GT final_exponentiation(const mnt6_Fq6 &elt);
45  static mnt6_G1_precomp precompute_G1(const mnt6_G1 &P);
46  static mnt6_G2_precomp precompute_G2(const mnt6_G2 &Q);
47  static mnt6_Fq6 miller_loop(
48  const mnt6_G1_precomp &prec_P, const mnt6_G2_precomp &prec_Q);
50  const mnt6_G1 &P);
52  const mnt6_G2 &Q);
55  const mnt6_affine_ate_G2_precomputation &prec_Q);
57  const mnt6_affine_ate_G1_precomputation &prec_P1,
58  const mnt6_affine_ate_G2_precomputation &prec_Q1,
59  const mnt6_affine_ate_G1_precomputation &prec_P2,
60  const mnt6_affine_ate_G2_precomputation &prec_Q2);
62  const mnt6_affine_ate_G1_precomputation &prec_P1,
63  const mnt6_affine_ate_G2_precomputation &prec_Q1,
64  const mnt6_affine_ate_G1_precomputation &prec_P2,
65  const mnt6_affine_ate_G2_precomputation &prec_Q2,
66  const mnt6_affine_ate_G1_precomputation &prec_P3,
67  const mnt6_affine_ate_G2_precomputation &prec_Q3);
69  const mnt6_G1_precomp &prec_P1,
70  const mnt6_G2_precomp &prec_Q1,
71  const mnt6_G1_precomp &prec_P2,
72  const mnt6_G2_precomp &prec_Q2);
73 
74  /* the following are used in test files */
75  static mnt6_Fq6 pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
76  static mnt6_Fq6 reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
77  static mnt6_Fq6 affine_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
78 };
79 
80 } // namespace libff
81 
82 #endif // MNT6_PP_HPP_
libff::mnt6_pp::affine_reduced_pairing
static mnt6_Fq6 affine_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:106
libff::mnt6_pp::has_affine_pairing
static const bool has_affine_pairing
Definition: mnt6_pp.hpp:41
libff
Definition: ffi.cpp:8
libff::mnt6_pp::Fqe_type
mnt6_Fq3 Fqe_type
Definition: mnt6_pp.hpp:37
libff::mnt6_pp::Fqk_type
mnt6_Fq6 Fqk_type
Definition: mnt6_pp.hpp:38
libff::mnt6_pp::affine_ate_G1_precomp_type
mnt6_affine_ate_G1_precomputation affine_ate_G1_precomp_type
Definition: mnt6_pp.hpp:32
libff::mnt6_pp::precompute_G1
static mnt6_G1_precomp precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pp.cpp:28
libff::mnt6_ate_G2_precomp
Definition: mnt6_pairing.hpp:98
libff::mnt6_pp::init_public_params
static void init_public_params()
Definition: mnt6_pp.cpp:21
mnt6_pairing.hpp
libff::mnt6_pp::affine_ate_precompute_G2
static mnt6_affine_ate_G2_precomputation affine_ate_precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:50
libff::mnt6_ate_G1_precomp
Definition: mnt6_pairing.hpp:63
libff::mnt6_pp::G1_type
mnt6_G1 G1_type
Definition: mnt6_pp.hpp:30
libff::mnt6_pp::reduced_pairing
static mnt6_Fq6 reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:101
libff::mnt6_G2
Definition: mnt6_g2.hpp:26
libff::mnt6_affine_ate_G1_precomputation
Definition: mnt6_pairing.hpp:31
libff::mnt6_pp::G2_type
mnt6_G2 G2_type
Definition: mnt6_pp.hpp:31
libff::mnt6_pp::affine_ate_e_over_e_miller_loop
static mnt6_Fq6 affine_ate_e_over_e_miller_loop(const mnt6_affine_ate_G1_precomputation &prec_P1, const mnt6_affine_ate_G2_precomputation &prec_Q1, const mnt6_affine_ate_G1_precomputation &prec_P2, const mnt6_affine_ate_G2_precomputation &prec_Q2)
Definition: mnt6_pp.cpp:72
libff::mnt6_pp::name
static const std::string name
Definition: mnt6_pp.hpp:27
libff::mnt6_pp::G1_precomp_type
mnt6_G1_precomp G1_precomp_type
Definition: mnt6_pp.hpp:34
libff::mnt6_pp::affine_ate_precompute_G1
static mnt6_affine_ate_G1_precomputation affine_ate_precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pp.cpp:44
libff::mnt6_pp::affine_ate_G2_precomp_type
mnt6_affine_ate_G2_precomputation affine_ate_G2_precomp_type
Definition: mnt6_pp.hpp:33
mnt6_g2.hpp
public_params.hpp
libff::mnt6_pp::precompute_G2
static mnt6_G2_precomp precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:33
libff::Fp3_model< mnt6_q_limbs, mnt6_modulus_q >
libff::mnt6_G1
Definition: mnt6_g1.hpp:26
libff::mnt6_affine_ate_G2_precomputation
Definition: mnt6_pairing.hpp:46
libff::Fp_model
Definition: fp.hpp:20
libff::mnt6_pp::GT_type
mnt6_GT GT_type
Definition: mnt6_pp.hpp:39
mnt6_init.hpp
libff::mnt6_pp::affine_ate_miller_loop
static mnt6_Fq6 affine_ate_miller_loop(const mnt6_affine_ate_G1_precomputation &prec_P, const mnt6_affine_ate_G2_precomputation &prec_Q)
Definition: mnt6_pp.cpp:56
libff::mnt6_pp::double_miller_loop
static mnt6_Fq6 double_miller_loop(const mnt6_G1_precomp &prec_P1, const mnt6_G2_precomp &prec_Q1, const mnt6_G1_precomp &prec_P2, const mnt6_G2_precomp &prec_Q2)
Definition: mnt6_pp.cpp:63
libff::mnt6_pp::final_exponentiation
static mnt6_GT final_exponentiation(const mnt6_Fq6 &elt)
Definition: mnt6_pp.cpp:23
libff::mnt6_pp::miller_loop
static mnt6_Fq6 miller_loop(const mnt6_G1_precomp &prec_P, const mnt6_G2_precomp &prec_Q)
Definition: mnt6_pp.cpp:38
mnt6_g1.hpp
libff::mnt6_pp::G2_precomp_type
mnt6_G2_precomp G2_precomp_type
Definition: mnt6_pp.hpp:35
libff::mnt6_pp::Fq_type
mnt6_Fq Fq_type
Definition: mnt6_pp.hpp:36
libff::Fp6_2over3_model
Definition: fp6_2over3.hpp:26
libff::mnt6_pp::Fp_type
mnt6_Fr Fp_type
Definition: mnt6_pp.hpp:29
libff::mnt6_pp::pairing
static mnt6_Fq6 pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:96
libff::mnt6_pp
Definition: mnt6_pp.hpp:24
libff::mnt6_pp::affine_ate_e_times_e_over_e_miller_loop
static mnt6_Fq6 affine_ate_e_times_e_over_e_miller_loop(const mnt6_affine_ate_G1_precomputation &prec_P1, const mnt6_affine_ate_G2_precomputation &prec_Q1, const mnt6_affine_ate_G1_precomputation &prec_P2, const mnt6_affine_ate_G2_precomputation &prec_Q2, const mnt6_affine_ate_G1_precomputation &prec_P3, const mnt6_affine_ate_G2_precomputation &prec_Q3)
Definition: mnt6_pp.cpp:82