Utils¶
blake2signer.utils
¶
Miscellaneous utilities.
b32decode(data)
¶
Decode data encoded as Base 32 without padding.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
bytes |
Data to decode. |
required |
Returns:
Type | Description |
---|---|
bytes |
Original data. |
Source code in blake2signer/utils.py
def b32decode(data: bytes) -> bytes:
"""Decode data encoded as Base 32 without padding.
Args:
data: Data to decode.
Returns:
Original data.
"""
return base64.b32decode(data + (b'=' * ((8 - (len(data) % 8)) % 8)))
b32encode(data)
¶
Encode data as Base 32, stripping padding.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
bytes |
Data to encode. |
required |
Returns:
Type | Description |
---|---|
bytes |
Encoded data. |
Source code in blake2signer/utils.py
def b32encode(data: bytes) -> bytes:
"""Encode data as Base 32, stripping padding.
Args:
data: Data to encode.
Returns:
Encoded data.
"""
return base64.b32encode(data).rstrip(b'=')
b64decode(data)
¶
Decode data encoded as Base 64 URL safe without padding.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
bytes |
Data to decode. |
required |
Returns:
Type | Description |
---|---|
bytes |
Original data. |
Source code in blake2signer/utils.py
def b64decode(data: bytes) -> bytes:
"""Decode data encoded as Base 64 URL safe without padding.
Args:
data: Data to decode.
Returns:
Original data.
"""
return base64.urlsafe_b64decode(data + (b'=' * (len(data) % 4)))
b64encode(data)
¶
Encode data as Base 64 URL safe, stripping padding.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
bytes |
Data to encode. |
required |
Returns:
Type | Description |
---|---|
bytes |
Encoded data. |
Source code in blake2signer/utils.py
def b64encode(data: bytes) -> bytes:
"""Encode data as Base 64 URL safe, stripping padding.
Args:
data: Data to encode.
Returns:
Encoded data.
"""
return base64.urlsafe_b64encode(data).rstrip(b'=')
file_mode_is_text(file)
¶
Check if given file is opened in text mode, or otherwise in binary mode.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
file |
IO |
File to check its mode. |
required |
Returns:
Type | Description |
---|---|
bool |
True if file is opened in text mode, False otherwise. |
Source code in blake2signer/utils.py
def file_mode_is_text(file: typing.IO) -> bool:
"""Check if given file is opened in text mode, or otherwise in binary mode.
Args:
file: File to check its mode.
Returns:
True if file is opened in text mode, False otherwise.
"""
# Is there a better way to determine this? I thought on reading one byte/char,
# then checking the type, but the file might be writable only, so it wouldn't
# work.
return isinstance(file, io.TextIOBase)
force_bytes(value)
¶
Force a given value into bytes.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value |
Any |
Value to convert to bytes. |
required |
Returns:
Type | Description |
---|---|
bytes |
Converted value into bytes. |
Source code in blake2signer/utils.py
def force_bytes(value: typing.Any) -> bytes:
"""Force a given value into bytes.
Args:
value: Value to convert to bytes.
Returns:
Converted value into bytes.
"""
if isinstance(value, bytes):
return value
elif isinstance(value, str):
return value.encode('utf-8', errors='strict')
return bytes(value)
hexdecode(data)
¶
Decode data encoded as hexadecimal (uppercase).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
bytes |
Data to decode. |
required |
Returns:
Type | Description |
---|---|
bytes |
Original data. |
Source code in blake2signer/utils.py
def hexdecode(data: bytes) -> bytes:
"""Decode data encoded as hexadecimal (uppercase).
Args:
data: Data to decode.
Returns:
Original data.
"""
return base64.b16decode(data)
hexencode(data)
¶
Encode data as hexadecimal (uppercase).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
bytes |
Data to encode. |
required |
Returns:
Type | Description |
---|---|
bytes |
Encoded data. |
Source code in blake2signer/utils.py
def hexencode(data: bytes) -> bytes:
"""Encode data as hexadecimal (uppercase).
Args:
data: Data to encode.
Returns:
Encoded data.
"""
return base64.b16encode(data)
timestamp_to_aware_datetime(timestamp)
¶
Convert a UNIX timestamp into an aware datetime in UTC.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
timestamp |
Union[int, float] |
UNIX timestamp to convert. |
required |
Returns:
Type | Description |
---|---|
datetime |
Converted timestamp into an aware datetime in UTC. |
Source code in blake2signer/utils.py
def timestamp_to_aware_datetime(timestamp: typing.Union[int, float]) -> datetime:
"""Convert a UNIX timestamp into an aware datetime in UTC.
Args:
timestamp: UNIX timestamp to convert.
Returns:
Converted timestamp into an aware datetime in UTC.
"""
return datetime.fromtimestamp(timestamp, tz=timezone.utc)