@ton/core
Version:
Core TypeScript library that implements low level primitives for TON blockchain.
30 lines (27 loc) • 946 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.
*/
const POLY = 0x82f63b78;
export function crc32c(source: Buffer) {
let crc = 0 ^ 0xffffffff;
for (let n = 0; n < source.length; n++) {
crc ^= source[n];
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;
}
crc = crc ^ 0xffffffff;
// Convert endianness
let res = Buffer.alloc(4);
res.writeInt32LE(crc);
return res;
}