{"version":3,"file":"index.mjs","sources":["../src/component.ts","../src/md5.ts","../src/ripemd160.ts","../src/sha1.ts","../src/sha224.ts","../src/sha256.ts","../src/sha3.ts","../src/sha384.ts","../src/sha512.ts","../src/preset.ts"],"sourcesContent":["import type { HashComponent } from '@jscrypto/core';\n\nexport function createHash<Name extends string>(\n  name: Name,\n  blockSize: number,\n  digestSize: number,\n  hash: (input: Uint8Array) => Uint8Array,\n): HashComponent<Name> {\n  return {\n    kind: 'hash',\n    name,\n    blockSize,\n    digestSize,\n    hash,\n  };\n}\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport { md5 as md5Digest } from 'js-md5';\n\nexport const md5 = createHash('MD5', 64, 16, (input) => new Uint8Array(md5Digest.arrayBuffer(input)));\n\nexport const md5Preset: PresetComponent<'md5'> = {\n  kind: 'preset',\n  name: 'md5',\n  components() {\n    return [md5];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\n\nconst MESSAGE_LEFT = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13,\n];\n\nconst MESSAGE_RIGHT = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11,\n];\n\nconst ROTATE_LEFT = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6,\n];\n\nconst ROTATE_RIGHT = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11,\n];\n\nconst K_LEFT = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e];\nconst K_RIGHT = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000];\n\nexport const ripemd160 = createHash('RIPEMD160', 64, 20, ripemd160Digest);\n\nexport const ripemd160Preset: PresetComponent<'ripemd160'> = {\n  kind: 'preset',\n  name: 'ripemd160',\n  components() {\n    return [ripemd160];\n  },\n};\n\nfunction ripemd160Digest(input: Uint8Array): Uint8Array {\n  const padded = pad(input);\n  const words = new Array<number>(16);\n  let h0 = 0x67452301;\n  let h1 = 0xefcdab89;\n  let h2 = 0x98badcfe;\n  let h3 = 0x10325476;\n  let h4 = 0xc3d2e1f0;\n\n  for (let offset = 0; offset < padded.length; offset += 64) {\n    for (let i = 0; i < 16; i++) {\n      const wordOffset = offset + i * 4;\n      words[i] = (\n        padded[wordOffset] |\n        (padded[wordOffset + 1] << 8) |\n        (padded[wordOffset + 2] << 16) |\n        (padded[wordOffset + 3] << 24)\n      ) >>> 0;\n    }\n\n    let al = h0;\n    let bl = h1;\n    let cl = h2;\n    let dl = h3;\n    let el = h4;\n    let ar = h0;\n    let br = h1;\n    let cr = h2;\n    let dr = h3;\n    let er = h4;\n\n    for (let i = 0; i < 80; i++) {\n      const group = Math.floor(i / 16);\n      let next = (rotateLeft((al + f(i, bl, cl, dl) + words[MESSAGE_LEFT[i]] + K_LEFT[group]) | 0, ROTATE_LEFT[i]) + el) | 0;\n      al = el;\n      el = dl;\n      dl = rotateLeft(cl, 10);\n      cl = bl;\n      bl = next;\n\n      next = (rotateLeft((ar + f(79 - i, br, cr, dr) + words[MESSAGE_RIGHT[i]] + K_RIGHT[group]) | 0, ROTATE_RIGHT[i]) + er) | 0;\n      ar = er;\n      er = dr;\n      dr = rotateLeft(cr, 10);\n      cr = br;\n      br = next;\n    }\n\n    const nextH0 = (h1 + cl + dr) | 0;\n    h1 = (h2 + dl + er) | 0;\n    h2 = (h3 + el + ar) | 0;\n    h3 = (h4 + al + br) | 0;\n    h4 = (h0 + bl + cr) | 0;\n    h0 = nextH0;\n  }\n\n  const output = new Uint8Array(20);\n  writeWord(output, 0, h0);\n  writeWord(output, 4, h1);\n  writeWord(output, 8, h2);\n  writeWord(output, 12, h3);\n  writeWord(output, 16, h4);\n  return output;\n}\n\nfunction pad(input: Uint8Array): Uint8Array {\n  const paddedLength = (((input.length + 8) >>> 6) + 1) << 6;\n  const padded = new Uint8Array(paddedLength);\n  padded.set(input);\n  padded[input.length] = 0x80;\n\n  const bitLengthLow = (input.length << 3) >>> 0;\n  const bitLengthHigh = Math.floor(input.length / 0x20000000) >>> 0;\n  writeWord(padded, paddedLength - 8, bitLengthLow);\n  writeWord(padded, paddedLength - 4, bitLengthHigh);\n  return padded;\n}\n\nfunction f(round: number, x: number, y: number, z: number): number {\n  if (round < 16) {\n    return x ^ y ^ z;\n  }\n  if (round < 32) {\n    return (x & y) | (~x & z);\n  }\n  if (round < 48) {\n    return (x | ~y) ^ z;\n  }\n  if (round < 64) {\n    return (x & z) | (y & ~z);\n  }\n  return x ^ (y | ~z);\n}\n\nfunction rotateLeft(word: number, bits: number): number {\n  return (word << bits) | (word >>> (32 - bits));\n}\n\nfunction writeWord(output: Uint8Array, offset: number, word: number): void {\n  output[offset] = word & 0xff;\n  output[offset + 1] = (word >>> 8) & 0xff;\n  output[offset + 2] = (word >>> 16) & 0xff;\n  output[offset + 3] = (word >>> 24) & 0xff;\n}\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport { sha1 as sha1Digest } from 'js-sha1';\n\nexport const sha1 = createHash('SHA1', 64, 20, (input) => new Uint8Array(sha1Digest.arrayBuffer(input)));\n\nexport const sha1Preset: PresetComponent<'sha1'> = {\n  kind: 'preset',\n  name: 'sha1',\n  components() {\n    return [sha1];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport { sha224 as sha224Digest } from 'js-sha256';\n\nexport const sha224 = createHash('SHA224', 64, 28, (input) => new Uint8Array(sha224Digest.arrayBuffer(input)));\n\nexport const sha224Preset: PresetComponent<'sha224'> = {\n  kind: 'preset',\n  name: 'sha224',\n  components() {\n    return [sha224];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport { sha256 as sha256Digest } from 'js-sha256';\n\nexport const sha256 = createHash('SHA256', 64, 32, (input) => new Uint8Array(sha256Digest.arrayBuffer(input)));\n\nexport const sha256Preset: PresetComponent<'sha256'> = {\n  kind: 'preset',\n  name: 'sha256',\n  components() {\n    return [sha256];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport * as sha3Module from 'js-sha3';\n\nconst keccak512Digest = (sha3Module as unknown as { default: typeof import('js-sha3') }).default.keccak512;\nconst hashKeccak512 = (input: Uint8Array): Uint8Array => new Uint8Array(keccak512Digest.arrayBuffer(input));\n\nexport const keccak512 = createHash('KECCAK512', 72, 64, hashKeccak512);\n\nexport const keccak512Preset: PresetComponent<'keccak512'> = {\n  kind: 'preset',\n  name: 'keccak512',\n  components() {\n    return [keccak512];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport { sha384 as sha384Digest } from 'js-sha512';\n\nexport const sha384 = createHash('SHA384', 128, 48, (input) => new Uint8Array(sha384Digest.arrayBuffer(input)));\n\nexport const sha384Preset: PresetComponent<'sha384'> = {\n  kind: 'preset',\n  name: 'sha384',\n  components() {\n    return [sha384];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { createHash } from './component.js';\nimport { sha512 as sha512Digest } from 'js-sha512';\n\nexport const sha512 = createHash('SHA512', 128, 64, (input) => new Uint8Array(sha512Digest.arrayBuffer(input)));\n\nexport const sha512Preset: PresetComponent<'sha512'> = {\n  kind: 'preset',\n  name: 'sha512',\n  components() {\n    return [sha512];\n  },\n};\n","import type { PresetComponent } from '@jscrypto/core';\nimport { md5Preset } from './md5.js';\nimport { ripemd160Preset } from './ripemd160.js';\nimport { sha1Preset } from './sha1.js';\nimport { sha224Preset } from './sha224.js';\nimport { sha256Preset } from './sha256.js';\nimport { keccak512Preset } from './sha3.js';\nimport { sha384Preset } from './sha384.js';\nimport { sha512Preset } from './sha512.js';\n\nexport const hashesPreset: PresetComponent<'hashes'> = {\n  kind: 'preset',\n  name: 'hashes',\n  components() {\n    return [\n      md5Preset,\n      sha1Preset,\n      sha224Preset,\n      sha256Preset,\n      sha384Preset,\n      sha512Preset,\n      keccak512Preset,\n      ripemd160Preset,\n    ];\n  },\n};\n\nexport const classicHashesPreset: PresetComponent<'classic-hashes'> = {\n  kind: 'preset',\n  name: 'classic-hashes',\n  components: hashesPreset.components,\n};\n"],"names":["md5Digest","sha1Digest","sha224Digest","sha256Digest","sha384Digest","sha512Digest"],"mappings":"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"}