diff options
Diffstat (limited to 'main/app/sprinkles/core')
5 files changed, 87 insertions, 63 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 diff --git a/main/app/sprinkles/core/config/default.php b/main/app/sprinkles/core/config/default.php index 07fd2e6..60e3345 100644 --- a/main/app/sprinkles/core/config/default.php +++ b/main/app/sprinkles/core/config/default.php @@ -175,7 +175,7 @@ 'php' => [ 'timezone' => 'Europe/Berlin', 'error_reporting' => E_ALL, // Development - report all errors and suggestions - 'display_errors' => 'false', + 'display_errors' => 'true', 'log_errors' => 'true', // Let PHP itself render errors natively. Useful if a fatal error is raised in our custom shutdown handler. 'display_errors_native' => 'true' diff --git a/main/app/sprinkles/core/templates/pages/abstract/mainsite.html.twig b/main/app/sprinkles/core/templates/pages/abstract/mainsite.html.twig index 1821510..c27c071 100644 --- a/main/app/sprinkles/core/templates/pages/abstract/mainsite.html.twig +++ b/main/app/sprinkles/core/templates/pages/abstract/mainsite.html.twig @@ -8,7 +8,8 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> - <meta name="description" content="{% block page_description %}This page has not yet been configured.{% endblock %}"> + <meta name="description" + content="{% block page_description %}This page has not yet been configured.{% endblock %}"> <meta name="author" content="{% block page_author %}{{ site.author }}{% endblock %}"> <title>{{ site.title }} | {% block page_title %}New Page{% endblock %}</title> @@ -54,7 +55,7 @@ {# Canonical page link #} {% if block('page_canonical') %} - <link href="{{site.uri.base.scheme}}://{% block page_canonical %}{% endblock %}" rel="canonical" /> + <link href="{{ site.uri.base.scheme }}://{% block page_canonical %}{% endblock %}" rel="canonical" /> {% endif %} <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> @@ -85,7 +86,10 @@ {% block content_header %} <section class="content-header"> <h1>{% block header_title %}{{ block('page_title') }}{% endblock %}</h1> - {% if block('page_description') is not empty %}<h1><small>{% block header_description %}{{ block('page_description') }}{% endblock %}</small></h1>{% endif %} + {% if block('page_description') is not empty %} + <h1> + <small>{% block header_description %}{{ block('page_description') }}{% endblock %}</small> + </h1>{% endif %} {% block breadcrumb %} {% include 'navigation/breadcrumb.html.twig' with {page_title: block('page_title')} %} {% endblock %} @@ -116,7 +120,10 @@ {% endblock %} {% block scripts %} - <script>var current_user_id = {{ current_user.id }};</script> + <script> + var current_user_id = {{ current_user.id }}; + var current_username = "{{ current_user.user_name }}"; + </script> {# Override this block in a child layout template or page template to override site-level scripts. #} {% block scripts_site %} {{ assets.js('js/main') | raw }} diff --git a/main/app/sprinkles/core/templates/pages/test.html.twig b/main/app/sprinkles/core/templates/pages/test.html.twig index 972e734..6f64962 100644 --- a/main/app/sprinkles/core/templates/pages/test.html.twig +++ b/main/app/sprinkles/core/templates/pages/test.html.twig @@ -25,35 +25,13 @@ <script> - - // GENERATE KEYS - var openpgp = window.openpgp; - var options; - var randomString = Math.random().toString(36).substr(2, 11); // PRIVKEY ENCRYPTION KEY - openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'}); - options = { - userIds: [{name: 'marvinborner', email: 'marvin@borners.de'}], - curve: "curve25519", - passphrase: randomString - }; - openpgp.generateKey(options).then(function (key) { - localStorage.setItem("PrivateKey", key.privateKeyArmored); - localStorage.setItem("🔒", randomString); - // SAVE PUBLIC KEY TO DATABASE - var data = { - csrf_name: site.csrf.name, - csrf_value: site.csrf.value, - PublicKey: key.publicKeyArmored - }; $.ajax({ - type: 'POST', - url: site.uri.public + '/api/users/u/' + 'tory.redstart' + '/publickey', - data: data, + type: 'GET', + url: site.uri.public + '/api/users/u/' + 'marvinborner' + '/publickey', + dataType : "json", success: function (response) { console.log(response); //window.location.reload(); } }); - - }); </script>
\ No newline at end of file |