Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Macros | Functions
crc32.h File Reference
#include <wireshark.h>

Go to the source code of this file.

Macros

#define CRC32_CCITT_SEED   0xFFFFFFFF
 
#define CRC32C_PRELOAD   0xffffffff
 
#define CRC32_MPEG2_SEED   0xFFFFFFFF
 
#define CRC32C_SWAP(crc32c_value)
 

Functions

WS_DLL_PUBLIC uint32_t crc32_ccitt_table_lookup (unsigned char pos)
 Lookup a CRC-32/CCITT table value by position.
 
WS_DLL_PUBLIC uint32_t crc32c_table_lookup (unsigned char pos)
 
WS_DLL_PUBLIC uint32_t crc32c_calculate (const void *buf, int len, uint32_t crc)
 Compute CRC32C checksum of a buffer of data.
 
WS_DLL_PUBLIC uint32_t crc32c_calculate_no_swap (const void *buf, int len, uint32_t crc)
 Compute CRC32C checksum of a buffer of data without swapping seed crc or completed checksum.
 
WS_DLL_PUBLIC uint32_t crc32_ccitt (const uint8_t *buf, unsigned len)
 Compute CRC32 CCITT checksum of a buffer of data.
 
WS_DLL_PUBLIC uint32_t crc32_ccitt_seed (const uint8_t *buf, unsigned len, uint32_t seed)
 Compute CRC32 CCITT checksum of a buffer of data.
 
WS_DLL_PUBLIC uint32_t crc32_mpeg2_seed (const uint8_t *buf, unsigned len, uint32_t seed)
 Compute MPEG-2 CRC32 checksum of a buffer of data.
 
WS_DLL_PUBLIC uint32_t crc32_0x0AA725CF_seed (const uint8_t *buf, unsigned len, uint32_t seed)
 Computes CRC32 checksum for the given data with the polynom 0x0AA725CF using precompiled CRC table.
 
WS_DLL_PUBLIC uint32_t crc32_0x5D6DCB_seed (const uint8_t *buf, unsigned len, uint32_t seed)
 Computes CRC32 checksum for the given data with the polynom 0x5D6DCB using precompiled CRC table.
 
WS_DLL_PUBLIC int Dot11DecryptWepDecrypt (const unsigned char *seed, const size_t seed_len, unsigned char *cypher_text, const size_t data_len)
 Decrypt WEP-encrypted 802.11 payload using RC4 stream cipher.
 

Detailed Description

Declaration of CRC-32 routine and table

Wireshark - Network traffic analyzer By Gerald Combs geral.nosp@m.d@wi.nosp@m.resha.nosp@m.rk.o.nosp@m.rg Copyright 1998 Gerald Combs

SPDX-License-Identifier: GPL-2.0-or-later

Macro Definition Documentation

◆ CRC32C_SWAP

#define CRC32C_SWAP (   crc32c_value)
Value:
(((crc32c_value & 0xff000000) >> 24) | \
((crc32c_value & 0x00ff0000) >> 8) | \
((crc32c_value & 0x0000ff00) << 8) | \
((crc32c_value & 0x000000ff) << 24))

Function Documentation

◆ crc32_0x0AA725CF_seed()

WS_DLL_PUBLIC uint32_t crc32_0x0AA725CF_seed ( const uint8_t *  buf,
unsigned  len,
uint32_t  seed 
)

Computes CRC32 checksum for the given data with the polynom 0x0AA725CF using precompiled CRC table.

Parameters
bufa pointer to a buffer of the given length
lenthe length of the given buffer
seedThe seed to use.
Returns
the CRC32 checksum for the buffer

◆ crc32_0x5D6DCB_seed()

WS_DLL_PUBLIC uint32_t crc32_0x5D6DCB_seed ( const uint8_t *  buf,
unsigned  len,
uint32_t  seed 
)

Computes CRC32 checksum for the given data with the polynom 0x5D6DCB using precompiled CRC table.

Parameters
bufa pointer to a buffer of the given length
lenthe length of the given buffer
seedThe seed to use.
Returns
the CRC32 checksum for the buffer

◆ crc32_ccitt()

WS_DLL_PUBLIC uint32_t crc32_ccitt ( const uint8_t *  buf,
unsigned  len 
)

Compute CRC32 CCITT checksum of a buffer of data.

Parameters
bufThe buffer containing the data.
lenThe number of bytes to include in the computation.
Returns
The CRC32 CCITT checksum.

◆ crc32_ccitt_seed()

WS_DLL_PUBLIC uint32_t crc32_ccitt_seed ( const uint8_t *  buf,
unsigned  len,
uint32_t  seed 
)

Compute CRC32 CCITT checksum of a buffer of data.

If computing the checksum over multiple buffers and you want to feed the partial CRC32 back in, remember to take the 1's complement of the partial CRC32 first.

Parameters
bufThe buffer containing the data.
lenThe number of bytes to include in the computation.
seedThe seed to use.
Returns
The CRC32 CCITT checksum (using the given seed).

◆ crc32_ccitt_table_lookup()

WS_DLL_PUBLIC uint32_t crc32_ccitt_table_lookup ( unsigned char  pos)

Lookup a CRC-32/CCITT table value by position.

Retrieves the precomputed CRC value from the crc32_ccitt_table at the specified position. This table is typically used to accelerate CRC-32/CCITT calculations by avoiding repeated polynomial division.

Parameters
posIndex into the CRC-32/CCITT lookup table (0–255).
Returns
CRC value corresponding to the given position.

◆ crc32_mpeg2_seed()

WS_DLL_PUBLIC uint32_t crc32_mpeg2_seed ( const uint8_t *  buf,
unsigned  len,
uint32_t  seed 
)

Compute MPEG-2 CRC32 checksum of a buffer of data.

Parameters
bufThe buffer containing the data.
lenThe number of bytes to include in the computation.
seedThe seed to use.
Returns
The CRC32 MPEG-2 checksum (using the given seed).

◆ crc32c_calculate()

WS_DLL_PUBLIC uint32_t crc32c_calculate ( const void *  buf,
int  len,
uint32_t  crc 
)

Compute CRC32C checksum of a buffer of data.

Parameters
bufThe buffer containing the data.
lenThe number of bytes to include in the computation.
crcThe preload value for the CRC32C computation.
Returns
The CRC32C checksum.

◆ crc32c_calculate_no_swap()

WS_DLL_PUBLIC uint32_t crc32c_calculate_no_swap ( const void *  buf,
int  len,
uint32_t  crc 
)

Compute CRC32C checksum of a buffer of data without swapping seed crc or completed checksum.

Parameters
bufThe buffer containing the data.
lenThe number of bytes to include in the computation.
crcThe preload value for the CRC32C computation.
Returns
The CRC32C checksum.

◆ crc32c_table_lookup()

WS_DLL_PUBLIC uint32_t crc32c_table_lookup ( unsigned char  pos)

Lookup the crc value in the crc32c_table

Parameters
posPosition in the table.

◆ Dot11DecryptWepDecrypt()

WS_DLL_PUBLIC int Dot11DecryptWepDecrypt ( const unsigned char *  seed,
const size_t  seed_len,
unsigned char *  cypher_text,
const size_t  data_len 
)

Decrypt WEP-encrypted 802.11 payload using RC4 stream cipher.

Performs WEP decryption on the provided cypher_text buffer using the RC4 algorithm seeded with the specified initialization vector and WEP key. The decryption is done in-place, modifying cypher_text directly.

This function assumes the input data is WEP-encrypted and that the seed contains both the IV and the shared WEP key. It does not verify the ICV.

Parameters
seedPointer to the RC4 seed (IV + WEP key).
seed_lenLength of the seed in bytes.
cypher_textPointer to the encrypted data buffer (will be decrypted in-place).
data_lenLength of the encrypted data in bytes.
Returns
0 on success, non-zero on failure.