aboutsummaryrefslogtreecommitdiffhomepage
path: root/main
diff options
context:
space:
mode:
authorMarvin Borner2018-05-11 23:39:01 +0200
committerMarvin Borner2018-05-11 23:39:01 +0200
commit933f652b65b42cc143bec27fb4cb137f645b7d6c (patch)
treedcd98ffee4a6ffc3cd8c7181f3c254efdf1ec75a /main
parent80b9827a0576ef36ff08f8b9c6e3ef647c965781 (diff)
Message encryption integration - decryption needs work
Diffstat (limited to 'main')
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/chat.js56
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/php/Chatserver/src/ChatProcessor.php6
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;