hemslo/keymaker-toolbox

View on GitHub
dist/keymaker-toolbox.js.map

Summary

Maintainability
Test Coverage
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 7e07103465d99d25bd10","webpack:///./src/keymaker-toolbox.js","webpack:///external \"sjcl\""],"names":[],"mappings":"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","file":"keymaker-toolbox.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sjcl\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sjcl\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"keymakerToolbox\"] = factory(require(\"sjcl\"));\n\telse\n\t\troot[\"keymakerToolbox\"] = factory(root[\"sjcl\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 7e07103465d99d25bd10\n **/","import sjcl from 'sjcl';\n\nconst Characters = {\n  lower: 'abcdefghijklmnopqrstuvwxyz'.split(''),\n  upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''),\n  number: '0123456789'.split(''),\n  special: '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'.split('')\n};\n\nconst keymakerToolbox = {\n  makeKey(password, salt, iterations=100000, keylen=32, lower=true, upper=true, number=true, special=true) {\n    let dk = sjcl.misc.pbkdf2(password,\n                              sjcl.codec.utf8String.toBits(salt),\n                              iterations,\n                              keylen * 8);\n    let hex = sjcl.codec.hex.fromBits(dk);\n\n    let types = [];\n    const allTypes = ['lower', 'upper', 'number', 'special'];\n    [lower, upper, number, special].forEach((e, i) => {\n      if (e) {\n        types.push(allTypes[i]);\n      }\n    });\n\n    if (types.length === 0 || keylen < types.length) {\n      return hex;\n    }\n\n    let decs = hex.match(/.{2}/g).map(i => parseInt(i, 16));\n    let characters = decs.map(dec => {\n      let type = types[dec % types.length];\n      return Characters[type][dec % Characters[type].length];\n    });\n\n    // ensure all types at least one\n    let indices = characters.map((e, i) => i);\n    let index = 0;\n    types.forEach(type => {\n      let i = decs[index] % indices.length;\n      index = indices[i];\n      indices.splice(i, 1);\n      characters[index] = Characters[type][decs[index] % Characters[type].length];\n    });\n    return characters.join('');\n  }\n};\n\nexport default keymakerToolbox;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/keymaker-toolbox.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"sjcl\"\n ** module id = 1\n ** module chunks = 0\n **/"],"sourceRoot":""}