36#include <unordered_map>
37#include <unordered_set>
79 std::unordered_map<crypto::public_key_memsafe, std::unordered_set<crypto::public_key>>;
100 std::vector<crypto::public_key> signers,
103 std::vector<crypto::secret_key> multisig_privkeys,
107 const std::uint32_t kex_rounds_complete,
109 std::string next_round_kex_message);
155 void set_multisig_config(
const std::size_t threshold, std::vector<crypto::public_key> signers);
164 std::vector<crypto::public_key> signers,
165 const std::vector<multisig_kex_msg> &expanded_msgs_rnd1);
180 void kex_update(
const std::vector<multisig_kex_msg> &expanded_msgs,
181 const bool force_update_use_with_caution =
false);
185 void kex_update_impl(
const std::vector<multisig_kex_msg> &expanded_msgs,
const bool incomplete_signer_set);
196 const std::uint32_t kex_rounds_required,
197 std::vector<crypto::public_key> &exclude_pubkeys_out);
const crypto::secret_key & get_common_privkey() const
Definition multisig_account.h:132
void set_multisig_config(const std::size_t threshold, std::vector< crypto::public_key > signers)
Definition multisig_account.cpp:137
void finalize_kex_update(const std::uint32_t kex_rounds_required, multisig_keyset_map_memsafe_t result_keys_to_origins_map)
Definition multisig_account_kex_impl.cpp:745
void initialize_kex_update(const std::vector< multisig_kex_msg > &expanded_msgs, const std::uint32_t kex_rounds_required, std::vector< crypto::public_key > &exclude_pubkeys_out)
Definition multisig_account_kex_impl.cpp:687
const multisig_keyset_map_memsafe_t & get_kex_keys_to_origins_map() const
Definition multisig_account.h:140
const std::vector< crypto::public_key > & get_signers() const
Definition multisig_account.h:122
crypto::public_key m_common_pubkey
Definition multisig_account.h:232
const crypto::secret_key & get_base_common_privkey() const
Definition multisig_account.h:128
crypto::secret_key m_base_common_privkey
Definition multisig_account.h:221
const std::vector< crypto::secret_key > & get_multisig_privkeys() const
Definition multisig_account.h:130
~multisig_account()=default
std::string m_next_round_kex_message
Definition multisig_account.h:241
const std::string & get_next_kex_round_msg() const
Definition multisig_account.h:142
std::uint32_t get_threshold() const
Definition multisig_account.h:120
multisig_keyset_map_memsafe_t m_kex_keys_to_origins_map
Definition multisig_account.h:239
const crypto::public_key & get_multisig_pubkey() const
Definition multisig_account.h:134
const crypto::public_key & get_common_pubkey() const
Definition multisig_account.h:136
void kex_update_impl(const std::vector< multisig_kex_msg > &expanded_msgs, const bool incomplete_signer_set)
Definition multisig_account_kex_impl.cpp:852
bool multisig_is_ready() const
Definition multisig_account.cpp:127
crypto::public_key m_multisig_pubkey
Definition multisig_account.h:230
crypto::public_key m_base_pubkey
Definition multisig_account.h:219
std::uint32_t m_kex_rounds_complete
kex variables
Definition multisig_account.h:236
bool account_is_active() const
Definition multisig_account.cpp:110
std::vector< crypto::public_key > m_signers
Definition multisig_account.h:213
void kex_update(const std::vector< multisig_kex_msg > &expanded_msgs, const bool force_update_use_with_caution=false)
Definition multisig_account.cpp:184
std::vector< crypto::secret_key > m_multisig_privkeys
core multisig account keys
Definition multisig_account.h:226
multisig_account()=default
const crypto::public_key & get_base_pubkey() const
Definition multisig_account.h:126
crypto::secret_key m_base_privkey
local participant's personal keys
Definition multisig_account.h:218
bool main_kex_rounds_done() const
Definition multisig_account.cpp:117
void initialize_kex(const std::uint32_t threshold, std::vector< crypto::public_key > signers, const std::vector< multisig_kex_msg > &expanded_msgs_rnd1)
Definition multisig_account.cpp:169
std::uint32_t get_kex_rounds_complete() const
Definition multisig_account.h:138
crypto::secret_key m_common_privkey
Definition multisig_account.h:228
const crypto::secret_key & get_base_privkey() const
Definition multisig_account.h:124
std::uint32_t m_threshold
misc. account details
Definition multisig_account.h:211
epee::mlocked< tools::scrubbed< ec_scalar > > secret_key
Definition crypto.h:72
POD_CLASS public_key
Definition crypto.h:64
Definition multisig.cpp:46
std::uint32_t multisig_kex_rounds_required(const std::uint32_t num_signers, const std::uint32_t threshold)
Definition multisig_account.cpp:197
std::uint32_t multisig_setup_rounds_required(const std::uint32_t num_signers, const std::uint32_t threshold)
Definition multisig_account.cpp:206
std::unordered_map< crypto::public_key_memsafe, std::unordered_set< crypto::public_key > > multisig_keyset_map_memsafe_t
Definition multisig_account.h:78