diff options
| author | Andrew Chow <[email protected]> | 2020-02-13 17:09:12 -0500 |
|---|---|---|
| committer | Andrew Chow <[email protected]> | 2020-03-09 11:16:20 -0400 |
| commit | 6a9c429084b40356aa36aa67992da35f61c2f6a2 (patch) | |
| tree | e2590bf410fd5c78b4e6edd5805ba99802130de6 /src/wallet/wallet.cpp | |
| parent | Move key and script filling and signing from CWallet::FillPSBT to ScriptPubKe... (diff) | |
| download | discoin-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.cpp | 12 |
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; |