diff options
author | Andrew Chow <achow101-github@achow101.com> | 2019-10-07 14:11:34 -0400 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2020-01-23 16:35:08 -0500 |
commit | 3f373659d732a5b1e5fdc692a45b2b8179f66bec (patch) | |
tree | 0b2c0732141b11956d37c056aff054d3580bac6f /src/wallet/scriptpubkeyman.h | |
parent | 3afe53c4039103670cec5f9cace897ead76e20a8 (diff) | |
download | bitcoin-3f373659d732a5b1e5fdc692a45b2b8179f66bec.tar.xz |
Refactor: Replace SigningProvider pointers with unique_ptrs
Needed for future ScriptPubKeyMans which may need to create
SigningProviders dynamically and thus a normal pointer is not enough
This commit does not change behavior.
Diffstat (limited to 'src/wallet/scriptpubkeyman.h')
-rw-r--r-- | src/wallet/scriptpubkeyman.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/wallet/scriptpubkeyman.h b/src/wallet/scriptpubkeyman.h index 9ea10c14c7..85e4092dd9 100644 --- a/src/wallet/scriptpubkeyman.h +++ b/src/wallet/scriptpubkeyman.h @@ -198,7 +198,7 @@ public: virtual const CKeyMetadata* GetMetadata(const CTxDestination& dest) const { return nullptr; } - virtual const SigningProvider* GetSigningProvider(const CScript& script) const { return nullptr; } + virtual std::unique_ptr<SigningProvider> GetSigningProvider(const CScript& script) const { return nullptr; } /** Whether this ScriptPubKeyMan can provide a SigningProvider (via GetSigningProvider) that, combined with * sigdata, can produce a valid signature. @@ -341,7 +341,7 @@ public: bool CanGetAddresses(bool internal = false) override; - const SigningProvider* GetSigningProvider(const CScript& script) const override; + std::unique_ptr<SigningProvider> GetSigningProvider(const CScript& script) const override; bool CanProvide(const CScript& script, SignatureData& sigdata) override; @@ -442,4 +442,20 @@ public: std::set<CKeyID> GetKeys() const override; }; +/** Wraps a LegacyScriptPubKeyMan so that it can be returned in a new unique_ptr */ +class LegacySigningProvider : public SigningProvider +{ +private: + const LegacyScriptPubKeyMan& m_spk_man; +public: + LegacySigningProvider(const LegacyScriptPubKeyMan& spk_man) : m_spk_man(spk_man) {} + + bool GetCScript(const CScriptID &scriptid, CScript& script) const override { return m_spk_man.GetCScript(scriptid, script); } + bool HaveCScript(const CScriptID &scriptid) const override { return m_spk_man.HaveCScript(scriptid); } + bool GetPubKey(const CKeyID &address, CPubKey& pubkey) const override { return m_spk_man.GetPubKey(address, pubkey); } + bool GetKey(const CKeyID &address, CKey& key) const override { return m_spk_man.GetKey(address, key); } + bool HaveKey(const CKeyID &address) const override { return m_spk_man.HaveKey(address); } + bool GetKeyOrigin(const CKeyID& keyid, KeyOriginInfo& info) const override { return m_spk_man.GetKeyOrigin(keyid, info); } +}; + #endif // BITCOIN_WALLET_SCRIPTPUBKEYMAN_H |