25 lines
433 B
C
25 lines
433 B
C
/* 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;
|
|
}
|