{"version":3,"sources":["../node_modules/des.js/lib/des/cipher.js","../node_modules/des.js/lib/des/utils.js","../node_modules/des.js/lib/des/des.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/ede.js"],"names":["assert","require","Cipher","options","this","type","blockSize","_init","buffer","Array","bufferOff","module","exports","prototype","update","data","length","_updateDecrypt","_updateEncrypt","_buffer","off","min","Math","i","_flushBuffer","out","_update","inputOff","outputOff","count","max","ceil","final","first","last","_finalEncrypt","_finalDecrypt","concat","_pad","_unpad","equal","readUInt32BE","bytes","writeUInt32BE","value","ip","inL","inR","outL","outR","j","rip","pc1","r28shl","num","shift","pc2table","pc2","len","expand","r","sTable","substitute","permuteTable","permute","padSplit","size","group","str","toString","push","slice","join","inherits","utils","DESState","tmp","keys","DES","call","state","_desState","deriveKeys","key","create","shiftTable","kL","kR","inp","inOff","outOff","l","_encrypt","_decrypt","pad","lStart","rStart","keyL","keyR","s","t","CBC","EDE","proto","CBCState","iv","instantiate","Base","_cbcInit","Object","_cbcState","superProto","constructor","super_","EDEState","k1","k2","k3","ciphers","_edeState"],"mappings":"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","file":"static/js/des.js.cbc53c46.chunk.js","sourcesContent":["'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n"],"sourceRoot":""}