From 886e80cbfea1294b7a6e02304303cbd3f21a34c0 Mon Sep 17 00:00:00 2001 From: Kazuki Suzuki Przyborowski Date: Fri, 14 Feb 2025 00:56:24 -0600 Subject: [PATCH] Update pyarchivefile.py --- pyarchivefile.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pyarchivefile.py b/pyarchivefile.py index 2de5092..a351463 100755 --- a/pyarchivefile.py +++ b/pyarchivefile.py @@ -1666,6 +1666,17 @@ def SevenZipFileCheck(infile): # initial_value can be 0xFFFF or 0x0000 +def crc_calculate(msg, poly, initial_value, bit_length): + """Generic CRC calculation function.""" + crc = initial_value + for byte in msg: + crc ^= byte << (bit_length - 8) + for _ in range(8): + crc = (crc << 1) ^ poly if crc & (1 << (bit_length - 1)) else crc << 1 + crc &= (1 << bit_length) - 1 + return crc + + def crc16_ansi(msg, initial_value=0xFFFF): # CRC-16-IBM / CRC-16-ANSI polynomial and initial value poly = 0x8005 # Polynomial for CRC-16-IBM / CRC-16-ANSI