Browse Source

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.
0.8
Pieter Wuille 11 years ago committed by Warren Togami
parent
commit
3a619b01b3
  1. 5
      src/key.cpp

5
src/key.cpp

@ -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;
} }

Loading…
Cancel
Save