27 const auto decode_input{provider.ConsumeBool() ? random_string : encoded};
28 const int max_ret_len{provider.ConsumeIntegralInRange<
int>(-1, decode_input.size() + 1)};
29 if (std::vector<unsigned char> decoded;
DecodeBase58(decode_input, decoded, max_ret_len)) {
32 if (decoded.size() > 0) {
34 assert(decoded.size() <=
static_cast<size_t>(max_ret_len));
35 assert(!
DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<
int>(0, decoded.size() - 1)));
46 const auto decode_input{provider.ConsumeBool() ? random_string : encoded};
47 const int max_ret_len{provider.ConsumeIntegralInRange<
int>(-1, decode_input.size() + 1)};
48 if (std::vector<unsigned char> decoded;
DecodeBase58Check(decode_input, decoded, max_ret_len)) {
51 if (decoded.size() > 0) {
53 assert(decoded.size() <=
static_cast<size_t>(max_ret_len));
54 assert(!
DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<
int>(0, decoded.size() - 1)));
61 const std::string random_string{buffer.begin(), buffer.end()};
71 assert(decoded && std::ranges::equal(*decoded, buffer));
76 const std::string random_string{buffer.begin(), buffer.end()};
86 assert(decoded && std::ranges::equal(*decoded, buffer));
91 const std::string random_string{buffer.begin(), buffer.end()};
96 assert(ok == error.empty());
std::string EncodeBase58(std::span< const unsigned char > input)
Why base-58 instead of standard base-64 encoding?
static bool DecodeBase58Check(const char *psz, std::vector< unsigned char > &vchRet, int max_ret_len)
static bool DecodeBase58(const char *psz, std::vector< unsigned char > &vch, int max_ret_len)
std::string EncodeBase58Check(std::span< const unsigned char > input)
Encode a byte span into a base58-encoded string, including checksum.
FUZZ_TARGET(base58_encode_decode)
std::string ConsumeRandomLengthString(size_t max_length)
std::string_view TrimStringView(std::string_view str, std::string_view pattern=" \f\n\r\t\v")
bool DecodeBase64PSBT(PartiallySignedTransaction &psbt, const std::string &base64_tx, std::string &error)
Decode a base64ed PSBT into a PartiallySignedTransaction.
constexpr auto MakeUCharSpan(const V &v) -> decltype(UCharSpanCast(std::span{v}))
Like the std::span constructor, but for (const) unsigned char member types only.
A version of CTransaction with the PSBT format.
std::optional< std::vector< unsigned char > > DecodeBase32(std::string_view str)
std::string EncodeBase32(std::span< const unsigned char > input, bool pad)
Base32 encode.
std::optional< std::vector< unsigned char > > DecodeBase64(std::string_view str)
std::string EncodeBase64(std::span< const unsigned char > input)
std::string ToLower(std::string_view str)
Returns the lowercase equivalent of the given string.