Rev 827 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
827 | daniel-mar | 1 | <?php |
2 | declare(strict_types=1); |
||
3 | namespace ParagonIE\ConstantTime; |
||
4 | |||
874 | daniel-mar | 5 | use TypeError; |
6 | |||
827 | daniel-mar | 7 | /** |
874 | daniel-mar | 8 | * Copyright (c) 2016 - 2022 Paragon Initiative Enterprises. |
827 | daniel-mar | 9 | * Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com) |
10 | * |
||
11 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
||
12 | * of this software and associated documentation files (the "Software"), to deal |
||
13 | * in the Software without restriction, including without limitation the rights |
||
14 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||
15 | * copies of the Software, and to permit persons to whom the Software is |
||
16 | * furnished to do so, subject to the following conditions: |
||
17 | * |
||
18 | * The above copyright notice and this permission notice shall be included in all |
||
19 | * copies or substantial portions of the Software. |
||
20 | * |
||
21 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||
22 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
23 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||
24 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||
25 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||
26 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||
27 | * SOFTWARE. |
||
28 | */ |
||
29 | |||
30 | /** |
||
31 | * Class Encoding |
||
32 | * @package ParagonIE\ConstantTime |
||
33 | */ |
||
34 | abstract class Encoding |
||
35 | { |
||
36 | /** |
||
37 | * RFC 4648 Base32 encoding |
||
38 | * |
||
39 | * @param string $str |
||
40 | * @return string |
||
874 | daniel-mar | 41 | * @throws TypeError |
827 | daniel-mar | 42 | */ |
43 | public static function base32Encode(string $str): string |
||
44 | { |
||
45 | return Base32::encode($str); |
||
46 | } |
||
47 | |||
48 | /** |
||
49 | * RFC 4648 Base32 encoding |
||
50 | * |
||
51 | * @param string $str |
||
52 | * @return string |
||
874 | daniel-mar | 53 | * @throws TypeError |
827 | daniel-mar | 54 | */ |
55 | public static function base32EncodeUpper(string $str): string |
||
56 | { |
||
57 | return Base32::encodeUpper($str); |
||
58 | } |
||
59 | |||
60 | /** |
||
61 | * RFC 4648 Base32 decoding |
||
62 | * |
||
63 | * @param string $str |
||
64 | * @return string |
||
874 | daniel-mar | 65 | * @throws TypeError |
827 | daniel-mar | 66 | */ |
67 | public static function base32Decode(string $str): string |
||
68 | { |
||
69 | return Base32::decode($str); |
||
70 | } |
||
71 | |||
72 | /** |
||
73 | * RFC 4648 Base32 decoding |
||
74 | * |
||
75 | * @param string $str |
||
76 | * @return string |
||
874 | daniel-mar | 77 | * @throws TypeError |
827 | daniel-mar | 78 | */ |
79 | public static function base32DecodeUpper(string $str): string |
||
80 | { |
||
81 | return Base32::decodeUpper($str); |
||
82 | } |
||
83 | |||
84 | /** |
||
85 | * RFC 4648 Base32 encoding |
||
86 | * |
||
87 | * @param string $str |
||
88 | * @return string |
||
874 | daniel-mar | 89 | * @throws TypeError |
827 | daniel-mar | 90 | */ |
91 | public static function base32HexEncode(string $str): string |
||
92 | { |
||
93 | return Base32Hex::encode($str); |
||
94 | } |
||
95 | |||
96 | /** |
||
97 | * RFC 4648 Base32Hex encoding |
||
98 | * |
||
99 | * @param string $str |
||
100 | * @return string |
||
874 | daniel-mar | 101 | * @throws TypeError |
827 | daniel-mar | 102 | */ |
103 | public static function base32HexEncodeUpper(string $str): string |
||
104 | { |
||
105 | return Base32Hex::encodeUpper($str); |
||
106 | } |
||
107 | |||
108 | /** |
||
109 | * RFC 4648 Base32Hex decoding |
||
110 | * |
||
111 | * @param string $str |
||
112 | * @return string |
||
874 | daniel-mar | 113 | * @throws TypeError |
827 | daniel-mar | 114 | */ |
115 | public static function base32HexDecode(string $str): string |
||
116 | { |
||
117 | return Base32Hex::decode($str); |
||
118 | } |
||
119 | |||
120 | /** |
||
121 | * RFC 4648 Base32Hex decoding |
||
122 | * |
||
123 | * @param string $str |
||
124 | * @return string |
||
874 | daniel-mar | 125 | * @throws TypeError |
827 | daniel-mar | 126 | */ |
127 | public static function base32HexDecodeUpper(string $str): string |
||
128 | { |
||
129 | return Base32Hex::decodeUpper($str); |
||
130 | } |
||
131 | |||
132 | /** |
||
133 | * RFC 4648 Base64 encoding |
||
134 | * |
||
135 | * @param string $str |
||
136 | * @return string |
||
874 | daniel-mar | 137 | * @throws TypeError |
827 | daniel-mar | 138 | */ |
139 | public static function base64Encode(string $str): string |
||
140 | { |
||
141 | return Base64::encode($str); |
||
142 | } |
||
143 | |||
144 | /** |
||
145 | * RFC 4648 Base64 decoding |
||
146 | * |
||
147 | * @param string $str |
||
148 | * @return string |
||
874 | daniel-mar | 149 | * @throws TypeError |
827 | daniel-mar | 150 | */ |
151 | public static function base64Decode(string $str): string |
||
152 | { |
||
153 | return Base64::decode($str); |
||
154 | } |
||
155 | |||
156 | /** |
||
157 | * Encode into Base64 |
||
158 | * |
||
159 | * Base64 character set "./[A-Z][a-z][0-9]" |
||
160 | * @param string $str |
||
161 | * @return string |
||
874 | daniel-mar | 162 | * @throws TypeError |
827 | daniel-mar | 163 | */ |
164 | public static function base64EncodeDotSlash(string $str): string |
||
165 | { |
||
166 | return Base64DotSlash::encode($str); |
||
167 | } |
||
168 | |||
169 | /** |
||
170 | * Decode from base64 to raw binary |
||
171 | * |
||
172 | * Base64 character set "./[A-Z][a-z][0-9]" |
||
173 | * |
||
174 | * @param string $str |
||
175 | * @return string |
||
176 | * @throws \RangeException |
||
874 | daniel-mar | 177 | * @throws TypeError |
827 | daniel-mar | 178 | */ |
179 | public static function base64DecodeDotSlash(string $str): string |
||
180 | { |
||
181 | return Base64DotSlash::decode($str); |
||
182 | } |
||
183 | |||
184 | /** |
||
185 | * Encode into Base64 |
||
186 | * |
||
187 | * Base64 character set "[.-9][A-Z][a-z]" or "./[0-9][A-Z][a-z]" |
||
188 | * @param string $str |
||
189 | * @return string |
||
874 | daniel-mar | 190 | * @throws TypeError |
827 | daniel-mar | 191 | */ |
192 | public static function base64EncodeDotSlashOrdered(string $str): string |
||
193 | { |
||
194 | return Base64DotSlashOrdered::encode($str); |
||
195 | } |
||
196 | |||
197 | /** |
||
198 | * Decode from base64 to raw binary |
||
199 | * |
||
200 | * Base64 character set "[.-9][A-Z][a-z]" or "./[0-9][A-Z][a-z]" |
||
201 | * |
||
202 | * @param string $str |
||
203 | * @return string |
||
204 | * @throws \RangeException |
||
874 | daniel-mar | 205 | * @throws TypeError |
827 | daniel-mar | 206 | */ |
207 | public static function base64DecodeDotSlashOrdered(string $str): string |
||
208 | { |
||
209 | return Base64DotSlashOrdered::decode($str); |
||
210 | } |
||
211 | |||
212 | /** |
||
213 | * Convert a binary string into a hexadecimal string without cache-timing |
||
214 | * leaks |
||
215 | * |
||
216 | * @param string $bin_string (raw binary) |
||
217 | * @return string |
||
874 | daniel-mar | 218 | * @throws TypeError |
827 | daniel-mar | 219 | */ |
220 | public static function hexEncode(string $bin_string): string |
||
221 | { |
||
222 | return Hex::encode($bin_string); |
||
223 | } |
||
224 | |||
225 | /** |
||
226 | * Convert a hexadecimal string into a binary string without cache-timing |
||
227 | * leaks |
||
228 | * |
||
229 | * @param string $hex_string |
||
230 | * @return string (raw binary) |
||
231 | * @throws \RangeException |
||
232 | */ |
||
233 | public static function hexDecode(string $hex_string): string |
||
234 | { |
||
235 | return Hex::decode($hex_string); |
||
236 | } |
||
237 | |||
238 | /** |
||
239 | * Convert a binary string into a hexadecimal string without cache-timing |
||
240 | * leaks |
||
241 | * |
||
242 | * @param string $bin_string (raw binary) |
||
243 | * @return string |
||
874 | daniel-mar | 244 | * @throws TypeError |
827 | daniel-mar | 245 | */ |
246 | public static function hexEncodeUpper(string $bin_string): string |
||
247 | { |
||
248 | return Hex::encodeUpper($bin_string); |
||
249 | } |
||
250 | |||
251 | /** |
||
252 | * Convert a binary string into a hexadecimal string without cache-timing |
||
253 | * leaks |
||
254 | * |
||
255 | * @param string $bin_string (raw binary) |
||
256 | * @return string |
||
257 | */ |
||
258 | public static function hexDecodeUpper(string $bin_string): string |
||
259 | { |
||
260 | return Hex::decode($bin_string); |
||
261 | } |
||
262 | } |