diff options
author | Marvin Borner | 2018-05-11 23:39:01 +0200 |
---|---|---|
committer | Marvin Borner | 2018-05-11 23:39:01 +0200 |
commit | 933f652b65b42cc143bec27fb4cb137f645b7d6c (patch) | |
tree | dcd98ffee4a6ffc3cd8c7181f3c254efdf1ec75a /main/app/sprinkles/core/assets | |
parent | 80b9827a0576ef36ff08f8b9c6e3ef647c965781 (diff) |
Message encryption integration - decryption needs work
Diffstat (limited to 'main/app/sprinkles/core/assets')
-rw-r--r-- | main/app/sprinkles/core/assets/SiteAssets/js/chat.js | 56 | ||||
-rw-r--r-- | main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php | 6 |
2 files changed, 43 insertions, 19 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js index ac3f3f7..54f8262 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js @@ -1,25 +1,15 @@ /** - * GENERAL CHAT + * ENCRYPTION */ -var ReceiversUsername = "marvinborner"; // HARD +var ReceiversUsername = ""; // HARD var openpgp = window.openpgp; var options, EncryptedText; var PublicKey = []; openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'}); -var privKeyObj = openpgp.key.readArmored(localStorage.getItem("PrivateKey")).keys[0]; -privKeyObj.decrypt(localStorage.getItem("🔒")); -$.ajax({ - type: 'GET', - url: site.uri.public + '/api/users/u/' + ReceiversUsername + '/publickey', - dataType: "json", - success: function (response) { - //if (response.user_id === ReceiversUsername->id) { - PublicKey[ReceiversUsername] = response.PublicKey; - console.log(PublicKey[ReceiversUsername]) - //} - } -}); +/** + * GENERAL CHAT + */ function InitializeChatServer() { var ChatTextInput = $("#ChatTextInput"); var SubscribeTextInput = $("#SubscribeTextInput"); @@ -49,7 +39,7 @@ function InitializeChatServer() { var TypingIndicatorMessage = $(".TypingIndicatorMessage").parent(); var LastMessage = $(".MessageWrapper.Normal:last .ChatMessage"); var MessageObject = JSON.parse(e.data); - var Message = MessageObject.Message; + var Message = MessageObject.Message; // ENCRYPTED MESSAGE (NOT ENCRYPTED ON SERVER MESSAGES) var Username = MessageObject.Username; var Fullname = MessageObject.Fullname; var Avatar = MessageObject.Avatar; @@ -59,8 +49,35 @@ function InitializeChatServer() { var WasHimself = MessageObject.WasHimself; var ServerMessageType = MessageObject.ServerMessageType; var Granted = MessageObject.Granted; + ReceiversUsername = MessageObject.Receiver; + + // GET PUBLIC KEY IF NOT ALREADY DID + if (!(ReceiversUsername in PublicKey) && ReceiversUsername !== null) { + $.ajax({ + type: 'GET', + url: site.uri.public + '/api/users/u/' + ReceiversUsername + '/publickey', + dataType: "json", + success: function (response) { + PublicKey[ReceiversUsername] = response.PublicKey; + console.log(PublicKey[ReceiversUsername]) + } + }); + } if (ServerMessage === false) { // NO SERVER MESSAGE -> SENT BY USER + + // DECRYPT MESSAGE + var privKeyObj = openpgp.key.readArmored(localStorage.getItem("PrivateKey")).keys[0]; + privKeyObj.decrypt(localStorage.getItem("🔒")); + options = { + message: openpgp.message.readArmored("-----BEGIN PGP MESSAGE-----\r\nVersion: OpenPGP.js v3.0.9\r\nComment: https://openpgpjs.org\r\n\n" + Message + "\r\n-----END PGP MESSAGE-----\r\n"), + //publicKeys: openpgp.key.readArmored(PublicKey[Username]).keys, // FOR VERIFICATION + privateKeys: [privKeyObj] + }; + openpgp.decrypt(options).then(function(plaintext) { + Message = plaintext.data; + }); + if (WasHimself === true) { // -> MESSAGE WAS FROM HIMSELF console.log("%c[CHATSOCKET LOGGER] You sent a message!", "color: darkorange"); if (!LastMessage.hasClass("MessageSent")) { // CHECK IF PREVIOUS MESSAGE WAS FROM HIMSELF TOO -> IF NOT, CREATE NEW 'ALONE' MESSAGE @@ -208,11 +225,12 @@ function InitializeChatServer() { if (e.keyCode === 13 && ChatTextInput.val().length > 0) { options = { data: ChatTextInput.val(), - publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys, - privateKeys: [privKeyObj] // FOR SIGNING + publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys + //privateKeys: [privKeyObj] // FOR SIGNING }; openpgp.encrypt(options).then(function (Encrypted) { EncryptedText = Encrypted.data; + console.log(EncryptedText); // USER USUALLY STOPS TYPING ON SENDING -> CHANGE STATE TO FALSE sendTypingState(false); @@ -222,7 +240,7 @@ function InitializeChatServer() { ChatSocket.send(JSON.stringify({ ClientMessageType: "ChatMessage", MessageType: "Private", - Message: EncryptedText.substr(91).slice(0,-29) + Message: EncryptedText.substr(91).slice(0,-29) // SLICING FOR DATABASE SAVING (LESS DATA) })); ChatTextInput.val(""); ChatTextInput.val(""); diff --git a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php index e4f7f30..1553468 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php +++ b/main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php @@ -51,6 +51,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "Verify"; $MessageObject->Granted = TRUE; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $this->verifiedUsers[$conn->resourceId] = TRUE; $this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE)); } else { @@ -58,6 +59,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "Verify"; $MessageObject->Granted = FALSE; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $this->verifiedUsers[$conn->resourceId] = FALSE; $this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE)); $this->onClose($conn); @@ -67,6 +69,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "Verify"; $MessageObject->Granted = FALSE; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $this->verifiedUsers[$conn->resourceId] = FALSE; $this->users[$conn->resourceId]->send(json_encode($MessageObject, TRUE)); $this->onClose($conn); @@ -84,6 +87,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "GroupJoin"; $MessageObject->GroupName = $channel; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name; $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name; $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar; @@ -105,6 +109,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject = new \stdClass(); $MessageObject->ServerMessage = FALSE; $MessageObject->GroupName = $channel; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$target]]->user_name; $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name; $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name; $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar; @@ -136,6 +141,7 @@ class ChatProcessor implements MessageComponentInterface $MessageObject->ServerMessage = TRUE; $MessageObject->ServerMessageType = "TypingState"; $MessageObject->GroupName = $channel; + $MessageObject->Receiver = $this->userInfo[array_flip($this->channels)[$this->channels[$conn->resourceId]]]->user_name; $MessageObject->Username = $this->userInfo[$conn->resourceId]->user_name; $MessageObject->Fullname = $this->userInfo[$conn->resourceId]->first_name . " " . $this->userInfo[$conn->resourceId]->last_name; $MessageObject->Avatar = $this->userInfo[$conn->resourceId]->avatar; |