Bitcoin Core  0.15.99
P2P Digital Currency
Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
CCryptoKeyStore Class Reference

Keystore which keeps the private keys encrypted. More...

#include <crypter.h>

Inheritance diagram for CCryptoKeyStore:
[legend]
Collaboration diagram for CCryptoKeyStore:
[legend]

Public Member Functions

 CCryptoKeyStore ()
 
bool IsCrypted () const
 
bool IsLocked () const
 
bool Lock ()
 
virtual bool AddCryptedKey (const CPubKey &vchPubKey, const std::vector< unsigned char > &vchCryptedSecret)
 
bool AddKeyPubKey (const CKey &key, const CPubKey &pubkey) override
 Add a key to the store. More...
 
bool HaveKey (const CKeyID &address) const override
 Check whether a key corresponding to a given address is present in the store. More...
 
bool GetKey (const CKeyID &address, CKey &keyOut) const override
 
bool GetPubKey (const CKeyID &address, CPubKey &vchPubKeyOut) const override
 
std::set< CKeyIDGetKeys () const override
 
- Public Member Functions inherited from CBasicKeyStore
bool AddKey (const CKey &key)
 
bool AddCScript (const CScript &redeemScript) override
 Support for BIP 0013 : see https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki. More...
 
bool HaveCScript (const CScriptID &hash) const override
 
std::set< CScriptIDGetCScripts () const override
 
bool GetCScript (const CScriptID &hash, CScript &redeemScriptOut) const override
 
bool AddWatchOnly (const CScript &dest) override
 Support for Watch-only addresses. More...
 
bool RemoveWatchOnly (const CScript &dest) override
 
bool HaveWatchOnly (const CScript &dest) const override
 
bool HaveWatchOnly () const override
 
- Public Member Functions inherited from SigningProvider
virtual ~SigningProvider ()
 
virtual bool GetKeyOrigin (const CKeyID &id, KeyOriginInfo &info) const
 

Public Attributes

boost::signals2::signal< void(CCryptoKeyStore *wallet)> NotifyStatusChanged
 Wallet status (encrypted, locked) changed. More...
 

Protected Types

using CryptedKeyMap = std::map< CKeyID, std::pair< CPubKey, std::vector< unsigned char > >>
 
- Protected Types inherited from CBasicKeyStore
using KeyMap = std::map< CKeyID, CKey >
 
using WatchKeyMap = std::map< CKeyID, CPubKey >
 
using ScriptMap = std::map< CScriptID, CScript >
 
using WatchOnlySet = std::set< CScript >
 

Protected Member Functions

bool SetCrypted ()
 
bool EncryptKeys (CKeyingMaterial &vMasterKeyIn)
 will encrypt previously unencrypted keys More...
 
bool Unlock (const CKeyingMaterial &vMasterKeyIn)
 
CryptedKeyMap mapCryptedKeys GUARDED_BY (cs_KeyStore)
 
- Protected Member Functions inherited from CBasicKeyStore
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)
 

Private Member Functions

CKeyingMaterial vMasterKey GUARDED_BY (cs_KeyStore)
 

Private Attributes

std::atomic< bool > fUseCrypto
 if fUseCrypto is true, mapKeys must be empty if fUseCrypto is false, vMasterKey must be empty More...
 
bool fDecryptionThoroughlyChecked
 keeps track of whether Unlock has run a thorough check before More...
 

Additional Inherited Members

- Protected Attributes inherited from CBasicKeyStore
CCriticalSection cs_KeyStore
 

Detailed Description

Keystore which keeps the private keys encrypted.

It derives from the basic key store, which is used if no encryption is active.

Definition at line 115 of file crypter.h.

Member Typedef Documentation

◆ CryptedKeyMap

using CCryptoKeyStore::CryptedKeyMap = std::map<CKeyID, std::pair<CPubKey, std::vector<unsigned char> >>
protected

Definition at line 129 of file crypter.h.

Constructor & Destructor Documentation

◆ CCryptoKeyStore()

CCryptoKeyStore::CCryptoKeyStore ( )
inline

Definition at line 140 of file crypter.h.

Member Function Documentation

◆ AddCryptedKey()

bool CCryptoKeyStore::AddCryptedKey ( const CPubKey vchPubKey,
const std::vector< unsigned char > &  vchCryptedSecret 
)
virtual

Reimplemented in CWallet.

Definition at line 240 of file crypter.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddKeyPubKey()

bool CCryptoKeyStore::AddKeyPubKey ( const CKey key,
const CPubKey pubkey 
)
overridevirtual

Add a key to the store.

Reimplemented from CBasicKeyStore.

Reimplemented in CWallet.

Definition at line 216 of file crypter.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EncryptKeys()

bool CCryptoKeyStore::EncryptKeys ( CKeyingMaterial vMasterKeyIn)
protected

will encrypt previously unencrypted keys

Definition at line 307 of file crypter.cpp.

Here is the call graph for this function:

◆ GetKey()

bool CCryptoKeyStore::GetKey ( const CKeyID address,
CKey keyOut 
) const
overridevirtual

Reimplemented from CBasicKeyStore.

Definition at line 261 of file crypter.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetKeys()

std::set< CKeyID > CCryptoKeyStore::GetKeys ( ) const
overridevirtual

Reimplemented from CBasicKeyStore.

Definition at line 294 of file crypter.cpp.

Here is the call graph for this function:

◆ GetPubKey()

bool CCryptoKeyStore::GetPubKey ( const CKeyID address,
CPubKey vchPubKeyOut 
) const
overridevirtual

Reimplemented from CBasicKeyStore.

Definition at line 278 of file crypter.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GUARDED_BY() [1/2]

CKeyingMaterial vMasterKey CCryptoKeyStore::GUARDED_BY ( cs_KeyStore  )
private

◆ GUARDED_BY() [2/2]

CryptedKeyMap mapCryptedKeys CCryptoKeyStore::GUARDED_BY ( cs_KeyStore  )
protected

◆ HaveKey()

bool CCryptoKeyStore::HaveKey ( const CKeyID address) const
overridevirtual

Check whether a key corresponding to a given address is present in the store.

Reimplemented from CBasicKeyStore.

Definition at line 252 of file crypter.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsCrypted()

bool CCryptoKeyStore::IsCrypted ( ) const
inline

Definition at line 144 of file crypter.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsLocked()

bool CCryptoKeyStore::IsLocked ( ) const

Definition at line 155 of file crypter.cpp.

Here is the caller graph for this function:

◆ Lock()

bool CCryptoKeyStore::Lock ( )

Definition at line 164 of file crypter.cpp.

◆ SetCrypted()

bool CCryptoKeyStore::SetCrypted ( )
protected

Definition at line 144 of file crypter.cpp.

◆ Unlock()

bool CCryptoKeyStore::Unlock ( const CKeyingMaterial vMasterKeyIn)
protected

Definition at line 178 of file crypter.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ fDecryptionThoroughlyChecked

bool CCryptoKeyStore::fDecryptionThoroughlyChecked
private

keeps track of whether Unlock has run a thorough check before

Definition at line 126 of file crypter.h.

◆ fUseCrypto

std::atomic<bool> CCryptoKeyStore::fUseCrypto
private

if fUseCrypto is true, mapKeys must be empty if fUseCrypto is false, vMasterKey must be empty

Definition at line 123 of file crypter.h.

◆ NotifyStatusChanged

boost::signals2::signal<void (CCryptoKeyStore* wallet)> CCryptoKeyStore::NotifyStatusChanged

Wallet status (encrypted, locked) changed.

Note: Called without locks held.

Definition at line 159 of file crypter.h.


The documentation for this class was generated from the following files: