Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
libff::mnt6_pp Class Reference

#include <mnt6_pp.hpp>

Public Types

typedef mnt6_Fr Fp_type
 
typedef mnt6_G1 G1_type
 
typedef mnt6_G2 G2_type
 
typedef mnt6_affine_ate_G1_precomputation affine_ate_G1_precomp_type
 
typedef mnt6_affine_ate_G2_precomputation affine_ate_G2_precomp_type
 
typedef mnt6_G1_precomp G1_precomp_type
 
typedef mnt6_G2_precomp G2_precomp_type
 
typedef mnt6_Fq Fq_type
 
typedef mnt6_Fq3 Fqe_type
 
typedef mnt6_Fq6 Fqk_type
 
typedef mnt6_GT GT_type
 

Static Public Member Functions

static void init_public_params ()
 
static mnt6_GT final_exponentiation (const mnt6_Fq6 &elt)
 
static mnt6_G1_precomp precompute_G1 (const mnt6_G1 &P)
 
static mnt6_G2_precomp precompute_G2 (const mnt6_G2 &Q)
 
static mnt6_Fq6 miller_loop (const mnt6_G1_precomp &prec_P, const mnt6_G2_precomp &prec_Q)
 
static mnt6_affine_ate_G1_precomputation affine_ate_precompute_G1 (const mnt6_G1 &P)
 
static mnt6_affine_ate_G2_precomputation affine_ate_precompute_G2 (const mnt6_G2 &Q)
 
static mnt6_Fq6 affine_ate_miller_loop (const mnt6_affine_ate_G1_precomputation &prec_P, const mnt6_affine_ate_G2_precomputation &prec_Q)
 
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)
 
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)
 
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)
 
static mnt6_Fq6 pairing (const mnt6_G1 &P, const mnt6_G2 &Q)
 
static mnt6_Fq6 reduced_pairing (const mnt6_G1 &P, const mnt6_G2 &Q)
 
static mnt6_Fq6 affine_reduced_pairing (const mnt6_G1 &P, const mnt6_G2 &Q)
 

Static Public Attributes

static const std::string name
 
static const bool has_affine_pairing = true
 

Detailed Description

Definition at line 24 of file mnt6_pp.hpp.

Member Typedef Documentation

◆ affine_ate_G1_precomp_type

Definition at line 32 of file mnt6_pp.hpp.

◆ affine_ate_G2_precomp_type

Definition at line 33 of file mnt6_pp.hpp.

◆ Fp_type

Definition at line 29 of file mnt6_pp.hpp.

◆ Fq_type

Definition at line 36 of file mnt6_pp.hpp.

◆ Fqe_type

Definition at line 37 of file mnt6_pp.hpp.

◆ Fqk_type

Definition at line 38 of file mnt6_pp.hpp.

◆ G1_precomp_type

Definition at line 34 of file mnt6_pp.hpp.

◆ G1_type

Definition at line 30 of file mnt6_pp.hpp.

◆ G2_precomp_type

Definition at line 35 of file mnt6_pp.hpp.

◆ G2_type

Definition at line 31 of file mnt6_pp.hpp.

◆ GT_type

Definition at line 39 of file mnt6_pp.hpp.

Member Function Documentation

◆ affine_ate_e_over_e_miller_loop()

mnt6_Fq6 libff::mnt6_pp::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 
)
static

Definition at line 72 of file mnt6_pp.cpp.

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 }
Here is the call graph for this function:

◆ affine_ate_e_times_e_over_e_miller_loop()

mnt6_Fq6 libff::mnt6_pp::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 
)
static

Definition at line 82 of file mnt6_pp.cpp.

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 }
Here is the call graph for this function:

◆ affine_ate_miller_loop()

mnt6_Fq6 libff::mnt6_pp::affine_ate_miller_loop ( const mnt6_affine_ate_G1_precomputation prec_P,
const mnt6_affine_ate_G2_precomputation prec_Q 
)
static

Definition at line 56 of file mnt6_pp.cpp.

59 {
60  return mnt6_affine_ate_miller_loop(prec_P, prec_Q);
61 }
Here is the call graph for this function:

◆ affine_ate_precompute_G1()

mnt6_affine_ate_G1_precomputation libff::mnt6_pp::affine_ate_precompute_G1 ( const mnt6_G1 P)
static

Definition at line 44 of file mnt6_pp.cpp.

46 {
48 }
Here is the call graph for this function:

◆ affine_ate_precompute_G2()

mnt6_affine_ate_G2_precomputation libff::mnt6_pp::affine_ate_precompute_G2 ( const mnt6_G2 Q)
static

Definition at line 50 of file mnt6_pp.cpp.

52 {
54 }
Here is the call graph for this function:

◆ affine_reduced_pairing()

mnt6_Fq6 libff::mnt6_pp::affine_reduced_pairing ( const mnt6_G1 P,
const mnt6_G2 Q 
)
static

Definition at line 106 of file mnt6_pp.cpp.

107 {
108  return mnt6_affine_reduced_pairing(P, Q);
109 }
Here is the call graph for this function:

◆ double_miller_loop()

mnt6_Fq6 libff::mnt6_pp::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 
)
static

Definition at line 63 of file mnt6_pp.cpp.

68 {
69  return mnt6_double_miller_loop(prec_P1, prec_Q1, prec_P2, prec_Q2);
70 }
Here is the call graph for this function:

◆ final_exponentiation()

mnt6_GT libff::mnt6_pp::final_exponentiation ( const mnt6_Fq6 elt)
static

Definition at line 23 of file mnt6_pp.cpp.

24 {
25  return mnt6_final_exponentiation(elt);
26 }
Here is the call graph for this function:

◆ init_public_params()

void libff::mnt6_pp::init_public_params ( )
static

Definition at line 21 of file mnt6_pp.cpp.

21 { init_mnt6_params(); }
Here is the call graph for this function:

◆ miller_loop()

mnt6_Fq6 libff::mnt6_pp::miller_loop ( const mnt6_G1_precomp prec_P,
const mnt6_G2_precomp prec_Q 
)
static

Definition at line 38 of file mnt6_pp.cpp.

40 {
41  return mnt6_miller_loop(prec_P, prec_Q);
42 }
Here is the call graph for this function:

◆ pairing()

mnt6_Fq6 libff::mnt6_pp::pairing ( const mnt6_G1 P,
const mnt6_G2 Q 
)
static

Definition at line 96 of file mnt6_pp.cpp.

97 {
98  return mnt6_pairing(P, Q);
99 }
Here is the call graph for this function:

◆ precompute_G1()

mnt6_G1_precomp libff::mnt6_pp::precompute_G1 ( const mnt6_G1 P)
static

Definition at line 28 of file mnt6_pp.cpp.

29 {
30  return mnt6_precompute_G1(P);
31 }
Here is the call graph for this function:

◆ precompute_G2()

mnt6_G2_precomp libff::mnt6_pp::precompute_G2 ( const mnt6_G2 Q)
static

Definition at line 33 of file mnt6_pp.cpp.

34 {
35  return mnt6_precompute_G2(Q);
36 }
Here is the call graph for this function:

◆ reduced_pairing()

mnt6_Fq6 libff::mnt6_pp::reduced_pairing ( const mnt6_G1 P,
const mnt6_G2 Q 
)
static

Definition at line 101 of file mnt6_pp.cpp.

102 {
103  return mnt6_reduced_pairing(P, Q);
104 }
Here is the call graph for this function:

Member Data Documentation

◆ has_affine_pairing

const bool libff::mnt6_pp::has_affine_pairing = true
static

Definition at line 41 of file mnt6_pp.hpp.

◆ name

const std::string libff::mnt6_pp::name
static

Definition at line 27 of file mnt6_pp.hpp.


The documentation for this class was generated from the following files:
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::Fp6_2over3_model::unitary_inverse
Fp6_2over3_model unitary_inverse() const
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_reduced_pairing
mnt6_GT mnt6_reduced_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:738
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_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_pairing
mnt6_Fq6 mnt6_pairing(const mnt6_G1 &P, const mnt6_G2 &Q)
Definition: mnt6_pairing.cpp:733
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