diff options
author | koe <ukoe@protonmail.com> | 2022-04-30 16:54:24 -0500 |
---|---|---|
committer | koe <ukoe@protonmail.com> | 2022-07-13 12:40:34 -0500 |
commit | edcc094558779a25811f2736beca97d78a26bff5 (patch) | |
tree | 4c672f17593d29db37f8247b9c4ee6c802bca8d3 /src/wallet | |
parent | Merge pull request #8421 (diff) | |
download | monero-edcc094558779a25811f2736beca97d78a26bff5.tar.xz |
derive multisig tx secret keys from an entropy source plus the tx inputs' key images
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/wallet2.cpp | 4 | ||||
-rw-r--r-- | src/wallet/wallet2.h | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index ed153d681..ca6670143 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -7157,6 +7157,7 @@ bool wallet2::sign_multisig_tx(multisig_tx_set &exported_txs, std::vector<crypto true, //true = we are reconstructing the tx (it was first constructed by the tx proposer) ptx.tx_key, ptx.additional_tx_keys, + ptx.multisig_tx_key_entropy, ptx.tx ), error::wallet_internal_error, @@ -9006,6 +9007,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry crypto::secret_key tx_key; std::vector<crypto::secret_key> additional_tx_keys; + crypto::secret_key multisig_tx_key_entropy; LOG_PRINT_L2("constructing tx"); auto sources_copy = sources; multisig::signing::tx_builder_ringct_t multisig_tx_builder; @@ -9029,6 +9031,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry false, tx_key, additional_tx_keys, + multisig_tx_key_entropy, tx ), error::wallet_internal_error, @@ -9155,6 +9158,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry ptx.additional_tx_keys = additional_tx_keys; ptx.dests = dsts; ptx.multisig_sigs = multisig_sigs; + ptx.multisig_tx_key_entropy = multisig_tx_key_entropy; ptx.construction_data.sources = sources_copy; ptx.construction_data.change_dts = change_dts; ptx.construction_data.splitted_dsts = splitted_dsts; diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index 836373939..f07673e53 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -632,10 +632,12 @@ private: std::vector<crypto::secret_key> additional_tx_keys; std::vector<cryptonote::tx_destination_entry> dests; std::vector<multisig_sig> multisig_sigs; + crypto::secret_key multisig_tx_key_entropy; tx_construction_data construction_data; BEGIN_SERIALIZE_OBJECT() + VERSION_FIELD(1) FIELD(tx) FIELD(dust) FIELD(fee) @@ -648,6 +650,12 @@ private: FIELD(dests) FIELD(construction_data) FIELD(multisig_sigs) + if (version < 1) + { + multisig_tx_key_entropy = crypto::null_skey; + return true; + } + FIELD(multisig_tx_key_entropy) END_SERIALIZE() }; |