{"id":"node_modules/parse-asn1/index.js","dependencies":[{"name":"/www/ml-classifier/example/package.json","includedInParent":true,"mtime":1551949031632},{"name":"/www/ml-classifier/example/.babelrc","includedInParent":true,"mtime":1551703756168},{"name":"/www/ml-classifier/example/node_modules/parse-asn1/package.json","includedInParent":true,"mtime":1550165965212},{"name":"./asn1","loc":{"line":1,"column":19},"parent":"/www/ml-classifier/example/node_modules/parse-asn1/index.js","resolved":"/www/ml-classifier/example/node_modules/parse-asn1/asn1.js"},{"name":"./aesid.json","loc":{"line":2,"column":20},"parent":"/www/ml-classifier/example/node_modules/parse-asn1/index.js","resolved":"/www/ml-classifier/example/node_modules/parse-asn1/aesid.json"},{"name":"./fixProc","loc":{"line":3,"column":22},"parent":"/www/ml-classifier/example/node_modules/parse-asn1/index.js","resolved":"/www/ml-classifier/example/node_modules/parse-asn1/fixProc.js"},{"name":"browserify-aes","loc":{"line":4,"column":22},"parent":"/www/ml-classifier/example/node_modules/parse-asn1/index.js","resolved":"/www/ml-classifier/example/node_modules/browserify-aes/browser.js"},{"name":"pbkdf2","loc":{"line":5,"column":21},"parent":"/www/ml-classifier/example/node_modules/parse-asn1/index.js","resolved":"/www/ml-classifier/example/node_modules/pbkdf2/browser.js"},{"name":"safe-buffer","loc":{"line":6,"column":21},"parent":"/www/ml-classifier/example/node_modules/parse-asn1/index.js","resolved":"/www/ml-classifier/example/node_modules/safe-buffer/index.js"}],"generated":{"js":"\nvar asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = Buffer.from(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n","map":{"mappings":[{"source":"node_modules/parse-asn1/index.js","original":{"line":1,"column":0},"generated":{"line":2,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":2,"column":0},"generated":{"line":3,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":3,"column":0},"generated":{"line":4,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":4,"column":0},"generated":{"line":5,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":5,"column":0},"generated":{"line":6,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":6,"column":0},"generated":{"line":7,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":7,"column":0},"generated":{"line":8,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":8,"column":0},"generated":{"line":9,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":9,"column":0},"generated":{"line":10,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":10,"column":0},"generated":{"line":11,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":11,"column":0},"generated":{"line":12,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":12,"column":0},"generated":{"line":13,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":13,"column":0},"generated":{"line":14,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":14,"column":0},"generated":{"line":15,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":15,"column":0},"generated":{"line":16,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":16,"column":0},"generated":{"line":17,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":17,"column":0},"generated":{"line":18,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":18,"column":0},"generated":{"line":19,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":19,"column":0},"generated":{"line":20,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":20,"column":0},"generated":{"line":21,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":21,"column":0},"generated":{"line":22,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":22,"column":0},"generated":{"line":23,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":23,"column":0},"generated":{"line":24,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":24,"column":0},"generated":{"line":25,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":25,"column":0},"generated":{"line":26,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":26,"column":0},"generated":{"line":27,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":27,"column":0},"generated":{"line":28,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":28,"column":0},"generated":{"line":29,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":29,"column":0},"generated":{"line":30,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":30,"column":0},"generated":{"line":31,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":31,"column":0},"generated":{"line":32,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":32,"column":0},"generated":{"line":33,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":33,"column":0},"generated":{"line":34,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":34,"column":0},"generated":{"line":35,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":35,"column":0},"generated":{"line":36,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":36,"column":0},"generated":{"line":37,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":37,"column":0},"generated":{"line":38,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":38,"column":0},"generated":{"line":39,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":39,"column":0},"generated":{"line":40,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":40,"column":0},"generated":{"line":41,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":41,"column":0},"generated":{"line":42,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":42,"column":0},"generated":{"line":43,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":43,"column":0},"generated":{"line":44,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":44,"column":0},"generated":{"line":45,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":45,"column":0},"generated":{"line":46,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":46,"column":0},"generated":{"line":47,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":47,"column":0},"generated":{"line":48,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":48,"column":0},"generated":{"line":49,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":49,"column":0},"generated":{"line":50,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":50,"column":0},"generated":{"line":51,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":51,"column":0},"generated":{"line":52,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":52,"column":0},"generated":{"line":53,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":53,"column":0},"generated":{"line":54,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":54,"column":0},"generated":{"line":55,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":55,"column":0},"generated":{"line":56,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":56,"column":0},"generated":{"line":57,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":57,"column":0},"generated":{"line":58,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":58,"column":0},"generated":{"line":59,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":59,"column":0},"generated":{"line":60,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":60,"column":0},"generated":{"line":61,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":61,"column":0},"generated":{"line":62,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":62,"column":0},"generated":{"line":63,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":63,"column":0},"generated":{"line":64,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":64,"column":0},"generated":{"line":65,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":65,"column":0},"generated":{"line":66,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":66,"column":0},"generated":{"line":67,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":67,"column":0},"generated":{"line":68,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":68,"column":0},"generated":{"line":69,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":69,"column":0},"generated":{"line":70,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":70,"column":0},"generated":{"line":71,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":71,"column":0},"generated":{"line":72,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":72,"column":0},"generated":{"line":73,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":73,"column":0},"generated":{"line":74,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":74,"column":0},"generated":{"line":75,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":75,"column":0},"generated":{"line":76,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":76,"column":0},"generated":{"line":77,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":77,"column":0},"generated":{"line":78,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":78,"column":0},"generated":{"line":79,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":79,"column":0},"generated":{"line":80,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":80,"column":0},"generated":{"line":81,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":81,"column":0},"generated":{"line":82,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":82,"column":0},"generated":{"line":83,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":83,"column":0},"generated":{"line":84,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":84,"column":0},"generated":{"line":85,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":85,"column":0},"generated":{"line":86,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":86,"column":0},"generated":{"line":87,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":87,"column":0},"generated":{"line":88,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":88,"column":0},"generated":{"line":89,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":89,"column":0},"generated":{"line":90,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":90,"column":0},"generated":{"line":91,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":91,"column":0},"generated":{"line":92,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":92,"column":0},"generated":{"line":93,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":93,"column":0},"generated":{"line":94,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":94,"column":0},"generated":{"line":95,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":95,"column":0},"generated":{"line":96,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":96,"column":0},"generated":{"line":97,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":97,"column":0},"generated":{"line":98,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":98,"column":0},"generated":{"line":99,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":99,"column":0},"generated":{"line":100,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":100,"column":0},"generated":{"line":101,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":101,"column":0},"generated":{"line":102,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":102,"column":0},"generated":{"line":103,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":103,"column":0},"generated":{"line":104,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":104,"column":0},"generated":{"line":105,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":105,"column":0},"generated":{"line":106,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":106,"column":0},"generated":{"line":107,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":107,"column":0},"generated":{"line":108,"column":0}},{"source":"node_modules/parse-asn1/index.js","original":{"line":108,"column":0},"generated":{"line":109,"column":0}}],"sources":{"node_modules/parse-asn1/index.js":"var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = Buffer.from(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n"},"lineCount":109}},"hash":"170e2b169b7a0a46950efadb37861cae","cacheData":{"env":{}}}