BIOSUtilities/biosutilities/common/checksums.py
Plato Mavropoulos 35455f735c BIOSUtilities v24.10.18
Removed all Python built-in library keyword arguments (#55)
2024-10-18 13:37:52 +03:00

31 lines
713 B
Python

#!/usr/bin/env python3 -B
# coding=utf-8
"""
Copyright (C) 2022-2024 Plato Mavropoulos
"""
# Get Checksum 16-bit
def checksum_16(data: bytes | bytearray, value: int = 0, order: str = 'little') -> int:
""" Calculate Checksum-16 of data, controlling IV and Endianess """
for idx in range(0, len(data), 2):
# noinspection PyTypeChecker
value += int.from_bytes(data[idx:idx + 2], byteorder=order) # type: ignore
value &= 0xFFFF
return value
# Get Checksum 8-bit XOR
def checksum_8_xor(data: bytes | bytearray, value: int = 0) -> int:
""" Calculate Checksum-8 XOR of data, controlling IV """
for byte in data:
value ^= byte
value ^= 0x0
return value