36#include <boost/serialization/vector.hpp>
37#include <boost/program_options/variables_map.hpp>
38#include <boost/program_options/options_description.hpp>
39#include <boost/optional/optional.hpp>
53#undef MONERO_DEFAULT_LOG_CATEGORY
54#define MONERO_DEFAULT_LOG_CATEGORY "wallet.mms"
55#define AUTO_CONFIG_TOKEN_BYTES 4
56#define AUTO_CONFIG_TOKEN_PREFIX "mms"
160 FIELD(transport_address)
161 FIELD(monero_address_known)
162 FIELD(monero_address)
165 FIELD(auto_config_token)
166 FIELD(auto_config_public_key)
167 FIELD(auto_config_secret_key)
168 FIELD(auto_config_transport_address)
169 FIELD(auto_config_running)
174 monero_address_known =
false;
180 auto_config_running =
false;
194 crypto::chacha_iv
iv;
208 FIELD(transport_address)
209 FIELD(monero_address)
219 crypto::chacha_iv
iv;
226 FIELD(encrypted_data)
257 FIELD(view_secret_key)
259 FIELD(multisig_is_ready)
260 FIELD(has_multisig_partial_key_images)
270 message_store(std::unique_ptr<epee::net_utils::http::abstract_http_client> http_client);
276 const std::string &own_transport_address,
uint32_t num_authorized_signers,
uint32_t num_required_signers);
279 void set_options(
const boost::program_options::variables_map&
vm);
280 void set_options(
const std::string &bitmessage_address,
const epee::wipeable_string &bitmessage_login);
288 const boost::optional<std::string> &label,
289 const boost::optional<std::string> &transport_address,
290 const boost::optional<cryptonote::account_public_address> monero_address);
294 bool get_signer_index_by_label(
const std::string label,
uint32_t &index)
const;
296 bool signer_config_complete()
const;
297 bool signer_labels_complete()
const;
298 void get_signer_config(std::string &signer_config);
300 std::vector<authorized_signer> &signers);
304 bool check_auto_config_token(
const std::string &raw_token,
305 std::string &adjusted_token)
const;
307 const std::string &auto_config_token);
308 void process_auto_config_data_message(
uint32_t id);
309 std::string get_config_checksum()
const;
310 void stop_auto_config();
330 std::vector<processing_data> &data_list,
331 std::string &wait_reason);
336 const std::string &content);
340 void set_message_processed_or_sent(
uint32_t id);
342 void delete_all_messages();
343 static std::string get_sanitized_text(
const std::string &
text,
size_t max_length);
347 void stop() { m_run.store(
false, std::memory_order_relaxed); m_transporter.stop(); }
352 template <
class t_archive>
356 a & m_num_authorized_signers;
358 a & m_num_required_signers;
361 a & m_next_message_id;
383 static void init_options(boost::program_options::options_description& desc_params);
398 bool get_message_index_by_id(
uint32_t id,
size_t &index)
const;
399 size_t get_message_index_by_id(
uint32_t id)
const;
402 bool any_message_with_hash(
const crypto::hash &hash)
const;
403 size_t get_other_signers_id_count(
const std::vector<uint32_t> &ids)
const;
404 bool message_ids_complete(
const std::vector<uint32_t> &ids)
const;
409 std::string create_auto_config_token();
410 void setup_signer_for_auto_config(
uint32_t index,
const std::string token,
bool receiving);
411 void delete_transport_message(
uint32_t id);
428 template <
class Archive>
437 template <
class Archive>
456 template <
class Archive>
476 template <
class Archive>
484 template <
class Archive>
493 template <
class Archive>
494 inline void serialize(Archive &
a, crypto::chacha_iv &x,
const boost::serialization::version_type ver)
Definition wipeable_string.h:41
Definition message_store.h:268
std::vector< authorized_signer > m_signers
Definition message_store.h:391
uint32_t m_num_authorized_signers
Definition message_store.h:387
void set_active(bool active)
Definition message_store.h:277
bool get_auto_send() const
Definition message_store.h:282
uint32_t m_next_message_id
Definition message_store.h:393
void stop()
Definition message_store.h:347
uint32_t m_num_required_signers
Definition message_store.h:388
std::string m_filename
Definition message_store.h:394
uint32_t get_num_required_signers() const
Definition message_store.h:283
bool m_auto_send
Definition message_store.h:389
void set_auto_send(bool auto_send)
Definition message_store.h:278
cryptonote::network_type m_nettype
Definition message_store.h:390
uint32_t get_num_authorized_signers() const
Definition message_store.h:284
bool m_active
Definition message_store.h:386
bool get_active() const
Definition message_store.h:281
std::atomic< bool > m_run
Definition message_store.h:396
const std::vector< message > & get_all_messages() const
Definition message_store.h:337
void serialize(t_archive &a, const unsigned int ver)
Definition message_store.h:353
std::vector< message > m_messages
Definition message_store.h:392
const std::vector< authorized_signer > & get_all_signers() const
Definition message_store.h:295
message_transporter m_transporter
Definition message_store.h:395
Definition message_transporter.h:84
#define tr(x)
Definition common_defines.h:4
const char * i18n_translate(const char *s, const std::string &context)
Definition i18n.cpp:325
#define const
Definition ipfrdr.c:80
epee::byte_slice active
Definition levin_notify.cpp:257
static void init()
Definition logging.cpp:42
const char * text
Definition minihttptestserver.c:269
uint32_t address
Definition getifaddr.c:269
Definition portable_binary_archive.hpp:29
const crypto::public_key null_pkey
Definition crypto.cpp:74
const crypto::secret_key null_skey
Definition crypto.cpp:75
POD_CLASS public_key
Definition crypto.h:64
POD_CLASS hash
Definition hash.h:49
network_type
Definition cryptonote_config.h:302
Definition message_store.cpp:52
message_direction
Definition message_store.h:73
message_state
Definition message_store.h:79
message_processing
Definition message_store.h:90
@ process_auto_config_data
message_type
Definition message_store.h:61
Definition multisig.cpp:46
Definition binary_utils.h:36
BOOST_CLASS_VERSION(nodetool::peerlist_types, nodetool::CURRENT_PEERLIST_STORAGE_ARCHIVE_VER)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1124
const char *const str
Definition portlistingparse.c:23
void serialize(Archive &a, unsigned_tx_set &x, const boost::serialization::version_type ver)
Definition serialization.cpp:898
Simple DSL AAPI based on.
#define BEGIN_SERIALIZE_OBJECT()
begins the environment of the DSL \detailed for described the serialization of an object
Definition serialization.h:131
#define FIELD(f)
tags the field with the variable name and then serializes it
Definition serialization.h:169
#define VERSION_FIELD(v)
Definition serialization.h:220
#define END_SERIALIZE()
self-explanatory
Definition serialization.h:150
#define VARINT_FIELD(f)
tags and serializes the varint f
Definition serialization.h:189
static const unsigned char iv[64]
Definition sha512-hash.c:13
static std::string decrypt(const std::string &ciphertext, const crypto::key_image &key_image, const crypto::chacha_key &key, uint8_t field)
Definition ringdb.cpp:136
static std::string encrypt(const std::string &plaintext, const crypto::key_image &key_image, const crypto::chacha_key &key, uint8_t field)
Definition ringdb.cpp:121
unsigned int uint32_t
Definition stdint.h:126
unsigned __int64 uint64_t
Definition stdint.h:136
Definition cryptonote_basic.h:512
Definition message_store.h:144
cryptonote::account_public_address monero_address
Definition message_store.h:148
crypto::secret_key auto_config_secret_key
Definition message_store.h:153
bool me
Definition message_store.h:149
bool auto_config_running
Definition message_store.h:155
std::string transport_address
Definition message_store.h:146
std::string label
Definition message_store.h:145
uint32_t index
Definition message_store.h:150
std::string auto_config_token
Definition message_store.h:151
bool monero_address_known
Definition message_store.h:147
crypto::public_key auto_config_public_key
Definition message_store.h:152
std::string auto_config_transport_address
Definition message_store.h:154
Definition message_store.h:200
std::string label
Definition message_store.h:201
std::string transport_address
Definition message_store.h:202
cryptonote::account_public_address monero_address
Definition message_store.h:203
Definition message_store.h:216
std::string magic_string
Definition message_store.h:217
crypto::chacha_iv iv
Definition message_store.h:219
std::string encrypted_data
Definition message_store.h:220
uint32_t file_version
Definition message_store.h:218
Definition message_store.h:192
crypto::chacha_iv iv
Definition message_store.h:194
cryptonote::account_public_address sender_address
Definition message_store.h:193
message internal_message
Definition message_store.h:196
crypto::public_key encryption_public_key
Definition message_store.h:195
Definition message_store.h:104
uint64_t modified
Definition message_store.h:110
uint32_t signer_index
Definition message_store.h:112
uint32_t wallet_height
Definition message_store.h:115
message_state state
Definition message_store.h:114
crypto::hash hash
Definition message_store.h:113
uint32_t round
Definition message_store.h:116
message_type type
Definition message_store.h:106
std::string content
Definition message_store.h:108
uint64_t sent
Definition message_store.h:111
uint32_t id
Definition message_store.h:105
uint64_t created
Definition message_store.h:109
std::string transport_id
Definition message_store.h:118
message_direction direction
Definition message_store.h:107
uint32_t signature_count
Definition message_store.h:117
Definition message_store.h:242
cryptonote::network_type nettype
Definition message_store.h:244
uint32_t multisig_rounds_passed
Definition message_store.h:249
crypto::secret_key view_secret_key
Definition message_store.h:245
size_t num_transfer_details
Definition message_store.h:250
bool has_multisig_partial_key_images
Definition message_store.h:248
bool multisig_is_ready
Definition message_store.h:247
cryptonote::account_public_address address
Definition message_store.h:243
std::string mms_file
Definition message_store.h:251
bool multisig
Definition message_store.h:246
Definition message_store.h:185
std::vector< uint32_t > message_ids
Definition message_store.h:187
message_processing processing
Definition message_store.h:186
std::string data
Definition base58.cpp:37
randomx_vm * vm
Definition tests.cpp:20