#include "script/standard.h"
#include "sync.h"
#include "zcash/Address.hpp"
+#include "zcash/NoteEncryption.hpp"
#include <boost/signals2/signal.hpp>
#include <boost/variant.hpp>
{
protected:
mutable CCriticalSection cs_KeyStore;
+ mutable CCriticalSection cs_SpendingKeyStore;
public:
virtual ~CKeyStore() {}
typedef std::map<CScriptID, CScript > ScriptMap;
typedef std::set<CScript> WatchOnlySet;
typedef std::map<libzcash::PaymentAddress, libzcash::SpendingKey> SpendingKeyMap;
+typedef std::map<libzcash::PaymentAddress, ZCNoteDecryption> NoteDecryptorMap;
/** Basic key store, that keeps keys in an address->secret map */
class CBasicKeyStore : public CKeyStore
ScriptMap mapScripts;
WatchOnlySet setWatchOnly;
SpendingKeyMap mapSpendingKeys;
+ NoteDecryptorMap mapNoteDecryptors;
public:
bool AddKeyPubKey(const CKey& key, const CPubKey &pubkey);
{
bool result;
{
- LOCK(cs_KeyStore);
+ LOCK(cs_SpendingKeyStore);
result = (mapSpendingKeys.count(address) > 0);
}
return result;
bool GetSpendingKey(const libzcash::PaymentAddress &address, libzcash::SpendingKey &skOut) const
{
{
- LOCK(cs_KeyStore);
+ LOCK(cs_SpendingKeyStore);
SpendingKeyMap::const_iterator mi = mapSpendingKeys.find(address);
if (mi != mapSpendingKeys.end())
{
}
return false;
}
+ bool GetNoteDecryptor(const libzcash::PaymentAddress &address, ZCNoteDecryption &decOut) const
+ {
+ {
+ LOCK(cs_SpendingKeyStore);
+ NoteDecryptorMap::const_iterator mi = mapNoteDecryptors.find(address);
+ if (mi != mapNoteDecryptors.end())
+ {
+ decOut = mi->second;
+ return true;
+ }
+ }
+ return false;
+ }
void GetPaymentAddresses(std::set<libzcash::PaymentAddress> &setAddress) const
{
setAddress.clear();
{
- LOCK(cs_KeyStore);
+ LOCK(cs_SpendingKeyStore);
SpendingKeyMap::const_iterator mi = mapSpendingKeys.begin();
while (mi != mapSpendingKeys.end())
{
typedef std::vector<unsigned char, secure_allocator<unsigned char> > CKeyingMaterial;
typedef std::map<CKeyID, std::pair<CPubKey, std::vector<unsigned char> > > CryptedKeyMap;
+typedef std::map<libzcash::PaymentAddress, std::vector<unsigned char> > CryptedSpendingKeyMap;
#endif // BITCOIN_KEYSTORE_H