{"version":3,"file":"sha1.cjs","names":["W: number[]","Hasher32","WordArray","SHA1: HashFn","Hasher","HmacSHA1: HMACHashFn"],"sources":["../src/sha1.ts"],"sourcesContent":["import {\n  WordArray,\n  Hasher,\n  Hasher32,\n  HashFn,\n  HMACHashFn,\n} from './core';\n\n// Reusable object\nconst W: number[] = [];\n\n/**\n * SHA-1 hash algorithm.\n */\nexport class SHA1Algo extends Hasher32 {\n  _doReset(): void {\n    this._hash = new WordArray([\n      0x67452301,\n      0xefcdab89,\n      0x98badcfe,\n      0x10325476,\n      0xc3d2e1f0,\n    ]);\n  }\n\n  _doProcessBlock(M: number[], offset: number): void {\n    // Shortcut\n    const H = this._hash.words;\n\n    // Working variables\n    let a = H[0];\n    let b = H[1];\n    let c = H[2];\n    let d = H[3];\n    let e = H[4];\n\n    // Computation\n    for (let i = 0; i < 80; i += 1) {\n      if (i < 16) {\n        W[i] = M[offset + i] | 0;\n      } else {\n        const n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n        W[i] = (n << 1) | (n >>> 31);\n      }\n\n      let t = ((a << 5) | (a >>> 27)) + e + W[i];\n      if (i < 20) {\n        t += ((b & c) | (~b & d)) + 0x5a827999;\n      } else if (i < 40) {\n        t += (b ^ c ^ d) + 0x6ed9eba1;\n      } else if (i < 60) {\n        t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n      } else /* if (i < 80) */ {\n        t += (b ^ c ^ d) - 0x359d3e2a;\n      }\n\n      e = d;\n      d = c;\n      c = (b << 30) | (b >>> 2);\n      b = a;\n      a = t;\n    }\n\n    // Intermediate hash value\n    H[0] = (H[0] + a) | 0;\n    H[1] = (H[1] + b) | 0;\n    H[2] = (H[2] + c) | 0;\n    H[3] = (H[3] + d) | 0;\n    H[4] = (H[4] + e) | 0;\n  }\n\n  _doFinalize(): WordArray {\n    // Shortcuts\n    const data = this._data;\n    const dataWords = data.words;\n\n    const nBitsTotal = this._nDataBytes * 8;\n    const nBitsLeft = data.sigBytes * 8;\n\n    // Add padding\n    dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32));\n    dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n    dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n    data.sigBytes = dataWords.length * 4;\n\n    // Hash final blocks\n    this._process();\n\n    // Return final computed hash\n    return this._hash;\n  }\n\n  clone(): this {\n    const clone = super.clone.call(this);\n    clone._hash = this._hash.clone();\n\n    return clone;\n  }\n}\n\n/**\n * Shortcut function to the hasher's object interface.\n *\n * @param message - The message to hash.\n * @returns The hash.\n *\n * @example\n * ```js\n * const hash = SHA1('message');\n * const hash = SHA1(wordArray);\n * ```\n */\nexport const SHA1: HashFn = Hasher._createHelper(SHA1Algo);\n\n/**\n * Shortcut function to the HMAC's object interface.\n *\n * @param message - The message to hash.\n * @param key - The secret key.\n * @returns The HMAC.\n *\n * @example\n * ```js\n * const hmac = HmacSHA1(message, key);\n * ```\n */\nexport const HmacSHA1: HMACHashFn = Hasher._createHmacHelper(SHA1Algo);"],"mappings":";;;AASA,MAAMA,IAAc,EAAE;;;;AAKtB,IAAa,WAAb,cAA8BC,sBAAS;CACrC,WAAiB;AACf,OAAK,QAAQ,IAAIC,uBAAU;GACzB;GACA;GACA;GACA;GACA;GACD;CACF;CAED,gBAAgB,GAAa,QAAsB;EAEjD,MAAM,IAAI,KAAK,MAAM;EAGrB,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;EACV,IAAI,IAAI,EAAE;AAGV,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC9B,OAAI,IAAI,GACN,GAAE,KAAK,EAAE,SAAS,KAAK;QAClB;IACL,MAAM,IAAI,EAAE,IAAI,KAAK,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI;AAClD,MAAE,KAAM,KAAK,IAAM,MAAM;GAC1B;GAED,IAAI,KAAM,KAAK,IAAM,MAAM,MAAO,IAAI,EAAE;AACxC,OAAI,IAAI,GACN,OAAO,IAAI,IAAM,CAAC,IAAI,KAAM;YACnB,IAAI,GACb,OAAM,IAAI,IAAI,KAAK;YACV,IAAI,GACb,OAAO,IAAI,IAAM,IAAI,IAAM,IAAI,KAAM;OAErC,OAAM,IAAI,IAAI,KAAK;AAGrB,OAAI;AACJ,OAAI;AACJ,OAAK,KAAK,KAAO,MAAM;AACvB,OAAI;AACJ,OAAI;EACL;AAGD,IAAE,KAAM,EAAE,KAAK,IAAK;AACpB,IAAE,KAAM,EAAE,KAAK,IAAK;AACpB,IAAE,KAAM,EAAE,KAAK,IAAK;AACpB,IAAE,KAAM,EAAE,KAAK,IAAK;AACpB,IAAE,KAAM,EAAE,KAAK,IAAK;CACrB;CAED,cAAyB;EAEvB,MAAM,OAAO,KAAK;EAClB,MAAM,YAAY,KAAK;EAEvB,MAAM,aAAa,KAAK,cAAc;EACtC,MAAM,YAAY,KAAK,WAAW;AAGlC,YAAU,cAAc,MAAM,OAAS,KAAM,YAAY;AACzD,aAAa,YAAY,OAAQ,KAAM,KAAK,MAAM,KAAK,MAAM,aAAa;AAC1E,aAAa,YAAY,OAAQ,KAAM,KAAK,MAAM;AAClD,OAAK,WAAW,UAAU,SAAS;AAGnC,OAAK;AAGL,SAAO,KAAK;CACb;CAED,QAAc;EACZ,MAAM,QAAQ,MAAM,MAAM,KAAK;AAC/B,QAAM,QAAQ,KAAK,MAAM;AAEzB,SAAO;CACR;AACF;;;;;;;;;;;;;AAcD,MAAaC,OAAeC,oBAAO,cAAc;;;;;;;;;;;;;AAcjD,MAAaC,WAAuBD,oBAAO,kBAAkB"}