diff options
| author | Andrew Chow <[email protected]> | 2020-02-11 17:10:25 -0500 |
|---|---|---|
| committer | Andrew Chow <[email protected]> | 2020-04-23 13:59:48 -0400 |
| commit | bde7c9fa38775a81d53ac0484fa9c98076a0c7d1 (patch) | |
| tree | b17856967ae018b7c09bdcf83165db02b1898da7 /src/wallet/scriptpubkeyman.cpp | |
| parent | Implement GetSolvingProvider for DescriptorScriptPubKeyMan (diff) | |
| download | discoin-bde7c9fa38775a81d53ac0484fa9c98076a0c7d1.tar.xz discoin-bde7c9fa38775a81d53ac0484fa9c98076a0c7d1.zip | |
Implement SignTransaction in DescriptorScriptPubKeyMan
Diffstat (limited to 'src/wallet/scriptpubkeyman.cpp')
| -rw-r--r-- | src/wallet/scriptpubkeyman.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/wallet/scriptpubkeyman.cpp b/src/wallet/scriptpubkeyman.cpp index 67063ad23..1eb9dc4d7 100644 --- a/src/wallet/scriptpubkeyman.cpp +++ b/src/wallet/scriptpubkeyman.cpp @@ -1943,7 +1943,16 @@ bool DescriptorScriptPubKeyMan::CanProvide(const CScript& script, SignatureData& bool DescriptorScriptPubKeyMan::SignTransaction(CMutableTransaction& tx, const std::map<COutPoint, Coin>& coins, int sighash, std::map<int, std::string>& input_errors) const { - return false; + std::unique_ptr<FlatSigningProvider> keys = MakeUnique<FlatSigningProvider>(); + for (const auto& coin_pair : coins) { + std::unique_ptr<FlatSigningProvider> coin_keys = GetSigningProvider(coin_pair.second.out.scriptPubKey, true); + if (!coin_keys) { + continue; + } + *keys = Merge(*keys, *coin_keys); + } + + return ::SignTransaction(tx, keys.get(), coins, sighash, input_errors); } SigningResult DescriptorScriptPubKeyMan::SignMessage(const std::string& message, const PKHash& pkhash, std::string& str_sig) const |