1#!/usr/local/bin/python3.8
2# vim:fileencoding=utf-8
3# License: GPL v3 Copyright: 2019, Kovid Goyal <kovid at kovidgoyal.net>
4
5
6from base64 import standard_b64decode, standard_b64encode
7from binascii import hexlify, unhexlify
8
9from polyglot.builtins import unicode_type
10
11
12def as_base64_bytes(x, enc='utf-8'):
13    if isinstance(x, unicode_type):
14        x = x.encode(enc)
15    return standard_b64encode(x)
16
17
18def as_base64_unicode(x, enc='utf-8'):
19    if isinstance(x, unicode_type):
20        x = x.encode(enc)
21    return standard_b64encode(x).decode('ascii')
22
23
24def from_base64_unicode(x, enc='utf-8'):
25    if isinstance(x, unicode_type):
26        x = x.encode('ascii')
27    return standard_b64decode(x).decode(enc)
28
29
30def from_base64_bytes(x):
31    if isinstance(x, unicode_type):
32        x = x.encode('ascii')
33    return standard_b64decode(x)
34
35
36def as_hex_bytes(x, enc='utf-8'):
37    if isinstance(x, unicode_type):
38        x = x.encode(enc)
39    return hexlify(x)
40
41
42def as_hex_unicode(x, enc='utf-8'):
43    if isinstance(x, unicode_type):
44        x = x.encode(enc)
45    return hexlify(x).decode('ascii')
46
47
48def from_hex_unicode(x, enc='utf-8'):
49    if isinstance(x, unicode_type):
50        x = x.encode('ascii')
51    return unhexlify(x).decode(enc)
52
53
54def from_hex_bytes(x):
55    if isinstance(x, unicode_type):
56        x = x.encode('ascii')
57    return unhexlify(x)
58