From 45276f8fd0d188e77bcb4232740597eb95486d00 Mon Sep 17 00:00:00 2001 From: PhilReact Date: Tue, 5 Sep 2023 23:04:35 -0500 Subject: [PATCH] fix public key in webworker --- plugins/plugins/core/components/ChatPage.js | 51 ++++++++++++------- .../components/webworkerDecodeMessages.js | 37 ++++++++++++-- 2 files changed, 64 insertions(+), 24 deletions(-) diff --git a/plugins/plugins/core/components/ChatPage.js b/plugins/plugins/core/components/ChatPage.js index 50313737..f831a60e 100644 --- a/plugins/plugins/core/components/ChatPage.js +++ b/plugins/plugins/core/components/ChatPage.js @@ -2682,7 +2682,7 @@ class ChatPage extends LitElement { let decodeMsgs = [] - try { + await new Promise((res, rej) => { console.log('this.webWorkerDecodeMessages2.', this.webWorkerDecodeMessages) this.webWorkerDecodeMessages.postMessage({messages: getInitialMessages, isReceipient: this.isReceipient, _publicKey: this._publicKey, privateKey: window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey }); @@ -2699,10 +2699,7 @@ class ChatPage extends LitElement { } }) - } catch (error) { - console.log({error}) - } - + console.log({decodeMsgs}) queue.push(() => replaceMessagesEdited({ decodedMessages: decodeMsgs, @@ -2713,10 +2710,7 @@ class ChatPage extends LitElement { addToUpdateMessageHashmap: this.addToUpdateMessageHashmap })); let list = [...decodeMsgs, ...this.messagesRendered.slice(0,80)] - // this.messagesRendered = [...decodeMsgs, ...this.messagesRendered.slice(0,80)].sort(function (a, b) { - // return a.timestamp - // - b.timestamp - // }) + await new Promise((res, rej) => { this.webWorkerSortMessages.postMessage({list}); @@ -2911,18 +2905,37 @@ viewElement.scrollTop = originalScrollTop + heightDifference; async processMessages(messages, isInitial) { const isReceipient = this.chatId.includes('direct') - const decodedMessages = messages.map((eachMessage) => { + // const decodedMessages = messages.map((eachMessage) => { - if (eachMessage.isText === true) { - this.messageSignature = eachMessage.signature - let _eachMessage = this.decodeMessage(eachMessage) - return _eachMessage - } else { - this.messageSignature = eachMessage.signature - let _eachMessage = this.decodeMessage(eachMessage) - return _eachMessage + // if (eachMessage.isText === true) { + // this.messageSignature = eachMessage.signature + // let _eachMessage = this.decodeMessage(eachMessage) + // return _eachMessage + // } else { + // this.messageSignature = eachMessage.signature + // let _eachMessage = this.decodeMessage(eachMessage) + // return _eachMessage + // } + // }) + + let decodedMessages = [] + console.log({messages: messages, isReceipient: this.isReceipient, _publicKey: this._publicKey, privateKey: window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey}) + + await new Promise((res, rej) => { + this.webWorkerDecodeMessages.postMessage({messages: messages, isReceipient: this.isReceipient, _publicKey: this._publicKey, privateKey: window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey }); + + this.webWorkerDecodeMessages.onmessage = e => { + decodedMessages = e.data + res() + } - }) + this.webWorkerDecodeMessages.onerror = e => { + console.log('e',e) + rej() + + } + }) + console.log('process', decodedMessages) if (isInitial) { this.chatEditorPlaceholder = await this.renderPlaceholder() diff --git a/plugins/plugins/core/components/webworkerDecodeMessages.js b/plugins/plugins/core/components/webworkerDecodeMessages.js index 36883f9f..794be632 100644 --- a/plugins/plugins/core/components/webworkerDecodeMessages.js +++ b/plugins/plugins/core/components/webworkerDecodeMessages.js @@ -2465,6 +2465,7 @@ class Base58 { } decode(string) { + console.log({string}) if (string.length === 0) { return new Uint8Array(0); } @@ -2644,6 +2645,16 @@ class Curve25519 { this.pack25519(d, b); return this.crypto_verify_32(c, 0, d, 0); } + par25519(a) { + var d = new Uint8Array(32); + this.pack25519(d, a); + return d[0] & 1; + } + unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; + } crypto_verify_32(x, xi, y, yi) { return this.vn(x, xi, y, yi, 32); @@ -2757,6 +2768,12 @@ export const decryptChatMessageBase64 = ( recipientPublicKey, lastReference ) => { + console.log('1', { + encryptedMessage, + privateKey, + recipientPublicKey, + lastReference + }) let _encryptedMessage = atob(encryptedMessage); const binaryLength = _encryptedMessage.length; const bytes = new Uint8Array(binaryLength); @@ -2765,12 +2782,21 @@ export const decryptChatMessageBase64 = ( bytes[i] = _encryptedMessage.charCodeAt(i); } - const _base58RecipientPublicKey = - recipientPublicKey instanceof Uint8Array - ? base58Instant.encode(recipientPublicKey) - : recipientPublicKey; - const _recipientPublicKey = base58Instant.decode(_base58RecipientPublicKey); + let _base58RecipientPublic = recipientPublicKey + try { + _base58RecipientPublic = recipientPublicKey.key + } catch (error) { + _base58RecipientPublic = recipientPublicKey + } + + const _base58RecipientPublicKey = + _base58RecipientPublic instanceof Uint8Array + ? base58Instant.encode(_base58RecipientPublic) + : _base58RecipientPublic; + console.log({_base58RecipientPublicKey}) + const _recipientPublicKey = base58Instant.decode(_base58RecipientPublicKey); + console.log({_recipientPublicKey}) const _lastReference = lastReference instanceof Uint8Array ? lastReference @@ -2825,6 +2851,7 @@ const decodeMessage = ( _publicKeyVar.hasPubKey === true && encodedMessageObj.data ) { + console.log('hello encrypt') let decodedMessage = decryptChatMessageBase64( encodedMessageObj.data, privateKey,