pkpad/include/nil/crypto3/pkpad/type_traits.hpp
Go to the documentation of this file.
1 //---------------------------------------------------------------------------//
2 // Copyright (c) 2021 Mikhail Komarov <nemo@nil.foundation>
3 // Copyright (c) 2021 Ilias Khairullin <ilias@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 
26 #ifndef CRYPTO3_PK_PAD_TYPE_TRAITS_HPP
27 #define CRYPTO3_PK_PAD_TYPE_TRAITS_HPP
28 
29 #include <type_traits>
30 
31 #include <boost/type_traits.hpp>
32 #include <boost/tti/tti.hpp>
33 #include <boost/mpl/placeholders.hpp>
34 #include <boost/type_traits/is_same.hpp>
35 
36 namespace nil {
37  namespace crypto3 {
38  namespace pubkey {
39  namespace padding {
40  using namespace boost::mpl::placeholders;
41 
42  BOOST_TTI_HAS_TYPE(encoding_policy_type)
43  BOOST_TTI_HAS_TYPE(verification_policy_type)
44  BOOST_TTI_HAS_TYPE(decoding_policy_type)
45  BOOST_TTI_HAS_TYPE(recovering_policy_type)
46 
47  BOOST_TTI_HAS_STATIC_MEMBER_DATA(dst)
48 
49  template<typename T>
50  struct is_emsa_policy : std::bool_constant<has_type_encoding_policy_type<T>::value &&
51  has_type_verification_policy_type<T>::value> {
52  typedef T type;
53  };
54 
55  template<typename T>
56  struct is_eme_policy : std::bool_constant<has_type_encoding_policy_type<T>::value &&
57  has_type_decoding_policy_type<T>::value> {
58  typedef T type;
59  };
60 
61  template<typename T>
62  struct is_emsr_policy : std::bool_constant<has_type_encoding_policy_type<T>::value &&
63  has_type_recovering_policy_type<T>::value> {
64  typedef T type;
65  };
66  } // namespace padding
67  } // namespace pubkey
68  } // namespace crypto3
69 } // namespace nil
70 
71 #endif // CRYPTO3_PK_PAD_TYPE_TRAITS_HPP
boost::mpl::apply< AccumulatorSet, tag::pubkey< ProcessingMode > >::type::result_type pubkey(const AccumulatorSet &acc)
Definition: accumulators/pubkey.hpp:106
Definition: pair.hpp:31
Definition: pkpad/include/nil/crypto3/pkpad/type_traits.hpp:57
T type
Definition: pkpad/include/nil/crypto3/pkpad/type_traits.hpp:58
Definition: pkpad/include/nil/crypto3/pkpad/type_traits.hpp:51
T type
Definition: pkpad/include/nil/crypto3/pkpad/type_traits.hpp:52
Definition: pkpad/include/nil/crypto3/pkpad/type_traits.hpp:63
T type
Definition: pkpad/include/nil/crypto3/pkpad/type_traits.hpp:64