Add secretKey module
This commit is contained in:
parent
5c9c4f00e8
commit
cb47fbf775
|
@ -9,5 +9,5 @@ npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
private.key
|
secret_key
|
||||||
/tokens
|
/tokens
|
||||||
|
|
|
@ -1,29 +1,8 @@
|
||||||
const fs = require("fs");
|
|
||||||
const path = require("path");
|
|
||||||
const crypto = require("crypto");
|
const crypto = require("crypto");
|
||||||
const jwt = require("jsonwebtoken");
|
const jwt = require("jsonwebtoken");
|
||||||
const invariant = require("invariant");
|
|
||||||
const forge = require("node-forge");
|
|
||||||
|
|
||||||
const db = require("./utils/redis");
|
const db = require("./utils/redis");
|
||||||
|
const secretKey = require("./secretKey");
|
||||||
let keys;
|
|
||||||
if (process.env.NODE_ENV === "production") {
|
|
||||||
keys = {
|
|
||||||
public: fs.readFileSync(path.resolve(__dirname, "../public.key"), "utf8"),
|
|
||||||
private: process.env.PRIVATE_KEY
|
|
||||||
};
|
|
||||||
|
|
||||||
invariant(keys.private, "Missing $PRIVATE_KEY environment variable");
|
|
||||||
} else {
|
|
||||||
// Generate a random keypair for dev/testing.
|
|
||||||
// See https://gist.github.com/sebadoom/2b70969e70db5da9a203bebd9cff099f
|
|
||||||
const keypair = forge.rsa.generateKeyPair({ bits: 2048 });
|
|
||||||
keys = {
|
|
||||||
public: forge.pki.publicKeyToPem(keypair.publicKey, 72),
|
|
||||||
private: forge.pki.privateKeyToPem(keypair.privateKey, 72)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function getCurrentSeconds() {
|
function getCurrentSeconds() {
|
||||||
return Math.floor(Date.now() / 1000);
|
return Math.floor(Date.now() / 1000);
|
||||||
|
@ -42,13 +21,18 @@ function createToken(scopes = {}) {
|
||||||
scopes
|
scopes
|
||||||
};
|
};
|
||||||
|
|
||||||
jwt.sign(payload, keys.private, { algorithm: "RS256" }, (error, token) => {
|
jwt.sign(
|
||||||
if (error) {
|
payload,
|
||||||
reject(error);
|
secretKey.private,
|
||||||
} else {
|
{ algorithm: "RS256" },
|
||||||
resolve(token);
|
(error, token) => {
|
||||||
|
if (error) {
|
||||||
|
reject(error);
|
||||||
|
} else {
|
||||||
|
resolve(token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +42,7 @@ function verifyToken(token) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const options = { algorithms: ["RS256"] };
|
const options = { algorithms: ["RS256"] };
|
||||||
|
|
||||||
jwt.verify(token, keys.public, options, (error, payload) => {
|
jwt.verify(token, secretKey.public, options, (error, payload) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
reject(error);
|
reject(error);
|
||||||
} else {
|
} else {
|
||||||
|
@ -107,7 +91,7 @@ function removeAllRevokedTokens() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPublicKey() {
|
function getPublicKey() {
|
||||||
return keys.public;
|
return secretKey.public;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
const forge = require("node-forge");
|
||||||
|
const invariant = require("invariant");
|
||||||
|
|
||||||
|
let secretKey;
|
||||||
|
if (process.env.NODE_ENV === "production") {
|
||||||
|
invariant(
|
||||||
|
process.env.PRIVATE_KEY,
|
||||||
|
"Missing $PRIVATE_KEY environment variable"
|
||||||
|
);
|
||||||
|
|
||||||
|
secretKey = {
|
||||||
|
public: fs.readFileSync(
|
||||||
|
path.resolve(__dirname, "../secret_key.pub"),
|
||||||
|
"utf8"
|
||||||
|
),
|
||||||
|
private: process.env.PRIVATE_KEY
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
// Generate a random keypair for dev/testing.
|
||||||
|
// See https://gist.github.com/sebadoom/2b70969e70db5da9a203bebd9cff099f
|
||||||
|
const keypair = forge.rsa.generateKeyPair({ bits: 2048 });
|
||||||
|
|
||||||
|
secretKey = {
|
||||||
|
public: forge.pki.publicKeyToPem(keypair.publicKey, 72),
|
||||||
|
private: forge.pki.privateKeyToPem(keypair.privateKey, 72)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = secretKey;
|
Loading…
Reference in New Issue