From 22c716e0e6746017c0e0063de0f702b7d66eba68 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Fri, 9 Jul 2021 10:37:47 +1000 Subject: [PATCH] Add API to generate keys --- src/lib/waku_message/index.spec.ts | 7 +++---- src/lib/waku_message/version_1.ts | 8 ++++++++ src/types/ecies-parity.d.ts | 3 --- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lib/waku_message/index.spec.ts b/src/lib/waku_message/index.spec.ts index bb02bb8cb5..5c34d61e43 100644 --- a/src/lib/waku_message/index.spec.ts +++ b/src/lib/waku_message/index.spec.ts @@ -13,7 +13,7 @@ import { delay } from '../delay'; import { hexToBuf } from '../utils'; import { Waku } from '../waku'; -import { getPublicKey } from './version_1'; +import { generatePrivateKey, getPublicKey } from './version_1'; import { DefaultContentTopic, WakuMessage } from './index'; @@ -129,9 +129,7 @@ describe('Interop: Nim', function () { payload: Buffer.from(messageText, 'utf-8').toString('hex'), }; - const keyPair = await nimWaku.getAsymmetricKeyPair(); - const privateKey = hexToBuf(keyPair.privateKey); - const publicKey = hexToBuf(keyPair.publicKey); + const privateKey = generatePrivateKey(); waku.relay.addDecryptionPrivateKey(privateKey); @@ -139,6 +137,7 @@ describe('Interop: Nim', function () { waku.relay.addObserver(resolve); }); + const publicKey = getPublicKey(privateKey); dbg('Post message'); await nimWaku.postAsymmetricMessage(message, publicKey); diff --git a/src/lib/waku_message/version_1.ts b/src/lib/waku_message/version_1.ts index f52bdeccab..8016547d74 100644 --- a/src/lib/waku_message/version_1.ts +++ b/src/lib/waku_message/version_1.ts @@ -1,5 +1,6 @@ import { Buffer } from 'buffer'; import { randomBytes } from 'crypto'; +import * as crypto from 'crypto'; import ecies from 'ecies-parity'; import { keccak256 } from 'js-sha3'; @@ -122,6 +123,13 @@ export async function decryptAsymmetric( return ecies.decrypt(Buffer.from(privKey), Buffer.from(payload)); } +/** + * Generate a new private key + */ +export function generatePrivateKey(): Uint8Array { + return crypto.randomBytes(32); +} + /** * Return the public key for the given private key */ diff --git a/src/types/ecies-parity.d.ts b/src/types/ecies-parity.d.ts index 13ac78b35e..9888231f64 100644 --- a/src/types/ecies-parity.d.ts +++ b/src/types/ecies-parity.d.ts @@ -1,9 +1,6 @@ // TypeScript Version: 2.1 /// declare module 'ecies-parity' { - // Generate a new valid private key. Will use crypto.randomBytes as source. - export function generatePrivate(): Buffer; - // Compute the public key for a given private key. export function getPublic(privateKey: Buffer): Buffer;