From cb0e2c3650abd57d8a54c2682257a3f2a546fc43 Mon Sep 17 00:00:00 2001 From: cryptozoidberg Date: Tue, 13 Feb 2024 19:21:25 +0400 Subject: [PATCH] fixes related multriasset tests --- src/crypto/zarcanum.h | 35 +++++++++----------- src/currency_core/currency_format_utils.cpp | 1 + src/wallet/wallet_debug_events_definitions.h | 7 +++- tests/core_tests/multiassets_test.cpp | 6 ++-- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/crypto/zarcanum.h b/src/crypto/zarcanum.h index 28388916..3fe4b5c1 100644 --- a/src/crypto/zarcanum.h +++ b/src/crypto/zarcanum.h @@ -84,18 +84,16 @@ namespace crypto scalar_t y; }; - template - inline bool generate_schnorr_sig(const hash& m, const point_t& A, const scalar_t& secret_a, generic_schnorr_sig& result); - template<> - inline bool generate_schnorr_sig(const hash& m, const point_t& A, const scalar_t& secret_a, generic_schnorr_sig& result) + template + inline bool generate_schnorr_sig_custom_generator(const hash& m, const point_t& A, const scalar_t& secret_a, generic_schnorr_sig& result, const generator_t& g_point_g) { #ifndef NDEBUG - if (A != secret_a * c_point_G) + if (A != secret_a * g_point_g) return false; #endif scalar_t r = scalar_t::random(); - point_t R = r * c_point_G; + point_t R = r * g_point_g; hash_helper_t::hs_t hsc(3); hsc.add_hash(m); hsc.add_point(A); @@ -105,22 +103,19 @@ namespace crypto return true; } + template + inline bool generate_schnorr_sig(const hash& m, const point_t& A, const scalar_t& secret_a, generic_schnorr_sig& result); + + template<> + inline bool generate_schnorr_sig(const hash& m, const point_t& A, const scalar_t& secret_a, generic_schnorr_sig& result) + { + return generate_schnorr_sig_custom_generator(m, A, secret_a, result, c_point_G); + } + template<> inline bool generate_schnorr_sig(const hash& m, const point_t& A, const scalar_t& secret_a, generic_schnorr_sig& result) { -#ifndef NDEBUG - if (A != secret_a * c_point_X) - return false; -#endif - scalar_t r = scalar_t::random(); - point_t R = r * c_point_X; - hash_helper_t::hs_t hsc(3); - hsc.add_hash(m); - hsc.add_point(A); - hsc.add_point(R); - result.c = hsc.calc_hash(); - result.y.assign_mulsub(result.c, secret_a, r); // y = r - c * secret_a - return true; + return generate_schnorr_sig_custom_generator(m, A, secret_a, result, c_point_X); } inline bool generate_schnorr_sig(const hash& m, const public_key& A, const secret_key& secret_a, generic_schnorr_sig& result) @@ -297,4 +292,4 @@ namespace crypto const vector_UG_aggregation_proof& sig, uint8_t* p_err = nullptr) noexcept; -} // namespace crypto +} // namespace crypto \ No newline at end of file diff --git a/src/currency_core/currency_format_utils.cpp b/src/currency_core/currency_format_utils.cpp index 709fc5d1..e44fb693 100644 --- a/src/currency_core/currency_format_utils.cpp +++ b/src/currency_core/currency_format_utils.cpp @@ -2710,6 +2710,7 @@ namespace currency //generate signature by wallet account crypto::generate_schnorr_sig(tx_prefix_hash, ftp.ado_current_asset_owner, sender_account_keys.spend_secret_key, aoop.gss); } + if (ftp.pevents_dispatcher) ftp.pevents_dispatcher->RAISE_DEBUG_EVENT(wde_construct_tx_after_asset_ownership_proof_generated{ &aoop }); tx.proofs.emplace_back(aoop); } } diff --git a/src/wallet/wallet_debug_events_definitions.h b/src/wallet/wallet_debug_events_definitions.h index c9845a9b..8a351469 100644 --- a/src/wallet/wallet_debug_events_definitions.h +++ b/src/wallet/wallet_debug_events_definitions.h @@ -13,9 +13,14 @@ struct wde_construct_tx_handle_asset_descriptor_operation }; -//Wallet Debug Events struct wde_construct_tx_handle_asset_descriptor_operation_before_seal { currency::asset_descriptor_operation* pado; }; + +struct wde_construct_tx_after_asset_ownership_proof_generated +{ + currency::asset_operation_ownership_proof* pownership_proof; +}; + diff --git a/tests/core_tests/multiassets_test.cpp b/tests/core_tests/multiassets_test.cpp index 93f394b0..cc5191fa 100644 --- a/tests/core_tests/multiassets_test.cpp +++ b/tests/core_tests/multiassets_test.cpp @@ -252,10 +252,10 @@ bool multiassets_basic_test::c1(currency::core& c, size_t ev_index, const std::v //------------------- tests that trying to break stuff ------------------- //tests that trying to break stuff - miner_wlt->get_debug_events_dispatcher().SUBSCIRBE_DEBUG_EVENT([&](const wde_construct_tx_handle_asset_descriptor_operation& o) + miner_wlt->get_debug_events_dispatcher().SUBSCIRBE_DEBUG_EVENT([&](const wde_construct_tx_after_asset_ownership_proof_generated& o) { - crypto::signature s = currency::null_sig; - o.pado->opt_proof = s; + //crypto::signature s = currency::null_sig; + o.pownership_proof->gss = crypto::generic_schnorr_sig_s{}; });