aboutsummaryrefslogtreecommitdiff
path: root/src/key_io.cpp
diff options
context:
space:
mode:
authorAndrew Chow <github@achow101.com>2023-09-05 12:03:46 -0400
committerAndrew Chow <github@achow101.com>2023-09-12 12:14:31 -0400
commit8dd067088d41f021b357d7db5fa5f0a9f61edddc (patch)
tree6b2adb2b5c2e5cae92f032d910e7294d55d716a4 /src/key_io.cpp
parent238d29aff9b43234e340a9cf17742b2be5d1e97d (diff)
downloadbitcoin-8dd067088d41f021b357d7db5fa5f0a9f61edddc.tar.xz
Make WitnessUnknown members private
Make sure that nothing else can change WitnessUnknown's data members by making them private. Also change the program to use a vector rather than C-style array.
Diffstat (limited to 'src/key_io.cpp')
-rw-r--r--src/key_io.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/key_io.cpp b/src/key_io.cpp
index a061165613..96dc01550c 100644
--- a/src/key_io.cpp
+++ b/src/key_io.cpp
@@ -66,12 +66,13 @@ 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);
}
@@ -188,11 +189,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();