blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp
Go to the documentation of this file.
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2018-2021 Mikhail Komarov <nemo@nil.foundation>
3 // Copyright (c) 2020-2021 Nikita Kaskov <nbering@nil.foundation>
4 //
5 // MIT License
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining a copy
8 // of this software and associated documentation files (the "Software"), to deal
9 // in the Software without restriction, including without limitation the rights
10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 // copies of the Software, and to permit persons to whom the Software is
12 // furnished to do so, subject to the following conditions:
13 //
14 // The above copyright notice and this permission notice shall be included in all
15 // copies or substantial portions of the Software.
16 //
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 // SOFTWARE.
24 //---------------------------------------------------------------------------//
25 // @file Declaration of specializations of basic_curve_component_policy<CurveType> to
26 // - basic_curve_component_policy<curves::mnt4>.
27 //
28 // See pairing_params.hpp .
29 //---------------------------------------------------------------------------//
30 
31 #ifndef CRYPTO3_ZK_BLUEPRINT_MNT4_BASIC_CURVE_COMPONENT_POLICY_HPP
32 #define CRYPTO3_ZK_BLUEPRINT_MNT4_BASIC_CURVE_COMPONENT_POLICY_HPP
33 
35 
38 
39 namespace nil {
40  namespace crypto3 {
41  namespace zk {
42  namespace components {
43 
44  using namespace nil::crypto3::algebra;
45 
46  template<typename CurveType>
48 
52  template<std::size_t Version>
53  class basic_curve_component_policy<curves::mnt4<Version>> {
54  using curve_type = typename curves::mnt4<Version>;
55 
56  typedef typename curve_type::chained_on_curve_type chained_on_curve_type; // mnt6
57 
58  typedef typename chained_on_curve_type::pairing::fqe_type fqe_type;
59  typedef typename chained_on_curve_type::pairing::fqk_type fqk_type;
60 
61  typedef typename curve_type::pairing::fp_type field_type;
62 
63  public:
68 
73  };
74  } // namespace components
75  } // namespace zk
76  } // namespace crypto3
77 } // namespace nil
78 
79 #endif // CRYPTO3_ZK_BLUEPRINT_MNT4_BASIC_CURVE_COMPONENT_POLICY_HPP
element_fp6_2over3< fqk_type > Fqk_variable_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:69
element_fp3< fqe_type > Fqe_variable_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:64
element_fp3_mul_by_lc< fqe_type > Fqe_mul_by_lc_component_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:66
element_fp6_2over3_mul_by_2345< fqk_type > Fqk_special_mul_component_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:71
element_fp6_2over3_squared< fqk_type > Fqk_sqr_component_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:72
element_fp3_squared< fqe_type > Fqe_sqr_component_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:67
element_fp6_2over3_mul< fqk_type > Fqk_mul_component_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:70
element_fp3_mul< fqe_type > Fqe_mul_component_type
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:65
Definition: blueprint/include/nil/crypto3/zk/components/algebra/curves/detail/mnt4.hpp:47
Definition: element_fp6_2over3.hpp:137
Definition: element_fp6_2over3.hpp:432
Definition: element_fp6_2over3.hpp:51
mnt4_base_field< Version > mnt4
Definition: mnt4/base_field.hpp:86
Definition: pair.hpp:33
Definition: pair.hpp:31
A struct representing a mnt4 curve.
Definition: algebra/include/nil/crypto3/algebra/curves/mnt4.hpp:46
Definition: element_fp3.hpp:219
Definition: element_fp3.hpp:52