Source code for crccheck.crc

""" Classes to calculate CRCs (Cyclic Redundancy Check).

  License::

    MIT License

    Copyright (c) 2015-2022 by Martin Scharrer <martin.scharrer@web.de>

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software
    and associated documentation files (the "Software"), to deal in the Software without
    restriction, including without limitation the rights to use, copy, modify, merge, publish,
    distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or
    substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
    BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

"""
from crccheck.base import CrccheckBase, reflectbitorder, REFLECT_BIT_ORDER_TABLE, CrccheckError


[docs]class CrcBase(CrccheckBase): """Abstract base class for all Cyclic Redundancy Checks (CRC) checksums""" _names = () _width = 0 _poly = 0x00 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = None _check_data = bytearray(b"123456789") _residue = None
[docs] @classmethod def poly(cls): """Getter for polynominal value.""" return cls._poly
[docs] @classmethod def reflect_input(cls): """Getter for reflect_input.""" return cls._reflect_input
[docs] @classmethod def reflect_output(cls): """Getter for reflect_output.""" return cls._reflect_output
[docs] @classmethod def xor_output(cls): """Getter for xor_output value.""" return cls._xor_output
[docs] @classmethod def residue(cls): """Getter for residue value.""" return cls._residue
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value highbit = 1 << (self._width - 1) mask = ((highbit - 1) << 1) | 0x1 # done this way to avoid overrun for 64-bit values poly = self._poly shift = self._width - 8 diff8 = -shift if diff8 > 0: # enlarge temporary to fit 8-bit mask = 0xFF crc <<= diff8 shift = 0 highbit = 0x80 poly = self._poly << diff8 reflect = self._reflect_input for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc ^= (byte << shift) for i in range(0, 8): if crc & highbit: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= mask if diff8 > 0: crc >>= diff8 self._value = crc return self
[docs] def final(self): """ Return final CRC value. Return: int: final CRC value """ crc = self._value if self._reflect_output: crc = reflectbitorder(self._width, crc) crc ^= self._xor_output return crc
def __eq__(self, other): # noinspection PyProtectedMember return self._width == other.width() and \ self._poly == other.poly() and \ self._initvalue == other.initvalue() and \ self._reflect_input == other.reflect_input() and \ self._reflect_output == other.reflect_output() and \ self._xor_output == other.xor_output() def __repr__(self): residue = hex(self._residue) if self._residue is not None else 'None' check_result = hex(self._check_result) if self._check_result is not None else 'None' return ("Crc(width={:d}, poly=0x{:x}, initvalue=0x{:X}, reflect_input={!s:s}, reflect_output={!s:s}, " + "xor_output=0x{:x}, check_result={}, residue={})").format( self._width, self._poly, self._initvalue, self._reflect_input, self._reflect_output, self._xor_output, check_result, residue)
[docs]def find(classes=None, width=None, poly=None, initvalue=None, reflect_input=None, reflect_output=None, xor_output=None, check_result=None, residue=None): """Find CRC classes which the matching properties. Args: classes (None or list): List of classes to search in. If None the list ALLCRCCLASSES will be used. width (None or int): number of bits of the CRC classes to find poly (None or int): polygon to find initvalue (None or int): initvalue to find reflect_input (None or bool): reflect_input to find reflect_output (None or bool): reflect_output to find xor_output (None or int): xor_output to find check_result (None or int): check_result to find residue (None or int): residue to find Returns: List of CRC classes with the selected properties. Examples: Find all CRC16 classes: $ find(width=16) Find all CRC32 classes with all-1 init value and XOR output: $ find(width=32, initvalue=0xFFFF, xor_output=0xFFFF) """ found = list() if classes is None: classes = ALLCRCCLASSES for cls in classes: if width is not None and width != cls._width: continue if poly is not None and poly != cls._poly: continue if initvalue is not None and initvalue != cls._initvalue: continue if reflect_input is not None and reflect_input != cls._reflect_input: continue if reflect_output is not None and reflect_output != cls._reflect_output: continue if xor_output is not None and xor_output != cls._xor_output: continue if check_result is not None and check_result != cls._check_result: continue if residue is not None and residue != cls._residue: continue found.append(cls) return found
[docs]def identify(data, crc, width=None, classes=None, one=True): """ Identify the used CRC algorithm which was used to calculate the CRC from some data. This function can be used to identify a suitable CRC class if the exact CRC algorithm/parameters are not known, but a CRC value is known from some data. Note that this function can be quite time consuming on large data, especially if the given width is not known. Args: data (bytes): Data to compare with the `crc`. crc (int): Known CRC of the given `data`. width (int or None): Known bit width of given `crc`. Providing the width will speed up the identification of the CRC algorithm. classes (iterable or None): Listing of classes to check. If None then ALLCRCCLASSES is used. one (bool): If True then only the first found CRC class is retunred. Otherwise a list of all suitable CRC classes. Returns: If `one` is True: CRC class which instances produce the given CRC from the given data. If no CRC class could be found `None` is returned. If `one` is False: List of CRC classes which instances produce the given CRC from the given data. The list may be empty. """ if classes is None: classes = ALLCRCCLASSES if width is not None: classes = (cls for cls in classes if cls._width == width) found = [] for cls in classes: if cls().calc(data) == crc: if one: return cls found.append(cls) if one: return None return found
[docs]class Crc(CrcBase): """ Creates a new general (user-defined) CRC calculator instance. Arguments: width (int): bit width of CRC. poly (int): polynomial of CRC with the top bit omitted. initvalue (int): initial value of internal running CRC value. Usually either 0 or (1<<width)-1, i.e. "all-1s". reflect_input (bool): If true the bit order of the input bytes are reflected first. This is to calculate the CRC like least-significant bit first systems will do it. reflect_output (bool): If true the bit order of the calculation result will be reflected before the XOR output stage. xor_output (int): The result is bit-wise XOR-ed with this value. Usually 0 (value stays the same) or (1<<width)-1, i.e. "all-1s" (invert value). check_result (int): The expected result for the check input "123456789" (= [0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39]). This value is used for the selftest() method to verify proper operation. residue (int): The residue expected after calculating the CRC over the original data followed by the CRC of the original data. With initvalue=0 and xor_output=0 the residue calculates always to 0. """ _width = 0 _poly = 0x00 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = None _residue = None def __init__(self, width, poly, initvalue=0x00, reflect_input=False, reflect_output=False, xor_output=0x00, check_result=0x00, residue=0x00): super(Crc, self).__init__(initvalue) self._initvalue = int(initvalue) self._width = int(width) self._poly = int(poly) self._reflect_input = bool(reflect_input) self._reflect_output = bool(reflect_output) self._xor_output = int(xor_output) self._check_result = int(check_result) if check_result is not None else None self._residue = int(residue) if residue is not None else None
[docs] def calc(self, data, initvalue=None, **kwargs): """ Fully calculate CRC/checksum over given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. initvalue (int): Initial value. If None then the default value for the class is used. Return: int: final value """ self.reset() self.process(data) return self.final()
[docs] def calchex(self, data, initvalue=None, byteorder='big', **kwargs): """Fully calculate checksum over given data. Return result as hex string. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. initvalue (int): Initial value. If None then the default value for the class is used. byteorder ('big' or 'little'): order (endianness) of returned bytes. Return: str: final value as hex string without leading '0x'. """ self.reset() self.process(data) return self.finalhex(byteorder)
[docs] def calcbytes(self, data, initvalue=None, byteorder='big', **kwargs): """Fully calculate checksum over given data. Return result as bytearray. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. initvalue (int): Initial value. If None then the default value for the class is used. byteorder ('big' or 'little'): order (endianness) of returned bytes. Return: bytes: final value as bytes """ self.reset() self.process(data) return self.finalbytes(byteorder)
[docs] def selftest(self, data=None, expectedresult=None, **kwargs): if data is None: data = self._check_data expectedresult = self._check_result result = self.calc(data) if result != expectedresult: raise CrccheckError("{:s}: expected {:s}, got {:s}".format( self.__class__.__name__, hex(expectedresult), hex(result)))
[docs]class Crc8Base(CrcBase): """CRC-8. Has optimised code for 8-bit CRCs and is used as base class for all other CRC with this width. """ _width = 8 _poly = 0x07 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xF4
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value reflect = self._reflect_input poly = self._poly for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc = crc ^ byte for i in range(0, 8): if crc & 0x80: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= 0xFF self._value = crc return self
[docs]class Crc16Base(CrcBase): """CRC-16. Has optimised code for 16-bit CRCs and is used as base class for all other CRC with this width. """ _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x31C3
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value reflect = self._reflect_input poly = self._poly for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc ^= (byte << 8) for i in range(0, 8): if crc & 0x8000: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= 0xFFFF self._value = crc return self
[docs]class Crc32Base(CrcBase): """CRC-32. Has optimised code for 32-bit CRCs and is used as base class for all other CRC with this width. """ _width = 32 _poly = 0x04C11DB7 _initvalue = 0xFFFFFFFF _reflect_input = True _reflect_output = True _xor_output = 0xFFFFFFFF _check_result = 0xCBF43926
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value reflect = self._reflect_input poly = self._poly for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc ^= (byte << 24) for i in range(0, 8): if crc & 0x80000000: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= 0xFFFFFFFF self._value = crc return self
def _inthex(value): try: return int(value, 0) except TypeError: return int(value)
[docs]def crccls(width=None, poly=None, initvalue=None, reflect_input=None, reflect_output=None, xor_output=None, check_result=None, residue=None, clsname=None, name=None, basecls=None): if clsname is None: clsname = 'CrcGeneric' if name is None: name = clsname if basecls is not None: if not issubclass(basecls, CrcBase): raise ValueError('basecls invalid') elif width is not None and basecls.width() != width: raise ValueError('basecls has unsuitable width') elif width is not None: basecls = {32: Crc32Base, 16: Crc16Base, 8: Crc8Base}.get(width, CrcBase) else: raise ValueError('Either width or basecls must be given') # Set given attributes only, rest is taken from base class attr = {'_names': (str(name),)} if width is not None: attr['_width'] = _inthex(width) if poly is not None: attr['_poly'] = _inthex(poly) if initvalue is not None: attr['_initvalue'] = _inthex(initvalue) if reflect_input is not None: attr['_reflect_input'] = bool(reflect_input) if reflect_output is not None: attr['_reflect_output'] = bool(reflect_output) if xor_output is not None: attr['_xor_output'] = _inthex(xor_output) if check_result is not None: attr['_check_result'] = _inthex(check_result) if residue is not None: attr['_residue'] = _inthex(residue) return type(str(clsname), (basecls,), attr)
# # # CRC CLASSES # # #
[docs]class Crc3Gsm(CrcBase): """CRC-3/GSM""" _names = ('CRC-3/GSM',) _width = 3 _poly = 0x3 _initvalue = 0x0 _reflect_input = False _reflect_output = False _xor_output = 0x7 _check_result = 0x4 _residue = 0x2
[docs]class Crc3Rohc(CrcBase): """CRC-3/ROHC""" _names = ('CRC-3/ROHC',) _width = 3 _poly = 0x3 _initvalue = 0x7 _reflect_input = True _reflect_output = True _xor_output = 0x0 _check_result = 0x6 _residue = 0x0
[docs]class Crc4G704(CrcBase): """CRC-4/G-704 Aliases: CRC-4/ITU """ _names = ('CRC-4/G-704', 'CRC-4/ITU') _width = 4 _poly = 0x3 _initvalue = 0x0 _reflect_input = True _reflect_output = True _xor_output = 0x0 _check_result = 0x7 _residue = 0x0
Crc4Itu = Crc4G704
[docs]class Crc4Interlaken(CrcBase): """CRC-4/INTERLAKEN""" _names = ('CRC-4/INTERLAKEN',) _width = 4 _poly = 0x3 _initvalue = 0xf _reflect_input = False _reflect_output = False _xor_output = 0xf _check_result = 0xb _residue = 0x2
[docs]class Crc5EpcC1G2(CrcBase): """CRC-5/EPC-C1G2 Aliases: CRC-5/EPC """ _names = ('CRC-5/EPC-C1G2', 'CRC-5/EPC') _width = 5 _poly = 0x09 _initvalue = 0x09 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x00 _residue = 0x00
Crc5Epc = Crc5EpcC1G2
[docs]class Crc5G704(CrcBase): """CRC-5/G-704 Aliases: CRC-5/ITU """ _names = ('CRC-5/G-704', 'CRC-5/ITU') _width = 5 _poly = 0x15 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x07 _residue = 0x00
Crc5Itu = Crc5G704
[docs]class Crc5Usb(CrcBase): """CRC-5/USB""" _names = ('CRC-5/USB',) _width = 5 _poly = 0x05 _initvalue = 0x1f _reflect_input = True _reflect_output = True _xor_output = 0x1f _check_result = 0x19 _residue = 0x06
[docs]class Crc6Cdma2000A(CrcBase): """CRC-6/CDMA2000-A""" _names = ('CRC-6/CDMA2000-A',) _width = 6 _poly = 0x27 _initvalue = 0x3f _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x0d _residue = 0x00
[docs]class Crc6Cdma2000B(CrcBase): """CRC-6/CDMA2000-B""" _names = ('CRC-6/CDMA2000-B',) _width = 6 _poly = 0x07 _initvalue = 0x3f _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x3b _residue = 0x00
[docs]class Crc6Darc(CrcBase): """CRC-6/DARC""" _names = ('CRC-6/DARC',) _width = 6 _poly = 0x19 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x26 _residue = 0x00
[docs]class Crc6G704(CrcBase): """CRC-6/G-704 Aliases: CRC-6/ITU """ _names = ('CRC-6/G-704', 'CRC-6/ITU') _width = 6 _poly = 0x03 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x06 _residue = 0x00
Crc6Itu = Crc6G704
[docs]class Crc6Gsm(CrcBase): """CRC-6/GSM""" _names = ('CRC-6/GSM',) _width = 6 _poly = 0x2f _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x3f _check_result = 0x13 _residue = 0x3a
[docs]class Crc7Mmc(CrcBase): """CRC-7/MMC Aliases: CRC-7 """ _names = ('CRC-7/MMC', 'CRC-7') _width = 7 _poly = 0x09 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x75 _residue = 0x00
Crc7 = Crc7Mmc
[docs]class Crc7Rohc(CrcBase): """CRC-7/ROHC""" _names = ('CRC-7/ROHC',) _width = 7 _poly = 0x4f _initvalue = 0x7f _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x53 _residue = 0x00
[docs]class Crc7Umts(CrcBase): """CRC-7/UMTS""" _names = ('CRC-7/UMTS',) _width = 7 _poly = 0x45 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x61 _residue = 0x00
[docs]class Crc8Autosar(Crc8Base): """CRC-8/AUTOSAR""" _names = ('CRC-8/AUTOSAR',) _width = 8 _poly = 0x2f _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0xff _check_result = 0xdf _residue = 0x42
[docs]class Crc8Bluetooth(Crc8Base): """CRC-8/BLUETOOTH""" _names = ('CRC-8/BLUETOOTH',) _width = 8 _poly = 0xa7 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x26 _residue = 0x00
[docs]class Crc8Cdma2000(Crc8Base): """CRC-8/CDMA2000""" _names = ('CRC-8/CDMA2000',) _width = 8 _poly = 0x9b _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xda _residue = 0x00
[docs]class Crc8Darc(Crc8Base): """CRC-8/DARC""" _names = ('CRC-8/DARC',) _width = 8 _poly = 0x39 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x15 _residue = 0x00
[docs]class Crc8DvbS2(Crc8Base): """CRC-8/DVB-S2""" _names = ('CRC-8/DVB-S2',) _width = 8 _poly = 0xd5 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xbc _residue = 0x00
[docs]class Crc8GsmA(Crc8Base): """CRC-8/GSM-A""" _names = ('CRC-8/GSM-A',) _width = 8 _poly = 0x1d _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x37 _residue = 0x00
[docs]class Crc8GsmB(Crc8Base): """CRC-8/GSM-B""" _names = ('CRC-8/GSM-B',) _width = 8 _poly = 0x49 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0xff _check_result = 0x94 _residue = 0x53
[docs]class Crc8Hitag(Crc8Base): """CRC-8/HITAG""" _names = ('CRC-8/HITAG',) _width = 8 _poly = 0x1d _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xb4 _residue = 0x00
[docs]class Crc8I4321(Crc8Base): """CRC-8/I-432-1 Aliases: CRC-8/ITU """ _names = ('CRC-8/I-432-1', 'CRC-8/ITU') _width = 8 _poly = 0x07 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x55 _check_result = 0xa1 _residue = 0xac
Crc8Itu = Crc8I4321
[docs]class Crc8ICode(Crc8Base): """CRC-8/I-CODE""" _names = ('CRC-8/I-CODE',) _width = 8 _poly = 0x1d _initvalue = 0xfd _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x7e _residue = 0x00
[docs]class Crc8Lte(Crc8Base): """CRC-8/LTE""" _names = ('CRC-8/LTE',) _width = 8 _poly = 0x9b _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xea _residue = 0x00
[docs]class Crc8MaximDow(Crc8Base): """CRC-8/MAXIM-DOW Aliases: CRC-8/MAXIM, DOW-CRC """ _names = ('CRC-8/MAXIM-DOW', 'CRC-8/MAXIM', 'DOW-CRC') _width = 8 _poly = 0x31 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0xa1 _residue = 0x00
Crc8Maxim = Crc8MaximDow CrcDow = Crc8MaximDow
[docs]class Crc8MifareMad(Crc8Base): """CRC-8/MIFARE-MAD""" _names = ('CRC-8/MIFARE-MAD',) _width = 8 _poly = 0x1d _initvalue = 0xc7 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x99 _residue = 0x00
[docs]class Crc8Nrsc5(Crc8Base): """CRC-8/NRSC-5""" _names = ('CRC-8/NRSC-5',) _width = 8 _poly = 0x31 _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xf7 _residue = 0x00
[docs]class Crc8Opensafety(Crc8Base): """CRC-8/OPENSAFETY""" _names = ('CRC-8/OPENSAFETY',) _width = 8 _poly = 0x2f _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x3e _residue = 0x00
[docs]class Crc8Rohc(Crc8Base): """CRC-8/ROHC""" _names = ('CRC-8/ROHC',) _width = 8 _poly = 0x07 _initvalue = 0xff _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0xd0 _residue = 0x00
[docs]class Crc8SaeJ1850(Crc8Base): """CRC-8/SAE-J1850""" _names = ('CRC-8/SAE-J1850',) _width = 8 _poly = 0x1d _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0xff _check_result = 0x4b _residue = 0xc4
[docs]class Crc8Smbus(Crc8Base): """CRC-8/SMBUS Aliases: CRC-8 """ _names = ('CRC-8/SMBUS', 'CRC-8') _width = 8 _poly = 0x07 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xf4 _residue = 0x00
Crc8 = Crc8Smbus
[docs]class Crc8Tech3250(Crc8Base): """CRC-8/TECH-3250 Aliases: CRC-8/AES, CRC-8/EBU """ _names = ('CRC-8/TECH-3250', 'CRC-8/AES', 'CRC-8/EBU') _width = 8 _poly = 0x1d _initvalue = 0xff _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x97 _residue = 0x00
Crc8Aes = Crc8Tech3250 Crc8Ebu = Crc8Tech3250
[docs]class Crc8Wcdma(Crc8Base): """CRC-8/WCDMA""" _names = ('CRC-8/WCDMA',) _width = 8 _poly = 0x9b _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x25 _residue = 0x00
[docs]class Crc10Atm(CrcBase): """CRC-10/ATM Aliases: CRC-10, CRC-10/I-610 """ _names = ('CRC-10/ATM', 'CRC-10', 'CRC-10/I-610') _width = 10 _poly = 0x233 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x199 _residue = 0x000
Crc10 = Crc10Atm Crc10I610 = Crc10Atm
[docs]class Crc10Cdma2000(CrcBase): """CRC-10/CDMA2000""" _names = ('CRC-10/CDMA2000',) _width = 10 _poly = 0x3d9 _initvalue = 0x3ff _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x233 _residue = 0x000
[docs]class Crc10Gsm(CrcBase): """CRC-10/GSM""" _names = ('CRC-10/GSM',) _width = 10 _poly = 0x175 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x3ff _check_result = 0x12a _residue = 0x0c6
[docs]class Crc11Flexray(CrcBase): """CRC-11/FLEXRAY Aliases: CRC-11 """ _names = ('CRC-11/FLEXRAY', 'CRC-11') _width = 11 _poly = 0x385 _initvalue = 0x01a _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x5a3 _residue = 0x000
Crc11 = Crc11Flexray
[docs]class Crc11Umts(CrcBase): """CRC-11/UMTS""" _names = ('CRC-11/UMTS',) _width = 11 _poly = 0x307 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x061 _residue = 0x000
[docs]class Crc12Cdma2000(CrcBase): """CRC-12/CDMA2000""" _names = ('CRC-12/CDMA2000',) _width = 12 _poly = 0xf13 _initvalue = 0xfff _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0xd4d _residue = 0x000
[docs]class Crc12Dect(CrcBase): """CRC-12/DECT Aliases: CRC-12-X """ _names = ('CRC-12/DECT', 'CRC-12-X') _width = 12 _poly = 0x80f _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0xf5b _residue = 0x000
Crc12X = Crc12Dect
[docs]class Crc12Gsm(CrcBase): """CRC-12/GSM""" _names = ('CRC-12/GSM',) _width = 12 _poly = 0xd31 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0xfff _check_result = 0xb34 _residue = 0x178
[docs]class Crc12Umts(CrcBase): """CRC-12/UMTS Aliases: CRC-12/3GPP """ _names = ('CRC-12/UMTS', 'CRC-12/3GPP') _width = 12 _poly = 0x80f _initvalue = 0x000 _reflect_input = False _reflect_output = True _xor_output = 0x000 _check_result = 0xdaf _residue = 0x000
Crc123Gpp = Crc12Umts
[docs]class Crc13Bbc(CrcBase): """CRC-13/BBC""" _names = ('CRC-13/BBC',) _width = 13 _poly = 0x1cf5 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x04fa _residue = 0x0000
[docs]class Crc14Darc(CrcBase): """CRC-14/DARC""" _names = ('CRC-14/DARC',) _width = 14 _poly = 0x0805 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x082d _residue = 0x0000
[docs]class Crc14Gsm(CrcBase): """CRC-14/GSM""" _names = ('CRC-14/GSM',) _width = 14 _poly = 0x202d _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x3fff _check_result = 0x30ae _residue = 0x031e
[docs]class Crc15Can(CrcBase): """CRC-15/CAN Aliases: CRC-15 """ _names = ('CRC-15/CAN', 'CRC-15') _width = 15 _poly = 0x4599 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x059e _residue = 0x0000
Crc15 = Crc15Can
[docs]class Crc15Mpt1327(CrcBase): """CRC-15/MPT1327""" _names = ('CRC-15/MPT1327',) _width = 15 _poly = 0x6815 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0001 _check_result = 0x2566 _residue = 0x6815
[docs]class Crc16Arc(Crc16Base): """CRC-16/ARC Aliases: ARC, CRC-16/LHA, CRC-IBM """ _names = ('CRC-16/ARC', 'ARC', 'CRC-16/LHA', 'CRC-IBM') _width = 16 _poly = 0x8005 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0xbb3d _residue = 0x0000
CrcArc = Crc16Arc Crc16Lha = Crc16Arc CrcIbm = Crc16Arc
[docs]class Crc16Cdma2000(Crc16Base): """CRC-16/CDMA2000""" _names = ('CRC-16/CDMA2000',) _width = 16 _poly = 0xc867 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x4c06 _residue = 0x0000
[docs]class Crc16Cms(Crc16Base): """CRC-16/CMS""" _names = ('CRC-16/CMS',) _width = 16 _poly = 0x8005 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xaee7 _residue = 0x0000
[docs]class Crc16Dds110(Crc16Base): """CRC-16/DDS-110""" _names = ('CRC-16/DDS-110',) _width = 16 _poly = 0x8005 _initvalue = 0x800d _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x9ecf _residue = 0x0000
[docs]class Crc16DectR(Crc16Base): """CRC-16/DECT-R Aliases: R-CRC-16 """ _names = ('CRC-16/DECT-R', 'R-CRC-16') _width = 16 _poly = 0x0589 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0001 _check_result = 0x007e _residue = 0x0589
Crc16R = Crc16DectR
[docs]class Crc16DectX(Crc16Base): """CRC-16/DECT-X Aliases: X-CRC-16 """ _names = ('CRC-16/DECT-X', 'X-CRC-16') _width = 16 _poly = 0x0589 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x007f _residue = 0x0000
Crc16X = Crc16DectX
[docs]class Crc16Dnp(Crc16Base): """CRC-16/DNP""" _names = ('CRC-16/DNP',) _width = 16 _poly = 0x3d65 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0xea82 _residue = 0x66c5
[docs]class Crc16En13757(Crc16Base): """CRC-16/EN-13757""" _names = ('CRC-16/EN-13757',) _width = 16 _poly = 0x3d65 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xc2b7 _residue = 0xa366
[docs]class Crc16Genibus(Crc16Base): """CRC-16/GENIBUS Aliases: CRC-16/DARC, CRC-16/EPC, CRC-16/EPC-C1G2, CRC-16/I-CODE """ _names = ('CRC-16/GENIBUS', 'CRC-16/DARC', 'CRC-16/EPC', 'CRC-16/EPC-C1G2', 'CRC-16/I-CODE') _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xd64e _residue = 0x1d0f
Crc16Darc = Crc16Genibus Crc16Epc = Crc16Genibus Crc16EpcC1G2 = Crc16Genibus Crc16ICode = Crc16Genibus
[docs]class Crc16Gsm(Crc16Base): """CRC-16/GSM""" _names = ('CRC-16/GSM',) _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xce3c _residue = 0x1d0f
[docs]class Crc16Ibm3740(Crc16Base): """CRC-16/IBM-3740 Aliases: CRC-16/AUTOSAR, CRC-16/CCITT-FALSE """ _names = ('CRC-16/IBM-3740', 'CRC-16/AUTOSAR', 'CRC-16/CCITT-FALSE') _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x29b1 _residue = 0x0000
Crc16Autosar = Crc16Ibm3740 Crc16CcittFalse = Crc16Ibm3740
[docs]class Crc16IbmSdlc(Crc16Base): """CRC-16/IBM-SDLC Aliases: CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-16/X-25, CRC-B, X-25 """ _names = ('CRC-16/IBM-SDLC', 'CRC-16/ISO-HDLC', 'CRC-16/ISO-IEC-14443-3-B', 'CRC-16/X-25', 'CRC-B', 'X-25') _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0x906e _residue = 0xf0b8
Crc16IsoHdlc = Crc16IbmSdlc Crc16IsoIec144433B = Crc16IbmSdlc Crc16X25 = Crc16IbmSdlc CrcB = Crc16IbmSdlc CrcX25 = Crc16IbmSdlc
[docs]class Crc16IsoIec144433A(Crc16Base): """CRC-16/ISO-IEC-14443-3-A Aliases: CRC-A """ _names = ('CRC-16/ISO-IEC-14443-3-A', 'CRC-A') _width = 16 _poly = 0x1021 _initvalue = 0xc6c6 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0xbf05 _residue = 0x0000
CrcA = Crc16IsoIec144433A
[docs]class Crc16Kermit(Crc16Base): """CRC-16/KERMIT Aliases: CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB, CRC-CCITT, KERMIT """ _names = ('CRC-16/KERMIT', 'CRC-16/CCITT', 'CRC-16/CCITT-TRUE', 'CRC-16/V-41-LSB', 'CRC-CCITT', 'KERMIT') _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x2189 _residue = 0x0000
Crc16Ccitt = Crc16Kermit Crc16CcittTrue = Crc16Kermit Crc16V41Lsb = Crc16Kermit CrcCcitt = Crc16Kermit CrcKermit = Crc16Kermit
[docs]class Crc16Lj1200(Crc16Base): """CRC-16/LJ1200""" _names = ('CRC-16/LJ1200',) _width = 16 _poly = 0x6f63 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xbdf4 _residue = 0x0000
[docs]class Crc16M17(Crc16Base): """CRC-16/M17""" _names = ('CRC-16/M17',) _width = 16 _poly = 0x5935 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x772b _residue = 0x0000
[docs]class Crc16MaximDow(Crc16Base): """CRC-16/MAXIM-DOW Aliases: CRC-16/MAXIM """ _names = ('CRC-16/MAXIM-DOW', 'CRC-16/MAXIM') _width = 16 _poly = 0x8005 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0x44c2 _residue = 0xb001
Crc16Maxim = Crc16MaximDow
[docs]class Crc16Mcrf4Xx(Crc16Base): """CRC-16/MCRF4XX""" _names = ('CRC-16/MCRF4XX',) _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x6f91 _residue = 0x0000
Crc16Mcrf4XX = Crc16Mcrf4Xx Crcc16Mcrf4xx = Crc16Mcrf4Xx
[docs]class Crc16Modbus(Crc16Base): """CRC-16/MODBUS Aliases: MODBUS """ _names = ('CRC-16/MODBUS', 'MODBUS') _width = 16 _poly = 0x8005 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x4b37 _residue = 0x0000
CrcModbus = Crc16Modbus
[docs]class Crc16Nrsc5(Crc16Base): """CRC-16/NRSC-5""" _names = ('CRC-16/NRSC-5',) _width = 16 _poly = 0x080b _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0xa066 _residue = 0x0000
[docs]class Crc16OpensafetyA(Crc16Base): """CRC-16/OPENSAFETY-A""" _names = ('CRC-16/OPENSAFETY-A',) _width = 16 _poly = 0x5935 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x5d38 _residue = 0x0000
[docs]class Crc16OpensafetyB(Crc16Base): """CRC-16/OPENSAFETY-B""" _names = ('CRC-16/OPENSAFETY-B',) _width = 16 _poly = 0x755b _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x20fe _residue = 0x0000
[docs]class Crc16Profibus(Crc16Base): """CRC-16/PROFIBUS Aliases: CRC-16/IEC-61158-2 """ _names = ('CRC-16/PROFIBUS', 'CRC-16/IEC-61158-2') _width = 16 _poly = 0x1dcf _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xa819 _residue = 0xe394
Crc16Iec611582 = Crc16Profibus
[docs]class Crc16Riello(Crc16Base): """CRC-16/RIELLO""" _names = ('CRC-16/RIELLO',) _width = 16 _poly = 0x1021 _initvalue = 0xb2aa _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x63d0 _residue = 0x0000
[docs]class Crc16SpiFujitsu(Crc16Base): """CRC-16/SPI-FUJITSU Aliases: CRC-16/AUG-CCITT """ _names = ('CRC-16/SPI-FUJITSU', 'CRC-16/AUG-CCITT') _width = 16 _poly = 0x1021 _initvalue = 0x1d0f _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xe5cc _residue = 0x0000
Crc16AugCcitt = Crc16SpiFujitsu
[docs]class Crc16T10Dif(Crc16Base): """CRC-16/T10-DIF""" _names = ('CRC-16/T10-DIF',) _width = 16 _poly = 0x8bb7 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xd0db _residue = 0x0000
[docs]class Crc16Teledisk(Crc16Base): """CRC-16/TELEDISK""" _names = ('CRC-16/TELEDISK',) _width = 16 _poly = 0xa097 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x0fb3 _residue = 0x0000
[docs]class Crc16Tms37157(Crc16Base): """CRC-16/TMS37157""" _names = ('CRC-16/TMS37157',) _width = 16 _poly = 0x1021 _initvalue = 0x89ec _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x26b1 _residue = 0x0000
[docs]class Crc16Umts(Crc16Base): """CRC-16/UMTS Aliases: CRC-16/BUYPASS, CRC-16/VERIFONE """ _names = ('CRC-16/UMTS', 'CRC-16/BUYPASS', 'CRC-16/VERIFONE') _width = 16 _poly = 0x8005 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xfee8 _residue = 0x0000
Crc16Buypass = Crc16Umts Crc16Verifone = Crc16Umts
[docs]class Crc16Usb(Crc16Base): """CRC-16/USB""" _names = ('CRC-16/USB',) _width = 16 _poly = 0x8005 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0xb4c8 _residue = 0xb001
[docs]class Crc16Xmodem(Crc16Base): """CRC-16/XMODEM Aliases: CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB, XMODEM, ZMODEM """ _names = ('CRC-16/XMODEM', 'CRC-16/ACORN', 'CRC-16/LTE', 'CRC-16/V-41-MSB', 'XMODEM', 'ZMODEM') _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x31c3 _residue = 0x0000
Crc16Acorn = Crc16Xmodem Crc16Lte = Crc16Xmodem Crc16V41Msb = Crc16Xmodem CrcXmodem = Crc16Xmodem CrcZmodem = Crc16Xmodem Crc16 = Crc16Xmodem
[docs]class Crc17CanFd(CrcBase): """CRC-17/CAN-FD""" _names = ('CRC-17/CAN-FD',) _width = 17 _poly = 0x1685b _initvalue = 0x00000 _reflect_input = False _reflect_output = False _xor_output = 0x00000 _check_result = 0x04f03 _residue = 0x00000
[docs]class Crc21CanFd(CrcBase): """CRC-21/CAN-FD""" _names = ('CRC-21/CAN-FD',) _width = 21 _poly = 0x102899 _initvalue = 0x000000 _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x0ed841 _residue = 0x000000
[docs]class Crc24Ble(CrcBase): """CRC-24/BLE""" _names = ('CRC-24/BLE',) _width = 24 _poly = 0x00065b _initvalue = 0x555555 _reflect_input = True _reflect_output = True _xor_output = 0x000000 _check_result = 0xc25a56 _residue = 0x000000
[docs]class Crc24FlexrayA(CrcBase): """CRC-24/FLEXRAY-A""" _names = ('CRC-24/FLEXRAY-A',) _width = 24 _poly = 0x5d6dcb _initvalue = 0xfedcba _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x7979bd _residue = 0x000000
[docs]class Crc24FlexrayB(CrcBase): """CRC-24/FLEXRAY-B""" _names = ('CRC-24/FLEXRAY-B',) _width = 24 _poly = 0x5d6dcb _initvalue = 0xabcdef _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x1f23b8 _residue = 0x000000
[docs]class Crc24Interlaken(CrcBase): """CRC-24/INTERLAKEN""" _names = ('CRC-24/INTERLAKEN',) _width = 24 _poly = 0x328b63 _initvalue = 0xffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffff _check_result = 0xb4f3e6 _residue = 0x144e63
[docs]class Crc24LteA(CrcBase): """CRC-24/LTE-A""" _names = ('CRC-24/LTE-A',) _width = 24 _poly = 0x864cfb _initvalue = 0x000000 _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0xcde703 _residue = 0x000000
[docs]class Crc24LteB(CrcBase): """CRC-24/LTE-B""" _names = ('CRC-24/LTE-B',) _width = 24 _poly = 0x800063 _initvalue = 0x000000 _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x23ef52 _residue = 0x000000
[docs]class Crc24Openpgp(CrcBase): """CRC-24/OPENPGP Aliases: CRC-24 """ _names = ('CRC-24/OPENPGP', 'CRC-24') _width = 24 _poly = 0x864cfb _initvalue = 0xb704ce _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x21cf02 _residue = 0x000000
Crc24 = Crc24Openpgp Crc24OpenPgp = Crc24Openpgp
[docs]class Crc24Os9(CrcBase): """CRC-24/OS-9""" _names = ('CRC-24/OS-9',) _width = 24 _poly = 0x800063 _initvalue = 0xffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffff _check_result = 0x200fa5 _residue = 0x800fe3
[docs]class Crc30Cdma(CrcBase): """CRC-30/CDMA""" _names = ('CRC-30/CDMA',) _width = 30 _poly = 0x2030b9c7 _initvalue = 0x3fffffff _reflect_input = False _reflect_output = False _xor_output = 0x3fffffff _check_result = 0x04c34abf _residue = 0x34efa55a
[docs]class Crc31Philips(CrcBase): """CRC-31/PHILIPS""" _names = ('CRC-31/PHILIPS',) _width = 31 _poly = 0x04c11db7 _initvalue = 0x7fffffff _reflect_input = False _reflect_output = False _xor_output = 0x7fffffff _check_result = 0x0ce9e46c _residue = 0x4eaf26f1
[docs]class Crc32Aixm(Crc32Base): """CRC-32/AIXM Aliases: CRC-32Q """ _names = ('CRC-32/AIXM', 'CRC-32Q') _width = 32 _poly = 0x814141ab _initvalue = 0x00000000 _reflect_input = False _reflect_output = False _xor_output = 0x00000000 _check_result = 0x3010bf7f _residue = 0x00000000
Crc32Q = Crc32Aixm Crc32q = Crc32Aixm
[docs]class Crc32Autosar(Crc32Base): """CRC-32/AUTOSAR""" _names = ('CRC-32/AUTOSAR',) _width = 32 _poly = 0xf4acfb13 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0x1697d06a _residue = 0x904cddbf
[docs]class Crc32Base91D(Crc32Base): """CRC-32/BASE91-D Aliases: CRC-32D """ _names = ('CRC-32/BASE91-D', 'CRC-32D') _width = 32 _poly = 0xa833982b _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0x87315576 _residue = 0x45270551
Crc32D = Crc32Base91D Crc32d = Crc32Base91D
[docs]class Crc32Bzip2(Crc32Base): """CRC-32/BZIP2 Aliases: CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32 """ _names = ('CRC-32/BZIP2', 'CRC-32/AAL5', 'CRC-32/DECT-B', 'B-CRC-32') _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffffff _check_result = 0xfc891918 _residue = 0xc704dd7b
Crc32Aal5 = Crc32Bzip2 Crc32DectB = Crc32Bzip2 Crc32B = Crc32Bzip2
[docs]class Crc32CdRomEdc(Crc32Base): """CRC-32/CD-ROM-EDC""" _names = ('CRC-32/CD-ROM-EDC',) _width = 32 _poly = 0x8001801b _initvalue = 0x00000000 _reflect_input = True _reflect_output = True _xor_output = 0x00000000 _check_result = 0x6ec2edc4 _residue = 0x00000000
[docs]class Crc32Cksum(Crc32Base): """CRC-32/CKSUM Aliases: CKSUM, CRC-32/POSIX """ _names = ('CRC-32/CKSUM', 'CKSUM', 'CRC-32/POSIX') _width = 32 _poly = 0x04c11db7 _initvalue = 0x00000000 _reflect_input = False _reflect_output = False _xor_output = 0xffffffff _check_result = 0x765e7680 _residue = 0xc704dd7b
CrcCksum = Crc32Cksum Crc32Posix = Crc32Cksum
[docs]class Crc32Iscsi(Crc32Base): """CRC-32/ISCSI Aliases: CRC-32/BASE91-C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN, CRC-32C """ _names = ('CRC-32/ISCSI', 'CRC-32/BASE91-C', 'CRC-32/CASTAGNOLI', 'CRC-32/INTERLAKEN', 'CRC-32C') _width = 32 _poly = 0x1edc6f41 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0xe3069283 _residue = 0xb798b438
Crc32Base91C = Crc32Iscsi Crc32Castagnoli = Crc32Iscsi Crc32Interlaken = Crc32Iscsi Crc32C = Crc32Iscsi Crc32c = Crc32Iscsi
[docs]class Crc32IsoHdlc(Crc32Base): """CRC-32/ISO-HDLC Aliases: CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP """ _names = ('CRC-32/ISO-HDLC', 'CRC-32', 'CRC-32/ADCCP', 'CRC-32/V-42', 'CRC-32/XZ', 'PKZIP') _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0xcbf43926 _residue = 0xdebb20e3
Crc32 = Crc32IsoHdlc Crc32Adccp = Crc32IsoHdlc Crc32V42 = Crc32IsoHdlc Crc32Xz = Crc32IsoHdlc CrcPkzip = Crc32IsoHdlc
[docs]class Crc32Jamcrc(Crc32Base): """CRC-32/JAMCRC Aliases: JAMCRC """ _names = ('CRC-32/JAMCRC', 'JAMCRC') _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0x00000000 _check_result = 0x340bc6d9 _residue = 0x00000000
CrcJamcrc = Crc32Jamcrc
[docs]class Crc32Mef(Crc32Base): """CRC-32/MEF""" _names = ('CRC-32/MEF',) _width = 32 _poly = 0x741b8cd7 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0x00000000 _check_result = 0xd2c22f51 _residue = 0x00000000
[docs]class Crc32Mpeg2(Crc32Base): """CRC-32/MPEG-2""" _names = ('CRC-32/MPEG-2',) _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = False _reflect_output = False _xor_output = 0x00000000 _check_result = 0x0376e6e7 _residue = 0x00000000
[docs]class Crc32Xfer(Crc32Base): """CRC-32/XFER Aliases: XFER """ _names = ('CRC-32/XFER', 'XFER') _width = 32 _poly = 0x000000af _initvalue = 0x00000000 _reflect_input = False _reflect_output = False _xor_output = 0x00000000 _check_result = 0xbd0be338 _residue = 0x00000000
CrcXfer = Crc32Xfer
[docs]class Crc40Gsm(CrcBase): """CRC-40/GSM""" _names = ('CRC-40/GSM',) _width = 40 _poly = 0x0004820009 _initvalue = 0x0000000000 _reflect_input = False _reflect_output = False _xor_output = 0xffffffffff _check_result = 0xd4164fc646 _residue = 0xc4ff8071ff
[docs]class Crc64Ecma182(CrcBase): """CRC-64/ECMA-182 Aliases: CRC-64 """ _names = ('CRC-64/ECMA-182', 'CRC-64') _width = 64 _poly = 0x42f0e1eba9ea3693 _initvalue = 0x0000000000000000 _reflect_input = False _reflect_output = False _xor_output = 0x0000000000000000 _check_result = 0x6c40df5f0b497347 _residue = 0x0000000000000000
Crc64 = Crc64Ecma182
[docs]class Crc64GoIso(CrcBase): """CRC-64/GO-ISO""" _names = ('CRC-64/GO-ISO',) _width = 64 _poly = 0x000000000000001b _initvalue = 0xffffffffffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffffffffffff _check_result = 0xb90956c775a41001 _residue = 0x5300000000000000
[docs]class Crc64Ms(CrcBase): """CRC-64/MS""" _names = ('CRC-64/MS',) _width = 64 _poly = 0x259c84cba6426349 _initvalue = 0xffffffffffffffff _reflect_input = True _reflect_output = True _xor_output = 0x0000000000000000 _check_result = 0x75d4b74f024eceea _residue = 0x0000000000000000
[docs]class Crc64Redis(CrcBase): """CRC-64/REDIS""" _names = ('CRC-64/REDIS',) _width = 64 _poly = 0xad93d23594c935a9 _initvalue = 0x0000000000000000 _reflect_input = True _reflect_output = True _xor_output = 0x0000000000000000 _check_result = 0xe9c6d914c4b8d9ca _residue = 0x0000000000000000
[docs]class Crc64We(CrcBase): """CRC-64/WE""" _names = ('CRC-64/WE',) _width = 64 _poly = 0x42f0e1eba9ea3693 _initvalue = 0xffffffffffffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffffffffffffff _check_result = 0x62ec59e3f1a4f00a _residue = 0xfcacbebd5931a992
[docs]class Crc64Xz(CrcBase): """CRC-64/XZ Aliases: CRC-64/GO-ECMA """ _names = ('CRC-64/XZ', 'CRC-64/GO-ECMA') _width = 64 _poly = 0x42f0e1eba9ea3693 _initvalue = 0xffffffffffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffffffffffff _check_result = 0x995dc9bbdf1939fa _residue = 0x49958c9abd7d353f
Crc64GoEcma = Crc64Xz
[docs]class Crc82Darc(CrcBase): """CRC-82/DARC""" _names = ('CRC-82/DARC',) _width = 82 _poly = 0x0308c0111011401440411 _initvalue = 0x000000000000000000000 _reflect_input = True _reflect_output = True _xor_output = 0x000000000000000000000 _check_result = 0x09ea83f625023801fd612 _residue = 0x000000000000000000000
ALLCRCCLASSES = ( Crc3Gsm, Crc3Rohc, Crc4G704, Crc4Interlaken, Crc5EpcC1G2, Crc5G704, Crc5Usb, Crc6Cdma2000A, Crc6Cdma2000B, Crc6Darc, Crc6G704, Crc6Gsm, Crc7Mmc, Crc7Rohc, Crc7Umts, Crc8Autosar, Crc8Bluetooth, Crc8Cdma2000, Crc8Darc, Crc8DvbS2, Crc8GsmA, Crc8GsmB, Crc8Hitag, Crc8I4321, Crc8ICode, Crc8Lte, Crc8MaximDow, Crc8MifareMad, Crc8Nrsc5, Crc8Opensafety, Crc8Rohc, Crc8SaeJ1850, Crc8Smbus, Crc8Tech3250, Crc8Wcdma, Crc10Atm, Crc10Cdma2000, Crc10Gsm, Crc11Flexray, Crc11Umts, Crc12Cdma2000, Crc12Dect, Crc12Gsm, Crc12Umts, Crc13Bbc, Crc14Darc, Crc14Gsm, Crc15Can, Crc15Mpt1327, Crc16Arc, Crc16Cdma2000, Crc16Cms, Crc16Dds110, Crc16DectR, Crc16DectX, Crc16Dnp, Crc16En13757, Crc16Genibus, Crc16Gsm, Crc16Ibm3740, Crc16IbmSdlc, Crc16IsoIec144433A, Crc16Kermit, Crc16Lj1200, Crc16M17, Crc16MaximDow, Crc16Mcrf4Xx, Crc16Modbus, Crc16Nrsc5, Crc16OpensafetyA, Crc16OpensafetyB, Crc16Profibus, Crc16Riello, Crc16SpiFujitsu, Crc16T10Dif, Crc16Teledisk, Crc16Tms37157, Crc16Umts, Crc16Usb, Crc16Xmodem, Crc17CanFd, Crc21CanFd, Crc24Ble, Crc24FlexrayA, Crc24FlexrayB, Crc24Interlaken, Crc24LteA, Crc24LteB, Crc24Openpgp, Crc24Os9, Crc30Cdma, Crc31Philips, Crc32Aixm, Crc32Autosar, Crc32Base91D, Crc32Bzip2, Crc32CdRomEdc, Crc32Cksum, Crc32Iscsi, Crc32IsoHdlc, Crc32Jamcrc, Crc32Mef, Crc32Mpeg2, Crc32Xfer, Crc40Gsm, Crc64Ecma182, Crc64GoIso, Crc64Ms, Crc64Redis, Crc64We, Crc64Xz, Crc82Darc ) ALLCRCCLASSES_ALIASES = ( Crc3Gsm, Crc3Rohc, Crc4G704, Crc4Itu, Crc4Interlaken, Crc5EpcC1G2, Crc5Epc, Crc5G704, Crc5Itu, Crc5Usb, Crc6Cdma2000A, Crc6Cdma2000B, Crc6Darc, Crc6G704, Crc6Itu, Crc6Gsm, Crc7Mmc, Crc7, Crc7Rohc, Crc7Umts, Crc8Autosar, Crc8Bluetooth, Crc8Cdma2000, Crc8Darc, Crc8DvbS2, Crc8GsmA, Crc8GsmB, Crc8Hitag, Crc8I4321, Crc8Itu, Crc8ICode, Crc8Lte, Crc8MaximDow, Crc8Maxim, CrcDow, Crc8MifareMad, Crc8Nrsc5, Crc8Opensafety, Crc8Rohc, Crc8SaeJ1850, Crc8Smbus, Crc8, Crc8Tech3250, Crc8Aes, Crc8Ebu, Crc8Wcdma, Crc10Atm, Crc10, Crc10I610, Crc10Cdma2000, Crc10Gsm, Crc11Flexray, Crc11, Crc11Umts, Crc12Cdma2000, Crc12Dect, Crc12X, Crc12Gsm, Crc12Umts, Crc123Gpp, Crc13Bbc, Crc14Darc, Crc14Gsm, Crc15Can, Crc15, Crc15Mpt1327, Crc16Arc, CrcArc, Crc16Lha, CrcIbm, Crc16Cdma2000, Crc16Cms, Crc16Dds110, Crc16DectR, Crc16R, Crc16DectX, Crc16X, Crc16Dnp, Crc16En13757, Crc16Genibus, Crc16Darc, Crc16Epc, Crc16EpcC1G2, Crc16ICode, Crc16Gsm, Crc16Ibm3740, Crc16Autosar, Crc16CcittFalse, Crc16IbmSdlc, Crc16IsoHdlc, Crc16IsoIec144433B, Crc16X25, CrcB, CrcX25, Crc16IsoIec144433A, CrcA, Crc16Kermit, Crc16Ccitt, Crc16CcittTrue, Crc16V41Lsb, CrcCcitt, CrcKermit, Crc16Lj1200, Crc16M17, Crc16MaximDow, Crc16Maxim, Crc16Mcrf4Xx, Crc16Mcrf4XX, Crcc16Mcrf4xx, Crc16Modbus, CrcModbus, Crc16Nrsc5, Crc16OpensafetyA, Crc16OpensafetyB, Crc16Profibus, Crc16Iec611582, Crc16Riello, Crc16SpiFujitsu, Crc16AugCcitt, Crc16T10Dif, Crc16Teledisk, Crc16Tms37157, Crc16Umts, Crc16Buypass, Crc16Verifone, Crc16Usb, Crc16Xmodem, Crc16Acorn, Crc16Lte, Crc16V41Msb, CrcXmodem, CrcZmodem, Crc16, Crc17CanFd, Crc21CanFd, Crc24Ble, Crc24FlexrayA, Crc24FlexrayB, Crc24Interlaken, Crc24LteA, Crc24LteB, Crc24Openpgp, Crc24, Crc24OpenPgp, Crc24Os9, Crc30Cdma, Crc31Philips, Crc32Aixm, Crc32Q, Crc32q, Crc32Autosar, Crc32Base91D, Crc32D, Crc32d, Crc32Bzip2, Crc32Aal5, Crc32DectB, Crc32B, Crc32CdRomEdc, Crc32Cksum, CrcCksum, Crc32Posix, Crc32Iscsi, Crc32Base91C, Crc32Castagnoli, Crc32Interlaken, Crc32C, Crc32c, Crc32IsoHdlc, Crc32, Crc32Adccp, Crc32V42, Crc32Xz, CrcPkzip, Crc32Jamcrc, CrcJamcrc, Crc32Mef, Crc32Mpeg2, Crc32Xfer, CrcXfer, Crc40Gsm, Crc64Ecma182, Crc64, Crc64GoIso, Crc64Ms, Crc64Redis, Crc64We, Crc64Xz, Crc64GoEcma, Crc82Darc )