xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol
tokens.h
1
#pragma once
2
3
#include <xrpl/protocol/detail/token_errors.h>
4
5
#include <
cstddef
>
6
#include <
cstdint
>
7
#include <expected>
8
#include <
optional
>
9
#include <
span
>
10
#include <
string
>
11
#include <
string_view
>
12
#include <
system_error
>
13
14
namespace
xrpl
{
15
16
template
<
class
T>
17
using
B58Result
= std::expected<T, std::error_code>;
18
19
enum class
TokenType
:
std::uint8_t
{
20
None
= 1,
// unused
21
NodePublic
= 28,
22
NodePrivate
= 32,
23
AccountID
= 0,
24
AccountPublic
= 35,
25
AccountSecret
= 34,
26
FamilyGenerator
= 41,
// unused
27
FamilySeed
= 33
28
};
29
30
template
<
class
T>
31
[[nodiscard]]
std::optional<T>
32
parseBase58
(
std::string
const
& s);
33
34
template
<
class
T>
35
[[nodiscard]]
std::optional<T>
36
parseBase58
(
TokenType
type,
std::string
const
& s);
37
50
[[nodiscard]]
std::string
51
encodeBase58Token
(
TokenType
type,
void
const
* token,
std::size_t
size);
52
53
[[nodiscard]]
std::string
54
decodeBase58Token
(
std::string
const
& s,
TokenType
type);
55
56
namespace
b58_ref
{
57
// The reference version does not use gcc extensions (int128 in particular)
58
[[nodiscard]]
std::string
59
encodeBase58Token
(
TokenType
type,
void
const
* token,
std::size_t
size);
60
61
[[nodiscard]]
std::string
62
decodeBase58Token
(
std::string
const
& s,
TokenType
type);
63
64
namespace
detail
{
65
// Expose detail functions for unit tests only
66
std::string
67
encodeBase58
(
void
const
* message,
std::size_t
size,
void
* temp,
std::size_t
tempSize);
68
69
std::string
70
decodeBase58
(
std::string
const
& s);
71
}
// namespace detail
72
}
// namespace b58_ref
73
74
#ifndef _MSC_VER
75
namespace
b58_fast {
76
// Use the fast version (10-15x faster) is using gcc extensions (int128 in
77
// particular)
78
[[nodiscard]]
B58Result<std::span<std::uint8_t>
>
79
encodeBase58Token
(
80
TokenType
tokenType,
81
std::span<std::uint8_t const>
input,
82
std::span<std::uint8_t>
out);
83
84
[[nodiscard]]
B58Result<std::span<std::uint8_t>
>
85
decodeBase58Token
(
TokenType
type,
std::string_view
s,
std::span<std::uint8_t>
outBuf);
86
87
// This interface matches the old interface, but requires additional allocation
88
[[nodiscard]]
std::string
89
encodeBase58Token
(
TokenType
type,
void
const
* token,
std::size_t
size);
90
91
// This interface matches the old interface, but requires additional allocation
92
[[nodiscard]]
std::string
93
decodeBase58Token
(
std::string
const
& s,
TokenType
type);
94
95
namespace
detail
{
96
// Expose detail functions for unit tests only
97
B58Result<std::span<std::uint8_t>
>
98
b256ToB58Be(
std::span<std::uint8_t const>
input,
std::span<std::uint8_t>
out);
99
100
B58Result<std::span<std::uint8_t>
>
101
b58ToB256Be(
std::string_view
input,
std::span<std::uint8_t>
out);
102
}
// namespace detail
103
104
}
// namespace b58_fast
105
#endif
// _MSC_VER
106
}
// namespace xrpl
std::string
std::string_view
cstddef
cstdint
std::uint8_t
xrpl::b58_ref::detail
Definition
tokens.h:64
xrpl::b58_ref::detail::decodeBase58
std::string decodeBase58(std::string const &s)
Definition
tokens.cpp:252
xrpl::b58_ref::detail::encodeBase58
std::string encodeBase58(void const *message, std::size_t size, void *temp, std::size_t tempSize)
Definition
tokens.cpp:205
xrpl::b58_ref
Definition
tokens.h:56
xrpl::b58_ref::encodeBase58Token
std::string encodeBase58Token(TokenType type, void const *token, std::size_t size)
Definition
tokens.cpp:300
xrpl::b58_ref::decodeBase58Token
std::string decodeBase58Token(std::string const &s, TokenType type)
Definition
tokens.cpp:323
xrpl::detail
Definition
base_uint.h:37
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::parseBase58
std::optional< AccountID > parseBase58(std::string const &s)
Parse AccountID from checked, base58 string.
Definition
AccountID.cpp:105
xrpl::B58Result
std::expected< T, std::error_code > B58Result
Definition
tokens.h:17
xrpl::TokenType
TokenType
Definition
tokens.h:19
xrpl::TokenType::FamilyGenerator
@ FamilyGenerator
Definition
tokens.h:26
xrpl::TokenType::NodePrivate
@ NodePrivate
Definition
tokens.h:22
xrpl::TokenType::None
@ None
Definition
tokens.h:20
xrpl::TokenType::AccountSecret
@ AccountSecret
Definition
tokens.h:25
xrpl::TokenType::AccountPublic
@ AccountPublic
Definition
tokens.h:24
xrpl::TokenType::NodePublic
@ NodePublic
Definition
tokens.h:21
xrpl::TokenType::FamilySeed
@ FamilySeed
Definition
tokens.h:27
xrpl::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
xrpl::encodeBase58Token
std::string encodeBase58Token(TokenType type, void const *token, std::size_t size)
Encode data in Base58Check format using XRPL alphabet.
Definition
tokens.cpp:181
xrpl::decodeBase58Token
std::string decodeBase58Token(std::string const &s, TokenType type)
Definition
tokens.cpp:191
optional
std::size_t
span
string
string_view
system_error
Generated by
1.17.0