aboutsummaryrefslogtreecommitdiff
path: root/src/tools/rsa-key-pair-generator/rsa-key-pair-generator.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rsa-key-pair-generator/rsa-key-pair-generator.service.ts')
-rw-r--r--src/tools/rsa-key-pair-generator/rsa-key-pair-generator.service.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/tools/rsa-key-pair-generator/rsa-key-pair-generator.service.ts b/src/tools/rsa-key-pair-generator/rsa-key-pair-generator.service.ts
new file mode 100644
index 0000000..a41d5cd
--- /dev/null
+++ b/src/tools/rsa-key-pair-generator/rsa-key-pair-generator.service.ts
@@ -0,0 +1,25 @@
+import { pki } from 'node-forge';
+
+export { generateKeyPair };
+
+function generateRawPairs({ bits = 2048 }) {
+ return new Promise<pki.rsa.KeyPair>((resolve, reject) =>
+ pki.rsa.generateKeyPair({ bits }, (err, keyPair) => {
+ if (err) {
+ reject(err);
+ return;
+ }
+
+ resolve(keyPair);
+ }),
+ );
+}
+
+async function generateKeyPair(config: { bits?: number } = {}) {
+ const { privateKey, publicKey } = await generateRawPairs(config);
+
+ return {
+ publicKeyPem: pki.publicKeyToPem(publicKey),
+ privateKeyPem: pki.privateKeyToPem(privateKey),
+ };
+}