{"version":3,"file":"md5.mjs","sources":["../src/index.coffee"],"sourcesContent":["# JavaScript MD5\n# https://github.com/blueimp/JavaScript-MD5\n#\n# Copyright 2011, Sebastian Tschan\n# https://blueimp.net\n#\n# Licensed under the MIT license:\n# https://opensource.org/licenses/MIT\n#\n# Based on\n# A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n# Digest Algorithm, as defined in RFC 1321.\n# Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n# Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n# Distributed under the BSD License\n# See http://pajhome.org.uk/crypt/md5 for more info.\n\n\n# Add integers, wrapping at 2^32. This uses 16-bit operations internally to\n# work around bugs in some JS interpreters.\nsafeAdd = (x, y) ->\n  lsw = (x & 0xFFFF) + (y & 0xFFFF)\n  msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n  msw << 16 | lsw & 0xFFFF\n\n# Bitwise rotate a 32-bit number to the left.\nbitRotateLeft = (num, cnt) ->\n  num << cnt | num >>> 32 - cnt\n\n# These functions implement the four basic operations the algorithm uses.\nmd5cmn = (q, a, b, x, s, t) ->\n  safeAdd bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b\n\nmd5ff = (a, b, c, d, x, s, t) ->\n  md5cmn b & c | ~b & d, a, b, x, s, t\n\nmd5gg = (a, b, c, d, x, s, t) ->\n  md5cmn b & d | c & ~d, a, b, x, s, t\n\nmd5hh = (a, b, c, d, x, s, t) ->\n  md5cmn b ^ c ^ d, a, b, x, s, t\n\nmd5ii = (a, b, c, d, x, s, t) ->\n  md5cmn c ^ (b | ~d), a, b, x, s, t\n\n# Calculate the MD5 of an array of little-endian words, and a bit length.\nbinlMD5 = (x, len) ->\n  ### append padding ###\n  x[len >> 5] |= 0x80 << len % 32\n  x[(len + 64 >>> 9 << 4) + 14] = len\n\n  i = undefined\n  olda = undefined\n  oldb = undefined\n  oldc = undefined\n  oldd = undefined\n  a = 1732584193\n  b = -271733879\n  c = -1732584194\n  d = 271733878\n\n  i = 0\n  while i < x.length\n    olda = a\n    oldb = b\n    oldc = c\n    oldd = d\n\n    a = md5ff(a, b, c, d, x[i], 7, -680876936)\n    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n    c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n    b = md5gg(b, c, d, a, x[i], 20, -373897302)\n    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n    a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n    d = md5hh(d, a, b, c, x[i], 11, -358537222)\n    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n    a = md5ii(a, b, c, d, x[i], 6, -198630844)\n    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n    a = safeAdd(a, olda)\n    b = safeAdd(b, oldb)\n    c = safeAdd(c, oldc)\n    d = safeAdd(d, oldd)\n    i += 16\n\n  [a, b, c, d]\n\n# Convert an array of little-endian words to a string\nbinl2rstr = (input) ->\n  i = undefined\n  output = ''\n  length32 = input.length * 32\n  i = 0\n  while i < length32\n    output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xFF)\n    i += 8\n  output\n\n# Convert a raw string to an array of little-endian words\n# Characters >255 have their high-byte silently ignored.\nrstr2binl = (input) ->\n  i = undefined\n  output = []\n  output[(input.length >> 2) - 1] = undefined\n  i = 0\n  while i < output.length\n    output[i] = 0\n    i += 1\n  length8 = input.length * 8\n  i = 0\n  while i < length8\n    output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << i % 32\n    i += 8\n  output\n\n# Calculate the MD5 of a raw string\nrstrMD5 = (s) ->\n  binl2rstr binlMD5(rstr2binl(s), s.length * 8)\n\n# Calculate the HMAC-MD5, of a key and some data (raw strings)\nrstrHMACMD5 = (key, data) ->\n  i = undefined\n  bkey = rstr2binl(key)\n  ipad = []\n  opad = []\n  hash = undefined\n  ipad[15] = opad[15] = undefined\n  if bkey.length > 16\n    bkey = binlMD5(bkey, key.length * 8)\n  i = 0\n  while i < 16\n    ipad[i] = bkey[i] ^ 0x36363636\n    opad[i] = bkey[i] ^ 0x5C5C5C5C\n    i += 1\n  hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n  binl2rstr binlMD5(opad.concat(hash), 512 + 128)\n\n# Convert a raw string to a hex string\nrstr2hex = (input) ->\n  hexTab = '0123456789abcdef'\n  output = ''\n  x = undefined\n  i = undefined\n  i = 0\n  while i < input.length\n    x = input.charCodeAt(i)\n    output += hexTab.charAt(x >>> 4 & 0x0F) + hexTab.charAt(x & 0x0F)\n    i += 1\n  output\n\n# Encode a string as utf-8\nstr2rstrUTF8 = (input) ->\n  unescape encodeURIComponent(input)\n\n# Take string arguments and return either raw or hex encoded strings\nrawMD5 = (s) ->\n  rstrMD5 str2rstrUTF8(s)\n\nhexMD5 = (s) ->\n  rstr2hex rawMD5(s)\n\nrawHMACMD5 = (k, d) ->\n  rstrHMACMD5 str2rstrUTF8(k), str2rstrUTF8(d)\n\nhexHMACMD5 = (k, d) ->\n  rstr2hex rawHMACMD5(k, d)\n\nexport default md5 = (string, key, raw) ->\n  if !key\n    if !raw\n      return hexMD5(string)\n    return rawMD5(string)\n  if !raw\n    return hexHMACMD5(key, string)\n  rawHMACMD5 key, string\n"],"names":[],"mappings":"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"}