From 573a31586e499f0c83c51e379abda054a61e8e88 Mon Sep 17 00:00:00 2001 From: Filip Kobierski Date: Sun, 8 Jun 2025 02:15:39 +0200 Subject: [PATCH] net-p2p/monero: drop 0.18.3.4 Signed-off-by: Filip Kobierski --- net-p2p/monero/Manifest | 1 - ...onero-0.18.3.3-unbundle-dependencies.patch | 102 --- .../files/monero-0.18.3.4-boost-1.85.patch | 585 ------------------ net-p2p/monero/files/monerod.confd | 6 - net-p2p/monero/files/monerod.initd | 23 - net-p2p/monero/monero-0.18.3.4-r1.ebuild | 126 ---- 6 files changed, 843 deletions(-) delete mode 100644 net-p2p/monero/files/monero-0.18.3.3-unbundle-dependencies.patch delete mode 100644 net-p2p/monero/files/monero-0.18.3.4-boost-1.85.patch delete mode 100644 net-p2p/monero/files/monerod.confd delete mode 100644 net-p2p/monero/files/monerod.initd delete mode 100644 net-p2p/monero/monero-0.18.3.4-r1.ebuild diff --git a/net-p2p/monero/Manifest b/net-p2p/monero/Manifest index 900f20ab05..2c51f3fcd3 100644 --- a/net-p2p/monero/Manifest +++ b/net-p2p/monero/Manifest @@ -1,2 +1 @@ -DIST monero-0.18.3.4.tar.gz 14039924 BLAKE2B cb60f1db4f482bac3b3f5fa606bf1c78103b14f927d4636e5fda4aa96dcc08a9f990355ceb1cdc8c253245a0a2a1c98cf4fd7101d13d78ac6e7d1450192fc2db SHA512 f2708bf7698410c1509ae41148c298e352b3401e1df900b7152c25cb5ceb2f5bde68274fd37b1a328e932be50bdf93fe364561c520a15e3df7de2cdbd20d1be8 DIST monero-0.18.4.0.tar.gz 14083573 BLAKE2B 6edd37cf89305dabddf04aa454a605f578276a924f703025b906612438de9dce12c854127b851ae0a71eb4b7aac6c9aa1bb7beb0d6ed311a55c19387117c2ba0 SHA512 6d17654a37d1a3aec37f641a58026a5f602e13836bdc50223ce6bf82ad9be9db2cf5abadd6b7bc963f4bfc0e18aa76298d89050686f6563d0567d2745e0512eb diff --git a/net-p2p/monero/files/monero-0.18.3.3-unbundle-dependencies.patch b/net-p2p/monero/files/monero-0.18.3.3-unbundle-dependencies.patch deleted file mode 100644 index 6cd7e7c3d3..0000000000 --- a/net-p2p/monero/files/monero-0.18.3.3-unbundle-dependencies.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -458,7 +458,7 @@ - # elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*") - # set(BSDI TRUE) - --include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include) -+include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external ) - - if(APPLE) - cmake_policy(SET CMP0042 NEW) -@@ -1201,7 +1201,6 @@ - set(ZMQ_LIB "${ZMQ_LIB};${SODIUM_LIBRARY}") - endif() - --include(external/supercop/functions.cmake) # place after setting flags and before src directory inclusion - add_subdirectory(contrib) - add_subdirectory(src) - ---- a/external/CMakeLists.txt -+++ b/external/CMakeLists.txt -@@ -37,21 +37,7 @@ - - find_package(Miniupnpc REQUIRED) - --message(STATUS "Using in-tree miniupnpc") --set(UPNPC_NO_INSTALL TRUE CACHE BOOL "Disable miniupnp installation" FORCE) --add_subdirectory(miniupnp/miniupnpc) --set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external") --set_property(TARGET libminiupnpc-static PROPERTY POSITION_INDEPENDENT_CODE ON) --if(MSVC) -- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267") --elseif(NOT MSVC) -- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value") --endif() --if(CMAKE_SYSTEM_NAME MATCHES "NetBSD") -- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -D_NETBSD_SOURCE") --endif() -- --set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE) -+set(UPNP_LIBRARIES "miniupnpc" PARENT_SCOPE) - - find_package(Unbound) - -@@ -69,4 +55,3 @@ - add_subdirectory(db_drivers) - add_subdirectory(easylogging++) - add_subdirectory(qrcodegen) --add_subdirectory(randomx EXCLUDE_FROM_ALL) ---- a/src/crypto/CMakeLists.txt -+++ b/src/crypto/CMakeLists.txt -@@ -55,6 +55,7 @@ - endif() - - include_directories(${RANDOMX_INCLUDE}) -+include_directories(SYSTEM /usr/include/monero) - - set(crypto_headers) - -@@ -97,6 +98,3 @@ - # cheat because cmake and ccache hate each other - set_property(SOURCE CryptonightR_template.S PROPERTY LANGUAGE C) - set_property(SOURCE CryptonightR_template.S PROPERTY XCODE_EXPLICIT_FILE_TYPE sourcecode.asm) -- --# Must be done last, because it references libraries in this directory --add_subdirectory(wallet) ---- a/src/crypto/wallet/crypto.h -+++ b/src/crypto/wallet/crypto.h -@@ -30,7 +30,6 @@ - #pragma once - - #include --#include "crypto/wallet/ops.h" - - namespace crypto { - namespace wallet { ---- a/src/device/CMakeLists.txt -+++ b/src/device/CMakeLists.txt -@@ -73,7 +73,7 @@ - cncrypto - cryptonote_format_utils_basic - ringct_basic -- wallet-crypto -+ monero-crypto - ${OPENSSL_CRYPTO_LIBRARIES} - ${Boost_SERIALIZATION_LIBRARY} - PRIVATE ---- a/src/p2p/net_node.inl -+++ b/src/p2p/net_node.inl -@@ -60,9 +60,9 @@ - #include "cryptonote_core/cryptonote_core.h" - #include "net/parse.h" - --#include --#include --#include -+#include -+#include -+#include - - #undef MONERO_DEFAULT_LOG_CATEGORY - #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p" diff --git a/net-p2p/monero/files/monero-0.18.3.4-boost-1.85.patch b/net-p2p/monero/files/monero-0.18.3.4-boost-1.85.patch deleted file mode 100644 index 1e4793bd12..0000000000 --- a/net-p2p/monero/files/monero-0.18.3.4-boost-1.85.patch +++ /dev/null @@ -1,585 +0,0 @@ -From 65568d3a884857ce08d1170f5801a6891a5c187c Mon Sep 17 00:00:00 2001 -From: jeffro256 -Date: Fri, 23 Aug 2024 12:15:17 -0500 -Subject: [PATCH] build: fix build with Boost 1.85 and remove instances of - viewkey logging [RELEASE] - -1. Use std::is_standard_layout and std::is_trivially_copyable instead of std::is_pod for KV byte-wise serialization, which fixes compile issue for Boost UUIDs -2. Removed reimplementation of std::hash for boost::uuids::uuid -3. Removed << operator overload for crypto::secret_key -4. Removed instances in code where private view key was dumped to the log in plaintext - -Release version of #9450, containing C++14 modified assertions ---- - CMakeLists.txt | 2 ++ - .../serialization/keyvalue_serialization.h | 18 ++++++++------- - contrib/epee/include/span.h | 23 +++++++++++-------- - contrib/epee/include/string_tools.h | 3 +++ - src/crypto/crypto.h | 14 ++++++++--- - .../cryptonote_format_utils.cpp | 4 ++-- - src/cryptonote_core/cryptonote_tx_utils.cpp | 4 ++-- - src/cryptonote_protocol/block_queue.cpp | 13 ++--------- - src/device/device_default.cpp | 8 ++++--- - src/lmdb/util.h | 4 ++-- - src/simplewallet/simplewallet.cpp | 6 ++--- - src/wallet/api/wallet.cpp | 8 +++---- - src/wallet/wallet2.cpp | 18 +++++++-------- - src/wallet/wallet_rpc_server.cpp | 4 ++-- - tests/benchmark.cpp | 2 +- - tests/core_tests/multisig.cpp | 10 ++++---- - tests/functional_tests/make_test_signature.cc | 2 +- - tests/unit_tests/crypto.cpp | 2 +- - tests/unit_tests/multisig.cpp | 2 +- - tests/unit_tests/serialization.cpp | 2 +- - 20 files changed, 80 insertions(+), 69 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8fb03ba1ff..7b77c37393 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1077,6 +1077,8 @@ if(STATIC) - 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 --git a/contrib/epee/include/serialization/keyvalue_serialization.h b/contrib/epee/include/serialization/keyvalue_serialization.h -index 06d74329f1..fbbddc7d2f 100644 ---- a/contrib/epee/include/serialization/keyvalue_serialization.h -+++ b/contrib/epee/include/serialization/keyvalue_serialization.h -@@ -98,16 +98,18 @@ public: \ - #define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name) \ - epee::serialization::selector::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::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(), "t_type must be a trivially copyable type."); \ -+ static_assert(std::is_standard_layout(), "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::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(), "t_type must be a trivially copyable type."); \ -+ static_assert(std::is_standard_layout(), "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 @@ public: \ - #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 --git a/contrib/epee/include/span.h b/contrib/epee/include/span.h -index 23bd51f8c2..01dc387d6d 100644 ---- a/contrib/epee/include/span.h -+++ b/contrib/epee/include/span.h -@@ -133,17 +133,14 @@ namespace epee - return {src.data(), src.size()}; - } - -- template -- constexpr bool has_padding() noexcept -- { -- return !std::is_standard_layout() || alignof(T) != 1; -- } -- - //! \return Cast data from `src` as `span`. - template - span to_byte_span(const span src) noexcept - { -- static_assert(!has_padding(), "source type may have padding"); -+ static_assert(!std::is_empty(), "empty value types will not work -> sizeof == 1"); -+ static_assert(std::is_standard_layout(), "type must have standard layout"); -+ static_assert(std::is_trivially_copyable(), "type must be trivially copyable"); -+ static_assert(alignof(T) == 1, "type may have padding"); - return {reinterpret_cast(src.data()), src.size_bytes()}; - } - -@@ -153,7 +150,9 @@ namespace epee - { - using value_type = typename T::value_type; - static_assert(!std::is_empty(), "empty value types will not work -> sizeof == 1"); -- static_assert(!has_padding(), "source value type may have padding"); -+ static_assert(std::is_standard_layout(), "value type must have standard layout"); -+ static_assert(std::is_trivially_copyable(), "value type must be trivially copyable"); -+ static_assert(alignof(value_type) == 1, "value type may have padding"); - return {reinterpret_cast(src.data()), src.size() * sizeof(value_type)}; - } - -@@ -162,7 +161,9 @@ namespace epee - span as_byte_span(const T& src) noexcept - { - static_assert(!std::is_empty(), "empty types will not work -> sizeof == 1"); -- static_assert(!has_padding(), "source type may have padding"); -+ static_assert(std::is_standard_layout(), "type must have standard layout"); -+ static_assert(std::is_trivially_copyable(), "type must be trivially copyable"); -+ static_assert(alignof(T) == 1, "type may have padding"); - return {reinterpret_cast(std::addressof(src)), sizeof(T)}; - } - -@@ -171,7 +172,9 @@ namespace epee - span as_mut_byte_span(T& src) noexcept - { - static_assert(!std::is_empty(), "empty types will not work -> sizeof == 1"); -- static_assert(!has_padding(), "source type may have padding"); -+ static_assert(std::is_standard_layout(), "type must have standard layout"); -+ static_assert(std::is_trivially_copyable(), "type must be trivially copyable"); -+ static_assert(alignof(T) == 1, "type may have padding"); - return {reinterpret_cast(std::addressof(src)), sizeof(T)}; - } - -diff --git a/contrib/epee/include/string_tools.h b/contrib/epee/include/string_tools.h -index 31c55b97ba..7de73cbf5a 100644 ---- a/contrib/epee/include/string_tools.h -+++ b/contrib/epee/include/string_tools.h -@@ -91,6 +91,7 @@ namespace string_tools - std::string pod_to_hex(const t_pod_type& s) - { - static_assert(std::is_standard_layout(), "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 @@ namespace string_tools - bool hex_to_pod(const boost::string_ref hex_str, t_pod_type& s) - { - static_assert(std::is_standard_layout(), "expected standard layout type"); -+ static_assert(alignof(t_pod_type) == 1, "type may have padding"); -+ static_assert(std::is_trivially_copyable(), "type must be trivially copyable"); - return from_hex::to_buffer(as_mut_byte_span(s), hex_str); - } - //---------------------------------------------------------------------------- -diff --git a/src/crypto/crypto.h b/src/crypto/crypto.h -index d8cd6c6a01..ee1cac04a6 100644 ---- a/src/crypto/crypto.h -+++ b/src/crypto/crypto.h -@@ -171,7 +171,9 @@ namespace crypto { - /* Generate a value filled with random bytes. - */ - template -- typename std::enable_if::value, T>::type rand() { -+ T rand() { -+ static_assert(std::is_standard_layout(), "cannot write random bytes into non-standard layout type"); -+ static_assert(std::is_trivially_copyable(), "cannot write random bytes into non-trivially copyable type"); - typename std::remove_cv::type res; - generate_random_bytes_thread_safe(sizeof(T), (uint8_t*)&res); - return res; -@@ -314,8 +316,14 @@ namespace crypto { - 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 --git a/src/cryptonote_basic/cryptonote_format_utils.cpp b/src/cryptonote_basic/cryptonote_format_utils.cpp -index 8be23583b5..e6e424c719 100644 ---- a/src/cryptonote_basic/cryptonote_format_utils.cpp -+++ b/src/cryptonote_basic/cryptonote_format_utils.cpp -@@ -292,7 +292,7 @@ namespace cryptonote - 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 << ", )"); - memcpy(&recv_derivation, rct::identity().bytes, sizeof(recv_derivation)); - } - -@@ -303,7 +303,7 @@ namespace cryptonote - 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] << ", )"); - } - else - { -diff --git a/src/cryptonote_core/cryptonote_tx_utils.cpp b/src/cryptonote_core/cryptonote_tx_utils.cpp -index dc9d6612f6..8f044154b1 100644 ---- a/src/cryptonote_core/cryptonote_tx_utils.cpp -+++ b/src/cryptonote_core/cryptonote_tx_utils.cpp -@@ -144,7 +144,7 @@ namespace cryptonote - 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 @@ namespace cryptonote - crypto::generate_ring_signature(tx_prefix_hash, boost::get(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 --git a/src/cryptonote_protocol/block_queue.cpp b/src/cryptonote_protocol/block_queue.cpp -index 4e65eafa4f..e5a4c0c99a 100644 ---- a/src/cryptonote_protocol/block_queue.cpp -+++ b/src/cryptonote_protocol/block_queue.cpp -@@ -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 { -- std::size_t operator()(const boost::uuids::uuid &_v) const { -- return reinterpret_cast(_v); -- } -- }; --} -- - namespace cryptonote - { - -@@ -472,7 +463,7 @@ bool block_queue::has_spans(const boost::uuids::uuid &connection_id) const - float block_queue::get_speed(const boost::uuids::uuid &connection_id) const - { - boost::unique_lock lock(mutex); -- std::unordered_map speeds; -+ std::unordered_map> speeds; - for (const auto &span: blocks) - { - if (span.blocks.empty()) -@@ -480,7 +471,7 @@ float block_queue::get_speed(const boost::uuids::uuid &connection_id) const - // 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::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 --git a/src/device/device_default.cpp b/src/device/device_default.cpp -index d70ece229c..c770a6e221 100644 ---- a/src/device/device_default.cpp -+++ b/src/device/device_default.cpp -@@ -317,13 +317,15 @@ namespace hw { - { - // 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 << ", )"); - } - 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 --git a/src/lmdb/util.h b/src/lmdb/util.h -index c6c75bc004..392ff20390 100644 ---- a/src/lmdb/util.h -+++ b/src/lmdb/util.h -@@ -127,7 +127,7 @@ namespace lmdb - /*! - 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 @@ namespace lmdb - template - inline int compare(MDB_val const* left, MDB_val const* right) noexcept - { -- static_assert(!epee::has_padding(), "memcmp will not work"); -+ static_assert(std::is_standard_layout() && 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 --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp -index b9e30f9d94..011b1c7613 100644 ---- a/src/simplewallet/simplewallet.cpp -+++ b/src/simplewallet/simplewallet.cpp -@@ -1979,7 +1979,7 @@ bool simple_wallet::rpc_payment_info(const std::vector &args) - 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 @@ bool simple_wallet::submit_transfer(const std::vector &args_) - std::string get_tx_key_stream(crypto::secret_key tx_key, std::vector 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 --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp -index fc4f891281..2ed14bfbd5 100644 ---- a/src/wallet/api/wallet.cpp -+++ b/src/wallet/api/wallet.cpp -@@ -881,7 +881,7 @@ std::string WalletImpl::integratedAddress(const std::string &payment_id) const - - 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::publicViewKey() const - - 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 @@ std::string WalletImpl::getTxKey(const std::string &txid_str) const - { - 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 --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp -index ad8c361909..90b5731695 100644 ---- a/src/wallet/wallet2.cpp -+++ b/src/wallet/wallet2.cpp -@@ -4613,7 +4613,7 @@ boost::optional wallet2::get_keys_file_data(const epee: - 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 @@ void wallet2::commit_tx(pending_tx& ptx) - 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 lock{m_daemon_rpc_mutex}; -@@ -10075,7 +10075,7 @@ bool wallet2::light_wallet_login(bool &new_address) - 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 @@ bool wallet2::light_wallet_import_wallet_request(tools::COMMAND_RPC_IMPORT_WALLE - 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 @@ void wallet2::light_wallet_get_unspent_outs() - - 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(::config::DEFAULT_DUST_THRESHOLD); - // below are required by openMonero api - but are not used. -@@ -10273,7 +10273,7 @@ bool wallet2::light_wallet_get_address_info(tools::COMMAND_RPC_GET_ADDRESS_INFO: - 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 @@ void wallet2::light_wallet_get_address_txs() - 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 @@ bool wallet2::light_wallet_key_image_is_ours(const crypto::key_image& key_image, - 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 @@ bool wallet2::light_wallet_key_image_is_ours(const crypto::key_image& key_image, - 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 --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp -index b1419949f8..3c548de135 100644 ---- a/src/wallet/wallet_rpc_server.cpp -+++ b/src/wallet/wallet_rpc_server.cpp -@@ -1247,9 +1247,9 @@ namespace tools - 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 --git a/tests/benchmark.cpp b/tests/benchmark.cpp -index 6a845d61a4..660783dd91 100644 ---- a/tests/benchmark.cpp -+++ b/tests/benchmark.cpp -@@ -109,7 +109,7 @@ namespace - template - bool compare(const T& lhs, const T& rhs) noexcept - { -- static_assert(!epee::has_padding(), "type might have padding"); -+ static_assert(std::is_standard_layout() && alignof(T) == 1, "type might have padding"); - return std::memcmp(std::addressof(lhs), std::addressof(rhs), sizeof(T)) == 0; - } - -diff --git a/tests/core_tests/multisig.cpp b/tests/core_tests/multisig.cpp -index 966c761163..1d3a6a3a10 100644 ---- a/tests/core_tests/multisig.cpp -+++ b/tests/core_tests/multisig.cpp -@@ -227,13 +227,13 @@ bool gen_multisig_tx_validation_base::generate_with(std::vector()); - EXPECT_TRUE(is_formatted()); - EXPECT_TRUE(is_formatted()); -- EXPECT_TRUE(is_formatted()); - EXPECT_TRUE(is_formatted()); - EXPECT_TRUE(is_formatted()); - EXPECT_TRUE(is_formatted()); -+ EXPECT_TRUE(is_formatted()); - } - - TEST(Crypto, null_keys) -diff --git a/tests/unit_tests/multisig.cpp b/tests/unit_tests/multisig.cpp -index 3b3c4197c0..71416aaf33 100644 ---- a/tests/unit_tests/multisig.cpp -+++ b/tests/unit_tests/multisig.cpp -@@ -80,7 +80,7 @@ static void make_wallet(unsigned int idx, tools::wallet2 &wallet) - 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 --git a/tests/unit_tests/serialization.cpp b/tests/unit_tests/serialization.cpp -index 0fdd832856..fdf6032722 100644 ---- a/tests/unit_tests/serialization.cpp -+++ b/tests/unit_tests/serialization.cpp -@@ -1103,7 +1103,7 @@ TEST(Serialization, portability_signed_tx) - 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); diff --git a/net-p2p/monero/files/monerod.confd b/net-p2p/monero/files/monerod.confd deleted file mode 100644 index 94515dcc25..0000000000 --- a/net-p2p/monero/files/monerod.confd +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright 2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -monerod_args="--config-file /etc/monero/monerod.conf --non-interactive" -monerod_user=monero -monerod_group=monero diff --git a/net-p2p/monero/files/monerod.initd b/net-p2p/monero/files/monerod.initd deleted file mode 100644 index bf554052a6..0000000000 --- a/net-p2p/monero/files/monerod.initd +++ /dev/null @@ -1,23 +0,0 @@ -#!/sbin/openrc-run -# Copyright 2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -pidfile=/var/run/monerod.pid -command=/usr/bin/monerod -command_args="${monerod_args}" -command_progress=1 -start_stop_daemon_args="-u ${monerod_user} -b -m -p ${pidfile}" -retry="SIGTERM/30/SIGKILL/5" - -name="Monero P2P Daemon" -description="Connects to the Monero P2P network" - -depend() { - need localmount - need net -} - -start_pre() { - checkpath --directory --owner ${monerod_user}:${monerod_group} --mode 0755 \ - /var/lib/monero /var/log/monero -} diff --git a/net-p2p/monero/monero-0.18.3.4-r1.ebuild b/net-p2p/monero/monero-0.18.3.4-r1.ebuild deleted file mode 100644 index 5e7f03ee9c..0000000000 --- a/net-p2p/monero/monero-0.18.3.4-r1.ebuild +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake systemd - -DESCRIPTION="The secure, private, untraceable cryptocurrency" -HOMEPAGE="https://github.com/monero-project/monero" - -if [[ ${PV} == 9999 ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/monero-project/monero.git" - EGIT_SUBMODULES=() -else - SRC_URI="https://github.com/monero-project/monero/archive/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~amd64 ~arm64 ~x86" -fi - -LICENSE="BSD MIT" -SLOT="0" -IUSE="+daemon hw-wallet readline +tools +wallet-cli +wallet-rpc" -REQUIRED_USE="|| ( daemon tools wallet-cli wallet-rpc )" -RESTRICT="test" - -DEPEND=" - acct-group/monero - acct-user/monero -