26 #ifndef CRYPTO3_PUBKEY_DEAL_SHARE_HPP
27 #define CRYPTO3_PUBKEY_DEAL_SHARE_HPP
39 template<
typename Scheme>
42 template<
typename Scheme>
65 template<
typename Scheme,
typename InputIterator,
typename OutputIterator,
67 OutputIterator
deal_share(std::size_t i, InputIterator first, InputIterator last, OutputIterator out) {
74 return SchemeImpl(first, last,
std::move(out), DealingAccumulator(i));
94 template<
typename Scheme,
typename SinglePassRange,
typename OutputIterator,
95 typename ProcessingMode = pubkey::share_dealing_processing_mode_default<Scheme>>
96 OutputIterator
deal_share(std::size_t i,
const SinglePassRange &range, OutputIterator out) {
103 return SchemeImpl(range,
std::move(out), DealingAccumulator(i));
124 template<
typename Scheme,
typename InputIterator,
125 typename ProcessingMode = pubkey::share_dealing_processing_mode_default<Scheme>,
126 typename OutputAccumulator =
typename pubkey::share_dealing_accumulator_set<ProcessingMode>>
127 typename std::enable_if<boost::accumulators::detail::is_accumulator_set<OutputAccumulator>::value,
128 OutputAccumulator>::type &
129 deal_share(InputIterator first, InputIterator last, OutputAccumulator &acc) {
134 return SchemeImpl(first, last, std::forward<OutputAccumulator>(acc));
154 template<
typename Scheme,
typename SinglePassRange,
155 typename ProcessingMode = pubkey::share_dealing_processing_mode_default<Scheme>,
156 typename OutputAccumulator =
typename pubkey::share_dealing_accumulator_set<ProcessingMode>>
157 typename std::enable_if<boost::accumulators::detail::is_accumulator_set<OutputAccumulator>::value,
158 OutputAccumulator>::type &
159 deal_share(
const SinglePassRange &range, OutputAccumulator &acc) {
164 return SchemeImpl(range, std::forward<OutputAccumulator>(acc));
186 template<
typename Scheme,
typename InputIterator,
187 typename ProcessingMode = pubkey::share_dealing_processing_mode_default<Scheme>,
188 typename DealingAccumulator =
typename pubkey::share_dealing_accumulator_set<ProcessingMode>,
189 typename StreamSchemeImpl = pubkey::detail::value_pubkey_impl<DealingAccumulator>,
190 typename SchemeImpl = pubkey::detail::range_pubkey_impl<StreamSchemeImpl>>
191 SchemeImpl
deal_share(std::size_t i, InputIterator first, InputIterator last) {
193 return SchemeImpl(first, last, DealingAccumulator(i));
214 template<
typename Scheme,
typename SinglePassRange,
215 typename ProcessingMode = pubkey::share_dealing_processing_mode_default<Scheme>,
216 typename DealingAccumulator =
typename pubkey::share_dealing_accumulator_set<ProcessingMode>,
217 typename StreamSchemeImpl = pubkey::detail::value_pubkey_impl<DealingAccumulator>,
218 typename SchemeImpl = pubkey::detail::range_pubkey_impl<StreamSchemeImpl>>
219 SchemeImpl
deal_share(std::size_t i,
const SinglePassRange &range) {
221 return SchemeImpl(range, DealingAccumulator(i));
OutputIterator deal_share(std::size_t i, InputIterator first, InputIterator last, OutputIterator out)
Deal share of specified participant using passed shares, dealt by other participant for the current.
Definition: algorithm/deal_share.hpp:67
OutputIterator move(const SinglePassRange &rng, OutputIterator result)
Definition: move.hpp:45
typename pubkey::modes::isomorphic< Scheme >::share_dealing_policy share_dealing_policy
Definition: algorithm/deal_share.hpp:40
typename modes::isomorphic< Scheme >::template bind< share_dealing_policy< Scheme > >::type share_dealing_processing_mode_default
Definition: algorithm/deal_share.hpp:44
boost::accumulators::accumulator_set< typename ProcessingMode::result_type, boost::accumulators::features< accumulators::tag::deal_share< ProcessingMode > >> share_dealing_accumulator_set
Definition: secret_sharing_state.hpp:61
Definition: isomorphic.hpp:104
Definition: pubkey_value.hpp:167
Definition: pubkey_value.hpp:74
Definition: pubkey_value.hpp:49
Definition: pubkey_value.hpp:61
Definition: isomorphic.hpp:219