ssValue >> pkey;
key.SetPubKey(vchPubKey);
key.SetPrivKey(pkey);
- if (key.GetPubKey() != vchPubKey)
+ if (key.GetPubKey() != vchPubKey || !key.IsValid())
return DB_CORRUPT;
}
else
ssValue >> wkey;
key.SetPubKey(vchPubKey);
key.SetPrivKey(wkey.vchPrivKey);
+ if (key.GetPubKey() != vchPubKey || !key.IsValid())
+ return DB_CORRUPT;
}
if (!pwallet->LoadKey(key))
return DB_CORRUPT;
return false;
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