Bitcoin ABC  0.22.12
P2P Digital Currency
Functions | Variables
base58.cpp File Reference
#include <base58.h>
#include <hash.h>
#include <uint256.h>
#include <util/strencodings.h>
#include <util/string.h>
#include <cassert>
#include <cstdint>
#include <cstring>
#include <limits>
Include dependency graph for base58.cpp:

Go to the source code of this file.

Functions

bool DecodeBase58 (const char *psz, std::vector< uint8_t > &vch, int max_ret_len)
 Decode a base58-encoded string (psz) into a byte vector (vchRet). More...
 
std::string EncodeBase58 (const uint8_t *pbegin, const uint8_t *pend)
 Why base-58 instead of standard base-64 encoding? More...
 
std::string EncodeBase58 (const std::vector< uint8_t > &vch)
 Encode a byte vector as a base58-encoded string. More...
 
bool DecodeBase58 (const std::string &str, std::vector< uint8_t > &vchRet, int max_ret_len)
 Decode a base58-encoded string (str) into a byte vector (vchRet). More...
 
std::string EncodeBase58Check (const std::vector< uint8_t > &vchIn)
 Encode a byte vector into a base58-encoded string, including checksum. More...
 
bool DecodeBase58Check (const char *psz, std::vector< uint8_t > &vchRet, int max_ret_len)
 Decode a base58-encoded string (psz) that includes a checksum into a byte vector (vchRet), return true if decoding is successful. More...
 
bool DecodeBase58Check (const std::string &str, std::vector< uint8_t > &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. More...
 

Variables

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

Function Documentation

◆ DecodeBase58() [1/2]

bool DecodeBase58 ( const char *  psz,
std::vector< uint8_t > &  vchRet,
int  max_ret_len 
)

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

return true if decoding is successful. psz cannot be nullptr.

Definition at line 37 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< uint8_t > &  vchRet,
int  max_ret_len 
)

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

return true if decoding is successful.

Definition at line 147 of file base58.cpp.

Here is the call graph for this function:

◆ DecodeBase58Check() [1/2]

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

Decode a base58-encoded string (psz) 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:
Here is the caller graph for this function:

◆ DecodeBase58Check() [2/2]

bool DecodeBase58Check ( const std::string &  str,
std::vector< uint8_t > &  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.

Definition at line 183 of file base58.cpp.

Here is the call graph for this function:

◆ EncodeBase58() [1/2]

std::string EncodeBase58 ( const uint8_t *  pbegin,
const uint8_t *  pend 
)

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 sequence as a base58-encoded string. pbegin and pend cannot be nullptr, unless both are.

Definition at line 100 of file base58.cpp.

Here is the caller graph for this function:

◆ EncodeBase58() [2/2]

std::string EncodeBase58 ( const std::vector< uint8_t > &  vch)

Encode a byte vector as a base58-encoded string.

Definition at line 143 of file base58.cpp.

Here is the call graph for this function:

◆ EncodeBase58Check()

std::string EncodeBase58Check ( const std::vector< uint8_t > &  vchIn)

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

Definition at line 155 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 20 of file base58.cpp.

◆ pszBase58

const char* pszBase58
static
Initial value:
=
"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

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

Definition at line 18 of file base58.cpp.