Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
mnt6_pp.cpp
Go to the documentation of this file.
1 
15 
16 namespace libff
17 {
18 
19 const std::string mnt6_pp::name("mnt6");
20 
22 
24 {
25  return mnt6_final_exponentiation(elt);
26 }
27 
29 {
30  return mnt6_precompute_G1(P);
31 }
32 
34 {
35  return mnt6_precompute_G2(Q);
36 }
37 
39  const mnt6_G1_precomp &prec_P, const mnt6_G2_precomp &prec_Q)
40 {
41  return mnt6_miller_loop(prec_P, prec_Q);
42 }
43 
45  const mnt6_G1 &P)
46 {
48 }
49 
51  const mnt6_G2 &Q)
52 {
54 }
55 
59 {
60  return mnt6_affine_ate_miller_loop(prec_P, prec_Q);
61 }
62 
64  const mnt6_G1_precomp &prec_P1,
65  const mnt6_G2_precomp &prec_Q1,
66  const mnt6_G1_precomp &prec_P2,
67  const mnt6_G2_precomp &prec_Q2)
68 {
69  return mnt6_double_miller_loop(prec_P1, prec_Q1, prec_P2, prec_Q2);
70 }
71 
73  const mnt6_affine_ate_G1_precomputation &prec_P1,
74  const mnt6_affine_ate_G2_precomputation &prec_Q1,
75  const mnt6_affine_ate_G1_precomputation &prec_P2,
76  const mnt6_affine_ate_G2_precomputation &prec_Q2)
77 {
78  return mnt6_affine_ate_miller_loop(prec_P1, prec_Q1) *
79  mnt6_affine_ate_miller_loop(prec_P2, prec_Q2).unitary_inverse();
80 }
81 
83  const mnt6_affine_ate_G1_precomputation &prec_P1,
84  const mnt6_affine_ate_G2_precomputation &prec_Q1,
85  const mnt6_affine_ate_G1_precomputation &prec_P2,
86  const mnt6_affine_ate_G2_precomputation &prec_Q2,
87  const mnt6_affine_ate_G1_precomputation &prec_P3,
88  const mnt6_affine_ate_G2_precomputation &prec_Q3)
89 {
90  return (
91  (mnt6_affine_ate_miller_loop(prec_P1, prec_Q1) *
92  mnt6_affine_ate_miller_loop(prec_P2, prec_Q2)) *
93  mnt6_affine_ate_miller_loop(prec_P3, prec_Q3).unitary_inverse());
94 }
95 
97 {
98  return mnt6_pairing(P, Q);
99 }
100 
102 {
103  return mnt6_reduced_pairing(P, Q);
104 }
105 
107 {
108  return mnt6_affine_reduced_pairing(P, Q);
109 }
110 
111 } // namespace libff
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
Definition: ffi.cpp:8
libff::init_mnt6_params
void init_mnt6_params()
Definition: mnt6_init.cpp:43
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_pp::precompute_G1
static mnt6_G1_precomp precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pp.cpp:28
libff::Fp6_2over3_model::unitary_inverse
Fp6_2over3_model unitary_inverse() const
libff::mnt6_ate_G2_precomp
Definition: mnt6_pairing.hpp:98
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_pp::init_public_params
static void init_public_params()
Definition: mnt6_pp.cpp:21
libff::mnt6_reduced_pairing
mnt6_GT mnt6_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:738
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::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_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_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_precompute_G1
mnt6_G1_precomp mnt6_precompute_G1(const mnt6_G1 &P)
Definition: mnt6_pairing.cpp:708
libff::mnt6_pp::name
static const std::string name
Definition: mnt6_pp.hpp:27
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::precompute_G2
static mnt6_G2_precomp precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:33
libff::mnt6_G1
Definition: mnt6_g1.hpp:26
libff::mnt6_affine_ate_G2_precomputation
Definition: mnt6_pairing.hpp:46
libff::mnt6_precompute_G2
mnt6_G2_precomp mnt6_precompute_G2(const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:713
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_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_pairing
mnt6_Fq6 mnt6_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:733
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
libff::Fp6_2over3_model
Definition: fp6_2over3.hpp:26
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_final_exponentiation
mnt6_GT mnt6_final_exponentiation(const mnt6_Fq6 &elt)
Definition: mnt6_pairing.cpp:211
mnt6_pp.hpp
libff::mnt6_pp::pairing
static mnt6_Fq6 pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pp.cpp:96
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