| /* SPDX-License-Identifier: Apache-2.0 */ | |
| /* Copyright 2021 IBM Corp. */ | |
| #include "crc32.h" | |
| #include <limits.h> | |
| /* Very dumb CRC-32 implementation */ | |
| uint32_t crc32(const void *buf, size_t len) | |
| { | |
| const uint8_t *buf8 = buf; | |
| uint32_t rem = 0xffffffff; | |
| for (; len; len--) { | |
| int i; | |
| rem = rem ^ *buf8; | |
| for (i = 0; i < CHAR_BIT; i++) | |
| rem = (rem >> 1) ^ ((rem & 1) * 0xEDB88320); | |
| buf8++; | |
| } | |
| return rem ^ 0xffffffff; | |
| } |