aboutsummaryrefslogtreecommitdiff
path: root/src/wallet
diff options
context:
space:
mode:
authortobtoht <tob@featherwallet.org>2026-04-29 12:30:28 +0000
committertobtoht <tob@featherwallet.org>2026-04-29 12:30:28 +0000
commitccc3b94e2bc273e9ba67ae222f54bc37e9702f6d (patch)
treee387381ddc1a90f1dcd48de15bc030a15d6f25ee /src/wallet
parent1cf4fcec36e870c80adc0946c0be375f1a12333d (diff)
parent11543143b9b69713bfcfa9a38b97ceb80dc64047 (diff)
downloadmonzero-core-ccc3b94e2bc273e9ba67ae222f54bc37e9702f6d.tar.gz
monzero-core-ccc3b94e2bc273e9ba67ae222f54bc37e9702f6d.tar.xz
monzero-core-ccc3b94e2bc273e9ba67ae222f54bc37e9702f6d.zip
Merge pull request #10471
1154314 wallet2: use decodeRct for reserve proof amount validation (selsta)
Diffstat (limited to 'src/wallet')
-rw-r--r--src/wallet/wallet2.cpp22
1 files changed, 4 insertions, 18 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 179e134ec..77ab7299b 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -12849,19 +12849,8 @@ void wallet2::check_tx_key_helper(const cryptonote::transaction &tx, const crypt
}
else
{
- crypto::secret_key scalar1;
- crypto::derivation_to_scalar(found_derivation, n, scalar1);
- rct::ecdhTuple ecdh_info = tx.rct_signatures.ecdhInfo[n];
- rct::ecdhDecode(ecdh_info, rct::sk2rct(scalar1), tx.rct_signatures.type == rct::RCTTypeBulletproof2 || tx.rct_signatures.type == rct::RCTTypeCLSAG || tx.rct_signatures.type == rct::RCTTypeBulletproofPlus);
- const rct::key C = tx.rct_signatures.outPk[n].mask;
- rct::key Ctmp;
- THROW_WALLET_EXCEPTION_IF(sc_check(ecdh_info.mask.bytes) != 0, error::wallet_internal_error, "Bad ECDH input mask");
- THROW_WALLET_EXCEPTION_IF(sc_check(ecdh_info.amount.bytes) != 0, error::wallet_internal_error, "Bad ECDH input amount");
- rct::addKeys2(Ctmp, ecdh_info.mask, ecdh_info.amount, rct::H);
- if (rct::equalKeys(C, Ctmp))
- amount = rct::h2d(ecdh_info.amount);
- else
- amount = 0;
+ rct::key mask;
+ amount = decodeRct(tx.rct_signatures, found_derivation, n, mask, hw::get_device("default"));
}
received += amount;
}
@@ -13503,11 +13492,8 @@ bool wallet2::check_reserve_proof(const cryptonote::account_public_address &addr
if (amount == 0)
{
// decode rct
- crypto::secret_key shared_secret;
- crypto::derivation_to_scalar(derivation, proof.index_in_tx, shared_secret);
- rct::ecdhTuple ecdh_info = tx.rct_signatures.ecdhInfo[proof.index_in_tx];
- rct::ecdhDecode(ecdh_info, rct::sk2rct(shared_secret), tx.rct_signatures.type == rct::RCTTypeBulletproof2 || tx.rct_signatures.type == rct::RCTTypeCLSAG || tx.rct_signatures.type == rct::RCTTypeBulletproofPlus);
- amount = rct::h2d(ecdh_info.amount);
+ rct::key mask_;
+ amount = decodeRct(tx.rct_signatures, derivation, proof.index_in_tx, mask_, hw::get_device("default"));
}
total += amount;
if (kispent_res.spent_status[i])