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);
279 void set_options(
const boost::program_options::variables_map&
vm);
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);
296 bool signer_config_complete()
const;
297 bool signer_labels_complete()
const;
300 std::vector<authorized_signer> &signers);
304 bool check_auto_config_token(
const std::string &raw_token,
308 void process_auto_config_data_message(
uint32_t id);
310 void stop_auto_config();
330 std::vector<processing_data> &data_list,
340 void set_message_processed_or_sent(
uint32_t id);
342 void delete_all_messages();
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;
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;
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: binary_utils.h:36
#define tr(x)
Definition: common_defines.h:4
std::string magic_string
Definition: message_store.h:217
uint32_t index
Definition: message_store.h:150
uint64_t modified
Definition: message_store.h:110
crypto::secret_key auto_config_secret_key
Definition: message_store.h:153
static int init(int argc, char **argv, struct runtime_vars *v)
Definition: miniupnpd.c:1149
const std::vector< message > & get_all_messages() const
Definition: message_store.h:337
bool multisig_is_ready
Definition: message_store.h:247
uint32_t id
Definition: message_store.h:105
void serialize(t_archive &a, const unsigned int ver)
Definition: message_store.h:353
std::string auto_config_transport_address
Definition: message_store.h:154
message_type type
Definition: message_store.h:106
bool m_auto_send
Definition: message_store.h:389
void init_options(boost::program_options::options_description &hidden_options, boost::program_options::options_description &normal_options)
Definition: posix_daemonizer.inl:56
void save(Archive &a, const std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition: unordered_containers_boost_serialization.h:42
Definition: portable_binary_archive.hpp:29
std::vector< authorized_signer > m_signers
Definition: message_store.h:391
message_state
Definition: message_store.h:78
message_direction
Definition: message_store.h:72
cryptonote::network_type m_nettype
Definition: message_store.h:390
message_type
Definition: message_store.h:60
static const unsigned char iv[64]
Definition: sha512-hash.c:13
::std::string string
Definition: gtest-port.h:1097
const std::vector< authorized_signer > & get_all_signers() const
Definition: message_store.h:295
Definition: message_store.h:199
cryptonote::account_public_address monero_address
Definition: message_store.h:203
Definition: message_store.h:267
Definition: message_transporter.h:83
uint32_t signer_index
Definition: message_store.h:112
const char * text
Definition: minihttptestserver.c:269
std::string label
Definition: message_store.h:145
Definition: message_store.h:143
message_transporter m_transporter
Definition: message_store.h:395
crypto::chacha_iv iv
Definition: message_store.h:219
bool monero_address_known
Definition: message_store.h:147
std::string data
Definition: base58.cpp:37
cryptonote::account_public_address sender_address
Definition: message_store.h:193
uint32_t m_next_message_id
Definition: message_store.h:393
bool me
Definition: message_store.h:149
cryptonote::network_type nettype
Definition: message_store.h:244
std::string label
Definition: message_store.h:201
std::string transport_id
Definition: message_store.h:118
uint32_t m_num_required_signers
Definition: message_store.h:388
const char * i18n_translate(const char *s, const std::string &context)
Definition: i18n.cpp:325
uint32_t m_num_authorized_signers
Definition: message_store.h:387
std::string encrypted_data
Definition: message_store.h:220
std::string m_filename
Definition: message_store.h:394
#define END_SERIALIZE()
self-explanatory
Definition: serialization.h:150
Definition: message_store.h:241
crypto::public_key encryption_public_key
Definition: message_store.h:195
uint32_t wallet_height
Definition: message_store.h:115
const crypto::secret_key null_skey
Definition: crypto.cpp:75
bool has_multisig_partial_key_images
Definition: message_store.h:248
Simple DSL AAPI based on.
std::string transport_address
Definition: message_store.h:146
#define VERSION_FIELD(v)
Definition: serialization.h:220
unsigned int uint32_t
Definition: stdint.h:126
const crypto::public_key null_pkey
Definition: crypto.cpp:74
Definition: message_store.h:103
size_t num_transfer_details
Definition: message_store.h:250
void serialize(Archive &a, unsigned_tx_set &x, const boost::serialization::version_type ver)
Definition: serialization.cpp:898
message_processing processing
Definition: message_store.h:186
std::string auto_config_token
Definition: message_store.h:151
Definition: message_store.h:184
unsigned __int64 uint64_t
Definition: stdint.h:136
#define BEGIN_SERIALIZE_OBJECT()
begins the environment of the DSL for described the serialization of an object
Definition: serialization.h:131
uint32_t multisig_rounds_passed
Definition: message_store.h:249
Definition: message_store.cpp:51
cryptonote::account_public_address monero_address
Definition: message_store.h:148
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
bool multisig
Definition: message_store.h:246
bool m_active
Definition: message_store.h:386
uint32_t get_num_required_signers() const
Definition: message_store.h:283
POD_CLASS public_key
Definition: crypto.h:61
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
const char *const str
Definition: portlistingparse.c:23
network_type
Definition: cryptonote_config.h:301
randomx_vm * vm
Definition: tests.cpp:20
uint32_t address
Definition: getifaddr.c:269
std::vector< message > m_messages
Definition: message_store.h:392
Definition: cryptonote_basic.h:511
Definition: blake256.h:36
bool get_auto_send() const
Definition: message_store.h:282
std::string mms_file
Definition: message_store.h:251
#define VARINT_FIELD(f)
tags and serializes the varint f
Definition: serialization.h:189
crypto::secret_key view_secret_key
Definition: message_store.h:245
bool auto_config_running
Definition: message_store.h:155
std::string content
Definition: message_store.h:108
epee::byte_slice active
Definition: levin_notify.cpp:257
message internal_message
Definition: message_store.h:196
crypto::chacha_iv iv
Definition: message_store.h:194
Definition: wipeable_string.h:40
Definition: multisig.cpp:45
BOOST_CLASS_VERSION(nodetool::peerlist_types, nodetool::CURRENT_PEERLIST_STORAGE_ARCHIVE_VER)
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
uint32_t signature_count
Definition: message_store.h:117
bool get_active() const
Definition: message_store.h:281
uint32_t get_num_authorized_signers() const
Definition: message_store.h:284
std::vector< uint32_t > message_ids
Definition: message_store.h:187
POD_CLASS hash
Definition: hash.h:49
uint64_t created
Definition: message_store.h:109
crypto::hash hash
Definition: message_store.h:113
message_processing
Definition: message_store.h:89
std::atomic< bool > m_run
Definition: message_store.h:396
Definition: message_store.h:215
std::string transport_address
Definition: message_store.h:202
void stop()
Definition: message_store.h:347
#define FIELD(f)
tags the field with the variable name and then serializes it
Definition: serialization.h:169
Definition: message_store.h:191
message_state state
Definition: message_store.h:114
void set_active(bool active)
Definition: message_store.h:277
uint32_t round
Definition: message_store.h:116
void set_auto_send(bool auto_send)
Definition: message_store.h:278
message_direction direction
Definition: message_store.h:107
tuple message
Definition: gtest_output_test.py:331
#define const
Definition: ipfrdr.c:80
uint32_t file_version
Definition: message_store.h:218
crypto::public_key auto_config_public_key
Definition: message_store.h:152
uint64_t sent
Definition: message_store.h:111
cryptonote::account_public_address address
Definition: message_store.h:243