diff options
| author | tobtoht <tob@featherwallet.org> | 2026-04-29 12:30:28 +0000 |
|---|---|---|
| committer | tobtoht <tob@featherwallet.org> | 2026-04-29 12:30:28 +0000 |
| commit | ccc3b94e2bc273e9ba67ae222f54bc37e9702f6d (patch) | |
| tree | e387381ddc1a90f1dcd48de15bc030a15d6f25ee /src/wallet | |
| parent | 1cf4fcec36e870c80adc0946c0be375f1a12333d (diff) | |
| parent | 11543143b9b69713bfcfa9a38b97ceb80dc64047 (diff) | |
| download | monzero-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.cpp | 22 |
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]) |
