26 #ifndef CRYPTO3_PUBKEY_DECRYPT_HPP
27 #define CRYPTO3_PUBKEY_DECRYPT_HPP
41 template<
typename Scheme>
44 template<
typename Scheme,
typename Mode = pubkey::modes::isomorphic<Scheme>,
45 typename ProcessingMode =
typename Mode::decryption_policy,
typename InputIterator,
46 typename PubkeyAccumulator = pubkey::pubkey_accumulator_set<ProcessingMode>,
47 typename StreamSchemeImpl = pubkey::detail::value_pubkey_impl<PubkeyAccumulator>,
48 typename SchemeImpl = pubkey::detail::range_pubkey_impl<StreamSchemeImpl>>
49 SchemeImpl
decrypt(InputIterator first, InputIterator last,
51 return SchemeImpl(first, last, PubkeyAccumulator(init_params));
54 template<
typename Scheme,
typename Mode = pubkey::modes::isomorphic<Scheme>,
55 typename ProcessingMode =
typename Mode::decryption_policy,
typename SinglePassRange,
56 typename PubkeyAccumulator = pubkey::pubkey_accumulator_set<ProcessingMode>,
57 typename StreamSchemeImpl = pubkey::detail::value_pubkey_impl<PubkeyAccumulator>,
58 typename SchemeImpl = pubkey::detail::range_pubkey_impl<StreamSchemeImpl>>
59 SchemeImpl
decrypt(
const SinglePassRange &range,
61 return SchemeImpl(range, PubkeyAccumulator(init_params));
64 template<
typename Scheme,
typename Mode = pubkey::modes::isomorphic<Scheme>,
65 typename ProcessingMode =
typename Mode::decryption_policy,
typename InputIterator,
66 typename OutputAccumulator = pubkey::pubkey_accumulator_set<ProcessingMode>>
67 typename std::enable_if<boost::accumulators::detail::is_accumulator_set<OutputAccumulator>::value,
68 OutputAccumulator>::type &
69 decrypt(InputIterator first, InputIterator last, OutputAccumulator &acc) {
73 return SchemeImpl(first, last, std::forward<OutputAccumulator>(acc));
76 template<
typename Scheme,
typename Mode = pubkey::modes::isomorphic<Scheme>,
77 typename ProcessingMode =
typename Mode::decryption_policy,
typename SinglePassRange,
78 typename OutputAccumulator = pubkey::pubkey_accumulator_set<ProcessingMode>>
79 typename std::enable_if<boost::accumulators::detail::is_accumulator_set<OutputAccumulator>::value,
80 OutputAccumulator>::type &
81 decrypt(
const SinglePassRange &range, OutputAccumulator &acc) {
85 return SchemeImpl(range, std::forward<OutputAccumulator>(acc));
88 template<
typename Scheme,
typename Mode = pubkey::modes::isomorphic<Scheme>,
89 typename ProcessingMode =
typename Mode::decryption_policy,
typename InputIterator,
90 typename OutputIterator>
91 OutputIterator
decrypt(InputIterator first, InputIterator last,
98 return SchemeImpl(first, last,
std::move(out), PubkeyAccumulator(init_params));
101 template<
typename Scheme,
typename Mode = pubkey::modes::isomorphic<Scheme>,
102 typename ProcessingMode =
typename Mode::decryption_policy,
typename SinglePassRange,
103 typename OutputIterator>
104 OutputIterator
decrypt(
const SinglePassRange &range,
111 return SchemeImpl(range,
std::move(out), PubkeyAccumulator(init_params));
OutputIterator decrypt(InputIterator first, InputIterator last, KeyInputIterator key_first, KeyInputIterator key_last, OutputIterator out)
Definition: block/include/nil/crypto3/block/algorithm/decrypt.hpp:66
OutputIterator move(const SinglePassRange &rng, OutputIterator result)
Definition: move.hpp:45
boost::accumulators::accumulator_set< typename ProcessingMode::result_type, boost::accumulators::features< accumulators::tag::pubkey< ProcessingMode > >> pubkey_accumulator_set
Definition: pubkey_state.hpp:45
typename decrypt_op< Scheme >::init_params_type decryption_init_params_type
Definition: pubkey/include/nil/crypto3/pubkey/algorithm/decrypt.hpp:42
Definition: decrypt_op.hpp:33
Definition: pubkey_value.hpp:167
Definition: pubkey_value.hpp:74
Definition: pubkey_value.hpp:49
Definition: pubkey_value.hpp:61