diff options
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.ts | 25 |
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), + }; +} |