diff --git a/bin/telebit-remote.js b/bin/telebit-remote.js index 16e1a3b..99183c2 100755 --- a/bin/telebit-remote.js +++ b/bin/telebit-remote.js @@ -12,6 +12,7 @@ var path = require('path'); var YAML = require('js-yaml'); var TOML = require('toml'); var TPLS = TOML.parse(fs.readFileSync(path.join(__dirname, "../lib/en-us.toml"), 'utf8')); +var JWT = require('../lib/jwt.js'); /* if ('function' !== typeof TOML.stringify) { @@ -232,10 +233,9 @@ function askForConfig(state, mainCb) { //console.info("\tPrivate key (hex)"); console.info(""); rl.question('auth: ', function (resp) { - var jwt = require('jsonwebtoken'); resp = (resp || '').trim(); try { - jwt.decode(resp); + JWT.decode(resp); state.config.token = resp; } catch(e) { // is not jwt @@ -604,8 +604,8 @@ function parseConfig(err, text) { } state._connecting = true; try { - require('jsonwebtoken').decode(token); - //console.log(require('jsonwebtoken').decode(token)); + JWT.decode(token); + //console.log(JWT.decode(token)); } catch(e) { console.warn("[warning] could not decode token"); } diff --git a/lib/admin/js/telebit.js b/lib/admin/js/telebit.js index d0ab85c..7ab35c7 100644 --- a/lib/admin/js/telebit.js +++ b/lib/admin/js/telebit.js @@ -114,7 +114,7 @@ common.otp = function getOtp() { return Math.round(Math.random() * 9999).toString().padStart(4, '0'); }; common.signToken = function (state) { - var jwt = require('jsonwebtoken'); + var JWT = require('./jwt.js'); var tokenData = { domains: Object.keys(state.config.servernames || {}).filter(function (name) { return /\./.test(name); @@ -127,7 +127,7 @@ common.signToken = function (state) { , iss: Math.round(Date.now() / 1000) }; - return jwt.sign(tokenData, state.config.secret); + return JWT.sign(tokenData, state.config.secret); }; common.promiseTimeout = function (ms) { var tok; diff --git a/lib/cli-common.js b/lib/cli-common.js index 9b04c18..e432a1b 100644 --- a/lib/cli-common.js +++ b/lib/cli-common.js @@ -118,7 +118,7 @@ common.otp = function getOtp() { return Math.round(Math.random() * 9999).toString().padStart(4, '0'); }; common.signToken = function (state) { - var jwt = require('jsonwebtoken'); + var JWT = require('./jwt.js'); var tokenData = { domains: Object.keys(state.config.servernames || {}).filter(function (name) { return /\./.test(name); @@ -131,7 +131,7 @@ common.signToken = function (state) { , iss: Math.round(Date.now() / 1000) }; - return jwt.sign(tokenData, state.config.secret); + return JWT.sign(tokenData, state.config.secret); }; common.api = {}; common.api.directory = function (state, next) { diff --git a/lib/jwt-test.js b/lib/jwt-test.js new file mode 100644 index 0000000..37f95a7 --- /dev/null +++ b/lib/jwt-test.js @@ -0,0 +1,19 @@ +'use strict'; + +var crypto = require('crypto'); +var FAT = require('jsonwebtoken'); +var JWT = require('./jwt.js'); + +var key = "justanothersecretsecret"; +var keyid = crypto.createHash('sha256').update(key).digest('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); + +var tok1 = FAT.sign({ foo: "hello" }, key, { keyid: keyid }); +var tok2 = JWT.sign({ foo: "hello" }, key); + +if (tok1 !== tok2) { + console.error(JWT.decode(tok1)); + console.error(JWT.decode(tok2)); + throw new Error("our jwt doesn't match auth0/jsonwebtoken"); +} + +console.info('Pass'); diff --git a/lib/jwt.js b/lib/jwt.js new file mode 100644 index 0000000..c7d16fe --- /dev/null +++ b/lib/jwt.js @@ -0,0 +1,43 @@ +'use strict'; + +var crypto = require('crypto'); +var JWT = module.exports; + +JWT.decode = function (jwt) { + var parts; + + try { + parts = jwt.split('.'); + return { + header: JSON.parse(Buffer.from(parts[0], 'base64')) + , payload: JSON.parse(Buffer.from(parts[1], 'base64')) + , signature: parts[2] //Buffer.from(parts[2], 'base64') + }; + } catch(e) { + throw new Error("JWT Parse Error: could not split, base64 decode, and JSON.parse token " + jwt); + } +}; + +JWT.verify = function (jwt) { + var decoded = JWT.decode(jwt); + throw new Error("not implemented yet"); +}; + +function base64ToUrlSafe(str) { + return str + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=/g, '') + ; +} + +JWT.sign = function (claims, key) { + if (!claims.iat && false !== claims.iat) { + claims.iat = Math.round(Date.now()/1000); + } + var thumb = base64ToUrlSafe(crypto.createHash('sha256').update(key).digest('base64')); + var protect = base64ToUrlSafe(Buffer.from(JSON.stringify({ alg: 'HS256', typ: 'JWT', kid: thumb })).toString('base64')); + var payload = base64ToUrlSafe(Buffer.from(JSON.stringify(claims)).toString('base64')); + var signature = base64ToUrlSafe(crypto.createHmac('sha256', key).update(protect + '.' + payload).digest('base64')); + return protect + '.' + payload + '.' + signature; +}; diff --git a/package-lock.json b/package-lock.json index 58e2c53..22a9787 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,28 +19,22 @@ } }, "acme": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/acme/-/acme-1.1.0.tgz", - "integrity": "sha512-l2UAkE7aEKdYZ2dSok/ONxKLWj4HrSSPwuGsQE42LM8m6NukRXPKSWXyusqR4m+LhvN76183VvA8IDOOnLjSlw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/acme/-/acme-1.2.0.tgz", + "integrity": "sha512-lG9Wq0Ol2OLpVrusq5OQ+KCT06rXaGjbHcDhKtNO6Hr3J3swISaCYi0slwLpEA9DGV+QhDkAnZ6qsXAo86SM5Q==", "requires": { - "acme-v2": "^1.1.0", - "bluebird": "^3.5.1" + "acme-v2": "^1.3.1" } }, "acme-v2": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.1.0.tgz", - "integrity": "sha512-yODrKcfaqDwRM/nVZdupww7s7y/D1q6QMe8nbYPifVEO7JYi653FaoPbUFRXFKTEzFhJ4HNXZMGUKmLYJQq/Ag==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/acme-v2/-/acme-v2-1.5.2.tgz", + "integrity": "sha512-Ux0cFCxHeaGGeGyPGMLHBLIGF05OYaxuh4TvaVzwkVVRib/gPpioa50CGj2pnQimH/MRkg0VtWCEdfE45MV/0g==", "requires": { - "@coolaj86/urequest": "^1.1.1", - "rsa-compat": "^1.3.0" + "@coolaj86/urequest": "^1.3.6", + "rsa-compat": "^1.9.2" } }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -49,11 +43,6 @@ "sprintf-js": "~1.0.2" } }, - "asn1js": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz", - "integrity": "sha1-h9XueXWWri0qPLAkciDcQv/D8hE=" - }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -64,6 +53,15 @@ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", @@ -83,11 +81,6 @@ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -98,21 +91,10 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" }, - "buffer-v6-polyfill": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.5.tgz", - "integrity": "sha1-0c2v61YAvvbCjWFElkJWvRLgFnc=" - }, - "certpem": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/certpem/-/certpem-1.0.1.tgz", - "integrity": "sha1-+koljEBXllxGVwCCL7jYB9fy2fU=", - "requires": { - "asn1js": "^1.2.12", - "buffer-v6-polyfill": "^1.0.3", - "node.extend": "^1.1.5", - "pkijs": "^1.3.27" - } + "cert-info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cert-info/-/cert-info-1.5.0.tgz", + "integrity": "sha512-3fE0DDJJ7FWwMsUqLqBd+FY5LQACK24R1p129BTCYMEe00Nql2Q9Dkr6TEBlZ8XJnNaSbjzf3qBLjLrD8KLutw==" }, "core-util-is": { "version": "1.0.2", @@ -158,14 +140,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -191,6 +165,12 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "finalhandler": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", @@ -219,16 +199,6 @@ "readable-stream": "^2.0.0" } }, - "fs-symlink": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/fs-symlink/-/fs-symlink-1.2.1.tgz", - "integrity": "sha1-G+uoPqncqBI2AOPwuaUbGGQLvEA=", - "requires": { - "mkdirp": "^0.5.0", - "mkdirp-then": "1", - "mz": "^2.0.0" - } - }, "generate-function": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", @@ -252,28 +222,19 @@ } }, "greenlock": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/greenlock/-/greenlock-2.3.2.tgz", - "integrity": "sha512-8jxb7gnKPMqUMBxa7ET3qTIALzEh30Na6TccIzaly62THZfiQtdPhVe9y26oaOEx5JGUMhc83FFo2hboeJz+ow==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/greenlock/-/greenlock-2.6.7.tgz", + "integrity": "sha512-cN8PU0tbpTyd0JiNhP78n6ZUYWhQs9fh4cuLjusKt0TjX0limP/u26wYGNK1cbgb9NsOeiox/wRhpGPh6EBocg==", "requires": { - "acme": "^1.0.6", - "acme-v2": "^1.0.6", - "asn1js": "^1.2.12", - "bluebird": "^3.5.1", - "certpem": "^1.0.0", + "acme": "^1.2.0", + "acme-v2": "^1.5.0", + "cert-info": "^1.5.0", "le-challenge-fs": "^2.0.2", "le-sni-auto": "^2.1.3", - "le-store-certbot": "^2.1.0", - "node.extend": "^1.1.5", - "pkijs": "^1.3.27", - "rsa-compat": "^1.4.0" + "le-store-certbot": "^2.1.7", + "rsa-compat": "^1.9.2" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -298,11 +259,6 @@ "from2": "^2.1.1" } }, - "is": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", - "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=" - }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -313,22 +269,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "isemail": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", - "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" - }, - "joi": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", - "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", - "requires": { - "hoek": "2.x.x", - "isemail": "1.x.x", - "moment": "2.x.x", - "topo": "1.x.x" - } - }, "js-yaml": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", @@ -343,37 +283,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsonwebtoken": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", - "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", - "requires": { - "joi": "^6.10.1", - "jws": "^3.1.4", - "lodash.once": "^4.0.0", - "ms": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, "keypairs": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/keypairs/-/keypairs-1.0.1.tgz", @@ -399,30 +308,23 @@ } }, "le-sni-auto": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/le-sni-auto/-/le-sni-auto-2.1.5.tgz", - "integrity": "sha512-AUlFpYifutAAs0D0UwVVD5Jzf+X2J6+VNb03LCOFVAezQNpNcQFsWwrZzd+y24gF7jYHGBbD25q8gURQ5rhL8w==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/le-sni-auto/-/le-sni-auto-2.1.6.tgz", + "integrity": "sha512-LcfkF2yQ1nrep+ZfyG+SfR3pHphKFD3zMZ9FKervGfTfvgScCv/XGbX+vxsGZEKZjvzxKbFZ/5LdSCXuLXUU6A==", "requires": { "bluebird": "^3.5.1" } }, "le-store-certbot": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/le-store-certbot/-/le-store-certbot-2.1.3.tgz", - "integrity": "sha512-bUzbk4SfOKURUyLam4R7kI+7zGsO7/w/9mjeSDK+fAFLebjz/XND5VDzHotFEEbaOcu0UldD1/Dx3VShYnOFnw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/le-store-certbot/-/le-store-certbot-2.2.1.tgz", + "integrity": "sha512-BhljZjTULhbNBAT6RBiv4TeZegFraMxURYEvh3WRUI048zmXf4ZfC8gwbdu5fnD2tTCsS9fbsCOAQyrFBl4jlA==", "requires": { - "bluebird": "^3.5.1", - "fs-symlink": "^1.2.1", "mkdirp": "^0.5.1", - "pyconf": "^1.1.2", - "safe-replace": "^1.0.2" + "pyconf": "^1.1.5", + "safe-replace": "^1.0.3" } }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", @@ -454,34 +356,16 @@ "minimist": "0.0.8" } }, - "mkdirp-then": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mkdirp-then/-/mkdirp-then-1.2.0.tgz", - "integrity": "sha1-pJLIecpNhz9e5FAI+PVf0BUN48U=", - "requires": { - "any-promise": "^1.1.0", - "mkdirp": "^0.5.0" - } - }, - "moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "optional": true }, "ndjson": { "version": "1.5.0", @@ -516,13 +400,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, - "node.extend": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", - "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", - "requires": { - "is": "^3.1.0" - } + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "optional": true }, "object-assign": { "version": "4.1.1", @@ -560,11 +442,6 @@ "pinkie": "^2.0.0" } }, - "pkijs": { - "version": "1.3.33", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-1.3.33.tgz", - "integrity": "sha1-ponvYhE7fDSOH/wJll0iOeW7TJI=" - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -585,9 +462,9 @@ } }, "pyconf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.5.tgz", - "integrity": "sha512-zXEg0oUJ4mY6azqVvRy6rePTIHZGhDQG3z9PVkE60uUabS9uILiIkHobU2Jzcs3tBltMBqyEATZZezRR/UFjkg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.6.tgz", + "integrity": "sha512-4ujjwqch6nViWduSLc3/QFrDdJJAvAE7NRBarSGLANwh0tNW0MbXeJE8ZziJZvzRnUEN5scYwsS+ItYU1uj6dQ==", "requires": { "safe-replace": "^1.0.2" } @@ -630,18 +507,12 @@ } }, "rsa-compat": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.4.2.tgz", - "integrity": "sha512-Ic0WfTwdiZ8DlSRDe3frod/8XGCZufwnsH4ap+6Ldt+j9bCCxIyoJZwlCvAL2NDeEO7ax0p/H0FmypprDF6B6w==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.9.2.tgz", + "integrity": "sha512-XY4I/74W+QENMd99zVsyHQcxYxWTXd0EihVXsI4oeb1bz7DYxEKasQrjyzYPnR1tZT7fTPu5HP/vTKfs9lzdGA==", "requires": { - "node-forge": "^0.6.41" - }, - "dependencies": { - "node-forge": { - "version": "0.6.49", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.49.tgz", - "integrity": "sha1-8e6V1ddGI5OP4Z1piqWibVTS9g8=" - } + "node-forge": "^0.7.6", + "ursa-optional": "^0.9.10" } }, "safe-buffer": { @@ -650,9 +521,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-replace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz", - "integrity": "sha1-sYGrQJWs32qwqPhAUXSRyoqZIro=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.1.0.tgz", + "integrity": "sha512-9/V2E0CDsKs9DWOOwJH7jYpSl9S3N05uyevNjvsnDauBqRowBPOyot1fIvV5N2IuZAbYyvrTXrYFVG0RZInfFw==" }, "sclient": { "version": "1.4.1", @@ -795,22 +666,6 @@ } } }, - "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, "through2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", @@ -825,19 +680,21 @@ "resolved": "https://registry.npmjs.org/toml/-/toml-0.4.1.tgz", "integrity": "sha1-Iv5QHFe+WpV9o4JcHd5YS7LmL3M=" }, - "topo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", - "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", - "requires": { - "hoek": "2.x.x" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "ursa-optional": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/ursa-optional/-/ursa-optional-0.9.10.tgz", + "integrity": "sha512-RvEbhnxlggX4MXon7KQulTFiJQtLJZpSb9ZSa7ZTkOW0AzqiVTaLjI4vxaSzJBDH9dwZ3ltZadFiBaZslp6haA==", + "optional": true, + "requires": { + "bindings": "^1.3.0", + "nan": "^2.11.1" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index e8dcfaf..08692a6 100644 --- a/package.json +++ b/package.json @@ -55,9 +55,8 @@ "dependencies": { "@coolaj86/urequest": "^1.3.5", "finalhandler": "^1.1.1", - "greenlock": "^2.3.1", + "greenlock": "^2.6.7", "js-yaml": "^3.11.0", - "jsonwebtoken": "^7.1.9", "keypairs": "^1.0.1", "mkdirp": "^0.5.1", "proxy-packer": "^2.0.2",