/*
 * Copyright (c) 2018 Workaround GmbH.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <crc32.h>

u32_t crc32_ieee(const u8_t *data, size_t len)
{
	return crc32_ieee_update(0x0, data, len);
}

u32_t crc32_ieee_update(u32_t crc, const u8_t *data, size_t len)
{
	crc = ~crc;
	for (size_t i = 0; i < len; i++) {
		crc = crc ^ data[i];

		for (u8_t j = 0; j < 8; j++) {
			crc = (crc >> 1) ^ (0xEDB88320 & -(crc & 1));
		}
	}

	return (~crc);
}
