From 8bb47a9d53756d45dfac028632bcbdf671b7243b Mon Sep 17 00:00:00 2001 From: Tanner Shaw Date: Fri, 1 Dec 2023 16:06:51 -0600 Subject: [PATCH 1/2] feat(encryption): fixing room encryption with deriving keys --- src/routes/chat/ChatRoom.svelte | 11 ++++++++--- src/routes/chat/Conversation.svelte | 14 ++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/routes/chat/ChatRoom.svelte b/src/routes/chat/ChatRoom.svelte index 4753af9..c909968 100644 --- a/src/routes/chat/ChatRoom.svelte +++ b/src/routes/chat/ChatRoom.svelte @@ -49,9 +49,12 @@ }; } - let unsubscribeStore = currentSelectedRoom.subscribe((currentValue) => { + let unsubscribeStore = currentSelectedRoom.subscribe(async (currentValue) => { + await Promise.resolve(); updateMessages($selectedServer, roomId); + getKey().then((k) => { + console.log(k); key = k; }); }); @@ -192,7 +195,8 @@ {#key $currentSelectedRoom.roomId} + {getKey} + {roomId} /> {/key} + {getKey} + {roomId} /> {/key} - import { currentRoomMessages } from '$lib/stores'; + import { currentRoomMessages, roomKeyStore, roomPassStore } from '$lib/stores'; import { getEpochFromTimestamp, getTimestampFromEpoch } from '$lib/utils/rateLimit'; import type { MessageI } from 'discreetly-interfaces'; import { onMount } from 'svelte'; import BubbleText from './BubbleText.svelte'; import { minidenticon } from 'minidenticons'; import { bubbleBgFromSessionId } from '$lib/utils/color'; - import { decrypt } from '$lib/crypto/crypto'; + import { decrypt, deriveKey } from '$lib/crypto/crypto'; export let roomRateLimit: number; export let getKey: () => Promise; + export let roomId: string; let key: CryptoKey; - let elemChat: HTMLElement; $: { @@ -26,15 +26,17 @@ async function decryptText(text: string): Promise { if (!key) { - return getKey().then(async (k) => { - key = k; + console.log('key does not exist') + key = await getKey(); const result = await decrypt(text, key); return result ? result : text; - }); } else if (key) { + console.log('key exists') + key = await deriveKey($roomPassStore[roomId].password, roomId); const result = await decrypt(text, key); return result ? result : text; } else { + console.log('key does not exist') return text; } } From b1a3c805bf6a7eecf5c0a27633930163cc3584c3 Mon Sep 17 00:00:00 2001 From: Tanner Shaw Date: Fri, 1 Dec 2023 16:16:17 -0600 Subject: [PATCH 2/2] removing clogs --- src/routes/chat/ChatRoom.svelte | 1 - src/routes/chat/Conversation.svelte | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/routes/chat/ChatRoom.svelte b/src/routes/chat/ChatRoom.svelte index c909968..0554f19 100644 --- a/src/routes/chat/ChatRoom.svelte +++ b/src/routes/chat/ChatRoom.svelte @@ -54,7 +54,6 @@ updateMessages($selectedServer, roomId); getKey().then((k) => { - console.log(k); key = k; }); }); diff --git a/src/routes/chat/Conversation.svelte b/src/routes/chat/Conversation.svelte index 75ec261..065385e 100644 --- a/src/routes/chat/Conversation.svelte +++ b/src/routes/chat/Conversation.svelte @@ -26,17 +26,14 @@ async function decryptText(text: string): Promise { if (!key) { - console.log('key does not exist') key = await getKey(); const result = await decrypt(text, key); return result ? result : text; } else if (key) { - console.log('key exists') key = await deriveKey($roomPassStore[roomId].password, roomId); const result = await decrypt(text, key); return result ? result : text; } else { - console.log('key does not exist') return text; } }