Expose getPublic and getPrivate from subprocess

This commit is contained in:
Daniel Lugo 2021-12-22 14:33:34 -04:00
parent 7207a97375
commit 088fbc1cf5
2 changed files with 37 additions and 1 deletions

View file

@ -201,6 +201,17 @@ const decryptMessage = async ({ encryptedMessage, deviceId }) => {
}
}
/**
* @returns {Promise<Buffer>}
*/
const generatePrivate = () => invoke('generatePrivate', [], cryptoSubprocess)
/**
* @param {Buffer} priv
* @returns {Promise<Buffer>}
*/
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.
*/

View file

@ -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)
})