Bitcoin Core 31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
base58.cpp File Reference
#include <base58.h>
#include <hash.h>
#include <uint256.h>
#include <util/strencodings.h>
#include <util/string.h>
#include <cassert>
#include <cstring>
#include <limits>
Include dependency graph for base58.cpp:

Go to the source code of this file.

Functions

static bool DecodeBase58 (const char *psz, std::vector< unsigned char > &vch, int max_ret_len)
std::string EncodeBase58 (std::span< const unsigned char > input)
 Why base-58 instead of standard base-64 encoding?
bool DecodeBase58 (const std::string &str, std::vector< unsigned char > &vchRet, int max_ret_len)
 Decode a base58-encoded string (str) into a byte vector (vchRet).
std::string EncodeBase58Check (std::span< const unsigned char > input)
 Encode a byte span into a base58-encoded string, including checksum.
static bool DecodeBase58Check (const char *psz, std::vector< unsigned char > &vchRet, int max_ret_len)
bool DecodeBase58Check (const std::string &str, std::vector< unsigned char > &vchRet, int max_ret)
 Decode a base58-encoded string (str) that includes a checksum into a byte vector (vchRet), return true if decoding is successful.
bool ContainsNoNUL (std::string_view str) noexcept
 Check if a string does not contain any embedded NUL (\0) characters.

Variables

static const char * pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
 All alphanumeric characters except for "0", "I", "O", and "l".
static const int8_t mapBase58 [256]

Function Documentation

◆ ContainsNoNUL()

bool util::ContainsNoNUL ( std::string_view str)
inlinenodiscardnoexcept

Check if a string does not contain any embedded NUL (\0) characters.

Definition at line 234 of file string.h.

Here is the caller graph for this function:

◆ DecodeBase58() [1/2]

bool DecodeBase58 ( const char * psz,
std::vector< unsigned char > & vch,
int max_ret_len )
staticnodiscard

Definition at line 40 of file base58.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DecodeBase58() [2/2]

bool DecodeBase58 ( const std::string & str,
std::vector< unsigned char > & vchRet,
int max_ret_len )
nodiscard

Decode a base58-encoded string (str) into a byte vector (vchRet).

return true if decoding is successful.

Definition at line 129 of file base58.cpp.

Here is the call graph for this function:

◆ DecodeBase58Check() [1/2]

bool DecodeBase58Check ( const char * psz,
std::vector< unsigned char > & vchRet,
int max_ret_len )
staticnodiscard

Definition at line 146 of file base58.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DecodeBase58Check() [2/2]

bool DecodeBase58Check ( const std::string & str,
std::vector< unsigned char > & vchRet,
int max_ret )
nodiscard

Decode a base58-encoded string (str) that includes a checksum into a byte vector (vchRet), return true if decoding is successful.

Definition at line 163 of file base58.cpp.

Here is the call graph for this function:

◆ EncodeBase58()

std::string EncodeBase58 ( std::span< const unsigned char > input)

Why base-58 instead of standard base-64 encoding?

  • Don't want 0OIl characters that look the same in some fonts and could be used to create visually identical looking data.
  • A string with non-alphanumeric characters is not as easily accepted as input.
  • E-mail usually won't line-break if there's no punctuation to break at.
  • Double-clicking selects the whole string as one word if it's all alphanumeric. Encode a byte span as a base58-encoded string

Definition at line 89 of file base58.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EncodeBase58Check()

std::string EncodeBase58Check ( std::span< const unsigned char > input)

Encode a byte span into a base58-encoded string, including checksum.

Definition at line 137 of file base58.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ mapBase58

const int8_t mapBase58[256]
static
Initial value:
= {
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8,-1,-1,-1,-1,-1,-1,
-1, 9,10,11,12,13,14,15, 16,-1,17,18,19,20,21,-1,
22,23,24,25,26,27,28,29, 30,31,32,-1,-1,-1,-1,-1,
-1,33,34,35,36,37,38,39, 40,41,42,43,-1,44,45,46,
47,48,49,50,51,52,53,54, 55,56,57,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,
}

Definition at line 21 of file base58.cpp.

◆ pszBase58

const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
static

All alphanumeric characters except for "0", "I", "O", and "l".

Definition at line 20 of file base58.cpp.