@protontech/openpgp
Version:
OpenPGP.js is a Javascript implementation of the OpenPGP protocol. This is defined in RFC 4880.
1 lines • 33.5 kB
Source Map (JSON)
{"version":3,"file":"sha512.min.mjs","sources":["../../node_modules/@noble/hashes/esm/_md.js","../../node_modules/@noble/hashes/esm/sha256.js","../../node_modules/@noble/hashes/esm/sha512.js"],"sourcesContent":["import { aexists, aoutput } from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n/**\n * Polyfill for Safari 14\n */\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/**\n * Choice: a ? b : c\n */\nexport const Chi = (a, b, c) => (a & b) ^ (~a & c);\n/**\n * Majority function, true if any two inputs is true\n */\nexport const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n//# sourceMappingURL=_md.js.map","import { HashMD, Chi, Maj } from './_md.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// SHA2-256 need to try 2^128 hashes to execute birthday attack.\n// BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per late 2024.\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ 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// Initial state:\n// first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19\n// prettier-ignore\nconst SHA256_IV = /* @__PURE__ */ new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 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 // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());\n/**\n * SHA2-224 hash function\n */\nexport const sha224 = /* @__PURE__ */ wrapConstructor(() => new SHA224());\n//# sourceMappingURL=sha256.js.map","import { HashMD } from './_md.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512());\nexport const sha512_224 = /* @__PURE__ */ wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = /* @__PURE__ */ wrapConstructor(() => new SHA512_256());\nexport const sha384 = /* @__PURE__ */ wrapConstructor(() => new SHA384());\n//# sourceMappingURL=sha512.js.map"],"names":["Chi","a","b","c","Maj","HashMD","Hash","constructor","blockLen","outputLen","padOffset","isLE","super","this","finished","length","pos","destroyed","buffer","Uint8Array","view","createView","update","data","aexists","len","toBytes","take","Math","min","set","subarray","process","dataView","roundClean","digestInto","out","aoutput","fill","i","byteOffset","value","setBigUint64","_32n","BigInt","_u32_max","wh","Number","wl","h","l","setUint32","oview","Error","outLen","state","get","digest","res","slice","destroy","_cloneInto","to","SHA256_K","Uint32Array","SHA256_IV","SHA256_W","SHA256","A","B","C","D","E","F","G","H","offset","getUint32","W15","W2","s0","rotr","s1","T1","T2","SHA224","sha256","wrapConstructor","sha224","SHA512_Kh","SHA512_Kl","u64","split","map","n","SHA512_W_H","SHA512_W_L","SHA512","Ah","Al","Bh","Bl","Ch","Cl","Dh","Dl","Eh","El","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","rotrSH","shrSH","s0l","rotrSL","shrSL","W2h","W2l","s1h","rotrBH","s1l","rotrBL","SUMl","add4L","SUMh","add4H","sigma1h","sigma1l","CHIh","CHIl","T1ll","add5L","T1h","add5H","T1l","sigma0h","sigma0l","MAJh","MAJl","add","All","add3L","add3H","SHA384","sha512","sha384"],"mappings":"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","x_google_ignoreList":[0,1,2]}