From 111f31bb531440a5e3e9baa79a4af5f6359bbb10 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Mon, 7 Mar 2022 07:50:33 +1100 Subject: [PATCH] Remove node implementation --- .../{symmetric/index.ts => symmetric.ts} | 2 +- src/lib/waku_message/symmetric/browser.ts | 51 ------------------- src/lib/waku_message/symmetric/node.ts | 36 ------------- 3 files changed, 1 insertion(+), 88 deletions(-) rename src/lib/waku_message/{symmetric/index.ts => symmetric.ts} (94%) delete mode 100644 src/lib/waku_message/symmetric/browser.ts delete mode 100644 src/lib/waku_message/symmetric/node.ts diff --git a/src/lib/waku_message/symmetric/index.ts b/src/lib/waku_message/symmetric.ts similarity index 94% rename from src/lib/waku_message/symmetric/index.ts rename to src/lib/waku_message/symmetric.ts index d29e2cb9b9..b9cac71c56 100644 --- a/src/lib/waku_message/symmetric/index.ts +++ b/src/lib/waku_message/symmetric.ts @@ -1,4 +1,4 @@ -import { randomBytes, subtle } from "../../crypto"; +import { randomBytes, subtle } from "../crypto"; export const KeySize = 32; export const IvSize = 12; diff --git a/src/lib/waku_message/symmetric/browser.ts b/src/lib/waku_message/symmetric/browser.ts deleted file mode 100644 index 25e9b5f791..0000000000 --- a/src/lib/waku_message/symmetric/browser.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { IvSize } from "./index"; - -declare global { - interface Window { - msCrypto?: Crypto; - } - interface Crypto { - webkitSubtle?: SubtleCrypto; - } -} - -const crypto = window.crypto || window.msCrypto; -const subtle: SubtleCrypto = crypto.subtle || crypto.webkitSubtle; - -const Algorithm = { name: "AES-GCM", length: 128 }; - -if (subtle === undefined) { - throw new Error("Failed to load Subtle CryptoAPI"); -} - -export async function encrypt( - iv: Buffer | Uint8Array, - key: Buffer, - clearText: Buffer -): Promise { - return subtle - .importKey("raw", key, Algorithm, false, ["encrypt"]) - .then((cryptoKey) => - subtle.encrypt({ iv, ...Algorithm }, cryptoKey, clearText) - ) - .then(Buffer.from); -} - -export async function decrypt( - iv: Buffer, - key: Buffer, - cipherText: Buffer -): Promise { - return subtle - .importKey("raw", key, Algorithm, false, ["decrypt"]) - .then((cryptoKey) => - subtle.decrypt({ iv, ...Algorithm }, cryptoKey, cipherText) - ) - .then(Buffer.from); -} - -export function generateIv(): Uint8Array { - const iv = new Uint8Array(IvSize); - crypto.getRandomValues(iv); - return iv; -} diff --git a/src/lib/waku_message/symmetric/node.ts b/src/lib/waku_message/symmetric/node.ts deleted file mode 100644 index 42707db9a8..0000000000 --- a/src/lib/waku_message/symmetric/node.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { createCipheriv, createDecipheriv, randomBytes } from "crypto"; - -import { IvSize, TagSize } from "./index"; - -const Algorithm = "aes-256-gcm"; - -export async function encrypt( - iv: Buffer | Uint8Array, - key: Buffer, - clearText: Buffer -): Promise { - const cipher = createCipheriv(Algorithm, key, iv); - const a = cipher.update(clearText); - const b = cipher.final(); - const tag = cipher.getAuthTag(); - return Buffer.concat([a, b, tag]); -} - -export async function decrypt( - iv: Buffer, - key: Buffer, - data: Buffer -): Promise { - const tagStart = data.length - TagSize; - const cipherText = data.slice(0, tagStart); - const tag = data.slice(tagStart); - const decipher = createDecipheriv(Algorithm, key, iv); - decipher.setAuthTag(tag); - const a = decipher.update(cipherText); - const b = decipher.final(); - return Buffer.concat([a, b]); -} - -export function generateIv(): Buffer { - return randomBytes(IvSize); -}