diff options
author | Marvin Borner | 2018-05-11 15:41:23 +0200 |
---|---|---|
committer | Marvin Borner | 2018-05-11 15:41:23 +0200 |
commit | 80b9827a0576ef36ff08f8b9c6e3ef647c965781 (patch) | |
tree | 0f4b8a806145949990dfe25bfcdb7e5aa644ee52 /main/app/sprinkles/core/assets | |
parent | a8d37fab30ccbced5ec8819510ee84893460bb5e (diff) |
More chat encryption...
Diffstat (limited to 'main/app/sprinkles/core/assets')
-rw-r--r-- | main/app/sprinkles/core/assets/SiteAssets/js/chat.js | 52 | ||||
-rw-r--r-- | main/app/sprinkles/core/assets/SiteAssets/js/main.js | 53 |
2 files changed, 72 insertions, 33 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js index 91afc16..ac3f3f7 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js @@ -1,6 +1,25 @@ /** * GENERAL CHAT */ +var ReceiversUsername = "marvinborner"; // 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]) + //} + } +}); + function InitializeChatServer() { var ChatTextInput = $("#ChatTextInput"); var SubscribeTextInput = $("#SubscribeTextInput"); @@ -187,18 +206,27 @@ function InitializeChatServer() { // SEND MESSAGE FROM INPUT FIELD ChatTextInput.keyup(function (e) { if (e.keyCode === 13 && ChatTextInput.val().length > 0) { - // USER USUALLY STOPS TYPING ON SENDING -> CHANGE STATE TO FALSE - sendTypingState(false); - isTyping = false; - clearTimeout(typingTimer); - - ChatSocket.send(JSON.stringify({ - ClientMessageType: "ChatMessage", - MessageType: "Private", - Message: ChatTextInput.val() - })); - ChatTextInput.val(""); - ChatTextInput.val(""); + options = { + data: ChatTextInput.val(), + publicKeys: openpgp.key.readArmored(PublicKey[ReceiversUsername]).keys, + privateKeys: [privKeyObj] // FOR SIGNING + }; + openpgp.encrypt(options).then(function (Encrypted) { + EncryptedText = Encrypted.data; + + // USER USUALLY STOPS TYPING ON SENDING -> CHANGE STATE TO FALSE + sendTypingState(false); + isTyping = false; + clearTimeout(typingTimer); + + ChatSocket.send(JSON.stringify({ + ClientMessageType: "ChatMessage", + MessageType: "Private", + Message: EncryptedText.substr(91).slice(0,-29) + })); + ChatTextInput.val(""); + ChatTextInput.val(""); + }); } }); }; diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/main.js b/main/app/sprinkles/core/assets/SiteAssets/js/main.js index 28c7b7c..08d5888 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js @@ -32,38 +32,49 @@ function triggerErrorPopup() { /** * ENCRYPTION */ -var openpgp = window.openpgp; -var hkp = new openpgp.HKP('https://pgp.mit.edu'); -var options, EncryptedText, DecryptedText, PublicKey, PrivateKey, PrivateKeyObj; +/*var openpgp = window.openpgp; +var options, EncryptedText, DecryptedText, PrivateKey, PassPhrase, PrivateKeyObj; +var PublicKey = []; openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'}); -function generateKeys(passphrase) { - options = { - userIds: [{user_id: current_user_id}], - curve: "curve25519", - passphrase: passphrase - }; - - openpgp.generateKey(options).then(function (key) { - PrivateKey = key.privateKeyArmored; - PublicKey = key.publicKeyArmored; - }); -} +$.ajax({ + type: 'GET', + url: site.uri.public + '/api/users/u/' + current_username + '/publickey', + dataType : "json", + success: function (response) { + if (response.user_id === current_user_id) { + PublicKey[current_username] = response.PublicKey; + PrivateKey = localStorage.getItem("PrivateKey"); + PassPhrase = localStorage.getItem("🔒") + } + } +}); -function EncryptMessage(Message, PublicKey) { +function EncryptMessage(Message, Username) { + if (!Username in PublicKey) { + $.ajax({ + type: 'GET', + url: site.uri.public + '/api/users/u/' + Username + '/publickey', + dataType : "json", + success: function (response) { + if (response.user_id === current_user_id) { + PublicKey[Username] = response.PublicKey; + } + } + }); + } options = { data: Message, - publicKeys: openpgp.key.readArmored(PublicKey).keys + publicKeys: openpgp.key.readArmored(PublicKey[Username]).keys }; - openpgp.encrypt(options).then(function (EncryptedText) { EncryptedText = EncryptedText.data; }); } -function DecryptMessage(EncryptedText, PrivateKey, passphrase) { +function DecryptMessage(EncryptedText) { PrivateKeyObj = openpgp.key.readArmored(PrivateKey).keys[0]; - PrivateKeyObj.decrypt(passphrase); + PrivateKeyObj.decrypt(PassPhrase); options = { message: openpgp.message.readArmored(EncryptedText), privateKeys: [PrivateKeyObj] @@ -72,7 +83,7 @@ function DecryptMessage(EncryptedText, PrivateKey, passphrase) { openpgp.decrypt(options).then(function (DecryptedText) { DecryptedText = DecryptedText.data; }); -} +}*/ /** * OLD BROWSER |