UNPKG

ton3-core

Version:
50 lines 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.crc32cBytesLe = exports.crc16BytesBe = exports.crc32c = exports.crc16 = void 0; const crc16 = (data) => { const POLY = 0x1021; const bytes = new Uint8Array(data); const int16 = bytes.reduce((acc, el) => { let crc = acc ^ (el << 8); for (let i = 0; i < 8; i++) { crc = (crc & 0x8000) === 0x8000 ? (crc << 1) ^ POLY : crc << 1; } return crc; }, 0) & 0xffff; const [uint16] = new Uint16Array([int16]); return uint16; }; exports.crc16 = crc16; const crc16BytesBe = (data) => { const crc = crc16(data); const buffer = new ArrayBuffer(2); const view = new DataView(buffer); view.setUint16(0, crc, false); return new Uint8Array(view.buffer, view.byteOffset, view.byteLength); }; exports.crc16BytesBe = crc16BytesBe; const crc32c = (data) => { const POLY = 0x82f63b78; const bytes = new Uint8Array(data); const int32 = bytes.reduce((acc, el, i) => { let crc = acc ^ el; for (let i = 0; i < 8; i++) { crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1; } return crc; }, 0 ^ 0xffffffff) ^ 0xffffffff; const [uint32] = new Uint32Array([int32]); return uint32; }; exports.crc32c = crc32c; const crc32cBytesLe = (data) => { const crc = crc32c(data); const buffer = new ArrayBuffer(4); const view = new DataView(buffer); view.setUint32(0, crc, true); return new Uint8Array(view.buffer, view.byteOffset, view.byteLength); }; exports.crc32cBytesLe = crc32cBytesLe; //# sourceMappingURL=checksum.js.map