/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "crc8.h"

uint8_t crc8(const void* vptr, uint32_t size) {
  const uint8_t* data = vptr;
  unsigned crc = 0;
  uint32_t i, j;

  /*
   * Calculate CRC-8 directly.  A table-based algorithm would be faster,
   * but for only a few bytes it isn't worth the code size.
   */
  for (j = size; j; j--, data++) {
    crc ^= (*data << 8);
    for (i = 8; i; i--) {
      if (crc & 0x8000)
        crc ^= (0x1070 << 3);
      crc <<= 1;
    }
  }

  return (uint8_t)(crc >> 8);
}
