Electroneum
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
mms::message_store Class Reference

#include <message_store.h>

Collaboration diagram for mms::message_store:
Collaboration graph
[legend]

Public Member Functions

 message_store ()
 
void init (const multisig_wallet_state &state, const std::string &own_label, const std::string &own_transport_address, uint32_t num_authorized_signers, uint32_t num_required_signers)
 
void set_active (bool active)
 
void set_auto_send (bool auto_send)
 
void set_options (const boost::program_options::variables_map &vm)
 
void set_options (const std::string &bitmessage_address, const epee::wipeable_string &bitmessage_login)
 
bool get_active () const
 
bool get_auto_send () const
 
uint32_t get_num_required_signers () const
 
uint32_t get_num_authorized_signers () const
 
void set_signer (const multisig_wallet_state &state, uint32_t index, const boost::optional< std::string > &label, const boost::optional< std::string > &transport_address, const boost::optional< cryptonote::account_public_address > etn_address)
 
const authorized_signerget_signer (uint32_t index) const
 
bool get_signer_index_by_etn_address (const cryptonote::account_public_address &etn_address, uint32_t &index) const
 
bool get_signer_index_by_label (const std::string label, uint32_t &index) const
 
const std::vector< authorized_signer > & get_all_signers () const
 
bool signer_config_complete () const
 
bool signer_labels_complete () const
 
void get_signer_config (std::string &signer_config)
 
void unpack_signer_config (const multisig_wallet_state &state, const std::string &signer_config, std::vector< authorized_signer > &signers)
 
void process_signer_config (const multisig_wallet_state &state, const std::string &signer_config)
 
void start_auto_config (const multisig_wallet_state &state)
 
bool check_auto_config_token (const std::string &raw_token, std::string &adjusted_token) const
 
size_t add_auto_config_data_message (const multisig_wallet_state &state, const std::string &auto_config_token)
 
void process_auto_config_data_message (uint32_t id)
 
void stop_auto_config ()
 
void process_wallet_created_data (const multisig_wallet_state &state, message_type type, const std::string &content)
 
bool get_processable_messages (const multisig_wallet_state &state, bool force_sync, std::vector< processing_data > &data_list, std::string &wait_reason)
 
void set_messages_processed (const processing_data &data)
 
size_t add_message (const multisig_wallet_state &state, uint32_t signer_index, message_type type, message_direction direction, const std::string &content)
 
const std::vector< message > & get_all_messages () const
 
bool get_message_by_id (uint32_t id, message &m) const
 
message get_message_by_id (uint32_t id) const
 
void set_message_processed_or_sent (uint32_t id)
 
void delete_message (uint32_t id)
 
void delete_all_messages ()
 
void get_sanitized_message_text (const message &m, std::string &sanitized_text) const
 
void send_message (const multisig_wallet_state &state, uint32_t id)
 
bool check_for_messages (const multisig_wallet_state &state, std::vector< message > &messages)
 
void stop ()
 
void write_to_file (const multisig_wallet_state &state, const std::string &filename)
 
void read_from_file (const multisig_wallet_state &state, const std::string &filename)
 
template<class t_archive >
void serialize (t_archive &a, const unsigned int ver)
 
std::string signer_to_string (const authorized_signer &signer, uint32_t max_width)
 

Static Public Member Functions

static const char * message_type_to_string (message_type type)
 
static const char * message_direction_to_string (message_direction direction)
 
static const char * message_state_to_string (message_state state)
 
static const char * tr (const char *str)
 
static void init_options (boost::program_options::options_description &desc_params)
 

Private Member Functions

bool get_message_index_by_id (uint32_t id, size_t &index) const
 
size_t get_message_index_by_id (uint32_t id) const
 
messageget_message_ref_by_id (uint32_t id)
 
bool any_message_of_type (message_type type, message_direction direction) const
 
bool any_message_with_hash (const crypto::hash &hash) const
 
size_t get_other_signers_id_count (const std::vector< uint32_t > &ids) const
 
bool message_ids_complete (const std::vector< uint32_t > &ids) const
 
void encrypt (crypto::public_key public_key, const std::string &plaintext, std::string &ciphertext, crypto::public_key &encryption_public_key, crypto::chacha_iv &iv)
 
void decrypt (const std::string &ciphertext, const crypto::public_key &encryption_public_key, const crypto::chacha_iv &iv, const crypto::secret_key &view_secret_key, std::string &plaintext)
 
std::string create_auto_config_token ()
 
void setup_signer_for_auto_config (uint32_t index, const std::string token, bool receiving)
 
void delete_transport_message (uint32_t id)
 
std::string account_address_to_string (const cryptonote::account_public_address &account_address) const
 
void save (const multisig_wallet_state &state)
 

Private Attributes

bool m_active
 
uint32_t m_num_authorized_signers
 
uint32_t m_num_required_signers
 
bool m_auto_send
 
cryptonote::network_type m_nettype
 
std::vector< authorized_signerm_signers
 
std::vector< messagem_messages
 
uint32_t m_next_message_id
 
std::string m_filename
 
message_transporter m_transporter
 
std::atomic< boolm_run
 

Constructor & Destructor Documentation

◆ message_store()

mms::message_store::message_store ( )

Member Function Documentation

◆ account_address_to_string()

std::string mms::message_store::account_address_to_string ( const cryptonote::account_public_address account_address) const
private

◆ add_auto_config_data_message()

size_t mms::message_store::add_auto_config_data_message ( const multisig_wallet_state state,
const std::string &  auto_config_token 
)

◆ add_message()

size_t mms::message_store::add_message ( const multisig_wallet_state state,
uint32_t  signer_index,
message_type  type,
message_direction  direction,
const std::string &  content 
)

◆ any_message_of_type()

bool mms::message_store::any_message_of_type ( message_type  type,
message_direction  direction 
) const
private

◆ any_message_with_hash()

bool mms::message_store::any_message_with_hash ( const crypto::hash hash) const
private

◆ check_auto_config_token()

bool mms::message_store::check_auto_config_token ( const std::string &  raw_token,
std::string &  adjusted_token 
) const

◆ check_for_messages()

bool mms::message_store::check_for_messages ( const multisig_wallet_state state,
std::vector< message > &  messages 
)

◆ create_auto_config_token()

std::string mms::message_store::create_auto_config_token ( )
private

◆ decrypt()

void mms::message_store::decrypt ( const std::string &  ciphertext,
const crypto::public_key encryption_public_key,
const crypto::chacha_iv &  iv,
const crypto::secret_key view_secret_key,
std::string &  plaintext 
)
private

◆ delete_all_messages()

void mms::message_store::delete_all_messages ( )

◆ delete_message()

void mms::message_store::delete_message ( uint32_t  id)

◆ delete_transport_message()

void mms::message_store::delete_transport_message ( uint32_t  id)
private

◆ encrypt()

void mms::message_store::encrypt ( crypto::public_key  public_key,
const std::string &  plaintext,
std::string &  ciphertext,
crypto::public_key encryption_public_key,
crypto::chacha_iv &  iv 
)
private

◆ get_active()

bool mms::message_store::get_active ( ) const
inline

◆ get_all_messages()

const std::vector<message>& mms::message_store::get_all_messages ( ) const
inline

◆ get_all_signers()

const std::vector<authorized_signer>& mms::message_store::get_all_signers ( ) const
inline

◆ get_auto_send()

bool mms::message_store::get_auto_send ( ) const
inline

◆ get_message_by_id() [1/2]

message mms::message_store::get_message_by_id ( uint32_t  id) const

◆ get_message_by_id() [2/2]

bool mms::message_store::get_message_by_id ( uint32_t  id,
message m 
) const

◆ get_message_index_by_id() [1/2]

size_t mms::message_store::get_message_index_by_id ( uint32_t  id) const
private

◆ get_message_index_by_id() [2/2]

bool mms::message_store::get_message_index_by_id ( uint32_t  id,
size_t &  index 
) const
private

◆ get_message_ref_by_id()

message & mms::message_store::get_message_ref_by_id ( uint32_t  id)
private

◆ get_num_authorized_signers()

uint32_t mms::message_store::get_num_authorized_signers ( ) const
inline

◆ get_num_required_signers()

uint32_t mms::message_store::get_num_required_signers ( ) const
inline

◆ get_other_signers_id_count()

size_t mms::message_store::get_other_signers_id_count ( const std::vector< uint32_t > &  ids) const
private

◆ get_processable_messages()

bool mms::message_store::get_processable_messages ( const multisig_wallet_state state,
bool  force_sync,
std::vector< processing_data > &  data_list,
std::string &  wait_reason 
)

◆ get_sanitized_message_text()

void mms::message_store::get_sanitized_message_text ( const message m,
std::string &  sanitized_text 
) const

◆ get_signer()

const authorized_signer & mms::message_store::get_signer ( uint32_t  index) const

◆ get_signer_config()

void mms::message_store::get_signer_config ( std::string &  signer_config)

◆ get_signer_index_by_etn_address()

bool mms::message_store::get_signer_index_by_etn_address ( const cryptonote::account_public_address etn_address,
uint32_t &  index 
) const

◆ get_signer_index_by_label()

bool mms::message_store::get_signer_index_by_label ( const std::string  label,
uint32_t &  index 
) const

◆ init()

void mms::message_store::init ( const multisig_wallet_state state,
const std::string &  own_label,
const std::string &  own_transport_address,
uint32_t  num_authorized_signers,
uint32_t  num_required_signers 
)

◆ init_options()

void mms::message_store::init_options ( boost::program_options::options_description &  desc_params)
static

◆ message_direction_to_string()

const char * mms::message_store::message_direction_to_string ( message_direction  direction)
static

◆ message_ids_complete()

bool mms::message_store::message_ids_complete ( const std::vector< uint32_t > &  ids) const
private

◆ message_state_to_string()

const char * mms::message_store::message_state_to_string ( message_state  state)
static

◆ message_type_to_string()

const char * mms::message_store::message_type_to_string ( message_type  type)
static

◆ process_auto_config_data_message()

void mms::message_store::process_auto_config_data_message ( uint32_t  id)

◆ process_signer_config()

void mms::message_store::process_signer_config ( const multisig_wallet_state state,
const std::string &  signer_config 
)

◆ process_wallet_created_data()

void mms::message_store::process_wallet_created_data ( const multisig_wallet_state state,
message_type  type,
const std::string &  content 
)

◆ read_from_file()

void mms::message_store::read_from_file ( const multisig_wallet_state state,
const std::string &  filename 
)

◆ save()

void mms::message_store::save ( const multisig_wallet_state state)
private

◆ send_message()

void mms::message_store::send_message ( const multisig_wallet_state state,
uint32_t  id 
)

◆ serialize()

template<class t_archive >
void mms::message_store::serialize ( t_archive &  a,
const unsigned int  ver 
)
inline

◆ set_active()

void mms::message_store::set_active ( bool  active)
inline

◆ set_auto_send()

void mms::message_store::set_auto_send ( bool  auto_send)
inline

◆ set_message_processed_or_sent()

void mms::message_store::set_message_processed_or_sent ( uint32_t  id)

◆ set_messages_processed()

void mms::message_store::set_messages_processed ( const processing_data data)

◆ set_options() [1/2]

void mms::message_store::set_options ( const boost::program_options::variables_map &  vm)

◆ set_options() [2/2]

void mms::message_store::set_options ( const std::string &  bitmessage_address,
const epee::wipeable_string &  bitmessage_login 
)

◆ set_signer()

void mms::message_store::set_signer ( const multisig_wallet_state state,
uint32_t  index,
const boost::optional< std::string > &  label,
const boost::optional< std::string > &  transport_address,
const boost::optional< cryptonote::account_public_address etn_address 
)

◆ setup_signer_for_auto_config()

void mms::message_store::setup_signer_for_auto_config ( uint32_t  index,
const std::string  token,
bool  receiving 
)
private

◆ signer_config_complete()

bool mms::message_store::signer_config_complete ( ) const

◆ signer_labels_complete()

bool mms::message_store::signer_labels_complete ( ) const

◆ signer_to_string()

std::string mms::message_store::signer_to_string ( const authorized_signer signer,
uint32_t  max_width 
)

◆ start_auto_config()

void mms::message_store::start_auto_config ( const multisig_wallet_state state)

◆ stop()

void mms::message_store::stop ( )
inline

◆ stop_auto_config()

void mms::message_store::stop_auto_config ( )

◆ tr()

static const char* mms::message_store::tr ( const char *  str)
inlinestatic

◆ unpack_signer_config()

void mms::message_store::unpack_signer_config ( const multisig_wallet_state state,
const std::string &  signer_config,
std::vector< authorized_signer > &  signers 
)

◆ write_to_file()

void mms::message_store::write_to_file ( const multisig_wallet_state state,
const std::string &  filename 
)

Member Data Documentation

◆ m_active

bool mms::message_store::m_active
private

◆ m_auto_send

bool mms::message_store::m_auto_send
private

◆ m_filename

std::string mms::message_store::m_filename
private

◆ m_messages

std::vector<message> mms::message_store::m_messages
private

◆ m_nettype

cryptonote::network_type mms::message_store::m_nettype
private

◆ m_next_message_id

uint32_t mms::message_store::m_next_message_id
private

◆ m_num_authorized_signers

uint32_t mms::message_store::m_num_authorized_signers
private

◆ m_num_required_signers

uint32_t mms::message_store::m_num_required_signers
private

◆ m_run

std::atomic<bool> mms::message_store::m_run
private

◆ m_signers

std::vector<authorized_signer> mms::message_store::m_signers
private

◆ m_transporter

message_transporter mms::message_store::m_transporter
private

The documentation for this class was generated from the following files: