aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet.cpp
diff options
context:
space:
mode:
authorAndrew Chow <[email protected]>2020-02-13 17:09:12 -0500
committerAndrew Chow <[email protected]>2020-03-09 11:16:20 -0400
commit6a9c429084b40356aa36aa67992da35f61c2f6a2 (patch)
treee2590bf410fd5c78b4e6edd5805ba99802130de6 /src/wallet/wallet.cpp
parentMove key and script filling and signing from CWallet::FillPSBT to ScriptPubKe... (diff)
downloaddiscoin-6a9c429084b40356aa36aa67992da35f61c2f6a2.tar.xz
discoin-6a9c429084b40356aa36aa67992da35f61c2f6a2.zip
Move direct calls to MessageSign into new SignMessage functions in CWallet and ScriptPubKeyMan
Instead of getting a SigningProvider and then going to MessageSign, have ScriptPubKeyMan handle the message signing internally.
Diffstat (limited to 'src/wallet/wallet.cpp')
-rw-r--r--src/wallet/wallet.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index de09e6001..058f6597a 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -2566,6 +2566,18 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp
return TransactionError::OK;
}
+SigningResult CWallet::SignMessage(const std::string& message, const PKHash& pkhash, std::string& str_sig) const
+{
+ SignatureData sigdata;
+ CScript script_pub_key = GetScriptForDestination(pkhash);
+ for (const auto& spk_man_pair : m_spk_managers) {
+ if (spk_man_pair.second->CanProvide(script_pub_key, sigdata)) {
+ return spk_man_pair.second->SignMessage(message, pkhash, str_sig);
+ }
+ }
+ return SigningResult::PRIVATE_KEY_NOT_AVAILABLE;
+}
+
bool CWallet::FundTransaction(CMutableTransaction& tx, CAmount& nFeeRet, int& nChangePosInOut, std::string& strFailReason, bool lockUnspents, const std::set<int>& setSubtractFeeFromOutputs, CCoinControl coinControl)
{
std::vector<CRecipient> vecSend;