From a57c099d074d128261f9b2e601b3cc2fb291978a Mon Sep 17 00:00:00 2001 From: StrawberryChocolateFudge Date: Sun, 23 Mar 2025 19:13:20 +0100 Subject: [PATCH] fix: added key correspondence check refactor: key correspondence check error handling fixed indentation removed EOL whitespace --- src/wallet/wallet_rpc_server.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index ecaf7d2f0a..f4eab94ee6 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -3892,6 +3892,14 @@ namespace tools return false; } + hw::device &hwdev = hw::get_device("default"); + if (!hwdev.verify_keys(viewkey, info.address.m_view_public_key)) + { + er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR; + er.message = "view secret key does not match main address"; + return false; + } + if (m_wallet && req.autosave_current) { try @@ -3918,6 +3926,14 @@ namespace tools er.message = "Failed to parse spend key secret key"; return false; } + + if (!hwdev.verify_keys(spendkey, info.address.m_spend_public_key)) + { + er.code = WALLET_RPC_ERROR_CODE_UNKNOWN_ERROR; + er.message = "spend secret key does not match main address"; + return false; + } + wal->generate(wallet_file, std::move(rc.second).password(), info.address, spendkey, viewkey, false); res.info = "Wallet has been generated successfully."; }