From 5661c7d1ecc5b5d1aaf6db5ed1c33cd03f503088 Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Tue, 29 Jun 2021 12:46:42 +1000 Subject: [PATCH] Do not attempt to decrypt other's messages --- examples/eth-dm/src/App.tsx | 9 +++++++++ examples/eth-dm/src/InitWaku.tsx | 17 ++++++++++++++--- examples/eth-dm/src/crypto.ts | 1 - 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/examples/eth-dm/src/App.tsx b/examples/eth-dm/src/App.tsx index 4bd9496a9d..b1580a2859 100644 --- a/examples/eth-dm/src/App.tsx +++ b/examples/eth-dm/src/App.tsx @@ -26,6 +26,7 @@ function App() { const [publicKeyMsg, setPublicKeyMsg] = useState(); const [publicKeys, setPublicKeys] = useState>(new Map()); const [messages, setMessages] = useState([]); + const [address, setAddress] = useState(); useEffect(() => { if (provider) return; @@ -38,6 +39,13 @@ function App() { } }, [provider]); + useEffect(() => { + provider + ?.getSigner() + .getAddress() + .then((address) => setAddress(address)); + }); + const broadcastPublicKey = () => { if (!ethDmKeyPair) return; if (!provider) return; @@ -72,6 +80,7 @@ function App() { setPublicKeys={setPublicKeys} setWaku={setWaku} waku={waku} + address={address} /> >>; setMessages: Dispatch>; + address: string | undefined; } /** @@ -22,6 +23,7 @@ export default function InitWaku({ ethDmKeyPair, setPublicKeys, setMessages, + address, }: Props) { useEffect(() => { if (waku) return; @@ -41,9 +43,15 @@ export default function InitWaku({ setPublicKeys ); - const observerDirectMessage = ethDmKeyPair - ? handleDirectMessage.bind({}, setMessages, ethDmKeyPair.privateKey) - : undefined; + const observerDirectMessage = + ethDmKeyPair && address + ? handleDirectMessage.bind( + {}, + setMessages, + ethDmKeyPair.privateKey, + address + ) + : undefined; useEffect(() => { if (!waku) return; @@ -116,11 +124,14 @@ function handlePublicKeyMessage( async function handleDirectMessage( setter: Dispatch>, privateKey: string, + address: string, wakuMsg: WakuMessage ) { console.log('Waku Message received:', wakuMsg); if (!wakuMsg.payload) return; const directMessage: DirectMessage = decode(wakuMsg.payload); + if (directMessage.toAddress !== address) return; + const text = await decryptMessage(privateKey, directMessage); const timestamp = wakuMsg.timestamp ? wakuMsg.timestamp : new Date(); diff --git a/examples/eth-dm/src/crypto.ts b/examples/eth-dm/src/crypto.ts index 94535643a4..f0db5d213e 100644 --- a/examples/eth-dm/src/crypto.ts +++ b/examples/eth-dm/src/crypto.ts @@ -8,7 +8,6 @@ import { DirectMessage, PublicKeyMessage } from './messages'; export interface KeyPair { privateKey: string; publicKey: string; - address: string; } /**