{"id":"zRw6","dependencies":[{"name":"D:\\1PROJECTS\\Linway\\node_modules\\exceljs\\dist\\es5\\utils\\encryptor.js.map","includedInParent":true,"mtime":499162500000},{"name":"D:\\1PROJECTS\\Linway\\package.json","includedInParent":true,"mtime":1649861917996},{"name":"D:\\1PROJECTS\\Linway\\node_modules\\exceljs\\package.json","includedInParent":true,"mtime":1649845849118},{"name":"crypto","loc":{"line":3,"column":21,"index":36},"parent":"D:\\1PROJECTS\\Linway\\node_modules\\exceljs\\dist\\es5\\utils\\encryptor.js","resolved":"D:\\1PROJECTS\\Linway\\node_modules\\crypto-browserify\\index.js"},{"name":"buffer","parent":"D:\\1PROJECTS\\Linway\\node_modules\\exceljs\\dist\\es5\\utils\\encryptor.js","resolved":"D:\\1PROJECTS\\Linway\\node_modules\\node-libs-browser\\node_modules\\buffer\\index.js"}],"generated":{"js":"var Buffer = require(\"buffer\").Buffer;\nvar r=require(\"buffer\").Buffer,e=require(\"crypto\"),t={hash:function(t){for(var o=e.createHash(t),a=arguments.length,n=new Array(a>1?a-1:0),s=1;s<a;s++)n[s-1]=arguments[s];return o.update(r.concat(n)),o.digest()},convertPasswordToHash:function(t,o,a,n){if(o=o.toLowerCase(),e.getHashes().indexOf(o)<0)throw new Error(\"Hash algorithm '\".concat(o,\"' not supported!\"));for(var s=r.from(t,\"utf16le\"),h=this.hash(o,r.from(a,\"base64\"),s),f=0;f<n;f++){var u=r.alloc(4);u.writeUInt32LE(f,0),h=this.hash(o,h,u)}return h.toString(\"base64\")},randomBytes:function(r){return e.randomBytes(r)}};module.exports=t;"},"sourceMaps":{"js":{"mappings":[{"source":"../../../lib/utils/encryptor.js","name":"module","original":{"line":59,"column":0},"generated":{"line":2,"column":0}},{"source":"../../../lib/utils/encryptor.js","name":"module","original":{"line":59,"column":0},"generated":{"line":2,"column":4}},{"source":"../../../lib/utils/encryptor.js","name":"module","original":{"line":59,"column":0},"generated":{"line":2,"column":6}},{"source":"../../../lib/utils/encryptor.js","name":"module","original":{"line":59,"column":0},"generated":{"line":2,"column":14}},{"source":"../../../lib/utils/encryptor.js","name":"module","original":{"line":59,"column":0},"generated":{"line":2,"column":24}},{"source":"../../../lib/utils/encryptor.js","name":"crypto","original":{"line":3,"column":6},"generated":{"line":2,"column":31}},{"source":"../../../lib/utils/encryptor.js","name":"require","original":{"line":3,"column":15},"generated":{"line":2,"column":33}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":3,"column":23},"generated":{"line":2,"column":41}},{"source":"../../../lib/utils/encryptor.js","name":"Encryptor","original":{"line":5,"column":6},"generated":{"line":2,"column":51}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":5,"column":18},"generated":{"line":2,"column":53}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":11,"column":2},"generated":{"line":2,"column":54}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":5,"column":18},"generated":{"line":2,"column":59}},{"source":"../../../lib/utils/encryptor.js","name":"algorithm","original":{"line":11,"column":7},"generated":{"line":2,"column":68}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":71}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":12,"column":10},"generated":{"line":2,"column":75}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":12,"column":10},"generated":{"line":2,"column":79}},{"source":"../../../lib/utils/encryptor.js","name":"crypto","original":{"line":12,"column":17},"generated":{"line":2,"column":81}},{"source":"../../../lib/utils/encryptor.js","name":"createHash","original":{"line":12,"column":24},"generated":{"line":2,"column":83}},{"source":"../../../lib/utils/encryptor.js","name":"algorithm","original":{"line":12,"column":35},"generated":{"line":2,"column":94}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":97}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":99}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":109}},{"source":"../../../lib/utils/encryptor.js","name":"buffers","original":{"line":11,"column":21},"generated":{"line":2,"column":116}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":118}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":122}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":128}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":130}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":132}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":134}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":136}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":139}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":141}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":143}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":145}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":147}},{"source":"../../../lib/utils/encryptor.js","name":"buffers","original":{"line":11,"column":21},"generated":{"line":2,"column":151}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":153}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":155}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":158}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":11,"column":30},"generated":{"line":2,"column":168}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":14,"column":11},"generated":{"line":2,"column":171}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":13,"column":4},"generated":{"line":2,"column":178}},{"source":"../../../lib/utils/encryptor.js","name":"update","original":{"line":13,"column":9},"generated":{"line":2,"column":180}},{"source":"../../../lib/utils/encryptor.js","name":"Buffer","original":{"line":13,"column":16},"generated":{"line":2,"column":187}},{"source":"../../../lib/utils/encryptor.js","name":"concat","original":{"line":13,"column":23},"generated":{"line":2,"column":189}},{"source":"../../../lib/utils/encryptor.js","name":"buffers","original":{"line":13,"column":30},"generated":{"line":2,"column":196}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":14,"column":11},"generated":{"line":2,"column":200}},{"source":"../../../lib/utils/encryptor.js","name":"digest","original":{"line":14,"column":16},"generated":{"line":2,"column":202}},{"source":"../../../lib/utils/encryptor.js","name":"convertPasswordToHash","original":{"line":26,"column":2},"generated":{"line":2,"column":212}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":5,"column":18},"generated":{"line":2,"column":234}},{"source":"../../../lib/utils/encryptor.js","name":"password","original":{"line":26,"column":24},"generated":{"line":2,"column":243}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":26,"column":34},"generated":{"line":2,"column":245}},{"source":"../../../lib/utils/encryptor.js","name":"saltValue","original":{"line":26,"column":49},"generated":{"line":2,"column":247}},{"source":"../../../lib/utils/encryptor.js","name":"spinCount","original":{"line":26,"column":60},"generated":{"line":2,"column":249}},{"source":"../../../lib/utils/encryptor.js","name":"hashes","original":{"line":29,"column":8},"generated":{"line":2,"column":252}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":27,"column":4},"generated":{"line":2,"column":255}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":27,"column":20},"generated":{"line":2,"column":257}},{"source":"../../../lib/utils/encryptor.js","name":"toLowerCase","original":{"line":27,"column":34},"generated":{"line":2,"column":259}},{"source":"../../../lib/utils/encryptor.js","name":"crypto","original":{"line":28,"column":19},"generated":{"line":2,"column":273}},{"source":"../../../lib/utils/encryptor.js","name":"getHashes","original":{"line":28,"column":26},"generated":{"line":2,"column":275}},{"source":"../../../lib/utils/encryptor.js","name":"indexOf","original":{"line":29,"column":15},"generated":{"line":2,"column":287}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":29,"column":23},"generated":{"line":2,"column":295}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":29,"column":40},"generated":{"line":2,"column":298}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":30,"column":12},"generated":{"line":2,"column":300}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":30,"column":12},"generated":{"line":2,"column":306}},{"source":"../../../lib/utils/encryptor.js","name":"Error","original":{"line":30,"column":16},"generated":{"line":2,"column":310}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":30,"column":12},"generated":{"line":2,"column":316}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":30,"column":12},"generated":{"line":2,"column":335}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":30,"column":41},"generated":{"line":2,"column":342}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":30,"column":12},"generated":{"line":2,"column":344}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":42,"column":9},"generated":{"line":2,"column":365}},{"source":"../../../lib/utils/encryptor.js","name":"passwordBuffer","original":{"line":34,"column":10},"generated":{"line":2,"column":369}},{"source":"../../../lib/utils/encryptor.js","name":"passwordBuffer","original":{"line":34,"column":10},"generated":{"line":2,"column":373}},{"source":"../../../lib/utils/encryptor.js","name":"Buffer","original":{"line":34,"column":27},"generated":{"line":2,"column":375}},{"source":"../../../lib/utils/encryptor.js","name":"from","original":{"line":34,"column":34},"generated":{"line":2,"column":377}},{"source":"../../../lib/utils/encryptor.js","name":"password","original":{"line":34,"column":39},"generated":{"line":2,"column":382}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":34,"column":49},"generated":{"line":2,"column":384}},{"source":"../../../lib/utils/encryptor.js","name":"key","original":{"line":36,"column":8},"generated":{"line":2,"column":395}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":36,"column":14},"generated":{"line":2,"column":397}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":36,"column":19},"generated":{"line":2,"column":402}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":37,"column":6},"generated":{"line":2,"column":407}},{"source":"../../../lib/utils/encryptor.js","name":"Buffer","original":{"line":38,"column":6},"generated":{"line":2,"column":409}},{"source":"../../../lib/utils/encryptor.js","name":"from","original":{"line":38,"column":13},"generated":{"line":2,"column":411}},{"source":"../../../lib/utils/encryptor.js","name":"saltValue","original":{"line":38,"column":18},"generated":{"line":2,"column":416}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":38,"column":29},"generated":{"line":2,"column":418}},{"source":"../../../lib/utils/encryptor.js","name":"passwordBuffer","original":{"line":39,"column":6},"generated":{"line":2,"column":428}},{"source":"../../../lib/utils/encryptor.js","name":"i","original":{"line":42,"column":13},"generated":{"line":2,"column":431}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":42,"column":17},"generated":{"line":2,"column":433}},{"source":"../../../lib/utils/encryptor.js","name":"i","original":{"line":42,"column":20},"generated":{"line":2,"column":435}},{"source":"../../../lib/utils/encryptor.js","name":"spinCount","original":{"line":42,"column":24},"generated":{"line":2,"column":437}},{"source":"../../../lib/utils/encryptor.js","name":"i","original":{"line":42,"column":35},"generated":{"line":2,"column":439}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":42,"column":40},"generated":{"line":2,"column":443}},{"source":"../../../lib/utils/encryptor.js","name":"iterator","original":{"line":43,"column":12},"generated":{"line":2,"column":444}},{"source":"../../../lib/utils/encryptor.js","name":"iterator","original":{"line":43,"column":12},"generated":{"line":2,"column":448}},{"source":"../../../lib/utils/encryptor.js","name":"Buffer","original":{"line":43,"column":23},"generated":{"line":2,"column":450}},{"source":"../../../lib/utils/encryptor.js","name":"alloc","original":{"line":43,"column":30},"generated":{"line":2,"column":452}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":43,"column":36},"generated":{"line":2,"column":458}},{"source":"../../../lib/utils/encryptor.js","name":"iterator","original":{"line":46,"column":6},"generated":{"line":2,"column":461}},{"source":"../../../lib/utils/encryptor.js","name":"writeUInt32LE","original":{"line":46,"column":15},"generated":{"line":2,"column":463}},{"source":"../../../lib/utils/encryptor.js","name":"i","original":{"line":46,"column":29},"generated":{"line":2,"column":477}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":46,"column":32},"generated":{"line":2,"column":479}},{"source":"../../../lib/utils/encryptor.js","name":"key","original":{"line":47,"column":6},"generated":{"line":2,"column":482}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":47,"column":12},"generated":{"line":2,"column":484}},{"source":"../../../lib/utils/encryptor.js","name":"hash","original":{"line":47,"column":17},"generated":{"line":2,"column":489}},{"source":"../../../lib/utils/encryptor.js","name":"hashAlgorithm","original":{"line":47,"column":22},"generated":{"line":2,"column":494}},{"source":"../../../lib/utils/encryptor.js","name":"key","original":{"line":47,"column":37},"generated":{"line":2,"column":496}},{"source":"../../../lib/utils/encryptor.js","name":"iterator","original":{"line":47,"column":42},"generated":{"line":2,"column":498}},{"source":"../../../lib/utils/encryptor.js","name":"key","original":{"line":49,"column":11},"generated":{"line":2,"column":501}},{"source":"../../../lib/utils/encryptor.js","name":"key","original":{"line":49,"column":11},"generated":{"line":2,"column":508}},{"source":"../../../lib/utils/encryptor.js","name":"toString","original":{"line":49,"column":15},"generated":{"line":2,"column":510}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":49,"column":24},"generated":{"line":2,"column":519}},{"source":"../../../lib/utils/encryptor.js","name":"randomBytes","original":{"line":55,"column":2},"generated":{"line":2,"column":530}},{"source":"../../../lib/utils/encryptor.js","name":null,"original":{"line":5,"column":18},"generated":{"line":2,"column":542}},{"source":"../../../lib/utils/encryptor.js","name":"size","original":{"line":55,"column":14},"generated":{"line":2,"column":551}},{"source":"../../../lib/utils/encryptor.js","name":"crypto","original":{"line":56,"column":11},"generated":{"line":2,"column":554}},{"source":"../../../lib/utils/encryptor.js","name":"crypto","original":{"line":56,"column":11},"generated":{"line":2,"column":561}},{"source":"../../../lib/utils/encryptor.js","name":"randomBytes","original":{"line":56,"column":18},"generated":{"line":2,"column":563}},{"source":"../../../lib/utils/encryptor.js","name":"size","original":{"line":56,"column":30},"generated":{"line":2,"column":575}},{"source":"../../../lib/utils/encryptor.js","name":"module","original":{"line":59,"column":0},"generated":{"line":2,"column":580}},{"source":"../../../lib/utils/encryptor.js","name":"exports","original":{"line":59,"column":7},"generated":{"line":2,"column":587}},{"source":"../../../lib/utils/encryptor.js","name":"Encryptor","original":{"line":59,"column":17},"generated":{"line":2,"column":595}}],"sources":{"../../../lib/utils/encryptor.js":"'use strict';\n\nconst crypto = require('crypto');\n\nconst Encryptor = {\n  /**\n   * Calculate a hash of the concatenated buffers with the given algorithm.\n   * @param {string} algorithm - The hash algorithm.\n   * @returns {Buffer} The hash\n   */\n  hash(algorithm, ...buffers) {\n    const hash = crypto.createHash(algorithm);\n    hash.update(Buffer.concat(buffers));\n    return hash.digest();\n  },\n  /**\n   * Convert a password into an encryption key\n   * @param {string} password - The password\n   * @param {string} hashAlgorithm - The hash algoritm\n   * @param {string} saltValue - The salt value\n   * @param {number} spinCount - The spin count\n   * @param {number} keyBits - The length of the key in bits\n   * @param {Buffer} blockKey - The block key\n   * @returns {Buffer} The encryption key\n   */\n  convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) {\n    hashAlgorithm = hashAlgorithm.toLowerCase();\n    const hashes = crypto.getHashes();\n    if (hashes.indexOf(hashAlgorithm) < 0) {\n      throw new Error(`Hash algorithm '${hashAlgorithm}' not supported!`);\n    }\n\n    // Password must be in unicode buffer\n    const passwordBuffer = Buffer.from(password, 'utf16le');\n    // Generate the initial hash\n    let key = this.hash(\n      hashAlgorithm,\n      Buffer.from(saltValue, 'base64'),\n      passwordBuffer\n    );\n    // Now regenerate until spin count\n    for (let i = 0; i < spinCount; i++) {\n      const iterator = Buffer.alloc(4);\n      // this is the 'special' element of Excel password hashing\n      // that stops us from using crypto.pbkdf2()\n      iterator.writeUInt32LE(i, 0);\n      key = this.hash(hashAlgorithm, key, iterator);\n    }\n    return key.toString('base64');\n  },\n  /**\n   * Generates cryptographically strong pseudo-random data.\n   * @param size The size argument is a number indicating the number of bytes to generate.\n   */\n  randomBytes(size) {\n    return crypto.randomBytes(size);\n  },\n};\nmodule.exports = Encryptor;\n"},"lineCount":null}},"error":null,"hash":"f67d7e7ab197199099f6516be2152bdb","cacheData":{"env":{}}}