add object encryption
This commit is contained in:
Vendored
+29
-17
@@ -511,8 +511,14 @@
|
|||||||
const { sender, body, channel, isoDate, messageObject } = JSON.parse(
|
const { sender, body, channel, isoDate, messageObject } = JSON.parse(
|
||||||
data.messageBody
|
data.messageBody
|
||||||
);
|
);
|
||||||
if (messageObject && messageObject.id && messageObject.title) {
|
if (messageObject) {
|
||||||
return this.handleMessageObject(messageObject);
|
const decrypted = await decryptString(
|
||||||
|
messageObject,
|
||||||
|
this.encryptionKey.value
|
||||||
|
);
|
||||||
|
console.log(decrypted);
|
||||||
|
const object = JSON.parse(decrypted);
|
||||||
|
if (object.id && object.title) return this.handleMessageObject(object);
|
||||||
}
|
}
|
||||||
this.handleMessage({
|
this.handleMessage({
|
||||||
sender,
|
sender,
|
||||||
@@ -534,6 +540,18 @@
|
|||||||
handleMessageObject = (messageObject) => {
|
handleMessageObject = (messageObject) => {
|
||||||
this.objects.set(messageObject.id, messageObject);
|
this.objects.set(messageObject.id, messageObject);
|
||||||
};
|
};
|
||||||
|
// sending
|
||||||
|
sendMessagesInOutbox = () => {
|
||||||
|
this.outbox.value.forEach(async (message) => {
|
||||||
|
const isSent = await this.sendMessage(message);
|
||||||
|
if (isSent == true) this.outbox.remove(message);
|
||||||
|
});
|
||||||
|
this.objectOutbox.value.forEach(async (object) => {
|
||||||
|
const chatMessage = await this.createChatMessage("", object);
|
||||||
|
const isSent = await this.sendMessage(chatMessage);
|
||||||
|
if (isSent == true) this.objectOutbox.remove(object.id);
|
||||||
|
});
|
||||||
|
};
|
||||||
// messages
|
// messages
|
||||||
createChatMessage = async (messageText, messageObject) => {
|
createChatMessage = async (messageText, messageObject) => {
|
||||||
const secondaryChannelNames = [
|
const secondaryChannelNames = [
|
||||||
@@ -550,7 +568,11 @@
|
|||||||
body: messageText,
|
body: messageText,
|
||||||
isoDate: (/* @__PURE__ */ new Date()).toISOString()
|
isoDate: (/* @__PURE__ */ new Date()).toISOString()
|
||||||
};
|
};
|
||||||
if (messageObject) chatMessage.messageObject = messageObject;
|
if (messageObject)
|
||||||
|
chatMessage.messageObject = await encryptString(
|
||||||
|
JSON.stringify(messageObject),
|
||||||
|
this.encryptionKey.value
|
||||||
|
);
|
||||||
return chatMessage;
|
return chatMessage;
|
||||||
};
|
};
|
||||||
sendMessageFromComposer = async () => {
|
sendMessageFromComposer = async () => {
|
||||||
@@ -567,15 +589,6 @@
|
|||||||
if (this.cannotResendMessage.value == true) return;
|
if (this.cannotResendMessage.value == true) return;
|
||||||
this.sendMessageFromText(chatMessage.body);
|
this.sendMessageFromText(chatMessage.body);
|
||||||
};
|
};
|
||||||
sendMessagesInOutbox = () => {
|
|
||||||
this.outbox.value.forEach((message) => {
|
|
||||||
this.sendMessage(message);
|
|
||||||
});
|
|
||||||
this.objectOutbox.value.forEach(async (object) => {
|
|
||||||
const chatMessage = await this.createChatMessage("", object);
|
|
||||||
this.sendMessage(chatMessage);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
clearMessages = () => {
|
clearMessages = () => {
|
||||||
this.messages.clear();
|
this.messages.clear();
|
||||||
};
|
};
|
||||||
@@ -593,14 +606,13 @@
|
|||||||
this.messages.callSubscriptions();
|
this.messages.callSubscriptions();
|
||||||
};
|
};
|
||||||
sendMessage = async (chatMessage) => {
|
sendMessage = async (chatMessage) => {
|
||||||
if (isConnected.value == false || this.isSubscribed.value == false) return;
|
if (isConnected.value == false || this.isSubscribed.value == false)
|
||||||
|
return false;
|
||||||
const encryptedBody = this.encryptionKey.value == "" ? chatMessage.body : await encryptString(chatMessage.body, this.encryptionKey.value);
|
const encryptedBody = this.encryptionKey.value == "" ? chatMessage.body : await encryptString(chatMessage.body, this.encryptionKey.value);
|
||||||
chatMessage.body = encryptedBody;
|
chatMessage.body = encryptedBody;
|
||||||
const messageString = JSON.stringify(chatMessage);
|
const messageString = JSON.stringify(chatMessage);
|
||||||
UDN.sendMessage(chatMessage.channel, messageString);
|
UDN.sendMessage(chatMessage.channel, messageString);
|
||||||
this.outbox.remove(chatMessage);
|
return true;
|
||||||
if (chatMessage.messageObject)
|
|
||||||
this.objectOutbox.remove(chatMessage.messageObject.id);
|
|
||||||
};
|
};
|
||||||
// objects
|
// objects
|
||||||
addObjectAndSend = (object) => {
|
addObjectAndSend = (object) => {
|
||||||
@@ -1139,7 +1151,7 @@
|
|||||||
"toggle:disabled": chat.cannotClearObjects
|
"toggle:disabled": chat.cannotClearObjects
|
||||||
},
|
},
|
||||||
translation.clearObjects,
|
translation.clearObjects,
|
||||||
/* @__PURE__ */ createElement("span", { class: "icon" }, "delete_sweep")
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "deployed_code")
|
||||||
), /* @__PURE__ */ createElement(
|
), /* @__PURE__ */ createElement(
|
||||||
"button",
|
"button",
|
||||||
{
|
{
|
||||||
|
|||||||
+31
-19
@@ -22,7 +22,7 @@ export interface ChatMessage {
|
|||||||
body: string;
|
body: string;
|
||||||
isoDate: string;
|
isoDate: string;
|
||||||
|
|
||||||
messageObject?: MessageObject;
|
messageObject?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// object
|
// object
|
||||||
@@ -154,8 +154,13 @@ export class Chat {
|
|||||||
data.messageBody
|
data.messageBody
|
||||||
);
|
);
|
||||||
|
|
||||||
if (messageObject && messageObject.id && messageObject.title) {
|
if (messageObject) {
|
||||||
return this.handleMessageObject(messageObject);
|
const decrypted = await decryptString(
|
||||||
|
messageObject,
|
||||||
|
this.encryptionKey.value
|
||||||
|
);
|
||||||
|
const object = JSON.parse(decrypted);
|
||||||
|
if (object.id && object.title) return this.handleMessageObject(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.handleMessage({
|
this.handleMessage({
|
||||||
@@ -183,6 +188,20 @@ export class Chat {
|
|||||||
this.objects.set(messageObject.id, messageObject);
|
this.objects.set(messageObject.id, messageObject);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// sending
|
||||||
|
|
||||||
|
sendMessagesInOutbox = () => {
|
||||||
|
this.outbox.value.forEach(async (message) => {
|
||||||
|
const isSent = await this.sendMessage(message);
|
||||||
|
if (isSent == true) this.outbox.remove(message);
|
||||||
|
});
|
||||||
|
this.objectOutbox.value.forEach(async (object) => {
|
||||||
|
const chatMessage = await this.createChatMessage("", object);
|
||||||
|
const isSent = await this.sendMessage(chatMessage);
|
||||||
|
if (isSent == true) this.objectOutbox.remove(object.id);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// messages
|
// messages
|
||||||
createChatMessage = async (
|
createChatMessage = async (
|
||||||
messageText: string,
|
messageText: string,
|
||||||
@@ -206,7 +225,11 @@ export class Chat {
|
|||||||
isoDate: new Date().toISOString(),
|
isoDate: new Date().toISOString(),
|
||||||
};
|
};
|
||||||
|
|
||||||
if (messageObject) chatMessage.messageObject = messageObject;
|
if (messageObject)
|
||||||
|
chatMessage.messageObject = await encryptString(
|
||||||
|
JSON.stringify(messageObject),
|
||||||
|
this.encryptionKey.value
|
||||||
|
);
|
||||||
return chatMessage;
|
return chatMessage;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -228,16 +251,6 @@ export class Chat {
|
|||||||
this.sendMessageFromText(chatMessage.body);
|
this.sendMessageFromText(chatMessage.body);
|
||||||
};
|
};
|
||||||
|
|
||||||
sendMessagesInOutbox = () => {
|
|
||||||
this.outbox.value.forEach((message) => {
|
|
||||||
this.sendMessage(message);
|
|
||||||
});
|
|
||||||
this.objectOutbox.value.forEach(async (object) => {
|
|
||||||
const chatMessage = await this.createChatMessage("", object);
|
|
||||||
this.sendMessage(chatMessage);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
clearMessages = (): void => {
|
clearMessages = (): void => {
|
||||||
this.messages.clear();
|
this.messages.clear();
|
||||||
};
|
};
|
||||||
@@ -258,8 +271,9 @@ export class Chat {
|
|||||||
this.messages.callSubscriptions();
|
this.messages.callSubscriptions();
|
||||||
};
|
};
|
||||||
|
|
||||||
sendMessage = async (chatMessage: ChatMessage): Promise<void> => {
|
sendMessage = async (chatMessage: ChatMessage): Promise<boolean> => {
|
||||||
if (isConnected.value == false || this.isSubscribed.value == false) return;
|
if (isConnected.value == false || this.isSubscribed.value == false)
|
||||||
|
return false;
|
||||||
|
|
||||||
const encryptedBody =
|
const encryptedBody =
|
||||||
this.encryptionKey.value == ""
|
this.encryptionKey.value == ""
|
||||||
@@ -271,9 +285,7 @@ export class Chat {
|
|||||||
const messageString = JSON.stringify(chatMessage);
|
const messageString = JSON.stringify(chatMessage);
|
||||||
UDN.sendMessage(chatMessage.channel, messageString);
|
UDN.sendMessage(chatMessage.channel, messageString);
|
||||||
|
|
||||||
this.outbox.remove(chatMessage);
|
return true;
|
||||||
if (chatMessage.messageObject)
|
|
||||||
this.objectOutbox.remove(chatMessage.messageObject.id);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// objects
|
// objects
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ export function ChatOptionModal(chat: Chat, isPresented: React.State<boolean>) {
|
|||||||
toggle:disabled={chat.cannotClearObjects}
|
toggle:disabled={chat.cannotClearObjects}
|
||||||
>
|
>
|
||||||
{translation.clearObjects}
|
{translation.clearObjects}
|
||||||
<span class="icon">delete_sweep</span>
|
<span class="icon">deployed_code</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
|||||||
Reference in New Issue
Block a user