Full checking of all loaded keys
This commit is contained in:
parent
4c932cca6f
commit
91f43a33f8
2 changed files with 15 additions and 1 deletions
|
@ -862,7 +862,7 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
|
||||||
ssValue >> pkey;
|
ssValue >> pkey;
|
||||||
key.SetPubKey(vchPubKey);
|
key.SetPubKey(vchPubKey);
|
||||||
key.SetPrivKey(pkey);
|
key.SetPrivKey(pkey);
|
||||||
if (key.GetPubKey() != vchPubKey)
|
if (key.GetPubKey() != vchPubKey || !key.IsValid())
|
||||||
return DB_CORRUPT;
|
return DB_CORRUPT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -871,6 +871,8 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
|
||||||
ssValue >> wkey;
|
ssValue >> wkey;
|
||||||
key.SetPubKey(vchPubKey);
|
key.SetPubKey(vchPubKey);
|
||||||
key.SetPrivKey(wkey.vchPrivKey);
|
key.SetPrivKey(wkey.vchPrivKey);
|
||||||
|
if (key.GetPubKey() != vchPubKey || !key.IsValid())
|
||||||
|
return DB_CORRUPT;
|
||||||
}
|
}
|
||||||
if (!pwallet->LoadKey(key))
|
if (!pwallet->LoadKey(key))
|
||||||
return DB_CORRUPT;
|
return DB_CORRUPT;
|
||||||
|
|
12
src/key.h
12
src/key.h
|
@ -307,6 +307,18 @@ public:
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsValid()
|
||||||
|
{
|
||||||
|
if (!fSet)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
bool fCompr;
|
||||||
|
CSecret secret = GetSecret(fCompr);
|
||||||
|
CKey key2;
|
||||||
|
key2.SetSecret(secret, fCompr);
|
||||||
|
return GetPubKey() == key2.GetPubKey();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue