mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 11:57:28 -03:00
Merge pull request #6468
6f8b6d3
don't try to decode invalid encoded ext keys (Jonas Schnelli)8d2af54
extend bip32 tests to cover Base58c/CExtKey decode (Jonas Schnelli)7cb1f9f
fix and extend CBitcoinExtKeyBase template (Jonas Schnelli)
This commit is contained in:
commit
d43297c5ba
2 changed files with 19 additions and 1 deletions
|
@ -146,7 +146,10 @@ public:
|
||||||
|
|
||||||
K GetKey() {
|
K GetKey() {
|
||||||
K ret;
|
K ret;
|
||||||
ret.Decode(&vchData[0], &vchData[Size]);
|
if (vchData.size() == Size) {
|
||||||
|
//if base58 encouded data not holds a ext key, return a !IsValid() key
|
||||||
|
ret.Decode(&vchData[0]);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,6 +157,10 @@ public:
|
||||||
SetKey(key);
|
SetKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CBitcoinExtKeyBase(const std::string& strBase58c) {
|
||||||
|
SetString(strBase58c.c_str(), Params().Base58Prefix(Type).size());
|
||||||
|
}
|
||||||
|
|
||||||
CBitcoinExtKeyBase() {}
|
CBitcoinExtKeyBase() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -88,12 +88,23 @@ void RunTest(const TestVector &test) {
|
||||||
unsigned char data[74];
|
unsigned char data[74];
|
||||||
key.Encode(data);
|
key.Encode(data);
|
||||||
pubkey.Encode(data);
|
pubkey.Encode(data);
|
||||||
|
|
||||||
// Test private key
|
// Test private key
|
||||||
CBitcoinExtKey b58key; b58key.SetKey(key);
|
CBitcoinExtKey b58key; b58key.SetKey(key);
|
||||||
BOOST_CHECK(b58key.ToString() == derive.prv);
|
BOOST_CHECK(b58key.ToString() == derive.prv);
|
||||||
|
|
||||||
|
CBitcoinExtKey b58keyDecodeCheck(derive.prv);
|
||||||
|
CExtKey checkKey = b58keyDecodeCheck.GetKey();
|
||||||
|
assert(checkKey == key); //ensure a base58 decoded key also matches
|
||||||
|
|
||||||
// Test public key
|
// Test public key
|
||||||
CBitcoinExtPubKey b58pubkey; b58pubkey.SetKey(pubkey);
|
CBitcoinExtPubKey b58pubkey; b58pubkey.SetKey(pubkey);
|
||||||
BOOST_CHECK(b58pubkey.ToString() == derive.pub);
|
BOOST_CHECK(b58pubkey.ToString() == derive.pub);
|
||||||
|
|
||||||
|
CBitcoinExtPubKey b58PubkeyDecodeCheck(derive.pub);
|
||||||
|
CExtPubKey checkPubKey = b58PubkeyDecodeCheck.GetKey();
|
||||||
|
assert(checkPubKey == pubkey); //ensure a base58 decoded pubkey also matches
|
||||||
|
|
||||||
// Derive new keys
|
// Derive new keys
|
||||||
CExtKey keyNew;
|
CExtKey keyNew;
|
||||||
BOOST_CHECK(key.Derive(keyNew, derive.nChild));
|
BOOST_CHECK(key.Derive(keyNew, derive.nChild));
|
||||||
|
|
Loading…
Reference in a new issue