Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
mnt6_pairing.hpp
Go to the documentation of this file.
1 
12 #ifndef MNT6_PAIRING_HPP_
13 #define MNT6_PAIRING_HPP_
14 
16 #include <vector>
17 
18 namespace libff
19 {
20 
21 /* final exponentiation */
22 
24  const mnt6_Fq6 &elt, const mnt6_Fq6 &elt_inv);
26  const mnt6_Fq6 &elt, const mnt6_Fq6 &elt_inv);
28 
29 /* affine ate miller loop */
30 
35 };
36 
38  // TODO: trim (not all of them are needed)
44 };
45 
49  std::vector<mnt6_affine_ate_coeffs> coeffs;
50 };
51 
53  const mnt6_G1 &P);
55  const mnt6_G2 &Q);
56 
59  const mnt6_affine_ate_G2_precomputation &prec_Q);
60 
61 /* ate pairing */
62 
68 
69  bool operator==(const mnt6_ate_G1_precomp &other) const;
70  friend std::ostream &operator<<(
71  std::ostream &out, const mnt6_ate_G1_precomp &prec_P);
72  friend std::istream &operator>>(
73  std::istream &in, mnt6_ate_G1_precomp &prec_P);
74 };
75 
81 
82  bool operator==(const mnt6_ate_dbl_coeffs &other) const;
83  friend std::ostream &operator<<(
84  std::ostream &out, const mnt6_ate_dbl_coeffs &dc);
85  friend std::istream &operator>>(std::istream &in, mnt6_ate_dbl_coeffs &dc);
86 };
87 
91 
92  bool operator==(const mnt6_ate_add_coeffs &other) const;
93  friend std::ostream &operator<<(
94  std::ostream &out, const mnt6_ate_add_coeffs &dc);
95  friend std::istream &operator>>(std::istream &in, mnt6_ate_add_coeffs &dc);
96 };
97 
104  std::vector<mnt6_ate_dbl_coeffs> dbl_coeffs;
105  std::vector<mnt6_ate_add_coeffs> add_coeffs;
106 
107  bool operator==(const mnt6_ate_G2_precomp &other) const;
108  friend std::ostream &operator<<(
109  std::ostream &out, const mnt6_ate_G2_precomp &prec_Q);
110  friend std::istream &operator>>(
111  std::istream &in, mnt6_ate_G2_precomp &prec_Q);
112 };
113 
116 
118  const mnt6_ate_G1_precomp &prec_P, const mnt6_ate_G2_precomp &prec_Q);
120  const mnt6_ate_G1_precomp &prec_P1,
121  const mnt6_ate_G2_precomp &prec_Q1,
122  const mnt6_ate_G1_precomp &prec_P2,
123  const mnt6_ate_G2_precomp &prec_Q2);
124 
125 mnt6_Fq6 mnt6_ate_pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
126 mnt6_GT mnt6_ate_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
127 
128 /* choice of pairing */
129 
132 
134 
136 
138  const mnt6_G1_precomp &prec_P, const mnt6_G2_precomp &prec_Q);
139 
141  const mnt6_G1_precomp &prec_P1,
142  const mnt6_G2_precomp &prec_Q1,
143  const mnt6_G1_precomp &prec_P2,
144  const mnt6_G2_precomp &prec_Q2);
145 
146 mnt6_Fq6 mnt6_pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
147 
148 mnt6_GT mnt6_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q);
149 
151 
152 } // namespace libff
153 
154 #endif // MNT6_PAIRING_HPP_
libff::mnt6_ate_G2_precomp::QX_over_twist
mnt6_Fq3 QX_over_twist
Definition: mnt6_pairing.hpp:102
libff::mnt6_G2_precomp
mnt6_ate_G2_precomp mnt6_G2_precomp
Definition: mnt6_pairing.hpp:131
libff::mnt6_affine_ate_G1_precomputation::PY_twist_squared
mnt6_Fq3 PY_twist_squared
Definition: mnt6_pairing.hpp:34
libff::mnt6_affine_ate_G2_precomputation::QX
mnt6_Fq3 QX
Definition: mnt6_pairing.hpp:47
libff::mnt6_GT
mnt6_Fq6 mnt6_GT
Definition: mnt6_init.hpp:40
libff::mnt6_ate_G2_precomp::dbl_coeffs
std::vector< mnt6_ate_dbl_coeffs > dbl_coeffs
Definition: mnt6_pairing.hpp:104
libff::mnt6_ate_precompute_G2
mnt6_ate_G2_precomp mnt6_ate_precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:485
libff
Definition: ffi.cpp:8
libff::mnt6_ate_G2_precomp::QY2
mnt6_Fq3 QY2
Definition: mnt6_pairing.hpp:101
libff::mnt6_affine_ate_coeffs::gamma
mnt6_Fq3 gamma
Definition: mnt6_pairing.hpp:41
libff::mnt6_ate_G2_precomp::add_coeffs
std::vector< mnt6_ate_add_coeffs > add_coeffs
Definition: mnt6_pairing.hpp:105
libff::mnt6_ate_dbl_coeffs::c_H
mnt6_Fq3 c_H
Definition: mnt6_pairing.hpp:77
libff::mnt6_affine_ate_coeffs::gamma_X
mnt6_Fq3 gamma_X
Definition: mnt6_pairing.hpp:43
libff::mnt6_affine_ate_G2_precomputation::coeffs
std::vector< mnt6_affine_ate_coeffs > coeffs
Definition: mnt6_pairing.hpp:49
libff::mnt6_ate_miller_loop
mnt6_Fq6 mnt6_ate_miller_loop(const mnt6_ate_G1_precomp &prec_P, const mnt6_ate_G2_precomp &prec_Q)
Definition: mnt6_pairing.cpp:548
libff::mnt6_ate_G2_precomp::QX
mnt6_Fq3 QX
Definition: mnt6_pairing.hpp:99
libff::mnt6_ate_dbl_coeffs::c_L
mnt6_Fq3 c_L
Definition: mnt6_pairing.hpp:80
libff::mnt6_affine_reduced_pairing
mnt6_GT mnt6_affine_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:743
libff::mnt6_ate_G2_precomp::QY
mnt6_Fq3 QY
Definition: mnt6_pairing.hpp:100
libff::mnt6_ate_add_coeffs::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt6_ate_add_coeffs &dc)
Definition: mnt6_pairing.cpp:85
libff::mnt6_ate_G1_precomp::PY
mnt6_Fq PY
Definition: mnt6_pairing.hpp:65
libff::mnt6_ate_dbl_coeffs::operator==
bool operator==(const mnt6_ate_dbl_coeffs &other) const
Definition: mnt6_pairing.cpp:53
libff::mnt6_ate_G2_precomp::operator==
bool operator==(const mnt6_ate_G2_precomp &other) const
Definition: mnt6_pairing.cpp:100
libff::mnt6_ate_add_coeffs::c_RZ
mnt6_Fq3 c_RZ
Definition: mnt6_pairing.hpp:90
libff::mnt6_ate_G2_precomp
Definition: mnt6_pairing.hpp:98
libff::mnt6_ate_reduced_pairing
mnt6_GT mnt6_ate_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:699
libff::mnt6_affine_ate_G2_precomputation::QY
mnt6_Fq3 QY
Definition: mnt6_pairing.hpp:48
libff::mnt6_ate_add_coeffs::operator>>
friend std::istream & operator>>(std::istream &in, mnt6_ate_add_coeffs &dc)
Definition: mnt6_pairing.cpp:91
libff::mnt6_ate_G1_precomp::PY_twist
mnt6_Fq3 PY_twist
Definition: mnt6_pairing.hpp:67
libff::mnt6_affine_ate_precompute_G2
mnt6_affine_ate_G2_precomputation mnt6_affine_ate_precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:245
libff::mnt6_miller_loop
mnt6_Fq6 mnt6_miller_loop(const mnt6_G1_precomp &prec_P, const mnt6_G2_precomp &prec_Q)
Definition: mnt6_pairing.cpp:718
libff::mnt6_G1_precomp
mnt6_ate_G1_precomp mnt6_G1_precomp
Definition: mnt6_pairing.hpp:130
libff::mnt6_ate_pairing
mnt6_Fq6 mnt6_ate_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:689
libff::mnt6_reduced_pairing
mnt6_GT mnt6_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:738
libff::mnt6_ate_dbl_coeffs::c_4C
mnt6_Fq3 c_4C
Definition: mnt6_pairing.hpp:78
libff::mnt6_ate_G1_precomp
Definition: mnt6_pairing.hpp:63
libff::mnt6_final_exponentiation_last_chunk
mnt6_Fq6 mnt6_final_exponentiation_last_chunk(const mnt6_Fq6 &elt, const mnt6_Fq6 &elt_inv)
Definition: mnt6_pairing.cpp:173
libff::mnt6_ate_dbl_coeffs::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt6_ate_dbl_coeffs &dc)
Definition: mnt6_pairing.cpp:60
libff::mnt6_ate_dbl_coeffs
Definition: mnt6_pairing.hpp:76
libff::mnt6_affine_ate_coeffs::old_RY
mnt6_Fq3 old_RY
Definition: mnt6_pairing.hpp:40
libff::mnt6_ate_G1_precomp::operator==
bool operator==(const mnt6_ate_G1_precomp &other) const
Definition: mnt6_pairing.cpp:25
libff::mnt6_G2
Definition: mnt6_g2.hpp:26
libff::mnt6_affine_ate_G1_precomputation
Definition: mnt6_pairing.hpp:31
libff::mnt6_double_miller_loop
mnt6_Fq6 mnt6_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_pairing.cpp:724
libff::mnt6_precompute_G1
mnt6_G1_precomp mnt6_precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pairing.cpp:708
libff::mnt6_final_exponentiation_first_chunk
mnt6_Fq6 mnt6_final_exponentiation_first_chunk(const mnt6_Fq6 &elt, const mnt6_Fq6 &elt_inv)
Definition: mnt6_pairing.cpp:192
libff::mnt6_ate_dbl_coeffs::operator>>
friend std::istream & operator>>(std::istream &in, mnt6_ate_dbl_coeffs &dc)
Definition: mnt6_pairing.cpp:67
libff::mnt6_affine_ate_coeffs::old_RX
mnt6_Fq3 old_RX
Definition: mnt6_pairing.hpp:39
libff::mnt6_ate_G1_precomp::PX
mnt6_Fq PX
Definition: mnt6_pairing.hpp:64
libff::mnt6_ate_G1_precomp::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt6_ate_G1_precomp &prec_P)
Definition: mnt6_pairing.cpp:32
libff::mnt6_ate_double_miller_loop
mnt6_Fq6 mnt6_ate_double_miller_loop(const mnt6_ate_G1_precomp &prec_P1, const mnt6_ate_G2_precomp &prec_Q1, const mnt6_ate_G1_precomp &prec_P2, const mnt6_ate_G2_precomp &prec_Q2)
Definition: mnt6_pairing.cpp:605
libff::mnt6_affine_ate_coeffs
Definition: mnt6_pairing.hpp:37
libff::mnt6_Fq6
Fp6_2over3_model< mnt6_q_limbs, mnt6_modulus_q > mnt6_Fq6
Definition: mnt6_init.hpp:39
libff::mnt6_ate_G2_precomp::QY_over_twist
mnt6_Fq3 QY_over_twist
Definition: mnt6_pairing.hpp:103
libff::mnt6_ate_add_coeffs::operator==
bool operator==(const mnt6_ate_add_coeffs &other) const
Definition: mnt6_pairing.cpp:80
libff::mnt6_ate_dbl_coeffs::c_J
mnt6_Fq3 c_J
Definition: mnt6_pairing.hpp:79
libff::mnt6_G1
Definition: mnt6_g1.hpp:26
libff::Fp3_model< mnt6_q_limbs, mnt6_modulus_q >
libff::mnt6_affine_ate_G2_precomputation
Definition: mnt6_pairing.hpp:46
libff::mnt6_affine_ate_G1_precomputation::PX
mnt6_Fq PX
Definition: mnt6_pairing.hpp:32
libff::mnt6_precompute_G2
mnt6_G2_precomp mnt6_precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:713
libff::Fp_model< mnt6_q_limbs, mnt6_modulus_q >
libff::mnt6_affine_ate_miller_loop
mnt6_Fq6 mnt6_affine_ate_miller_loop(const mnt6_affine_ate_G1_precomputation &prec_P, const mnt6_affine_ate_G2_precomputation &prec_Q)
Definition: mnt6_pairing.cpp:323
libff::mnt6_ate_add_coeffs
Definition: mnt6_pairing.hpp:88
mnt6_init.hpp
libff::mnt6_pairing
mnt6_Fq6 mnt6_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:733
libff::mnt6_ate_G2_precomp::operator>>
friend std::istream & operator>>(std::istream &in, mnt6_ate_G2_precomp &prec_Q)
Definition: mnt6_pairing.cpp:127
libff::mnt6_affine_ate_coeffs::gamma_twist
mnt6_Fq3 gamma_twist
Definition: mnt6_pairing.hpp:42
libff::Fp6_2over3_model
Definition: fp6_2over3.hpp:26
libff::mnt6_ate_G2_precomp::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt6_ate_G2_precomp &prec_Q)
Definition: mnt6_pairing.cpp:110
libff::mnt6_ate_add_coeffs::c_L1
mnt6_Fq3 c_L1
Definition: mnt6_pairing.hpp:89
libff::mnt6_affine_ate_precompute_G1
mnt6_affine_ate_G1_precomputation mnt6_affine_ate_precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pairing.cpp:228
libff::mnt6_ate_G1_precomp::PX_twist
mnt6_Fq3 PX_twist
Definition: mnt6_pairing.hpp:66
libff::mnt6_final_exponentiation
mnt6_GT mnt6_final_exponentiation(const mnt6_Fq6 &elt)
Definition: mnt6_pairing.cpp:211
libff::mnt6_affine_ate_G1_precomputation::PY
mnt6_Fq PY
Definition: mnt6_pairing.hpp:33
libff::mnt6_ate_G1_precomp::operator>>
friend std::istream & operator>>(std::istream &in, mnt6_ate_G1_precomp &prec_P)
Definition: mnt6_pairing.cpp:40
libff::mnt6_ate_precompute_G1
mnt6_ate_G1_precomp mnt6_ate_precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pairing.cpp:468