shamir.hpp
Go to the documentation of this file.
95 typename Generator = random::algebraic_random_device<typename basic_policy::coeff_type::field_type>,
216 std::is_convertible<typename std::remove_cv<typename std::remove_reference<Scheme>::type>::type,
294 static inline public_secret_type reconstruct_public_secret(PublicShareIt first, PublicShareIt last) {
307 static inline public_secret_type reconstruct_public_secret(PublicShareIt first, PublicShareIt last,
363 std::is_convertible<typename std::remove_cv<typename std::remove_reference<Scheme>::type>::type,
391 static inline secret_type reconstruct_secret(ShareIt first, ShareIt last, const indexes_type &indexes) {
436 static inline void init_accumulator(internal_accumulator_type &acc, std::size_t n, std::size_t t) {
478 static inline void update(internal_accumulator_type &acc, const public_share_type &public_share) {
492 typedef std::pair<typename scheme_type::indexes_type, std::set<share_type>> internal_accumulator_type;
std::enable_if<!boost::accumulators::detail::is_accumulator_set< OutputIterator >::value, OutputIterator >::type reconstruct_public_secret(InputIterator first, InputIterator last, OutputIterator out)
Reconstruct public representative of secret using passed public representatives of shares.
Definition: reconstruct_public_secret.hpp:69
std::enable_if<!boost::accumulators::detail::is_accumulator_set< OutputIterator >::value, OutputIterator >::type reconstruct_secret(InputIterator first, InputIterator last, OutputIterator out)
Reconstruct secret using passed shares.
Definition: reconstruct_secret.hpp:69
boost::mpl::apply< AccumulatorSet, tag::pubkey< ProcessingMode > >::type::result_type pubkey(const AccumulatorSet &acc)
Definition: accumulators/pubkey.hpp:106
Definition: pair.hpp:31
public_secret_sss(const PublicShares &public_shares)
Definition: shamir.hpp:255
public_secret_sss(PublicShareIt first, PublicShareIt last)
Definition: shamir.hpp:260
bool operator<(const public_secret_sss &other) const
Definition: shamir.hpp:282
bool operator==(const public_secret_sss &other) const
Definition: shamir.hpp:278
public_secret_type value_type
Definition: shamir.hpp:252
public_secret_sss(const PublicShares &public_shares, const indexes_type &indexes)
Definition: shamir.hpp:265
public_secret_sss(PublicShareIt first, PublicShareIt last, const indexes_type &indexes)
Definition: shamir.hpp:270
scheme_type::public_element_type public_secret_type
Definition: shamir.hpp:250
scheme_type::indexes_type indexes_type
Definition: shamir.hpp:251
shamir_sss< Group > scheme_type
Definition: shamir.hpp:249
const value_type & get_value() const
Definition: shamir.hpp:274
Definition: public_secret_sss.hpp:33
static void update(internal_accumulator_type &acc, const public_share_type &public_share)
Definition: shamir.hpp:478
static ResultType _process(InternalAccumulator &acc)
Definition: shamir.hpp:470
shamir_sss< Group > scheme_type
Definition: shamir.hpp:452
static result_type process(internal_accumulator_type &acc)
Definition: shamir.hpp:482
static void _update(InternalAccumulator &acc, const PublicShare &public_share)
Definition: shamir.hpp:461
public_secret_sss< scheme_type > public_secret_type
Definition: shamir.hpp:454
static void init_accumulator()
Definition: shamir.hpp:475
nil::crypto3::pubkey::reconstruct_public_secret_op< shamir_sss< Group > >::internal_accumulator_type
std::pair< typename scheme_type::indexes_type, std::set< public_share_type > > internal_accumulator_type
Definition: shamir.hpp:456
public_share_sss< scheme_type > public_share_type
Definition: shamir.hpp:453
public_secret_type result_type
Definition: shamir.hpp:457
Definition: reconstruct_public_secret_op.hpp:33
static void init_accumulator()
Definition: shamir.hpp:511
static result_type process(internal_accumulator_type &acc)
Definition: shamir.hpp:518
std::pair< typename scheme_type::indexes_type, std::set< share_type > > internal_accumulator_type
Definition: shamir.hpp:492
shamir_sss< Group > scheme_type
Definition: shamir.hpp:489
static void _update(InternalAccumulator &acc, const Share &share)
Definition: shamir.hpp:497
secret_type result_type
Definition: shamir.hpp:493
secret_sss< scheme_type > secret_type
Definition: shamir.hpp:491
share_sss< scheme_type > share_type
Definition: shamir.hpp:490
static ResultType _process(InternalAccumulator &acc)
Definition: shamir.hpp:506
static void update(internal_accumulator_type &acc, const share_type &share)
Definition: shamir.hpp:514
Definition: reconstruct_secret_op.hpp:33
secret_sss(ShareIt first, ShareIt last)
Definition: shamir.hpp:335
secret_type secret
Definition: shamir.hpp:402
static secret_type reconstruct_secret(ShareIt first, ShareIt last)
Definition: shamir.hpp:379
secret_type value_type
Definition: shamir.hpp:328
bool operator<(const secret_sss &other) const
Definition: shamir.hpp:356
scheme_type::indexes_type indexes_type
Definition: shamir.hpp:327
static secret_type reconstruct_secret(ShareIt first, ShareIt last, const indexes_type &indexes)
Definition: shamir.hpp:391
secret_sss(ShareIt first, ShareIt last, const indexes_type &indexes)
Definition: shamir.hpp:344
secret_sss(const Shares &shares, const indexes_type &indexes)
Definition: shamir.hpp:339
scheme_type::private_element_type secret_type
Definition: shamir.hpp:326
bool operator==(const secret_sss &other) const
Definition: shamir.hpp:352
secret_sss(const Shares &shares)
Definition: shamir.hpp:331
shamir_sss< Group > scheme_type
Definition: shamir.hpp:325
const value_type & get_value() const
Definition: shamir.hpp:348
Definition: secret_sss.hpp:33
Definition: shamir.hpp:58
std::vector< typename basic_policy::public_coeff_type > public_coeffs_type
Definition: shamir.hpp:66
static basic_policy::private_element_type eval_basis_poly(const typename basic_policy::indexes_type &indexes, std::size_t i)
Definition: shamir.hpp:69
sss_basic_policy< group_type > basic_policy
Definition: shamir.hpp:60
static public_coeffs_type get_public_coeffs(CoeffsIt first, CoeffsIt last)
Definition: shamir.hpp:120
static coeffs_type get_poly(std::size_t t)
Definition: shamir.hpp:97
static public_coeffs_type get_public_coeffs(const Coeffs &coeffs)
Definition: shamir.hpp:113
static coeffs_type get_poly(std::size_t t, std::size_t n)
Definition: shamir.hpp:88
std::vector< typename basic_policy::coeff_type > coeffs_type
Definition: shamir.hpp:65
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:43
std::pair< std::size_t, private_element_type > indexed_private_element_type
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:49
typename Group::curve_type::scalar_field_type::value_type private_element_type
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:47
static bool check_participant_index(std::size_t i)
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:72
std::pair< std::size_t, public_element_type > indexed_public_element_type
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:50
static bool check_threshold_value(std::size_t t, std::size_t n)
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:80
static bool check_minimal_size(std::size_t size)
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:62
private_element_type coeff_type
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:55
typename Group::value_type public_element_type
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:48
static public_element_type get_public_element(const private_element_type &e)
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:90
std::set< std::size_t > indexes_type
Definition: pubkey/include/nil/crypto3/pubkey/secret_sharing/basic_policy.hpp:57
Definition: weighted_basic_policy.hpp:37