Wallet: store key creation time. Calculate whole-wallet birthday.
This also encapsulate wallet-read state information into CWalletScanState.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user