rippled
Loading...
Searching...
No Matches
tokens.h
1#pragma once
2
3#include <xrpl/basics/Expected.h>
4#include <xrpl/basics/contract.h>
5#include <xrpl/protocol/detail/token_errors.h>
6
7#include <cstdint>
8#include <optional>
9#include <span>
10#include <string>
11#include <string_view>
12
13namespace xrpl {
14
15template <class T>
17
18enum class TokenType : std::uint8_t {
19 None = 1, // unused
20 NodePublic = 28,
21 NodePrivate = 32,
22 AccountID = 0,
23 AccountPublic = 35,
24 AccountSecret = 34,
25 FamilyGenerator = 41, // unused
26 FamilySeed = 33
27};
28
29template <class T>
30[[nodiscard]] std::optional<T>
32
33template <class T>
34[[nodiscard]] std::optional<T>
36
48[[nodiscard]] std::string
49encodeBase58Token(TokenType type, void const* token, std::size_t size);
50
51[[nodiscard]] std::string
53
54namespace b58_ref {
55// The reference version does not use gcc extensions (int128 in particular)
56[[nodiscard]] std::string
57encodeBase58Token(TokenType type, void const* token, std::size_t size);
58
59[[nodiscard]] std::string
61
62namespace detail {
63// Expose detail functions for unit tests only
65encodeBase58(void const* message, std::size_t size, void* temp, std::size_t temp_size);
66
69} // namespace detail
70} // namespace b58_ref
71
72#ifndef _MSC_VER
73namespace b58_fast {
74// Use the fast version (10-15x faster) is using gcc extensions (int128 in
75// particular)
78
81
82// This interface matches the old interface, but requires additional allocation
83[[nodiscard]] std::string
84encodeBase58Token(TokenType type, void const* token, std::size_t size);
85
86// This interface matches the old interface, but requires additional allocation
87[[nodiscard]] std::string
89
90namespace detail {
91// Expose detail functions for unit tests only
94
96b58_to_b256_be(std::string_view input, std::span<std::uint8_t> out);
97} // namespace detail
98
99} // namespace b58_fast
100#endif // _MSC_VER
101} // namespace xrpl
std::string decodeBase58(std::string const &s)
Definition tokens.cpp:247
std::string encodeBase58(void const *message, std::size_t size, void *temp, std::size_t temp_size)
Definition tokens.cpp:200
std::string encodeBase58Token(TokenType type, void const *token, std::size_t size)
Definition tokens.cpp:295
std::string decodeBase58Token(std::string const &s, TokenType type)
Definition tokens.cpp:318
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
std::optional< AccountID > parseBase58(std::string const &s)
Parse AccountID from checked, base58 string.
TokenType
Definition tokens.h:18
std::string encodeBase58Token(TokenType type, void const *token, std::size_t size)
Encode data in Base58Check format using XRPL alphabet.
Definition tokens.cpp:176
std::string decodeBase58Token(std::string const &s, TokenType type)
Definition tokens.cpp:186