From d1eabf3523afab5de99e8695ae9f07b32acb8088 Mon Sep 17 00:00:00 2001 From: Louis Capitanchik <contact@louiscap.co> Date: Tue, 19 Apr 2022 18:34:28 +0100 Subject: [PATCH] Add command for generating RSA keys --- src/console/GenerateRSAPair.js | 19 +++++++++++++++++++ src/core/utils/jwt.js | 6 ++++-- 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/console/GenerateRSAPair.js diff --git a/src/console/GenerateRSAPair.js b/src/console/GenerateRSAPair.js new file mode 100644 index 0000000..75b4aa5 --- /dev/null +++ b/src/console/GenerateRSAPair.js @@ -0,0 +1,19 @@ +module.exports = { + command: 'crypto:rsa:generate', + description: 'Generate an RSA key pair, encoded as Base64', + async handler(args) { + const { generateRsaKeys } = require('core/utils/jwt') + const { secureHexString, toBase64 } = require('core/utils/crypto') + + const key = await secureHexString(16) + const { pub, priv } = await generateRsaKeys(key) + + console.log({ + passphrase: key, + public_key: toBase64(pub), + private_key: toBase64(priv), + }) + + process.exit(0) + }, +} diff --git a/src/core/utils/jwt.js b/src/core/utils/jwt.js index fe2208a..6114e4d 100644 --- a/src/core/utils/jwt.js +++ b/src/core/utils/jwt.js @@ -1,5 +1,6 @@ const { generateKeyPair, createPublicKey, createPrivateKey } = require('crypto') -async function generateRsaKeys() { + +exports.generateRsaKeys = async (pass = null) => { const { config } = require('bootstrap') return new Promise((resolve, reject) => { generateKeyPair( @@ -14,7 +15,7 @@ async function generateRsaKeys() { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', - passphrase: config('app.key'), + passphrase: pass ?? config('app.key'), }, }, (err, pub, priv) => { @@ -27,6 +28,7 @@ async function generateRsaKeys() { ) }) } +const generateRsaKeys = exports.generateRsaKeys exports.getKeys = () => { const { config } = require('bootstrap') -- GitLab