diff options
| author | Andrew Chow <[email protected]> | 2019-06-17 17:46:52 -0400 |
|---|---|---|
| committer | Andrew Chow <[email protected]> | 2019-07-09 16:20:18 -0400 |
| commit | 93ce4a0b6fb54efb1f424a71dfc09cc33307e5b9 (patch) | |
| tree | 6c909466c7cc676aa7ec477e89c0c4ab87f65fd3 /src/script | |
| parent | Remove CCryptoKeyStore and move all of it's functionality into CWallet (diff) | |
| download | discoin-93ce4a0b6fb54efb1f424a71dfc09cc33307e5b9.tar.xz discoin-93ce4a0b6fb54efb1f424a71dfc09cc33307e5b9.zip | |
Move WatchOnly stuff from SigningProvider to CWallet
Diffstat (limited to 'src/script')
| -rw-r--r-- | src/script/signingprovider.cpp | 61 | ||||
| -rw-r--r-- | src/script/signingprovider.h | 9 |
2 files changed, 0 insertions, 70 deletions
diff --git a/src/script/signingprovider.cpp b/src/script/signingprovider.cpp index a859a41c5..01757e2f6 100644 --- a/src/script/signingprovider.cpp +++ b/src/script/signingprovider.cpp @@ -73,8 +73,6 @@ void FillableSigningProvider::ImplicitlyLearnRelatedKeyScripts(const CPubKey& pu { AssertLockHeld(cs_KeyStore); CKeyID key_id = pubkey.GetID(); - // We must actually know about this key already. - assert(HaveKey(key_id) || mapWatchKeys.count(key_id)); // This adds the redeemscripts necessary to detect P2WPKH and P2SH-P2WPKH // outputs. Technically P2WPKH outputs don't have a redeemscript to be // spent. However, our current IsMine logic requires the corresponding @@ -98,12 +96,6 @@ bool FillableSigningProvider::GetPubKey(const CKeyID &address, CPubKey &vchPubKe { CKey key; if (!GetKey(address, key)) { - LOCK(cs_KeyStore); - WatchKeyMap::const_iterator it = mapWatchKeys.find(address); - if (it != mapWatchKeys.end()) { - vchPubKeyOut = it->second; - return true; - } return false; } vchPubKeyOut = key.GetPubKey(); @@ -183,59 +175,6 @@ bool FillableSigningProvider::GetCScript(const CScriptID &hash, CScript& redeemS return false; } -static bool ExtractPubKey(const CScript &dest, CPubKey& pubKeyOut) -{ - //TODO: Use Solver to extract this? - CScript::const_iterator pc = dest.begin(); - opcodetype opcode; - std::vector<unsigned char> vch; - if (!dest.GetOp(pc, opcode, vch) || !CPubKey::ValidSize(vch)) - return false; - pubKeyOut = CPubKey(vch); - if (!pubKeyOut.IsFullyValid()) - return false; - if (!dest.GetOp(pc, opcode, vch) || opcode != OP_CHECKSIG || dest.GetOp(pc, opcode, vch)) - return false; - return true; -} - -bool FillableSigningProvider::AddWatchOnly(const CScript &dest) -{ - LOCK(cs_KeyStore); - setWatchOnly.insert(dest); - CPubKey pubKey; - if (ExtractPubKey(dest, pubKey)) { - mapWatchKeys[pubKey.GetID()] = pubKey; - ImplicitlyLearnRelatedKeyScripts(pubKey); - } - return true; -} - -bool FillableSigningProvider::RemoveWatchOnly(const CScript &dest) -{ - LOCK(cs_KeyStore); - setWatchOnly.erase(dest); - CPubKey pubKey; - if (ExtractPubKey(dest, pubKey)) { - mapWatchKeys.erase(pubKey.GetID()); - } - // Related CScripts are not removed; having superfluous scripts around is - // harmless (see comment in ImplicitlyLearnRelatedKeyScripts). - return true; -} - -bool FillableSigningProvider::HaveWatchOnly(const CScript &dest) const -{ - LOCK(cs_KeyStore); - return setWatchOnly.count(dest) > 0; -} - -bool FillableSigningProvider::HaveWatchOnly() const -{ - LOCK(cs_KeyStore); - return (!setWatchOnly.empty()); -} - CKeyID GetKeyForDestination(const SigningProvider& store, const CTxDestination& dest) { // Only supports destinations which map to single public keys, i.e. P2PKH, diff --git a/src/script/signingprovider.h b/src/script/signingprovider.h index 5ead76382..4eec2311d 100644 --- a/src/script/signingprovider.h +++ b/src/script/signingprovider.h @@ -66,14 +66,10 @@ protected: mutable CCriticalSection cs_KeyStore; using KeyMap = std::map<CKeyID, CKey>; - using WatchKeyMap = std::map<CKeyID, CPubKey>; using ScriptMap = std::map<CScriptID, CScript>; - using WatchOnlySet = std::set<CScript>; KeyMap mapKeys GUARDED_BY(cs_KeyStore); - WatchKeyMap mapWatchKeys GUARDED_BY(cs_KeyStore); ScriptMap mapScripts GUARDED_BY(cs_KeyStore); - WatchOnlySet setWatchOnly GUARDED_BY(cs_KeyStore); void ImplicitlyLearnRelatedKeyScripts(const CPubKey& pubkey) EXCLUSIVE_LOCKS_REQUIRED(cs_KeyStore); @@ -88,11 +84,6 @@ public: virtual bool HaveCScript(const CScriptID &hash) const override; virtual std::set<CScriptID> GetCScripts() const; virtual bool GetCScript(const CScriptID &hash, CScript& redeemScriptOut) const override; - - virtual bool AddWatchOnly(const CScript &dest); - virtual bool RemoveWatchOnly(const CScript &dest); - virtual bool HaveWatchOnly(const CScript &dest) const; - virtual bool HaveWatchOnly() const; }; /** Return the CKeyID of the key involved in a script (if there is a unique one). */ |