18 auto limit = bech32::CharLimit::BECH32;
23 if (decoded.hrp.empty()) {
25 assert(decoded.data.empty());
28 auto reencoded =
bech32::Encode(decoded.encoding, decoded.hrp, decoded.data);
38 for (
size_t i = 0; i < length; ++i) {
54 std::vector<uint8_t> converted_input;
55 ConvertBits<8, 5, true>([&](
auto c) { converted_input.push_back(c); }, input_chars.begin(), input_chars.end());
58 if (size <= bech32::CharLimit::BECH32) {
64 assert(decoded.encoding == encoding);
65 assert(decoded.hrp == hrp);
66 assert(decoded.data == converted_input);
std::string ConsumeRandomLengthString(size_t max_length)
std::vector< T > ConsumeBytes(size_t num_bytes)
T ConsumeIntegralInRange(T min, T max)
@ INVALID
Failed decoding.
@ BECH32
Bech32 encoding as defined in BIP173.
@ BECH32M
Bech32m encoding as defined in BIP350.
DecodeResult Decode(const std::string &str, CharLimit limit)
Decode a Bech32 or Bech32m string.
std::string Encode(Encoding encoding, const std::string &hrp, const data &values)
Encode a Bech32 or Bech32m string.
static constexpr size_t CHECKSUM_SIZE
static constexpr char SEPARATOR
bool CaseInsensitiveEqual(const std::string &s1, const std::string &s2)
std::string GenerateRandomHRP(FuzzedDataProvider &fdp)
FUZZ_TARGET(bech32_random_decode)