1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"ast":null,"code":"var asn1 = require('./asn1');\n\nvar aesid = require('./aesid.json');\n\nvar fixProc = require('./fixProc');\n\nvar ciphers = require('browserify-aes');\n\nvar compat = require('pbkdf2');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = parseKeys;\n\nfunction parseKeys(buffer) {\n var password;\n\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\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\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\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\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\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\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\n default:\n throw new Error('unknown key type ' + type);\n }\n}\n\nparseKeys.signature = asn1.signature;\n\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}","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/parse-asn1/index.js"],"names":["asn1","require","aesid","fixProc","ciphers","compat","Buffer","module","exports","parseKeys","buffer","password","isBuffer","passphrase","key","from","stripped","type","tag","data","subtype","ndata","certificate","decode","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","join","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","Error","EncryptedPrivateKey","decrypt","PrivateKey","RSAPrivateKey","curve","privateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","value","signature","salt","kde","kdeparams","iters","parseInt","toString","algo","cipher","iv","cipherText","keylen","split","pbkdf2Sync","createDecipheriv","out","push","update","final","concat"],"mappings":"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","sourcesContent":["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"]},"metadata":{},"sourceType":"script"} |