diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2013-07-13 12:56:52 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2013-07-13 12:57:19 +0200 |
commit | fb83a79b21786d9aaa7e2b50dcdba343d024956f (patch) | |
tree | 26b464b6264e4813b32049f7fe373b920165fddc | |
parent | d598872726ce9e2cbabdf705a616495c44851c2c (diff) | |
download | bitcoin-fb83a79b21786d9aaa7e2b50dcdba343d024956f.tar.xz |
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.
-rw-r--r-- | src/key.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/key.cpp b/src/key.cpp index f73708199a..1ab4c62ebf 100644 --- a/src/key.cpp +++ b/src/key.cpp @@ -155,7 +155,8 @@ public: 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); assert(nSize); privkey.resize(nSize); @@ -304,7 +305,7 @@ CPrivKey CKey::GetPrivKey() const { CECKey key; key.SetSecretBytes(vch); CPrivKey privkey; - key.GetPrivKey(privkey); + key.GetPrivKey(privkey, fCompressed); return privkey; } |