Changeset View
Changeset View
Standalone View
Standalone View
src/keystore.h
// Copyright (c) 2009-2010 Satoshi Nakamoto | // Copyright (c) 2009-2010 Satoshi Nakamoto | ||||
// Copyright (c) 2009-2015 The Bitcoin Core developers | // Copyright (c) 2009-2015 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_KEYSTORE_H | #ifndef BITCOIN_KEYSTORE_H | ||||
#define BITCOIN_KEYSTORE_H | #define BITCOIN_KEYSTORE_H | ||||
#include <key.h> | #include <key.h> | ||||
#include <pubkey.h> | #include <pubkey.h> | ||||
#include <script/script.h> | #include <script/script.h> | ||||
#include <script/sign.h> | |||||
#include <script/standard.h> | #include <script/standard.h> | ||||
#include <sync.h> | #include <sync.h> | ||||
#include <boost/signals2/signal.hpp> | #include <boost/signals2/signal.hpp> | ||||
/** A virtual base class for key stores */ | /** A virtual base class for key stores */ | ||||
class CKeyStore { | class CKeyStore : public SigningProvider { | ||||
public: | protected: | ||||
virtual ~CKeyStore() {} | mutable CCriticalSection cs_KeyStore; | ||||
public: | |||||
//! Add a key to the store. | //! Add a key to the store. | ||||
virtual bool AddKeyPubKey(const CKey &key, const CPubKey &pubkey) = 0; | virtual bool AddKeyPubKey(const CKey &key, const CPubKey &pubkey) = 0; | ||||
//! Check whether a key corresponding to a given address is present in the | //! Check whether a key corresponding to a given address is present in the | ||||
//! store. | //! store. | ||||
virtual bool HaveKey(const CKeyID &address) const = 0; | virtual bool HaveKey(const CKeyID &address) const = 0; | ||||
virtual bool GetKey(const CKeyID &address, CKey &keyOut) const = 0; | |||||
virtual std::set<CKeyID> GetKeys() const = 0; | virtual std::set<CKeyID> GetKeys() const = 0; | ||||
virtual bool GetPubKey(const CKeyID &address, | |||||
CPubKey &vchPubKeyOut) const = 0; | |||||
//! Support for BIP 0013 : see | //! Support for BIP 0013 : see | ||||
//! https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki | //! https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki | ||||
virtual bool AddCScript(const CScript &redeemScript) = 0; | virtual bool AddCScript(const CScript &redeemScript) = 0; | ||||
virtual bool HaveCScript(const CScriptID &hash) const = 0; | virtual bool HaveCScript(const CScriptID &hash) const = 0; | ||||
virtual std::set<CScriptID> GetCScripts() const = 0; | virtual std::set<CScriptID> GetCScripts() const = 0; | ||||
virtual bool GetCScript(const CScriptID &hash, | |||||
CScript &redeemScriptOut) const = 0; | |||||
//! Support for Watch-only addresses | //! Support for Watch-only addresses | ||||
virtual bool AddWatchOnly(const CScript &dest) = 0; | virtual bool AddWatchOnly(const CScript &dest) = 0; | ||||
virtual bool RemoveWatchOnly(const CScript &dest) = 0; | virtual bool RemoveWatchOnly(const CScript &dest) = 0; | ||||
virtual bool HaveWatchOnly(const CScript &dest) const = 0; | virtual bool HaveWatchOnly(const CScript &dest) const = 0; | ||||
virtual bool HaveWatchOnly() const = 0; | virtual bool HaveWatchOnly() const = 0; | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 46 Lines • Show Last 20 Lines |