Changeset View
Changeset View
Standalone View
Standalone View
src/keystore.h
Show First 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
class CBasicKeyStore : public CKeyStore { | class CBasicKeyStore : public CKeyStore { | ||||
protected: | protected: | ||||
KeyMap mapKeys; | KeyMap mapKeys; | ||||
WatchKeyMap mapWatchKeys; | WatchKeyMap mapWatchKeys; | ||||
ScriptMap mapScripts; | ScriptMap mapScripts; | ||||
WatchOnlySet setWatchOnly; | WatchOnlySet setWatchOnly; | ||||
public: | public: | ||||
bool AddKeyPubKey(const CKey &key, const CPubKey &pubkey); | bool AddKeyPubKey(const CKey &key, const CPubKey &pubkey) override; | ||||
bool GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const; | bool GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const override; | ||||
bool HaveKey(const CKeyID &address) const { | bool HaveKey(const CKeyID &address) const override { | ||||
bool result; | bool result; | ||||
{ | { | ||||
LOCK(cs_KeyStore); | LOCK(cs_KeyStore); | ||||
result = (mapKeys.count(address) > 0); | result = (mapKeys.count(address) > 0); | ||||
} | } | ||||
return result; | return result; | ||||
} | } | ||||
void GetKeys(std::set<CKeyID> &setAddress) const { | void GetKeys(std::set<CKeyID> &setAddress) const override { | ||||
setAddress.clear(); | setAddress.clear(); | ||||
{ | { | ||||
LOCK(cs_KeyStore); | LOCK(cs_KeyStore); | ||||
KeyMap::const_iterator mi = mapKeys.begin(); | KeyMap::const_iterator mi = mapKeys.begin(); | ||||
while (mi != mapKeys.end()) { | while (mi != mapKeys.end()) { | ||||
setAddress.insert((*mi).first); | setAddress.insert((*mi).first); | ||||
mi++; | mi++; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
bool GetKey(const CKeyID &address, CKey &keyOut) const { | bool GetKey(const CKeyID &address, CKey &keyOut) const override { | ||||
{ | { | ||||
LOCK(cs_KeyStore); | LOCK(cs_KeyStore); | ||||
KeyMap::const_iterator mi = mapKeys.find(address); | KeyMap::const_iterator mi = mapKeys.find(address); | ||||
if (mi != mapKeys.end()) { | if (mi != mapKeys.end()) { | ||||
keyOut = mi->second; | keyOut = mi->second; | ||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
virtual bool AddCScript(const CScript &redeemScript); | virtual bool AddCScript(const CScript &redeemScript) override; | ||||
virtual bool HaveCScript(const CScriptID &hash) const; | virtual bool HaveCScript(const CScriptID &hash) const override; | ||||
virtual bool GetCScript(const CScriptID &hash, | virtual bool GetCScript(const CScriptID &hash, | ||||
CScript &redeemScriptOut) const; | CScript &redeemScriptOut) const override; | ||||
virtual bool AddWatchOnly(const CScript &dest); | virtual bool AddWatchOnly(const CScript &dest) override; | ||||
virtual bool RemoveWatchOnly(const CScript &dest); | virtual bool RemoveWatchOnly(const CScript &dest) override; | ||||
virtual bool HaveWatchOnly(const CScript &dest) const; | virtual bool HaveWatchOnly(const CScript &dest) const override; | ||||
virtual bool HaveWatchOnly() const; | virtual bool HaveWatchOnly() const override; | ||||
}; | }; | ||||
typedef std::vector<uint8_t, secure_allocator<uint8_t>> CKeyingMaterial; | typedef std::vector<uint8_t, secure_allocator<uint8_t>> CKeyingMaterial; | ||||
typedef std::map<CKeyID, std::pair<CPubKey, std::vector<uint8_t>>> | typedef std::map<CKeyID, std::pair<CPubKey, std::vector<uint8_t>>> | ||||
CryptedKeyMap; | CryptedKeyMap; | ||||
#endif // BITCOIN_KEYSTORE_H | #endif // BITCOIN_KEYSTORE_H |