UNPKG

node-csfd-api

Version:

ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)

1 lines 7.22 kB
{"version":3,"file":"sha256.cjs","names":[],"sources":["../../src/anubis/sha256.ts"],"sourcesContent":["// Pure-JS SHA-256 (FIPS 180-4), portable across Node, browsers, ServiceWorkers\n// and React Native. `node:crypto` is deliberately avoided: Metro (RN/Expo)\n// cannot resolve Node core modules, so importing it would break the entire\n// library on RN. WebCrypto is async and unusable in the synchronous PoW loop.\n\n// prettier-ignore\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\nconst rotr = (x: number, n: number): number => (x >>> n) | (x << (32 - n));\n\nconst HEX = '0123456789abcdef';\n\n/** SHA-256 digest of `text` (UTF-8) as 32 raw bytes. */\nexport const sha256 = (text: string): Uint8Array => {\n const bytes = new TextEncoder().encode(text);\n const length = bytes.length;\n\n // Pad: append 0x80, then zeros, then the 64-bit big-endian bit length.\n const withOne = length + 1;\n const padZeros = (56 - (withOne % 64) + 64) % 64;\n const total = withOne + padZeros + 8;\n const message = new Uint8Array(total);\n message.set(bytes);\n message[length] = 0x80;\n\n const bitLengthHi = Math.floor(length / 0x20000000); // length * 8 / 2^32\n const bitLengthLo = (length * 8) >>> 0;\n message[total - 8] = (bitLengthHi >>> 24) & 0xff;\n message[total - 7] = (bitLengthHi >>> 16) & 0xff;\n message[total - 6] = (bitLengthHi >>> 8) & 0xff;\n message[total - 5] = bitLengthHi & 0xff;\n message[total - 4] = (bitLengthLo >>> 24) & 0xff;\n message[total - 3] = (bitLengthLo >>> 16) & 0xff;\n message[total - 2] = (bitLengthLo >>> 8) & 0xff;\n message[total - 1] = bitLengthLo & 0xff;\n\n let h0 = 0x6a09e667;\n let h1 = 0xbb67ae85;\n let h2 = 0x3c6ef372;\n let h3 = 0xa54ff53a;\n let h4 = 0x510e527f;\n let h5 = 0x9b05688c;\n let h6 = 0x1f83d9ab;\n let h7 = 0x5be0cd19;\n\n const w = new Uint32Array(64);\n\n for (let offset = 0; offset < total; offset += 64) {\n for (let i = 0; i < 16; i++) {\n const j = offset + i * 4;\n w[i] = (message[j] << 24) | (message[j + 1] << 16) | (message[j + 2] << 8) | message[j + 3];\n }\n for (let i = 16; i < 64; i++) {\n const s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3);\n const s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10);\n w[i] = (w[i - 16] + s0 + w[i - 7] + s1) | 0;\n }\n\n let a = h0;\n let b = h1;\n let c = h2;\n let d = h3;\n let e = h4;\n let f = h5;\n let g = h6;\n let h = h7;\n\n for (let i = 0; i < 64; i++) {\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);\n const ch = (e & f) ^ (~e & g);\n const t1 = (h + S1 + ch + K[i] + w[i]) | 0;\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);\n const maj = (a & b) ^ (a & c) ^ (b & c);\n const t2 = (S0 + maj) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n\n const digest = new Uint8Array(32);\n const words = [h0, h1, h2, h3, h4, h5, h6, h7];\n for (let i = 0; i < 8; i++) {\n const v = words[i];\n digest[i * 4] = (v >>> 24) & 0xff;\n digest[i * 4 + 1] = (v >>> 16) & 0xff;\n digest[i * 4 + 2] = (v >>> 8) & 0xff;\n digest[i * 4 + 3] = v & 0xff;\n }\n return digest;\n};\n\nexport const toHex = (bytes: Uint8Array): string => {\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += HEX[bytes[i] >> 4] + HEX[bytes[i] & 0x0f];\n }\n return hex;\n};\n"],"mappings":"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"}