kconfig: use pkg-config for ncurses detection
[akaros.git] / kern / lib / crypto / 2crc8.c
1 /* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  */
5
6 #include <crypto/2sysincludes.h>
7 #include <crypto/2crc8.h>
8
9 uint8_t vb2_crc8(const void *vptr, uint32_t size)
10 {
11         const uint8_t *data = vptr;
12         unsigned crc = 0;
13         uint32_t i, j;
14
15         /*
16          * Calculate CRC-8 directly.  A table-based algorithm would be faster,
17          * but for only a few bytes it isn't worth the code size.
18          */
19         for (j = size; j; j--, data++) {
20                 crc ^= (*data << 8);
21                 for(i = 8; i; i--) {
22                         if (crc & 0x8000)
23                                 crc ^= (0x1070 << 3);
24                         crc <<= 1;
25                 }
26         }
27
28         return (uint8_t)(crc >> 8);
29 }