aboutsummaryrefslogtreecommitdiffhomepage
path: root/main/app/sprinkles/core
diff options
context:
space:
mode:
authorMarvin Borner2018-05-10 20:42:13 +0200
committerMarvin Borner2018-05-10 20:42:13 +0200
commita8d37fab30ccbced5ec8819510ee84893460bb5e (patch)
treed5983c82b866661c71d8683032ce303789847e29 /main/app/sprinkles/core
parentef6fc62a5048afd8467af20b34861ad085566481 (diff)
Began chat encrpytion integration and ECC key generation on registration
Diffstat (limited to 'main/app/sprinkles/core')
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/css/main.css1
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/chat.js26
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/main.js93
-rw-r--r--main/app/sprinkles/core/assets/SiteAssets/js/push.js3
-rw-r--r--main/app/sprinkles/core/templates/pages/index.html.twig2
-rw-r--r--main/app/sprinkles/core/templates/pages/test.html.twig53
6 files changed, 128 insertions, 50 deletions
diff --git a/main/app/sprinkles/core/assets/SiteAssets/css/main.css b/main/app/sprinkles/core/assets/SiteAssets/css/main.css
index aa234a0..42e0af8 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/css/main.css
+++ b/main/app/sprinkles/core/assets/SiteAssets/css/main.css
@@ -193,6 +193,7 @@ hr.ChatHeaderDivider {
.ChatMessages {
overflow-y: scroll;
+ overflow-x: hidden;
max-height: calc(100% - 215px); /* navbar + input + some margin*/
max-height: -moz-calc(100% - 215px);
max-height: -webkit-calc(100% - 215px);
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
index d9de95f..91afc16 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/chat.js
@@ -18,7 +18,11 @@ function InitializeChatServer() {
// CONNECTION SUCCESSFUL!
console.log("%c[CHATSOCKET LOGGER] Chat connection established!", "color: darkorange");
// START VERIFICATION
- ChatSocket.send(JSON.stringify({ClientMessageType: "Verify", Cookie: document.cookie, UserID: current_user_id}));
+ ChatSocket.send(JSON.stringify({
+ ClientMessageType: "Verify",
+ Cookie: document.cookie,
+ UserID: current_user_id
+ }));
console.log("%c[CHATSOCKET LOGGER] Started chat verification process...", "color: grey");
// GOT MESSAGE
ChatSocket.onmessage = function (e) {
@@ -115,15 +119,17 @@ function InitializeChatServer() {
}
}
} else if (ServerMessageType === "Verify") { // TYPE: SERVER CHECKED ACCESS -- MOSTLY HANDLED IN BACKEND
- if (Granted === true) {
- console.log("%c[CHATSOCKET LOGGER] Chat access granted!", "color: green");
- } else if (Granted === false) {
- console.log("%c[CHATSOCKET LOGGER] Chat access denied!", "color: red");
- }
+ if (Granted === true) {
+ console.log("%c[CHATSOCKET LOGGER] Chat access granted!", "color: green");
+ } else if (Granted === false) {
+ console.log("%c[CHATSOCKET LOGGER] Chat access denied!", "color: red");
+ }
}
}
// SCROLL TO BOTTOM ON NEW MESSAGE OF ANY KIND
- ChatMessages.animate({scrollTop: document.querySelector("#ChatMessages").scrollHeight}, "slow");
+ if ((ChatMessages.scrollTop() + ChatMessages.innerHeight() < ChatMessages[0].scrollHeight)) {
+ ChatMessages.animate({scrollTop: document.querySelector("#ChatMessages").scrollHeight});
+ }
};
@@ -186,7 +192,11 @@ function InitializeChatServer() {
isTyping = false;
clearTimeout(typingTimer);
- ChatSocket.send(JSON.stringify({ClientMessageType: "ChatMessage", MessageType: "Private", Message: ChatTextInput.val()}));
+ ChatSocket.send(JSON.stringify({
+ ClientMessageType: "ChatMessage",
+ MessageType: "Private",
+ Message: ChatTextInput.val()
+ }));
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 9d1d697..28c7b7c 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js
@@ -32,29 +32,46 @@ function triggerErrorPopup() {
/**
* ENCRYPTION
*/
-//encrypt
var openpgp = window.openpgp;
+var hkp = new openpgp.HKP('https://pgp.mit.edu');
+var options, EncryptedText, DecryptedText, PublicKey, PrivateKey, PrivateKeyObj;
openpgp.initWorker({path: '/assets-raw/core/assets/SiteAssets/js/openpgp.worker.js'});
-var options, encrypted;
-options = {
- data: "LOL",
- passwords: ['password'],
- armor: false
-};
-openpgp.encrypt(options).then(function (ciphertext) {
- encrypted = ciphertext.message.packets.write();
-});
-// decrypt
-function decrypt() {
+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;
+ });
+}
+
+function EncryptMessage(Message, PublicKey) {
options = {
- message: openpgp.message.read(encrypted),
- passwords: ['passwort']
- //format: 'binary'
+ data: Message,
+ publicKeys: openpgp.key.readArmored(PublicKey).keys
};
- openpgp.decrypt(options).then(function (plaintext) {
- console.log(plaintext.data)
- })
+
+ openpgp.encrypt(options).then(function (EncryptedText) {
+ EncryptedText = EncryptedText.data;
+ });
+}
+
+function DecryptMessage(EncryptedText, PrivateKey, passphrase) {
+ PrivateKeyObj = openpgp.key.readArmored(PrivateKey).keys[0];
+ PrivateKeyObj.decrypt(passphrase);
+ options = {
+ message: openpgp.message.readArmored(EncryptedText),
+ privateKeys: [PrivateKeyObj]
+ };
+
+ openpgp.decrypt(options).then(function (DecryptedText) {
+ DecryptedText = DecryptedText.data;
+ });
}
/**
@@ -134,24 +151,24 @@ UserSearchBar.keyup(function () {
SearchResults.empty();
var RequestedUser = UserSearchBar.val();
if (RequestedUser !== " " && RequestedUser !== "")
- $.ajax({
- url: site.uri.public + "/api/users/u/" + RequestedUser,
- success: function (answer) {
- console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green");
- //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"];
- //var RandomGif = Math.floor((Math.random() * GifUrls.length));
- //var RandomGifUrl = GifUrls[RandomGif];
- //console.image(RandomGifUrl, 0.5);
-
- alerts.ufAlerts().ufAlerts('fetch');
-
- SearchResults.append("<img class='Avatar' data-src='" + answer.avatar + "' data-caching-key='" + answer.user_name + "_avatar_cached'/><div class='UsersFullName'>" + answer.full_name + "</div>");
- //$(".SearchResults .Avatar").imageCaching(); // refresh
- },
- error: function () {
- console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red");
-
- alerts.ufAlerts().ufAlerts('fetch');
- }
- });
+ $.ajax({
+ url: site.uri.public + "/api/users/u/" + RequestedUser,
+ success: function (answer) {
+ console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green");
+ //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"];
+ //var RandomGif = Math.floor((Math.random() * GifUrls.length));
+ //var RandomGifUrl = GifUrls[RandomGif];
+ //console.image(RandomGifUrl, 0.5);
+
+ alerts.ufAlerts().ufAlerts('fetch');
+
+ SearchResults.append("<img class='Avatar' data-src='" + answer.avatar + "' data-caching-key='" + answer.user_name + "_avatar_cached'/><div class='UsersFullName'>" + answer.full_name + "</div>");
+ //$(".SearchResults .Avatar").imageCaching(); // refresh
+ },
+ error: function () {
+ console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red");
+
+ alerts.ufAlerts().ufAlerts('fetch');
+ }
+ });
}); \ No newline at end of file
diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/push.js b/main/app/sprinkles/core/assets/SiteAssets/js/push.js
index fcb350a..49a4467 100644
--- a/main/app/sprinkles/core/assets/SiteAssets/js/push.js
+++ b/main/app/sprinkles/core/assets/SiteAssets/js/push.js
@@ -709,5 +709,4 @@
e.exports = new i.default("undefined" != typeof window ? window : void 0)
}, {"./classes/Push": 3}]
}, {}, [11])(11)
-});
-//# sourceMappingURL=push.min.js.map \ No newline at end of file
+}); \ No newline at end of file
diff --git a/main/app/sprinkles/core/templates/pages/index.html.twig b/main/app/sprinkles/core/templates/pages/index.html.twig
index 59ad41e..ca38372 100644
--- a/main/app/sprinkles/core/templates/pages/index.html.twig
+++ b/main/app/sprinkles/core/templates/pages/index.html.twig
@@ -23,7 +23,7 @@
</div>
<div class="MainInTab FeedTabWindow">
{% for FeedImage in FeedImages %}
- <img class="FeedImage" src="{{ site.uri.public }}/image/{{ FeedImage.PostID }}" alt="An image">
+ <img class="FeedImage" src="{{ site.uri.public }}/image/{{ FeedImage.PostID }}" alt="You probably don't have an permission to see this image.">
<br>
{% endfor %}
</div>
diff --git a/main/app/sprinkles/core/templates/pages/test.html.twig b/main/app/sprinkles/core/templates/pages/test.html.twig
index 796ee72..972e734 100644
--- a/main/app/sprinkles/core/templates/pages/test.html.twig
+++ b/main/app/sprinkles/core/templates/pages/test.html.twig
@@ -5,4 +5,55 @@
<input formenctype="multipart/form-data" type="file" name="image"/>
</p>
<input formenctype="multipart/form-data" type="submit"/>
-</form> \ No newline at end of file
+</form>
+
+<form method="post" action="{{ site.uri.public }}/api/users/u/marvinborner/publickey">
+ {% include "forms/csrf.html.twig" %}
+ <p>
+ <input type="text" name="PublicKey"/>
+ </p>
+ <input type="submit"/>
+</form>
+
+<script>
+ var current_user_id = {{ current_user.id }};
+ {% include "pages/partials/config.js.twig" %}
+</script>
+
+{{ assets.js('js/main') | raw }}
+<script src="{{ assets.url('assets://SiteAssets/js/encryption.js') }}"></script>
+
+
+<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,
+ success: function (response) {
+ console.log(response);
+ //window.location.reload();
+ }
+ });
+
+ });
+</script> \ No newline at end of file