multibase/
encoding.rs

1use data_encoding::Encoding;
2use data_encoding_macro::new_encoding;
3
4// Base2 (alphabet: 01)
5pub const BASE2: Encoding = new_encoding! {
6    symbols: "01",
7};
8
9// Base8 (alphabet: 01234567)
10pub const BASE8: Encoding = new_encoding! {
11    symbols: "01234567",
12};
13
14/// Base10 (alphabet: 0123456789)
15pub const BASE10: &str = "0123456789";
16
17// Base16 lower hexadecimal (alphabet: 0123456789abcdef)
18pub const BASE16_LOWER: Encoding = data_encoding::HEXLOWER_PERMISSIVE;
19
20// Base16 upper hexadecimal (alphabet: 0123456789ABCDEF).
21pub const BASE16_UPPER: Encoding = data_encoding::HEXUPPER_PERMISSIVE;
22
23// Base32, rfc4648 no padding (alphabet: abcdefghijklmnopqrstuvwxyz234567).
24pub const BASE32_NOPAD_LOWER: Encoding = new_encoding! {
25    symbols: "abcdefghijklmnopqrstuvwxyz234567",
26    translate_from: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
27    translate_to: "abcdefghijklmnopqrstuvwxyz",
28};
29
30// Base32, rfc4648 no padding (alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567).
31pub const BASE32_NOPAD_UPPER: Encoding = new_encoding! {
32    symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
33    translate_from: "abcdefghijklmnopqrstuvwxyz",
34    translate_to: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
35};
36
37// Base32, rfc4648 with padding (alphabet: abcdefghijklmnopqrstuvwxyz234567).
38pub const BASE32_PAD_LOWER: Encoding = new_encoding! {
39    symbols: "abcdefghijklmnopqrstuvwxyz234567",
40    translate_from: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
41    translate_to: "abcdefghijklmnopqrstuvwxyz",
42    padding: '=',
43};
44
45// Base32, rfc4648 with padding (alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567).
46pub const BASE32_PAD_UPPER: Encoding = new_encoding! {
47    symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
48    translate_from: "abcdefghijklmnopqrstuvwxyz",
49    translate_to: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
50    padding: '=',
51};
52
53// Base32hex, rfc4648 no padding (alphabet: 0123456789abcdefghijklmnopqrstuv).
54pub const BASE32HEX_NOPAD_LOWER: Encoding = new_encoding! {
55    symbols: "0123456789abcdefghijklmnopqrstuv",
56    translate_from: "ABCDEFGHIJKLMNOPQRSTUV",
57    translate_to: "abcdefghijklmnopqrstuv",
58};
59
60// Base32hex, rfc4648 no padding (alphabet: 0123456789ABCDEFGHIJKLMNOPQRSTUV).
61pub const BASE32HEX_NOPAD_UPPER: Encoding = new_encoding! {
62    symbols: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
63    translate_from: "abcdefghijklmnopqrstuv",
64    translate_to: "ABCDEFGHIJKLMNOPQRSTUV",
65};
66
67// Base32hex, rfc4648 with padding (alphabet: 0123456789abcdefghijklmnopqrstuv).
68pub const BASE32HEX_PAD_LOWER: Encoding = new_encoding! {
69    symbols: "0123456789abcdefghijklmnopqrstuv",
70    translate_from: "ABCDEFGHIJKLMNOPQRSTUV",
71    translate_to: "abcdefghijklmnopqrstuv",
72    padding: '=',
73};
74
75/// Base32hex, rfc4648 with padding (alphabet: 0123456789ABCDEFGHIJKLMNOPQRSTUV).
76pub const BASE32HEX_PAD_UPPER: Encoding = new_encoding! {
77    symbols: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
78    translate_from: "abcdefghijklmnopqrstuv",
79    translate_to: "ABCDEFGHIJKLMNOPQRSTUV",
80    padding: '=',
81};
82
83// z-base-32 (used by Tahoe-LAFS) (alphabet: ybndrfg8ejkmcpqxot1uwisza345h769).
84pub const BASE32Z: Encoding = new_encoding! {
85    symbols: "ybndrfg8ejkmcpqxot1uwisza345h769",
86};
87
88/// Base36, [0-9a-z] no padding (alphabet: 0123456789abcdefghijklmnopqrstuvwxyz).
89pub const BASE36_LOWER: &str = "0123456789abcdefghijklmnopqrstuvwxyz";
90
91/// Base36, [0-9A-Z] no padding (alphabet: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ).
92pub const BASE36_UPPER: &str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
93
94// Base58 Flickr's alphabet for creating short urls from photo ids.
95pub const BASE58_FLICKR: &str = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
96
97// Base58 Bitcoin's alphabet as defined in their Base58Check encoding.
98pub const BASE58_BITCOIN: &str = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
99
100// Base64, rfc4648 no padding (alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/).
101pub const BASE64_NOPAD: Encoding = data_encoding::BASE64_NOPAD;
102
103// Base64, rfc4648 with padding (alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/).
104pub const BASE64_PAD: Encoding = data_encoding::BASE64;
105
106// Base64 url, rfc4648 no padding (alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_).
107pub const BASE64URL_NOPAD: Encoding = data_encoding::BASE64URL_NOPAD;
108
109// Base64 url, rfc4648 with padding (alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_).
110pub const BASE64URL_PAD: Encoding = data_encoding::BASE64URL;