Merge pull request #10 from bfred-it/much-lighter

Remove jQuery and jsRender
pull/12/head
Robin Moisson 2017-06-15 12:12:51 +02:00 zatwierdzone przez GitHub
commit 7fbffa8dcc
5 zmienionych plików z 75 dodań i 2533 usunięć

Wyświetl plik

@ -134,34 +134,30 @@
</footer> </footer>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script> <script>
$(function () {
$('#staticrypt-form').submit(function (e) {
e.preventDefault();
var passphrase = $('#staticrypt-password').val(); document.getElementById('staticrypt-form').addEventListener('submit', function (e) {
var encryptedMsg = 'bf73a9eb1c0ef239c83d262470f6a1a55b024a867a41199f73a33b82d73f6855U2FsdGVkX1/GeUxTnFMh1/3gx6bj1Cb4/bQxA/2toJZe8tX6H4azBaCfva11oo9Klj4NIYglL2ln6tQdBGEFHLCRy1ib6Fd89heNRoE30ua/AN0jvfxGP81ZOOzjAeSGb3gDUqOpgobXNz0rTw1z3cl++Sj9yrrOePbhmu7tPEJhz9NT50iAakdHNqm4fOjU4UiJFYBRcKERg0rXG9mHFg=='; e.preventDefault();
var encryptedHMAC = encryptedMsg.substring(0, 64); var passphrase = document.getElementById('staticrypt-password').value
var encryptedHTML = encryptedMsg.substring(64); var encryptedMsg = 'bf73a9eb1c0ef239c83d262470f6a1a55b024a867a41199f73a33b82d73f6855U2FsdGVkX1/GeUxTnFMh1/3gx6bj1Cb4/bQxA/2toJZe8tX6H4azBaCfva11oo9Klj4NIYglL2ln6tQdBGEFHLCRy1ib6Fd89heNRoE30ua/AN0jvfxGP81ZOOzjAeSGb3gDUqOpgobXNz0rTw1z3cl++Sj9yrrOePbhmu7tPEJhz9NT50iAakdHNqm4fOjU4UiJFYBRcKERg0rXG9mHFg==';
var decryptedHMAC = CryptoJS.HmacSHA256(encryptedHTML, CryptoJS.SHA256(passphrase)).toString(); var encryptedHMAC = encryptedMsg.substring(0, 64);
var encryptedHTML = encryptedMsg.substring(64);
if (decryptedHMAC !== encryptedHMAC) { var decryptedHMAC = CryptoJS.HmacSHA256(encryptedHTML, CryptoJS.SHA256(passphrase)).toString();
alert('Bad passphrase !');
return;
}
var plainHTML = CryptoJS.AES.decrypt(encryptedHTML, passphrase).toString(CryptoJS.enc.Utf8); if (decryptedHMAC !== encryptedHMAC) {
alert('Bad passphrase !');
return;
}
document.write(plainHTML); var plainHTML = CryptoJS.AES.decrypt(encryptedHTML, passphrase).toString(CryptoJS.enc.Utf8);
});
document.write(plainHTML);
document.close();
}); });
</script> </script>
</body> </body>

Wyświetl plik

@ -123,61 +123,61 @@ Your encrypted string</pre>
</div> </div>
</div> </div>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script src="jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsrender/0.9.84/jsrender.js"></script>
<script> <script>
$(function () { var renderTemplate = function (tpl, data) {
return tpl.replace(/{(.*?)}/g, function (_, key) {
return data && data[key] || '';
});
}
var renderTemplate = function (data) { var renderTemplate = function (data) {
var request = new XMLHttpRequest();
request.open('GET', 'password_template.html', true);
request.onload = function() {
var renderedTmpl = renderTemplate(request.responseText, data);
$.when($.get('password_template.html')) var downloadLink = document.querySelector('a.download');
.done(function (tmplData) { downloadLink.href = 'data:attachment/text,' + encodeURIComponent(renderedTmpl);
$.templates({tmpl: tmplData}); downloadLink.removeAttribute('disabled');
};
request.send();
};
var renderedTmpl = $.render.tmpl(data); document.getElementById('encrypt_form').addEventListener('submit', function (e) {
e.preventDefault();
var downloadLink = $('a.download'); var unencrypted = document.getElementById('unencrypted_html').value;
downloadLink.attr('href', 'data:attachment/text,' + encodeURIComponent(renderedTmpl)); var passphrase = document.getElementById('passphrase').value;
downloadLink.removeAttr('disabled');
}); var encrypted = CryptoJS.AES.encrypt(unencrypted, passphrase);
var hmac = CryptoJS.HmacSHA256(encrypted.toString(), CryptoJS.SHA256(passphrase)).toString();
var encryptedMsg = hmac + encrypted;
var pageTitle = document.getElementById('title').value.trim();
var instructions = document.getElementById('instructions').value;
var data = {
title: pageTitle ? pageTitle : 'Protected Page',
instructions: instructions ? instructions : '',
encrypted: encryptedMsg
}; };
$('#encrypt_form').submit(function (e) { document.getElementById('encrypted_html_display').textContent = encryptedMsg;
e.preventDefault();
var unencrypted = $('#unencrypted_html').val(); renderTemplate(data);
var passphrase = $('#passphrase').val(); });
var encrypted = CryptoJS.AES.encrypt(unencrypted, passphrase); document.getElementById('toggle-extra-option')
var hmac = CryptoJS.HmacSHA256(encrypted.toString(), CryptoJS.SHA256(passphrase)).toString(); .addEventListener('click', function (e) {
var encryptedMsg = hmac + encrypted; e.preventDefault();
document.getElementById('extra-options').classList.toggle('hidden');
});
var pageTitle = $.trim($('#title').val()); document.getElementById('toggle-concept')
var instructions = $('#instructions').val(); .addEventListener('click', function (e) {
var data = { e.preventDefault();
title: pageTitle ? pageTitle : 'Protected Page', document.getElementById('concept').classList.toggle('hidden');
instructions: instructions ? instructions : '',
encrypted: encryptedMsg
};
$('#encrypted_html_display').text(encryptedMsg);
renderTemplate(data);
});
$('#toggle-extra-option').click(function () {
$('#extra-options').toggleClass('hidden');
});
$('#toggle-concept').click(function () {
$('#concept').toggleClass('hidden');
});
}); });
</script> </script>

4
jquery-3.2.1.min.js vendored

File diff suppressed because one or more lines are too long

Plik diff jest za duży Load Diff

Wyświetl plik

@ -2,7 +2,7 @@
<html class="staticrypt-html"> <html class="staticrypt-html">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>{{:title}}</title> <title>{title}</title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<!-- do not cache this page --> <!-- do not cache this page -->
@ -112,8 +112,8 @@
<div class="staticrypt-page"> <div class="staticrypt-page">
<div class="staticrypt-form"> <div class="staticrypt-form">
<div class="staticrypt-instructions"> <div class="staticrypt-instructions">
<p class="staticrypt-title">{{:title}}</p> <p class="staticrypt-title">{title}</p>
<p>{{:instructions}}</p> <p>{instructions}</p>
</div> </div>
<hr class="staticrypt-hr"> <hr class="staticrypt-hr">
@ -134,34 +134,29 @@
</footer> </footer>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script> <script>
$(function () { document.getElementById('staticrypt-form').addEventListener('submit', function (e) {
$('#staticrypt-form').submit(function (e) { e.preventDefault();
e.preventDefault();
var passphrase = $('#staticrypt-password').val(); var passphrase = document.getElementById('staticrypt-password').value
var encryptedMsg = '{{:encrypted}}'; var encryptedMsg = '{encrypted}';
var encryptedHMAC = encryptedMsg.substring(0, 64); var encryptedHMAC = encryptedMsg.substring(0, 64);
var encryptedHTML = encryptedMsg.substring(64); var encryptedHTML = encryptedMsg.substring(64);
var decryptedHMAC = CryptoJS.HmacSHA256(encryptedHTML, CryptoJS.SHA256(passphrase)).toString(); var decryptedHMAC = CryptoJS.HmacSHA256(encryptedHTML, CryptoJS.SHA256(passphrase)).toString();
if (decryptedHMAC !== encryptedHMAC) { if (decryptedHMAC !== encryptedHMAC) {
alert('Bad passphrase !'); alert('Bad passphrase !');
return; return;
} }
var plainHTML = CryptoJS.AES.decrypt(encryptedHTML, passphrase).toString(CryptoJS.enc.Utf8); var plainHTML = CryptoJS.AES.decrypt(encryptedHTML, passphrase).toString(CryptoJS.enc.Utf8);
document.write(plainHTML); document.write(plainHTML);
}); document.close();
}); });
</script> </script>
</body> </body>