Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
mnt4_pairing.hpp
Go to the documentation of this file.
1 
12 #ifndef MNT4_PAIRING_HPP_
13 #define MNT4_PAIRING_HPP_
14 
16 #include <vector>
17 
18 namespace libff
19 {
20 
21 /* final exponentiation */
22 
24  const mnt4_Fq4 &elt, const mnt4_Fq4 &elt_inv);
26  const mnt4_Fq4 &elt, const mnt4_Fq4 &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<mnt4_affine_ate_coeffs> coeffs;
50 };
51 
53  const mnt4_G1 &P);
55  const mnt4_G2 &Q);
56 
59  const mnt4_affine_ate_G2_precomputation &prec_Q);
60 
61 /* ate pairing */
62 
68 
69  bool operator==(const mnt4_ate_G1_precomp &other) const;
70  friend std::ostream &operator<<(
71  std::ostream &out, const mnt4_ate_G1_precomp &prec_P);
72  friend std::istream &operator>>(
73  std::istream &in, mnt4_ate_G1_precomp &prec_P);
74 };
75 
81 
82  bool operator==(const mnt4_ate_dbl_coeffs &other) const;
83  friend std::ostream &operator<<(
84  std::ostream &out, const mnt4_ate_dbl_coeffs &dc);
85  friend std::istream &operator>>(std::istream &in, mnt4_ate_dbl_coeffs &dc);
86 };
87 
91 
92  bool operator==(const mnt4_ate_add_coeffs &other) const;
93  friend std::ostream &operator<<(
94  std::ostream &out, const mnt4_ate_add_coeffs &dc);
95  friend std::istream &operator>>(std::istream &in, mnt4_ate_add_coeffs &dc);
96 };
97 
104  std::vector<mnt4_ate_dbl_coeffs> dbl_coeffs;
105  std::vector<mnt4_ate_add_coeffs> add_coeffs;
106 
107  bool operator==(const mnt4_ate_G2_precomp &other) const;
108  friend std::ostream &operator<<(
109  std::ostream &out, const mnt4_ate_G2_precomp &prec_Q);
110  friend std::istream &operator>>(
111  std::istream &in, mnt4_ate_G2_precomp &prec_Q);
112 };
113 
116 
118  const mnt4_ate_G1_precomp &prec_P, const mnt4_ate_G2_precomp &prec_Q);
120  const mnt4_ate_G1_precomp &prec_P1,
121  const mnt4_ate_G2_precomp &prec_Q1,
122  const mnt4_ate_G1_precomp &prec_P2,
123  const mnt4_ate_G2_precomp &prec_Q2);
124 
125 mnt4_Fq4 mnt4_ate_pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
126 mnt4_GT mnt4_ate_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
127 
128 /* choice of pairing */
129 
132 
134 
136 
138  const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q);
139 
141  const mnt4_G1_precomp &prec_P1,
142  const mnt4_G2_precomp &prec_Q1,
143  const mnt4_G1_precomp &prec_P2,
144  const mnt4_G2_precomp &prec_Q2);
145 
146 mnt4_Fq4 mnt4_pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
147 
148 mnt4_GT mnt4_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q);
149 
151 
152 } // namespace libff
153 
154 #endif // MNT4_PAIRING_HPP_
libff::mnt4_G1_precomp
mnt4_ate_G1_precomp mnt4_G1_precomp
Definition: mnt4_pairing.hpp:130
libff::mnt4_ate_G2_precomp
Definition: mnt4_pairing.hpp:98
libff::mnt4_ate_dbl_coeffs::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt4_ate_dbl_coeffs &dc)
Definition: mnt4_pairing.cpp:60
libff::mnt4_G2
Definition: mnt4_g2.hpp:26
libff::mnt4_double_miller_loop
mnt4_Fq4 mnt4_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_pairing.cpp:711
libff::mnt4_miller_loop
mnt4_Fq4 mnt4_miller_loop(const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q)
Definition: mnt4_pairing.cpp:705
libff::mnt4_ate_G1_precomp::operator==
bool operator==(const mnt4_ate_G1_precomp &other) const
Definition: mnt4_pairing.cpp:25
libff::mnt4_ate_G1_precomp
Definition: mnt4_pairing.hpp:63
libff
Definition: ffi.cpp:8
libff::mnt4_affine_ate_precompute_G1
mnt4_affine_ate_G1_precomputation mnt4_affine_ate_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pairing.cpp:224
libff::mnt4_ate_G2_precomp::QY_over_twist
mnt4_Fq2 QY_over_twist
Definition: mnt4_pairing.hpp:103
libff::mnt4_final_exponentiation_last_chunk
mnt4_Fq4 mnt4_final_exponentiation_last_chunk(const mnt4_Fq4 &elt, const mnt4_Fq4 &elt_inv)
Definition: mnt4_pairing.cpp:172
libff::mnt4_ate_G2_precomp::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt4_ate_G2_precomp &prec_Q)
Definition: mnt4_pairing.cpp:109
libff::mnt4_ate_G1_precomp::PY_twist
mnt4_Fq2 PY_twist
Definition: mnt4_pairing.hpp:67
libff::mnt4_ate_dbl_coeffs::c_L
mnt4_Fq2 c_L
Definition: mnt4_pairing.hpp:80
libff::mnt4_ate_reduced_pairing
mnt4_GT mnt4_ate_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:686
libff::mnt4_ate_precompute_G2
mnt4_ate_G2_precomp mnt4_ate_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:480
libff::mnt4_ate_G1_precomp::PX
mnt4_Fq PX
Definition: mnt4_pairing.hpp:64
libff::mnt4_ate_dbl_coeffs
Definition: mnt4_pairing.hpp:76
libff::mnt4_ate_dbl_coeffs::c_H
mnt4_Fq2 c_H
Definition: mnt4_pairing.hpp:77
libff::mnt4_G1
Definition: mnt4_g1.hpp:26
libff::mnt4_ate_G1_precomp::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt4_ate_G1_precomp &prec_P)
Definition: mnt4_pairing.cpp:32
libff::mnt4_affine_ate_G1_precomputation::PX
mnt4_Fq PX
Definition: mnt4_pairing.hpp:32
libff::mnt4_ate_dbl_coeffs::c_J
mnt4_Fq2 c_J
Definition: mnt4_pairing.hpp:79
libff::mnt4_affine_ate_G1_precomputation::PY
mnt4_Fq PY
Definition: mnt4_pairing.hpp:33
libff::mnt4_affine_ate_coeffs::gamma_twist
mnt4_Fq2 gamma_twist
Definition: mnt4_pairing.hpp:42
libff::mnt4_reduced_pairing
mnt4_GT mnt4_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:725
libff::mnt4_ate_add_coeffs::c_L1
mnt4_Fq2 c_L1
Definition: mnt4_pairing.hpp:89
libff::mnt4_ate_G2_precomp::operator>>
friend std::istream & operator>>(std::istream &in, mnt4_ate_G2_precomp &prec_Q)
Definition: mnt4_pairing.cpp:126
libff::mnt4_ate_G2_precomp::QX_over_twist
mnt4_Fq2 QX_over_twist
Definition: mnt4_pairing.hpp:102
libff::mnt4_ate_add_coeffs::c_RZ
mnt4_Fq2 c_RZ
Definition: mnt4_pairing.hpp:90
libff::mnt4_precompute_G1
mnt4_G1_precomp mnt4_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pairing.cpp:695
libff::mnt4_ate_add_coeffs::operator<<
friend std::ostream & operator<<(std::ostream &out, const mnt4_ate_add_coeffs &dc)
Definition: mnt4_pairing.cpp:85
libff::mnt4_ate_G2_precomp::operator==
bool operator==(const mnt4_ate_G2_precomp &other) const
Definition: mnt4_pairing.cpp:99
libff::mnt4_affine_ate_coeffs::gamma_X
mnt4_Fq2 gamma_X
Definition: mnt4_pairing.hpp:43
libff::mnt4_affine_ate_coeffs::old_RY
mnt4_Fq2 old_RY
Definition: mnt4_pairing.hpp:40
libff::mnt4_pairing
mnt4_Fq4 mnt4_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:720
libff::mnt4_ate_G2_precomp::QY2
mnt4_Fq2 QY2
Definition: mnt4_pairing.hpp:101
libff::Fp4_model
Definition: fp4.hpp:26
libff::mnt4_affine_ate_precompute_G2
mnt4_affine_ate_G2_precomputation mnt4_affine_ate_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:241
libff::mnt4_ate_pairing
mnt4_Fq4 mnt4_ate_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:676
libff::mnt4_ate_add_coeffs
Definition: mnt4_pairing.hpp:88
libff::mnt4_final_exponentiation_first_chunk
mnt4_Fq4 mnt4_final_exponentiation_first_chunk(const mnt4_Fq4 &elt, const mnt4_Fq4 &elt_inv)
Definition: mnt4_pairing.cpp:191
libff::mnt4_ate_double_miller_loop
mnt4_Fq4 mnt4_ate_double_miller_loop(const mnt4_ate_G1_precomp &prec_P1, const mnt4_ate_G2_precomp &prec_Q1, const mnt4_ate_G1_precomp &prec_P2, const mnt4_ate_G2_precomp &prec_Q2)
Definition: mnt4_pairing.cpp:595
libff::mnt4_ate_dbl_coeffs::operator==
bool operator==(const mnt4_ate_dbl_coeffs &other) const
Definition: mnt4_pairing.cpp:53
libff::mnt4_affine_ate_G2_precomputation::QY
mnt4_Fq2 QY
Definition: mnt4_pairing.hpp:48
libff::mnt4_ate_G1_precomp::PX_twist
mnt4_Fq2 PX_twist
Definition: mnt4_pairing.hpp:66
mnt4_init.hpp
libff::mnt4_ate_add_coeffs::operator>>
friend std::istream & operator>>(std::istream &in, mnt4_ate_add_coeffs &dc)
Definition: mnt4_pairing.cpp:91
libff::mnt4_ate_G1_precomp::PY
mnt4_Fq PY
Definition: mnt4_pairing.hpp:65
libff::mnt4_affine_ate_G2_precomputation::QX
mnt4_Fq2 QX
Definition: mnt4_pairing.hpp:47
libff::mnt4_ate_G2_precomp::QX
mnt4_Fq2 QX
Definition: mnt4_pairing.hpp:99
libff::mnt4_ate_G2_precomp::add_coeffs
std::vector< mnt4_ate_add_coeffs > add_coeffs
Definition: mnt4_pairing.hpp:105
libff::mnt4_ate_dbl_coeffs::operator>>
friend std::istream & operator>>(std::istream &in, mnt4_ate_dbl_coeffs &dc)
Definition: mnt4_pairing.cpp:67
libff::mnt4_ate_dbl_coeffs::c_4C
mnt4_Fq2 c_4C
Definition: mnt4_pairing.hpp:78
libff::mnt4_precompute_G2
mnt4_G2_precomp mnt4_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:700
libff::mnt4_affine_ate_coeffs
Definition: mnt4_pairing.hpp:37
libff::mnt4_GT
mnt4_Fq4 mnt4_GT
Definition: mnt4_init.hpp:40
libff::Fp_model< mnt4_q_limbs, mnt4_modulus_q >
libff::mnt4_affine_ate_G1_precomputation
Definition: mnt4_pairing.hpp:31
libff::mnt4_Fq4
Fp4_model< mnt4_q_limbs, mnt4_modulus_q > mnt4_Fq4
Definition: mnt4_init.hpp:39
libff::Fp2_model< mnt4_q_limbs, mnt4_modulus_q >
libff::mnt4_affine_ate_coeffs::old_RX
mnt4_Fq2 old_RX
Definition: mnt4_pairing.hpp:39
libff::mnt4_affine_ate_coeffs::gamma
mnt4_Fq2 gamma
Definition: mnt4_pairing.hpp:41
libff::mnt4_ate_G2_precomp::QY
mnt4_Fq2 QY
Definition: mnt4_pairing.hpp:100
libff::mnt4_ate_G1_precomp::operator>>
friend std::istream & operator>>(std::istream &in, mnt4_ate_G1_precomp &prec_P)
Definition: mnt4_pairing.cpp:40
libff::mnt4_final_exponentiation
mnt4_GT mnt4_final_exponentiation(const mnt4_Fq4 &elt)
Definition: mnt4_pairing.cpp:207
libff::mnt4_affine_ate_miller_loop
mnt4_Fq4 mnt4_affine_ate_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P, const mnt4_affine_ate_G2_precomputation &prec_Q)
Definition: mnt4_pairing.cpp:318
libff::mnt4_affine_ate_G2_precomputation
Definition: mnt4_pairing.hpp:46
libff::mnt4_G2_precomp
mnt4_ate_G2_precomp mnt4_G2_precomp
Definition: mnt4_pairing.hpp:131
libff::mnt4_affine_ate_G2_precomputation::coeffs
std::vector< mnt4_affine_ate_coeffs > coeffs
Definition: mnt4_pairing.hpp:49
libff::mnt4_ate_add_coeffs::operator==
bool operator==(const mnt4_ate_add_coeffs &other) const
Definition: mnt4_pairing.cpp:80
libff::mnt4_ate_G2_precomp::dbl_coeffs
std::vector< mnt4_ate_dbl_coeffs > dbl_coeffs
Definition: mnt4_pairing.hpp:104
libff::mnt4_ate_miller_loop
mnt4_Fq4 mnt4_ate_miller_loop(const mnt4_ate_G1_precomp &prec_P, const mnt4_ate_G2_precomp &prec_Q)
Definition: mnt4_pairing.cpp:539
libff::mnt4_ate_precompute_G1
mnt4_ate_G1_precomp mnt4_ate_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pairing.cpp:463
libff::mnt4_affine_ate_G1_precomputation::PY_twist_squared
mnt4_Fq2 PY_twist_squared
Definition: mnt4_pairing.hpp:34
libff::mnt4_affine_reduced_pairing
mnt4_GT mnt4_affine_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:730