aboutsummaryrefslogtreecommitdiff
path: root/src/key_io.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/key_io.cpp')
-rw-r--r--src/key_io.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/key_io.cpp b/src/key_io.cpp
index 1a0b51a28b..5bcbb8a069 100644
--- a/src/key_io.cpp
+++ b/src/key_io.cpp
@@ -67,16 +67,18 @@ public:
std::string operator()(const WitnessUnknown& id) const
{
- if (id.version < 1 || id.version > 16 || id.length < 2 || id.length > 40) {
+ const std::vector<unsigned char>& program = id.GetWitnessProgram();
+ if (id.GetWitnessVersion() < 1 || id.GetWitnessVersion() > 16 || program.size() < 2 || program.size() > 40) {
return {};
}
- std::vector<unsigned char> data = {(unsigned char)id.version};
- data.reserve(1 + (id.length * 8 + 4) / 5);
- ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, id.program, id.program + id.length);
+ std::vector<unsigned char> data = {(unsigned char)id.GetWitnessVersion()};
+ data.reserve(1 + (program.size() * 8 + 4) / 5);
+ ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, program.begin(), program.end());
return bech32::Encode(bech32::Encoding::BECH32M, m_params.Bech32HRP(), data);
}
std::string operator()(const CNoDestination& no) const { return {}; }
+ std::string operator()(const PubKeyDestination& pk) const { return {}; }
};
CTxDestination DecodeDestination(const std::string& str, const CChainParams& params, std::string& error_str, std::vector<int>* error_locations)
@@ -189,11 +191,7 @@ CTxDestination DecodeDestination(const std::string& str, const CChainParams& par
return CNoDestination();
}
- WitnessUnknown unk;
- unk.version = version;
- std::copy(data.begin(), data.end(), unk.program);
- unk.length = data.size();
- return unk;
+ return WitnessUnknown{version, data};
} else {
error_str = strprintf("Invalid padding in Bech32 data section");
return CNoDestination();