Wallet: store key creation time. Calculate whole-wallet birthday.

This also encapsulate wallet-read state information into CWalletScanState.
This commit is contained in:
Jeff Garzik
2013-06-10 09:36:29 -04:00
parent f59530ce6e
commit 3869fb89b6
4 changed files with 135 additions and 38 deletions

View File

@@ -45,20 +45,33 @@ CPubKey CWallet::GenerateNewKey()
return pubkey;
}
bool CWallet::AddKeyPubKey(const CKey& secret, const CPubKey &pubkey)
bool CWallet::AddKeyPubKey(const CKey& secret, const CPubKey &pubkey,
int64 nCreateTime)
{
if (!nCreateTime)
nCreateTime = GetTime();
if (!nTimeFirstKey || (nCreateTime < nTimeFirstKey))
nTimeFirstKey = nCreateTime;
if (!CCryptoKeyStore::AddKeyPubKey(secret, pubkey))
return false;
if (!fFileBacked)
return true;
if (!IsCrypted()) {
return CWalletDB(strWalletFile).WriteKey(pubkey, secret.GetPrivKey());
return CWalletDB(strWalletFile).WriteKey(pubkey,
secret.GetPrivKey(),
nCreateTime);
}
return true;
}
bool CWallet::AddCryptedKey(const CPubKey &vchPubKey, const vector<unsigned char> &vchCryptedSecret)
bool CWallet::AddCryptedKey(const CPubKey &vchPubKey,
const vector<unsigned char> &vchCryptedSecret,
int64 nCreateTime)
{
if (!nCreateTime)
nCreateTime = GetTime();
if (!nTimeFirstKey || (nCreateTime < nTimeFirstKey))
nTimeFirstKey = nCreateTime;
if (!CCryptoKeyStore::AddCryptedKey(vchPubKey, vchCryptedSecret))
return false;
if (!fFileBacked)
@@ -66,9 +79,13 @@ bool CWallet::AddCryptedKey(const CPubKey &vchPubKey, const vector<unsigned char
{
LOCK(cs_wallet);
if (pwalletdbEncryption)
return pwalletdbEncryption->WriteCryptedKey(vchPubKey, vchCryptedSecret);
return pwalletdbEncryption->WriteCryptedKey(vchPubKey,
vchCryptedSecret,
nCreateTime);
else
return CWalletDB(strWalletFile).WriteCryptedKey(vchPubKey, vchCryptedSecret);
return CWalletDB(strWalletFile).WriteCryptedKey(vchPubKey,
vchCryptedSecret,
nCreateTime);
}
return false;
}