@ton/core
Version:
Core TypeScript library that implements low level primitives for TON blockchain.
29 lines (28 loc) • 731 B
text/typescript
/**
* Copyright (c) Whales Corp.
* All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
export function crc16(data: Buffer) {
const poly = 0x1021;
let reg = 0;
const message = Buffer.alloc(data.length + 2);
message.set(data);
for (let byte of message) {
let mask = 0x80;
while (mask > 0) {
reg <<= 1;
if (byte & mask) {
reg += 1;
}
mask >>= 1
if (reg > 0xffff) {
reg &= 0xffff;
reg ^= poly;
}
}
}
return Buffer.from([Math.floor(reg / 256), reg % 256]);
}