Fix minor backward incompatibility

The key refactor changed the way unencrypted private keys with compressed
public key are stored in the wallet. Apparently older versions relied on
this to verify the correctness of stored keys.

Note that earlier pre-release versions do risk creating wallets that can
not be opened by 0.8.3 and earlier.
This commit is contained in:
Pieter Wuille 2013-07-13 12:56:52 +02:00
parent d598872726
commit fb83a79b21

View File

@ -155,7 +155,8 @@ public:
BN_clear_free(&bn); BN_clear_free(&bn);
} }
void GetPrivKey(CPrivKey &privkey) { void GetPrivKey(CPrivKey &privkey, bool fCompressed) {
EC_KEY_set_conv_form(pkey, fCompressed ? POINT_CONVERSION_COMPRESSED : POINT_CONVERSION_UNCOMPRESSED);
int nSize = i2d_ECPrivateKey(pkey, NULL); int nSize = i2d_ECPrivateKey(pkey, NULL);
assert(nSize); assert(nSize);
privkey.resize(nSize); privkey.resize(nSize);
@ -304,7 +305,7 @@ CPrivKey CKey::GetPrivKey() const {
CECKey key; CECKey key;
key.SetSecretBytes(vch); key.SetSecretBytes(vch);
CPrivKey privkey; CPrivKey privkey;
key.GetPrivKey(privkey); key.GetPrivKey(privkey, fCompressed);
return privkey; return privkey;
} }