Add option to disable private keys during internal wallet creation

This commit is contained in:
Jonas Schnelli
2017-05-05 08:53:39 +02:00
parent 9995a602a6
commit cebefba085
4 changed files with 95 additions and 28 deletions

View File

@@ -513,7 +513,10 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
} else if (strType == "flags") {
uint64_t flags;
ssValue >> flags;
pwallet->SetWalletFlags(flags, true);
if (!pwallet->SetWalletFlags(flags, true)) {
strErr = "Error reading wallet database: Unknown non-tolerable wallet flags found";
return false;
}
} else if (strType != "bestblock" && strType != "bestblock_nomerkle") {
wss.m_unknown_records++;
}
@@ -574,10 +577,12 @@ DBErrors WalletBatch::LoadWallet(CWallet* pwallet)
{
// losing keys is considered a catastrophic error, anything else
// we assume the user can live with:
if (IsKeyType(strType) || strType == "defaultkey")
if (IsKeyType(strType) || strType == "defaultkey") {
result = DBErrors::CORRUPT;
else
{
} else if(strType == "flags") {
// reading the wallet flags can only fail if unknown flags are present
result = DBErrors::TOO_NEW;
} else {
// Leave other errors alone, if we try to fix them we might make things worse.
fNoncriticalErrors = true; // ... but do warn the user there is something wrong.
if (strType == "tx")