mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 10:38:42 +01:00
Do not break backward compatibility during wallet encryption
This commit is contained in:
parent
1df08d1580
commit
9382f0425e
@ -639,7 +639,9 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase)
|
||||
if (IsHDEnabled()) {
|
||||
CKey key;
|
||||
CPubKey masterPubKey = GenerateNewHDMasterKey();
|
||||
if (!SetHDMasterKey(masterPubKey))
|
||||
// preserve the old chains version to not break backward compatibility
|
||||
CHDChain oldChain = GetHDChain();
|
||||
if (!SetHDMasterKey(masterPubKey, &oldChain))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1306,13 +1308,17 @@ CPubKey CWallet::GenerateNewHDMasterKey()
|
||||
return pubkey;
|
||||
}
|
||||
|
||||
bool CWallet::SetHDMasterKey(const CPubKey& pubkey)
|
||||
bool CWallet::SetHDMasterKey(const CPubKey& pubkey, CHDChain *possibleOldChain)
|
||||
{
|
||||
LOCK(cs_wallet);
|
||||
// store the keyid (hash160) together with
|
||||
// the child index counter in the database
|
||||
// as a hdchain object
|
||||
CHDChain newHdChain;
|
||||
if (possibleOldChain) {
|
||||
// preserve the old chains version
|
||||
newHdChain.nVersion = possibleOldChain->nVersion;
|
||||
}
|
||||
newHdChain.masterKeyID = pubkey.GetID();
|
||||
SetHDChain(newHdChain, false);
|
||||
|
||||
|
@ -1055,8 +1055,10 @@ public:
|
||||
/* Generates a new HD master key (will not be activated) */
|
||||
CPubKey GenerateNewHDMasterKey();
|
||||
|
||||
/* Set the current HD master key (will reset the chain child index counters) */
|
||||
bool SetHDMasterKey(const CPubKey& key);
|
||||
/* Set the current HD master key (will reset the chain child index counters)
|
||||
If possibleOldChain is provided, the parameters from the old chain (version)
|
||||
will be preserved. */
|
||||
bool SetHDMasterKey(const CPubKey& key, CHDChain *possibleOldChain = nullptr);
|
||||
};
|
||||
|
||||
/** A key allocated from the key pool. */
|
||||
|
Loading…
Reference in New Issue
Block a user