From 088fbc1cf5919a010753f60bd0fa201f7d64fc6a Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Wed, 22 Dec 2021 14:33:34 -0400 Subject: [PATCH] Expose getPublic and getPrivate from subprocess --- utils/ECC/ECC.js | 13 +++++++++++++ utils/ECC/ECC.spec.js | 25 ++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/utils/ECC/ECC.js b/utils/ECC/ECC.js index 5420e93b..e72db2e5 100644 --- a/utils/ECC/ECC.js +++ b/utils/ECC/ECC.js @@ -201,6 +201,17 @@ const decryptMessage = async ({ encryptedMessage, deviceId }) => { } } +/** + * @returns {Promise} + */ +const generatePrivate = () => invoke('generatePrivate', [], cryptoSubprocess) + +/** + * @param {Buffer} priv + * @returns {Promise} + */ +const getPublic = priv => invoke('getPublic', [priv], cryptoSubprocess) + module.exports = { isAuthorizedDevice, isEncryptedMessage, @@ -211,6 +222,8 @@ module.exports = { generateRandomString, nodeKeyPairs, devicePublicKeys, + generatePrivate, + getPublic, /** * Used for tests. */ diff --git a/utils/ECC/ECC.spec.js b/utils/ECC/ECC.spec.js index 60a7e013..5c4bff45 100644 --- a/utils/ECC/ECC.spec.js +++ b/utils/ECC/ECC.spec.js @@ -13,7 +13,9 @@ const { encryptMessage, generateKeyPair, isAuthorizedDevice, - killECCCryptoSubprocess + killECCCryptoSubprocess, + generatePrivate, + getPublic } = require('./ECC') const uuid = () => { @@ -120,5 +122,26 @@ describe('ECC', () => { }) }) + describe('generatePrivate()', () => { + it('generates a private key', async () => { + expect.hasAssertions() + + const priv = await generatePrivate() + + expect(priv).toBeInstanceOf(Buffer) + }) + }) + + describe('getPublic()', () => { + it('derives a public key from a private key', async () => { + expect.hasAssertions() + + const priv = await generatePrivate() + const pub = await getPublic(priv) + + expect(pub).toBeInstanceOf(Buffer) + }) + }) + after(killECCCryptoSubprocess) })