Master Core  v0.0.9 - 2abfd2849db8ba7a83957c64eb976b406713c123
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
keystore.cpp
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2013 The Bitcoin developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #include "keystore.h"
7 
8 #include "crypter.h"
9 #include "key.h"
10 #include "script.h"
11 
12 #include <boost/foreach.hpp>
13 
14 bool CKeyStore::GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const
15 {
16  CKey key;
17  if (!GetKey(address, key))
18  return false;
19  vchPubKeyOut = key.GetPubKey();
20  return true;
21 }
22 
23 bool CKeyStore::AddKey(const CKey &key) {
24  return AddKeyPubKey(key, key.GetPubKey());
25 }
26 
27 bool CBasicKeyStore::AddKeyPubKey(const CKey& key, const CPubKey &pubkey)
28 {
30  mapKeys[pubkey.GetID()] = key;
31  return true;
32 }
33 
34 bool CBasicKeyStore::AddCScript(const CScript& redeemScript)
35 {
36  if (redeemScript.size() > MAX_SCRIPT_ELEMENT_SIZE)
37  return error("CBasicKeyStore::AddCScript() : redeemScripts > %i bytes are invalid", MAX_SCRIPT_ELEMENT_SIZE);
38 
40  mapScripts[redeemScript.GetID()] = redeemScript;
41  return true;
42 }
43 
44 bool CBasicKeyStore::HaveCScript(const CScriptID& hash) const
45 {
47  return mapScripts.count(hash) > 0;
48 }
49 
50 bool CBasicKeyStore::GetCScript(const CScriptID &hash, CScript& redeemScriptOut) const
51 {
53  ScriptMap::const_iterator mi = mapScripts.find(hash);
54  if (mi != mapScripts.end())
55  {
56  redeemScriptOut = (*mi).second;
57  return true;
58  }
59  return false;
60 }
61 
CCriticalSection cs_KeyStore
Definition: keystore.h:20
virtual bool AddKeyPubKey(const CKey &key, const CPubKey &pubkey)=0
bool AddKeyPubKey(const CKey &key, const CPubKey &pubkey)
Definition: keystore.cpp:27
static const unsigned int MAX_SCRIPT_ELEMENT_SIZE
Definition: script.h:24
virtual bool AddCScript(const CScript &redeemScript)
Definition: keystore.cpp:34
virtual bool GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const
Definition: keystore.cpp:14
CPubKey GetPubKey() const
Definition: key.cpp:388
#define LOCK(cs)
Definition: sync.h:156
An encapsulated public key.
Definition: key.h:42
static bool error(const char *format)
Definition: util.h:148
ScriptMap mapScripts
Definition: keystore.h:49
virtual bool GetKey(const CKeyID &address, CKey &keyOut) const =0
virtual bool AddKey(const CKey &key)
Definition: keystore.cpp:23
KeyMap mapKeys
Definition: keystore.h:48
Serialized script, used inside transaction inputs and outputs.
Definition: script.h:401
A reference to a CKey: the Hash160 of its serialized public key.
Definition: key.h:26
CScriptID GetID() const
Definition: script.h:708
virtual bool GetCScript(const CScriptID &hash, CScript &redeemScriptOut) const
Definition: keystore.cpp:50
A reference to a CScript: the Hash160 of its serialization (see script.h)
Definition: key.h:34
An encapsulated private key.
Definition: key.h:179
CKeyID GetID() const
Definition: key.h:131
virtual bool HaveCScript(const CScriptID &hash) const
Definition: keystore.cpp:44