mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-03 09:56:38 -05:00
[MOVEONLY] Move ParseHDKeypath to utilstrencodings
This commit is contained in:
parent
81e1dd5ce1
commit
3b01efa0d1
4 changed files with 43 additions and 43 deletions
|
@ -544,3 +544,43 @@ bool ParseFixedPoint(const std::string &val, int decimals, int64_t *amount_out)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ParseHDKeypath(const std::string& keypath_str, std::vector<uint32_t>& keypath)
|
||||||
|
{
|
||||||
|
std::stringstream ss(keypath_str);
|
||||||
|
std::string item;
|
||||||
|
bool first = true;
|
||||||
|
while (std::getline(ss, item, '/')) {
|
||||||
|
if (item.compare("m") == 0) {
|
||||||
|
if (first) {
|
||||||
|
first = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Finds whether it is hardened
|
||||||
|
uint32_t path = 0;
|
||||||
|
size_t pos = item.find("'");
|
||||||
|
if (pos != std::string::npos) {
|
||||||
|
// The hardened tick can only be in the last index of the string
|
||||||
|
if (pos != item.size() - 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
path |= 0x80000000;
|
||||||
|
item = item.substr(0, item.size() - 1); // Drop the last character which is the hardened tick
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure this is only numbers
|
||||||
|
if (item.find_first_not_of( "0123456789" ) != std::string::npos) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uint32_t number;
|
||||||
|
if (!ParseUInt32(item, &number)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
path |= number;
|
||||||
|
|
||||||
|
keypath.push_back(path);
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -183,4 +183,7 @@ bool ConvertBits(const O& outfn, I it, I end) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Parse an HD keypaths like "m/7/0'/2000". */
|
||||||
|
bool ParseHDKeypath(const std::string& keypath_str, std::vector<uint32_t>& keypath);
|
||||||
|
|
||||||
#endif // BITCOIN_UTILSTRENCODINGS_H
|
#endif // BITCOIN_UTILSTRENCODINGS_H
|
||||||
|
|
|
@ -4423,47 +4423,6 @@ UniValue sethdseed(const JSONRPCRequest& request)
|
||||||
return NullUniValue;
|
return NullUniValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ParseHDKeypath(std::string keypath_str, std::vector<uint32_t>& keypath)
|
|
||||||
{
|
|
||||||
std::stringstream ss(keypath_str);
|
|
||||||
std::string item;
|
|
||||||
bool first = true;
|
|
||||||
while (std::getline(ss, item, '/')) {
|
|
||||||
if (item.compare("m") == 0) {
|
|
||||||
if (first) {
|
|
||||||
first = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Finds whether it is hardened
|
|
||||||
uint32_t path = 0;
|
|
||||||
size_t pos = item.find("'");
|
|
||||||
if (pos != std::string::npos) {
|
|
||||||
// The hardened tick can only be in the last index of the string
|
|
||||||
if (pos != item.size() - 1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
path |= 0x80000000;
|
|
||||||
item = item.substr(0, item.size() - 1); // Drop the last character which is the hardened tick
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure this is only numbers
|
|
||||||
if (item.find_first_not_of( "0123456789" ) != std::string::npos) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
uint32_t number;
|
|
||||||
if (!ParseUInt32(item, &number)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
path |= number;
|
|
||||||
|
|
||||||
keypath.push_back(path);
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AddKeypathToMap(const CWallet* pwallet, const CKeyID& keyID, std::map<CPubKey, KeyOriginInfo>& hd_keypaths)
|
void AddKeypathToMap(const CWallet* pwallet, const CKeyID& keyID, std::map<CPubKey, KeyOriginInfo>& hd_keypaths)
|
||||||
{
|
{
|
||||||
CPubKey vchPubKey;
|
CPubKey vchPubKey;
|
||||||
|
|
|
@ -13,8 +13,6 @@
|
||||||
#include <test/test_bitcoin.h>
|
#include <test/test_bitcoin.h>
|
||||||
#include <wallet/test/wallet_test_fixture.h>
|
#include <wallet/test/wallet_test_fixture.h>
|
||||||
|
|
||||||
extern bool ParseHDKeypath(std::string keypath_str, std::vector<uint32_t>& keypath);
|
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_SUITE(psbt_wallet_tests, WalletTestingSetup)
|
BOOST_FIXTURE_TEST_SUITE(psbt_wallet_tests, WalletTestingSetup)
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(psbt_updater_test)
|
BOOST_AUTO_TEST_CASE(psbt_updater_test)
|
||||||
|
|
Loading…
Add table
Reference in a new issue