mirror of
https://github.com/wownero/wownero.git
synced 2026-10-17 07:31:35 +02:00
wallet2: use decodeRct for reserve proof amount validation
also update check_tx_key_helper for consistency (cherry picked from commit 11543143b9b69713bfcfa9a38b97ceb80dc64047)
This commit is contained in:
+4
-20
@@ -13095,21 +13095,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 || tx.rct_signatures.type == rct::RCTTypeBulletproofPlus_FullCommit);
|
||||
rct::key C = tx.rct_signatures.outPk[n].mask;
|
||||
if (rct::is_rct_bp_plus_legacy(tx.rct_signatures.type))
|
||||
C = rct::scalarmult8(C);
|
||||
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;
|
||||
}
|
||||
@@ -13837,11 +13824,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 || tx.rct_signatures.type == rct::RCTTypeBulletproofPlus_FullCommit);
|
||||
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])
|
||||
|
||||
Reference in New Issue
Block a user