Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:mia
monero-gui
monero-9462-fix-boost-1.85.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File monero-9462-fix-boost-1.85.patch of Package monero-gui
diff -ru -x .git monero-gui-orig/monero/CMakeLists.txt monero-gui/monero/CMakeLists.txt --- monero-gui-orig/monero/CMakeLists.txt 2024-09-27 04:25:36.325942792 +0200 +++ monero-gui/monero/CMakeLists.txt 2024-09-27 04:32:47.592287546 +0200 @@ -1077,6 +1077,8 @@ endif() find_package(Boost 1.58 QUIET REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options locale) add_definitions(-DBOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION) +add_definitions(-DBOOST_NO_AUTO_PTR) +add_definitions(-DBOOST_UUID_DISABLE_ALIGNMENT) # This restores UUID's std::has_unique_object_representations property set(CMAKE_FIND_LIBRARY_SUFFIXES ${OLD_LIB_SUFFIXES}) if(NOT Boost_FOUND) diff -ru -x .git monero-gui-orig/monero/contrib/epee/include/serialization/keyvalue_serialization.h monero-gui/monero/contrib/epee/include/serialization/keyvalue_serialization.h --- monero-gui-orig/monero/contrib/epee/include/serialization/keyvalue_serialization.h 2024-09-27 04:25:36.365943692 +0200 +++ monero-gui/monero/contrib/epee/include/serialization/keyvalue_serialization.h 2024-09-27 04:32:47.592287546 +0200 @@ -98,16 +98,18 @@ #define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name) \ epee::serialization::selector<is_store>::serialize_t_val_as_blob(this_ref.varialble, stg, hparent_section, val_name); -#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, val_name) \ - static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \ - KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name) +#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(variable, val_name) \ + static_assert(std::is_trivially_copyable<decltype(this_ref.variable)>(), "t_type must be a trivially copyable type."); \ + static_assert(std::is_standard_layout<decltype(this_ref.variable)>(), "t_type must be a standard layout type."); \ + KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(variable, val_name) -#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, val_name, default_value) \ +#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(variable, val_name, default_value) \ do { \ - static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \ - bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name); \ + static_assert(std::is_trivially_copyable<decltype(this_ref.variable)>(), "t_type must be a trivially copyable type."); \ + static_assert(std::is_standard_layout<decltype(this_ref.variable)>(), "t_type must be a standard layout type."); \ + bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(variable, val_name) \ if (!ret) \ - epee::serialize_default(this_ref.varialble, default_value); \ + epee::serialize_default(this_ref.variable, default_value); \ } while(0); #define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, val_name) \ @@ -118,7 +120,7 @@ #define KV_SERIALIZE(varialble) KV_SERIALIZE_N(varialble, #varialble) #define KV_SERIALIZE_VAL_POD_AS_BLOB(varialble) KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, #varialble) #define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT(varialble, def) KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, #varialble, def) -#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(varialble) KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, #varialble) //skip is_pod compile time check +#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(varialble) KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, #varialble) //skip is_trivially_copyable and is_standard_layout compile time check #define KV_SERIALIZE_CONTAINER_POD_AS_BLOB(varialble) KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, #varialble) #define KV_SERIALIZE_OPT(variable,default_value) KV_SERIALIZE_OPT_N(variable, #variable, default_value) diff -ru -x .git monero-gui-orig/monero/contrib/epee/include/span.h monero-gui/monero/contrib/epee/include/span.h --- monero-gui-orig/monero/contrib/epee/include/span.h 2024-09-27 04:25:36.365943692 +0200 +++ monero-gui/monero/contrib/epee/include/span.h 2024-09-27 04:32:47.592287546 +0200 @@ -133,17 +133,14 @@ return {src.data(), src.size()}; } - template<typename T> - constexpr bool has_padding() noexcept - { - return !std::is_standard_layout<T>() || alignof(T) != 1; - } - //! \return Cast data from `src` as `span<const std::uint8_t>`. template<typename T> span<const std::uint8_t> to_byte_span(const span<const T> src) noexcept { - static_assert(!has_padding<T>(), "source type may have padding"); + static_assert(!std::is_empty<T>(), "empty value types will not work -> sizeof == 1"); + static_assert(std::is_standard_layout<T>(), "type must have standard layout"); + static_assert(std::is_trivially_copyable<T>(), "type must be trivially copyable"); + static_assert(alignof(T) == 1, "type may have padding"); return {reinterpret_cast<const std::uint8_t*>(src.data()), src.size_bytes()}; } @@ -153,7 +150,9 @@ { using value_type = typename T::value_type; static_assert(!std::is_empty<value_type>(), "empty value types will not work -> sizeof == 1"); - static_assert(!has_padding<value_type>(), "source value type may have padding"); + static_assert(std::is_standard_layout<value_type>(), "value type must have standard layout"); + static_assert(std::is_trivially_copyable<value_type>(), "value type must be trivially copyable"); + static_assert(alignof(value_type) == 1, "value type may have padding"); return {reinterpret_cast<std::uint8_t*>(src.data()), src.size() * sizeof(value_type)}; } @@ -162,7 +161,9 @@ span<const std::uint8_t> as_byte_span(const T& src) noexcept { static_assert(!std::is_empty<T>(), "empty types will not work -> sizeof == 1"); - static_assert(!has_padding<T>(), "source type may have padding"); + static_assert(std::is_standard_layout<T>(), "type must have standard layout"); + static_assert(std::is_trivially_copyable<T>(), "type must be trivially copyable"); + static_assert(alignof(T) == 1, "type may have padding"); return {reinterpret_cast<const std::uint8_t*>(std::addressof(src)), sizeof(T)}; } @@ -171,7 +172,9 @@ span<std::uint8_t> as_mut_byte_span(T& src) noexcept { static_assert(!std::is_empty<T>(), "empty types will not work -> sizeof == 1"); - static_assert(!has_padding<T>(), "source type may have padding"); + static_assert(std::is_standard_layout<T>(), "type must have standard layout"); + static_assert(std::is_trivially_copyable<T>(), "type must be trivially copyable"); + static_assert(alignof(T) == 1, "type may have padding"); return {reinterpret_cast<std::uint8_t*>(std::addressof(src)), sizeof(T)}; } diff -ru -x .git monero-gui-orig/monero/contrib/epee/include/string_tools.h monero-gui/monero/contrib/epee/include/string_tools.h --- monero-gui-orig/monero/contrib/epee/include/string_tools.h 2024-09-27 04:25:36.365943692 +0200 +++ monero-gui/monero/contrib/epee/include/string_tools.h 2024-09-27 04:32:47.592287546 +0200 @@ -91,6 +91,7 @@ std::string pod_to_hex(const t_pod_type& s) { static_assert(std::is_standard_layout<t_pod_type>(), "expected standard layout type"); + static_assert(alignof(t_pod_type) == 1, "type may have padding"); return to_hex::string(as_byte_span(s)); } //---------------------------------------------------------------------------- @@ -98,6 +99,8 @@ bool hex_to_pod(const boost::string_ref hex_str, t_pod_type& s) { static_assert(std::is_standard_layout<t_pod_type>(), "expected standard layout type"); + static_assert(alignof(t_pod_type) == 1, "type may have padding"); + static_assert(std::is_trivially_copyable<t_pod_type>(), "type must be trivially copyable"); return from_hex::to_buffer(as_mut_byte_span(s), hex_str); } //---------------------------------------------------------------------------- diff -ru -x .git monero-gui-orig/monero/src/crypto/crypto.h monero-gui/monero/src/crypto/crypto.h --- monero-gui-orig/monero/src/crypto/crypto.h 2024-09-27 04:25:36.379277322 +0200 +++ monero-gui/monero/src/crypto/crypto.h 2024-09-27 04:32:47.592287546 +0200 @@ -171,7 +171,9 @@ /* Generate a value filled with random bytes. */ template<typename T> - typename std::enable_if<std::is_pod<T>::value, T>::type rand() { + T rand() { + static_assert(std::is_standard_layout<T>(), "cannot write random bytes into non-standard layout type"); + static_assert(std::is_trivially_copyable<T>(), "cannot write random bytes into non-trivially copyable type"); typename std::remove_cv<T>::type res; generate_random_bytes_thread_safe(sizeof(T), (uint8_t*)&res); return res; @@ -314,8 +316,14 @@ inline std::ostream &operator <<(std::ostream &o, const crypto::public_key &v) { epee::to_hex::formatted(o, epee::as_byte_span(v)); return o; } - inline std::ostream &operator <<(std::ostream &o, const crypto::secret_key &v) { - epee::to_hex::formatted(o, epee::as_byte_span(v)); return o; + /* Do NOT overload the << operator for crypto::secret_key here. Use secret_key_explicit_print_ref + * instead to prevent accidental implicit dumping of secret key material to the logs (which has + * happened before). For the same reason, do not overload it for crypto::ec_scalar either since + * crypto::secret_key is a subclass. I'm not sorry that it's obtuse; that's the point, bozo. + */ + struct secret_key_explicit_print_ref { const crypto::secret_key &sk; }; + inline std::ostream &operator <<(std::ostream &o, const secret_key_explicit_print_ref v) { + epee::to_hex::formatted(o, epee::as_byte_span(unwrap(unwrap(v.sk)))); return o; } inline std::ostream &operator <<(std::ostream &o, const crypto::key_derivation &v) { epee::to_hex::formatted(o, epee::as_byte_span(v)); return o; diff -ru -x .git monero-gui-orig/monero/src/cryptonote_basic/cryptonote_format_utils.cpp monero-gui/monero/src/cryptonote_basic/cryptonote_format_utils.cpp --- monero-gui-orig/monero/src/cryptonote_basic/cryptonote_format_utils.cpp 2024-09-27 04:25:36.389277547 +0200 +++ monero-gui/monero/src/cryptonote_basic/cryptonote_format_utils.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -292,7 +292,7 @@ bool r = hwdev.generate_key_derivation(tx_public_key, ack.m_view_secret_key, recv_derivation); if (!r) { - MWARNING("key image helper: failed to generate_key_derivation(" << tx_public_key << ", " << ack.m_view_secret_key << ")"); + MWARNING("key image helper: failed to generate_key_derivation(" << tx_public_key << ", <viewkey>)"); memcpy(&recv_derivation, rct::identity().bytes, sizeof(recv_derivation)); } @@ -303,7 +303,7 @@ r = hwdev.generate_key_derivation(additional_tx_public_keys[i], ack.m_view_secret_key, additional_recv_derivation); if (!r) { - MWARNING("key image helper: failed to generate_key_derivation(" << additional_tx_public_keys[i] << ", " << ack.m_view_secret_key << ")"); + MWARNING("key image helper: failed to generate_key_derivation(" << additional_tx_public_keys[i] << ", <viewkey>)"); } else { diff -ru -x .git monero-gui-orig/monero/src/cryptonote_core/cryptonote_tx_utils.cpp monero-gui/monero/src/cryptonote_core/cryptonote_tx_utils.cpp --- monero-gui-orig/monero/src/cryptonote_core/cryptonote_tx_utils.cpp 2024-09-27 04:25:36.392610955 +0200 +++ monero-gui/monero/src/cryptonote_core/cryptonote_tx_utils.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -144,7 +144,7 @@ crypto::key_derivation derivation = AUTO_VAL_INIT(derivation); crypto::public_key out_eph_public_key = AUTO_VAL_INIT(out_eph_public_key); bool r = crypto::generate_key_derivation(miner_address.m_view_public_key, txkey.sec, derivation); - CHECK_AND_ASSERT_MES(r, false, "while creating outs: failed to generate_key_derivation(" << miner_address.m_view_public_key << ", " << txkey.sec << ")"); + CHECK_AND_ASSERT_MES(r, false, "while creating outs: failed to generate_key_derivation(" << miner_address.m_view_public_key << ", " << crypto::secret_key_explicit_print_ref{txkey.sec} << ")"); r = crypto::derive_public_key(derivation, no, miner_address.m_spend_public_key, out_eph_public_key); CHECK_AND_ASSERT_MES(r, false, "while creating outs: failed to derive_public_key(" << derivation << ", " << no << ", "<< miner_address.m_spend_public_key << ")"); @@ -484,7 +484,7 @@ crypto::generate_ring_signature(tx_prefix_hash, boost::get<txin_to_key>(tx.vin[i]).k_image, keys_ptrs, in_contexts[i].in_ephemeral.sec, src_entr.real_output, sigs.data()); ss_ring_s << "signatures:" << ENDL; std::for_each(sigs.begin(), sigs.end(), [&](const crypto::signature& s){ss_ring_s << s << ENDL;}); - ss_ring_s << "prefix_hash:" << tx_prefix_hash << ENDL << "in_ephemeral_key: " << in_contexts[i].in_ephemeral.sec << ENDL << "real_output: " << src_entr.real_output << ENDL; + ss_ring_s << "prefix_hash:" << tx_prefix_hash << ENDL << "in_ephemeral_key: " << crypto::secret_key_explicit_print_ref{in_contexts[i].in_ephemeral.sec} << ENDL << "real_output: " << src_entr.real_output << ENDL; i++; } diff -ru -x .git monero-gui-orig/monero/src/cryptonote_protocol/block_queue.cpp monero-gui/monero/src/cryptonote_protocol/block_queue.cpp --- monero-gui-orig/monero/src/cryptonote_protocol/block_queue.cpp 2024-09-27 04:25:36.392610955 +0200 +++ monero-gui/monero/src/cryptonote_protocol/block_queue.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -40,15 +40,6 @@ #undef MONERO_DEFAULT_LOG_CATEGORY #define MONERO_DEFAULT_LOG_CATEGORY "cn.block_queue" -namespace std { - static_assert(sizeof(size_t) <= sizeof(boost::uuids::uuid), "boost::uuids::uuid too small"); - template<> struct hash<boost::uuids::uuid> { - std::size_t operator()(const boost::uuids::uuid &_v) const { - return reinterpret_cast<const std::size_t &>(_v); - } - }; -} - namespace cryptonote { @@ -472,7 +463,7 @@ float block_queue::get_speed(const boost::uuids::uuid &connection_id) const { boost::unique_lock<boost::recursive_mutex> lock(mutex); - std::unordered_map<boost::uuids::uuid, float> speeds; + std::unordered_map<boost::uuids::uuid, float, boost::hash<boost::uuids::uuid>> speeds; for (const auto &span: blocks) { if (span.blocks.empty()) @@ -480,7 +471,7 @@ // note that the average below does not average over the whole set, but over the // previous pseudo average and the latest rate: this gives much more importance // to the latest measurements, which is fine here - std::unordered_map<boost::uuids::uuid, float>::iterator i = speeds.find(span.connection_id); + const auto i = speeds.find(span.connection_id); if (i == speeds.end()) speeds.insert(std::make_pair(span.connection_id, span.rate)); else diff -ru -x .git monero-gui-orig/monero/src/device/device_default.cpp monero-gui/monero/src/device/device_default.cpp --- monero-gui-orig/monero/src/device/device_default.cpp 2024-09-27 04:25:36.395944363 +0200 +++ monero-gui/monero/src/device/device_default.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -317,13 +317,15 @@ { // sending change to yourself; derivation = a*R r = generate_key_derivation(txkey_pub, sender_account_keys.m_view_secret_key, derivation); - CHECK_AND_ASSERT_MES(r, false, "at creation outs: failed to generate_key_derivation(" << txkey_pub << ", " << sender_account_keys.m_view_secret_key << ")"); + CHECK_AND_ASSERT_MES(r, false, "at creation outs: failed to generate_key_derivation(" << txkey_pub << ", <viewkey>)"); } else { // sending to the recipient; derivation = r*A (or s*C in the subaddress scheme) - r = generate_key_derivation(dst_entr.addr.m_view_public_key, dst_entr.is_subaddress && need_additional_txkeys ? additional_txkey.sec : tx_key, derivation); - CHECK_AND_ASSERT_MES(r, false, "at creation outs: failed to generate_key_derivation(" << dst_entr.addr.m_view_public_key << ", " << (dst_entr.is_subaddress && need_additional_txkeys ? additional_txkey.sec : tx_key) << ")"); + const crypto::secret_key &tx_privkey{dst_entr.is_subaddress && need_additional_txkeys ? additional_txkey.sec : tx_key}; + r = generate_key_derivation(dst_entr.addr.m_view_public_key, tx_privkey, derivation); + CHECK_AND_ASSERT_MES(r, false, "at creation outs: failed to generate_key_derivation(" + << dst_entr.addr.m_view_public_key << ", " << crypto::secret_key_explicit_print_ref{tx_privkey} << ")"); } if (need_additional_txkeys) diff -ru -x .git monero-gui-orig/monero/src/lmdb/util.h monero-gui/monero/src/lmdb/util.h --- monero-gui-orig/monero/src/lmdb/util.h 2024-09-27 04:25:36.395944363 +0200 +++ monero-gui/monero/src/lmdb/util.h 2024-09-27 04:32:47.592287546 +0200 @@ -127,7 +127,7 @@ /*! A LMDB comparison function that uses `std::memcmp`. - \toaram T is `!epee::has_padding` + \toaram T has standard layout and an alignment of 1 \tparam offset to `T` within the value. \return The result of `std::memcmp` over the value. @@ -135,7 +135,7 @@ template<typename T, std::size_t offset = 0> inline int compare(MDB_val const* left, MDB_val const* right) noexcept { - static_assert(!epee::has_padding<T>(), "memcmp will not work"); + static_assert(std::is_standard_layout<T>() && alignof(T) == 1, "memcmp will not work"); if (!left || !right || left->mv_size < sizeof(T) + offset || right->mv_size < sizeof(T) + offset) { assert("invalid use of custom comparison" == 0); diff -ru -x .git monero-gui-orig/monero/src/simplewallet/simplewallet.cpp monero-gui/monero/src/simplewallet/simplewallet.cpp --- monero-gui-orig/monero/src/simplewallet/simplewallet.cpp 2024-09-27 04:25:36.419278219 +0200 +++ monero-gui/monero/src/simplewallet/simplewallet.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -1979,7 +1979,7 @@ crypto::public_key pkey; crypto::secret_key_to_public_key(m_wallet->get_rpc_client_secret_key(), pkey); message_writer() << tr("RPC client ID: ") << pkey; - message_writer() << tr("RPC client secret key: ") << m_wallet->get_rpc_client_secret_key(); + message_writer() << tr("RPC client secret key: ") << crypto::secret_key_explicit_print_ref{m_wallet->get_rpc_client_secret_key()}; if (!m_wallet->get_rpc_payment_info(false, payment_required, credits, diff, credits_per_hash_found, hashing_blob, height, seed_height, seed_hash, next_seed_hash, cookie)) { fail_msg_writer() << tr("Failed to query daemon"); @@ -8026,9 +8026,9 @@ std::string get_tx_key_stream(crypto::secret_key tx_key, std::vector<crypto::secret_key> additional_tx_keys) { ostringstream oss; - oss << epee::string_tools::pod_to_hex(tx_key); + oss << epee::string_tools::pod_to_hex(unwrap(unwrap(tx_key))); for (size_t i = 0; i < additional_tx_keys.size(); ++i) - oss << epee::string_tools::pod_to_hex(additional_tx_keys[i]); + oss << epee::string_tools::pod_to_hex(unwrap(unwrap(additional_tx_keys[i]))); return oss.str(); } diff -ru -x .git monero-gui-orig/monero/src/wallet/api/wallet.cpp monero-gui/monero/src/wallet/api/wallet.cpp --- monero-gui-orig/monero/src/wallet/api/wallet.cpp 2024-09-27 04:25:36.419278219 +0200 +++ monero-gui/monero/src/wallet/api/wallet.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -881,7 +881,7 @@ std::string WalletImpl::secretViewKey() const { - return epee::string_tools::pod_to_hex(m_wallet->get_account().get_keys().m_view_secret_key); + return epee::string_tools::pod_to_hex(unwrap(unwrap(m_wallet->get_account().get_keys().m_view_secret_key))); } std::string WalletImpl::publicViewKey() const @@ -891,7 +891,7 @@ std::string WalletImpl::secretSpendKey() const { - return epee::string_tools::pod_to_hex(m_wallet->get_account().get_keys().m_spend_secret_key); + return epee::string_tools::pod_to_hex(unwrap(unwrap(m_wallet->get_account().get_keys().m_spend_secret_key))); } std::string WalletImpl::publicSpendKey() const @@ -1878,9 +1878,9 @@ { clearStatus(); std::ostringstream oss; - oss << epee::string_tools::pod_to_hex(tx_key); + oss << epee::string_tools::pod_to_hex(unwrap(unwrap(tx_key))); for (size_t i = 0; i < additional_tx_keys.size(); ++i) - oss << epee::string_tools::pod_to_hex(additional_tx_keys[i]); + oss << epee::string_tools::pod_to_hex(unwrap(unwrap(additional_tx_keys[i]))); return oss.str(); } else diff -ru -x .git monero-gui-orig/monero/src/wallet/wallet2.cpp monero-gui/monero/src/wallet/wallet2.cpp --- monero-gui-orig/monero/src/wallet/wallet2.cpp 2024-09-27 04:25:36.422611628 +0200 +++ monero-gui/monero/src/wallet/wallet2.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -4613,7 +4613,7 @@ original_address = get_account_address_as_str(m_nettype, false, m_original_address); value.SetString(original_address.c_str(), original_address.length()); json.AddMember("original_address", value, json.GetAllocator()); - original_view_secret_key = epee::string_tools::pod_to_hex(m_original_view_secret_key); + original_view_secret_key = epee::string_tools::pod_to_hex(unwrap(unwrap(m_original_view_secret_key))); value.SetString(original_view_secret_key.c_str(), original_view_secret_key.length()); json.AddMember("original_view_secret_key", value, json.GetAllocator()); } @@ -7077,7 +7077,7 @@ cryptonote::COMMAND_RPC_SUBMIT_RAW_TX::request oreq; cryptonote::COMMAND_RPC_SUBMIT_RAW_TX::response ores; oreq.address = get_account().get_public_address_str(m_nettype); - oreq.view_key = string_tools::pod_to_hex(get_account().get_keys().m_view_secret_key); + oreq.view_key = string_tools::pod_to_hex(unwrap(unwrap(get_account().get_keys().m_view_secret_key))); oreq.tx = epee::string_tools::buff_to_hex_nodelimer(tx_to_blob(ptx.tx)); { const boost::lock_guard<boost::recursive_mutex> lock{m_daemon_rpc_mutex}; @@ -10075,7 +10075,7 @@ tools::COMMAND_RPC_LOGIN::request request; tools::COMMAND_RPC_LOGIN::response response; request.address = get_account().get_public_address_str(m_nettype); - request.view_key = string_tools::pod_to_hex(get_account().get_keys().m_view_secret_key); + request.view_key = string_tools::pod_to_hex(unwrap(unwrap(get_account().get_keys().m_view_secret_key))); // Always create account if it doesn't exist. request.create_account = true; m_daemon_rpc_mutex.lock(); @@ -10102,7 +10102,7 @@ MDEBUG("Light wallet import wallet request"); tools::COMMAND_RPC_IMPORT_WALLET_REQUEST::request oreq; oreq.address = get_account().get_public_address_str(m_nettype); - oreq.view_key = string_tools::pod_to_hex(get_account().get_keys().m_view_secret_key); + oreq.view_key = string_tools::pod_to_hex(unwrap(unwrap(get_account().get_keys().m_view_secret_key))); m_daemon_rpc_mutex.lock(); bool r = invoke_http_json("/import_wallet_request", oreq, response, rpc_timeout, "POST"); m_daemon_rpc_mutex.unlock(); @@ -10121,7 +10121,7 @@ oreq.amount = "0"; oreq.address = get_account().get_public_address_str(m_nettype); - oreq.view_key = string_tools::pod_to_hex(get_account().get_keys().m_view_secret_key); + oreq.view_key = string_tools::pod_to_hex(unwrap(unwrap(get_account().get_keys().m_view_secret_key))); // openMonero specific oreq.dust_threshold = boost::lexical_cast<std::string>(::config::DEFAULT_DUST_THRESHOLD); // below are required by openMonero api - but are not used. @@ -10273,7 +10273,7 @@ tools::COMMAND_RPC_GET_ADDRESS_INFO::request request; request.address = get_account().get_public_address_str(m_nettype); - request.view_key = string_tools::pod_to_hex(get_account().get_keys().m_view_secret_key); + request.view_key = string_tools::pod_to_hex(unwrap(unwrap(get_account().get_keys().m_view_secret_key))); m_daemon_rpc_mutex.lock(); bool r = invoke_http_json("/get_address_info", request, response, rpc_timeout, "POST"); m_daemon_rpc_mutex.unlock(); @@ -10290,7 +10290,7 @@ tools::COMMAND_RPC_GET_ADDRESS_TXS::response ires; ireq.address = get_account().get_public_address_str(m_nettype); - ireq.view_key = string_tools::pod_to_hex(get_account().get_keys().m_view_secret_key); + ireq.view_key = string_tools::pod_to_hex(unwrap(unwrap(get_account().get_keys().m_view_secret_key))); m_daemon_rpc_mutex.lock(); bool r = invoke_http_json("/get_address_txs", ireq, ires, rpc_timeout, "POST"); m_daemon_rpc_mutex.unlock(); @@ -10520,7 +10520,7 @@ const account_keys& ack = get_account().get_keys(); crypto::key_derivation derivation; bool r = crypto::generate_key_derivation(tx_public_key, ack.m_view_secret_key, derivation); - CHECK_AND_ASSERT_MES(r, false, "failed to generate_key_derivation(" << tx_public_key << ", " << ack.m_view_secret_key << ")"); + CHECK_AND_ASSERT_MES(r, false, "failed to generate_key_derivation(" << tx_public_key << ", " << crypto::secret_key_explicit_print_ref{ack.m_view_secret_key} << ")"); r = crypto::derive_public_key(derivation, out_index, ack.m_account_address.m_spend_public_key, in_ephemeral.pub); CHECK_AND_ASSERT_MES(r, false, "failed to derive_public_key (" << derivation << ", " << out_index << ", " << ack.m_account_address.m_spend_public_key << ")"); @@ -10528,7 +10528,7 @@ crypto::derive_secret_key(derivation, out_index, ack.m_spend_secret_key, in_ephemeral.sec); crypto::public_key out_pkey_test; r = crypto::secret_key_to_public_key(in_ephemeral.sec, out_pkey_test); - CHECK_AND_ASSERT_MES(r, false, "failed to secret_key_to_public_key(" << in_ephemeral.sec << ")"); + CHECK_AND_ASSERT_MES(r, false, "failed to secret_key_to_public_key(" << crypto::secret_key_explicit_print_ref{in_ephemeral.sec} << ")"); CHECK_AND_ASSERT_MES(in_ephemeral.pub == out_pkey_test, false, "derived secret key doesn't match derived public key"); crypto::generate_key_image(in_ephemeral.pub, in_ephemeral.sec, calculated_key_image); diff -ru -x .git monero-gui-orig/monero/src/wallet/wallet_rpc_server.cpp monero-gui/monero/src/wallet/wallet_rpc_server.cpp --- monero-gui-orig/monero/src/wallet/wallet_rpc_server.cpp 2024-09-27 04:25:36.422611628 +0200 +++ monero-gui/monero/src/wallet/wallet_rpc_server.cpp 2024-09-27 04:32:47.592287546 +0200 @@ -1247,9 +1247,9 @@ res.tx_hash_list.push_back(epee::string_tools::pod_to_hex(cryptonote::get_transaction_hash(ptx.tx))); if (req.get_tx_keys) { - res.tx_key_list.push_back(epee::string_tools::pod_to_hex(ptx.tx_key)); + res.tx_key_list.push_back(epee::string_tools::pod_to_hex(unwrap(unwrap(ptx.tx_key)))); for (const crypto::secret_key& additional_tx_key : ptx.additional_tx_keys) - res.tx_key_list.back() += epee::string_tools::pod_to_hex(additional_tx_key); + res.tx_key_list.back() += epee::string_tools::pod_to_hex(unwrap(unwrap(additional_tx_key))); } } diff -ru -x .git monero-gui-orig/monero/tests/benchmark.cpp monero-gui/monero/tests/benchmark.cpp --- monero-gui-orig/monero/tests/benchmark.cpp 2024-09-27 04:25:36.422611628 +0200 +++ monero-gui/monero/tests/benchmark.cpp 2024-09-27 04:32:47.595620954 +0200 @@ -109,7 +109,7 @@ template<typename T> bool compare(const T& lhs, const T& rhs) noexcept { - static_assert(!epee::has_padding<T>(), "type might have padding"); + static_assert(std::is_standard_layout<T>() && alignof(T) == 1, "type might have padding"); return std::memcmp(std::addressof(lhs), std::addressof(rhs), sizeof(T)) == 0; } diff -ru -x .git monero-gui-orig/monero/tests/core_tests/multisig.cpp monero-gui/monero/tests/core_tests/multisig.cpp --- monero-gui-orig/monero/tests/core_tests/multisig.cpp 2024-09-27 04:25:36.425945036 +0200 +++ monero-gui/monero/tests/core_tests/multisig.cpp 2024-09-27 04:32:47.595620954 +0200 @@ -227,13 +227,13 @@ CHECK_AND_ASSERT_MES(r, false, "Failed to generate multisig export key image"); } MDEBUG("Party " << msidx << ":"); - MDEBUG("spend: sec " << miner_account[msidx].get_keys().m_spend_secret_key << ", pub " << miner_account[msidx].get_keys().m_account_address.m_spend_public_key); - MDEBUG("view: sec " << miner_account[msidx].get_keys().m_view_secret_key << ", pub " << miner_account[msidx].get_keys().m_account_address.m_view_public_key); + MDEBUG("spend: sec " << crypto::secret_key_explicit_print_ref{miner_account[msidx].get_keys().m_spend_secret_key} << ", pub " << miner_account[msidx].get_keys().m_account_address.m_spend_public_key); + MDEBUG("view: sec " << crypto::secret_key_explicit_print_ref{miner_account[msidx].get_keys().m_view_secret_key} << ", pub " << miner_account[msidx].get_keys().m_account_address.m_view_public_key); for (const auto &k: miner_account[msidx].get_multisig_keys()) - MDEBUG("msk: " << k); + MDEBUG("msk: " << crypto::secret_key_explicit_print_ref{k}); for (size_t n = 0; n < account_k[msidx][tdidx].size(); ++n) { - MDEBUG("k: " << account_k[msidx][tdidx][n]); + MDEBUG("k: " << crypto::secret_key_explicit_print_ref{account_k[msidx][tdidx][n]}); MDEBUG("L: " << account_L[msidx][tdidx][n]); MDEBUG("R: " << account_R[msidx][tdidx][n]); } @@ -406,7 +406,7 @@ MDEBUG("signing with k " << k.back()[n]); MDEBUG("signing with sk " << skey); for (const auto &sk: used_keys) - MDEBUG(" created with sk " << sk); + MDEBUG(" created with sk " << crypto::secret_key_explicit_print_ref{sk}); CHECK_AND_ASSERT_MES(signer_tx_builder.next_partial_sign(sig.total_alpha_G, sig.total_alpha_H, k, skey, sig.c_0, sig.s), false, "error: multisig::signing::tx_builder_ringct_t::next_partial_sign"); // in round-robin signing, the last signer finalizes the tx diff -ru -x .git monero-gui-orig/monero/tests/functional_tests/make_test_signature.cc monero-gui/monero/tests/functional_tests/make_test_signature.cc --- monero-gui-orig/monero/tests/functional_tests/make_test_signature.cc 2024-09-27 04:25:36.462612526 +0200 +++ monero-gui/monero/tests/functional_tests/make_test_signature.cc 2024-09-27 04:32:47.595620954 +0200 @@ -48,7 +48,7 @@ crypto::public_key pkey; crypto::random32_unbiased((unsigned char*)skey.data); crypto::secret_key_to_public_key(skey, pkey); - printf("%s %s\n", epee::string_tools::pod_to_hex(skey).c_str(), epee::string_tools::pod_to_hex(pkey).c_str()); + printf("%s %s\n", epee::string_tools::pod_to_hex(unwrap(unwrap(skey))).c_str(), epee::string_tools::pod_to_hex(pkey).c_str()); return 0; } diff -ru -x .git monero-gui-orig/monero/tests/unit_tests/crypto.cpp monero-gui/monero/tests/unit_tests/crypto.cpp --- monero-gui-orig/monero/tests/unit_tests/crypto.cpp 2024-09-27 04:25:36.475946158 +0200 +++ monero-gui/monero/tests/unit_tests/crypto.cpp 2024-09-27 04:32:47.595620954 +0200 @@ -72,10 +72,10 @@ EXPECT_TRUE(is_formatted<crypto::hash8>()); EXPECT_TRUE(is_formatted<crypto::hash>()); EXPECT_TRUE(is_formatted<crypto::public_key>()); - EXPECT_TRUE(is_formatted<crypto::secret_key>()); EXPECT_TRUE(is_formatted<crypto::signature>()); EXPECT_TRUE(is_formatted<crypto::key_derivation>()); EXPECT_TRUE(is_formatted<crypto::key_image>()); + EXPECT_TRUE(is_formatted<rct::key>()); } TEST(Crypto, null_keys) diff -ru -x .git monero-gui-orig/monero/tests/unit_tests/multisig.cpp monero-gui/monero/tests/unit_tests/multisig.cpp --- monero-gui-orig/monero/tests/unit_tests/multisig.cpp 2024-09-27 04:25:36.479279566 +0200 +++ monero-gui/monero/tests/unit_tests/multisig.cpp 2024-09-27 04:32:47.595620954 +0200 @@ -80,7 +80,7 @@ wallet.generate("", "", spendkey, true, false); ASSERT_TRUE(test_addresses[idx].address == wallet.get_account().get_public_address_str(cryptonote::TESTNET)); wallet.decrypt_keys(""); - ASSERT_TRUE(test_addresses[idx].spendkey == epee::string_tools::pod_to_hex(wallet.get_account().get_keys().m_spend_secret_key)); + ASSERT_TRUE(test_addresses[idx].spendkey == epee::string_tools::pod_to_hex(unwrap(unwrap(wallet.get_account().get_keys().m_spend_secret_key)))); wallet.encrypt_keys(""); } catch (const std::exception &e) diff -ru -x .git monero-gui-orig/monero/tests/unit_tests/serialization.cpp monero-gui/monero/tests/unit_tests/serialization.cpp --- monero-gui-orig/monero/tests/unit_tests/serialization.cpp 2024-09-27 04:25:36.479279566 +0200 +++ monero-gui/monero/tests/unit_tests/serialization.cpp 2024-09-27 04:32:47.595620954 +0200 @@ -1103,7 +1103,7 @@ ASSERT_TRUE(ptx.selected_transfers.front() == 2); // ptx.{key_images, tx_key} ASSERT_TRUE(ptx.key_images == "<6c3cd6af97c4070a7aef9b1344e7463e29c7cd245076fdb65da447a34da3ca76> "); - ASSERT_TRUE(epee::string_tools::pod_to_hex(ptx.tx_key) == "0100000000000000000000000000000000000000000000000000000000000000"); + ASSERT_TRUE(epee::string_tools::pod_to_hex(unwrap(unwrap(ptx.tx_key))) == "0100000000000000000000000000000000000000000000000000000000000000"); // ptx.dests ASSERT_TRUE(ptx.dests.size() == 1); ASSERT_TRUE(ptx.dests[0].amount == 1400000000000);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor