diff --git a/lor-cryptomsg.js b/lor-cryptomsg.js index 15c642c..0873797 100644 --- a/lor-cryptomsg.js +++ b/lor-cryptomsg.js @@ -12,14 +12,19 @@ (function() { - var username = ''; + var _username = ''; + var _keyset = []; + var publicKey = ''; +/* var publicKey = `-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76 xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4 gwQco1KRMDSmXSMkDwIDAQAB -----END PUBLIC KEY-----`; +*/ + var privateKey = `-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ @@ -37,7 +42,29 @@ psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876 -----END RSA PRIVATE KEY-----`; - var encryptedRegexp = /\[ENCRYPTED\]([\s\S]+)\[\/ENCRYPTED\]/mgi; + var getAllowedUsers = function() { + var users = []; + if (_keyset) { + for (var userkey in _keyset) { + if (!users[_keyset[userkey]['user']]) { + users.push(_keyset[userkey]['user']); + } + } + } + return users; + } + + var getUserKey = function(user) { + + for (var userkey in _keyset) { + if (_keyset[userkey]['user'] && _keyset[userkey]['user'] === user) { + return _keyset[userkey]['key']; + } + } + + return ''; + + } var insertText = function(textarea, text) { @@ -59,84 +86,151 @@ uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876 var author = $(messageTag).find('.sign a[itemprop="creator"]').text(); if (msg && msg.length && author.trim() != '') { + var encryptedRegexp = /(\[ENCRYPTED\][\s\S]+\[\/ENCRYPTED\])+?/mi; + var encryptedMsgRegexp = /\[ENCRYPTED\]([\s\S]+)\[\/ENCRYPTED\]/mi; Array.prototype.forEach.call(msg, function(p) { var msg = p.innerText; if (msg.trim() != '' && encryptedRegexp.test(msg)) { - msg = msg.replace(encryptedRegexp, '$1').trim(); + var result = msg.match(encryptedRegexp); + if (result && result.length >= 1) { - var decrypt = new JSEncrypt.JSEncrypt(); - decrypt.setPrivateKey(privateKey); + for (var i=1; i 1) { - var keyset = resultKeyset[1]; + if (resultKeyset && resultKeyset.length) { + var keyset = resultKeyset[0]; if (regexpKey.test(keyset)) { var resultKeys = keyset.match(regexpKey); - if (resultKeys.length > 1) { - for (var i=1; i < resultKeys.length; i++) { - var keyData = resultKey[i]; - } + while (resultKeys && resultKeys.length > 1) { + _keyset.push({ + 'user' : resultKeys[1], + 'key' : resultKeys[2] + }); + keyset = keyset.replace(resultKeys[0], ''); + resultKeys = keyset.match(regexpKey); + } + if (callback) { + callback(); } } } @@ -144,11 +238,22 @@ uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876 }); } + var insertAllButtons = function() { + + //create Encrypt button + var textareas = document.getElementsByTagName('textarea'); + if (textareas && textareas.length) { + Array.prototype.forEach.call(textareas, insertEncryptButton); + } + + } + + window.addEventListener('load', function() { checkLoggedIn(function() { - reloadUsersWithPublicKeys(); + readMyKeyset(insertAllButtons); //autodecrypt var messages = $('.msg_body'); @@ -156,12 +261,6 @@ uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876 Array.prototype.forEach.call(messages, decryptFn); } - //create Encrypt button - var textareas = document.getElementsByTagName('textarea'); - if (textareas && textareas.length) { - Array.prototype.forEach.call(textareas, insertEncryptButton); - } - }); });