consistent spacing for reformating #7

Closed
lastlink wants to merge 11 commits from no-acme into no-acme
3 changed files with 172 additions and 69 deletions

11
.editorconfig Normal file
View File

@ -0,0 +1,11 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

64
app.js
View File

@ -48,6 +48,8 @@
$('.js-jwk').hidden = true; $('.js-jwk').hidden = true;
$('.js-toc-der-public').hidden = true; $('.js-toc-der-public').hidden = true;
$('.js-toc-der-private').hidden = true; $('.js-toc-der-private').hidden = true;
$('.js-toc-jwk').hidden = true;
$$('.js-toc-pem').forEach(function ($el) { $$('.js-toc-pem').forEach(function ($el) {
$el.hidden = true; $el.hidden = true;
}); });
@ -116,7 +118,69 @@
}); });
}); });
$('form.js-keysign').addEventListener('submit', function (ev) {
ev.preventDefault();
ev.stopPropagation();
$('.js-pem-loading').hidden = false;
$('.js-toc-jws').hidden = true;
$('.js-toc-jwt').hidden = true;
$$('input').map(function ($el) { $el.disabled = true; });
$$('button').map(function ($el) { $el.disabled = true; });
try {
var opts = {
jwk: JSON.parse($('textarea[name="jwk"]').value),
claims: {
exp: "1h",
iss: document.getElementById(`-acmeDomains`).value
}
};
Keypairs.signJwt(opts).then(function (msg) {
document.getElementById(`sign-error`).innerText = null;
$('.js-jwt').innerText = msg;
$('.js-toc-jwt').hidden = false;
var msgArr = msg.split(".")
var protected64 = msgArr[0]
var payload64 = msgArr[1]
var signature = msgArr[2]
var signedMsg = {
protected: protected64
, payload: payload64
, signature
};
$('.js-jws').innerText = JSON.stringify(signedMsg, null, 2);
$('.js-toc-jws').hidden = false;
$('.js-pem-loading').hidden = true;
$$('input').map(function ($el) { $el.disabled = false; });
$$('button').map(function ($el) { $el.disabled = false; });
}).catch(function (error) {
document.getElementById(`sign-error`).innerText = error.message
$('.js-pem-loading').hidden = true;
$$('input').map(function ($el) { $el.disabled = false; });
$$('button').map(function ($el) { $el.disabled = false; });
})
} catch (error) {
document.getElementById(`sign-error`).innerText = error.message
$('.js-pem-loading').hidden = true;
$$('input').map(function ($el) { $el.disabled = false; });
$$('button').map(function ($el) { $el.disabled = false; });
}
});
$('.js-generate').hidden = false; $('.js-generate').hidden = false;
$('.js-sign').hidden = false;
$('textarea[name="jwk"]').value = JSON.stringify({
"crv": "P-256",
"d": "LImWxqqTHbP3LHQfqscDSUzf_uNePGqf9U6ETEcO5Ho",
"kty": "EC",
"x": "vdjQ3T6VBX82LIKDzepYgRsz3HgRwp83yPuonu6vqos",
"y": "IUkEXtAMnppnV1A19sE2bJhUo4WPbq6EYgWxma4oGyg",
"kid": "MnfJYyS9W5gUjrJLdn8ePMzik8ZJz2qc-VZmKOs_oCw"
})
} }
window.addEventListener('load', run); window.addEventListener('load', run);

View File

@ -1,5 +1,6 @@
<html> <html>
<head>
<head>
<title>BlueCrypt</title> <title>BlueCrypt</title>
<style> <style>
textarea { textarea {
@ -7,16 +8,19 @@
height: 10em; height: 10em;
} }
/* need to word wrap the binary no space der */ /* need to word wrap the binary no space der */
.js-der-public, .js-der-private{ .js-der-public, .js-der-private, .js-jwt{
white-space: pre-wrap; /* CSS3 */ white-space: pre-wrap; /* CSS3 */
white-space: -moz-pre-wrap; /* Firefox */ white-space: -moz-pre-wrap; /* Firefox */
white-space: -pre-wrap; /* Opera <7 */ white-space: -pre-wrap; /* Opera <7 */
white-space: -o-pre-wrap; /* Opera 7 */ white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* IE */ word-wrap: break-word; /* IE */
} }
.errors {
color: red;
}
</style> </style>
</head> </head>
<body> <body>
<h1>BlueCrypt for the Browser</h1> <h1>BlueCrypt for the Browser</h1>
<p>BlueCrypt is universal crypto for the browser. It's lightweight, fast, and based on native webcrypto. <p>BlueCrypt is universal crypto for the browser. It's lightweight, fast, and based on native webcrypto.
This means it's easy-to-use crypto in kilobytes, not megabytes.</p> This means it's easy-to-use crypto in kilobytes, not megabytes.</p>
@ -88,6 +92,30 @@
<pre><code class="js-input-pem-spki-public" ></code></pre> <pre><code class="js-input-pem-spki-public" ></code></pre>
</details> </details>
<h2>Signing</h2>
<div class="errors" id="sign-error"></div>
<form class="js-keysign">
<div>
<label for="-acmeDomains">Domains:</label>
<input class="js-domains" type="text" id="-acmeDomains" value="example.com www.example.com">
</div>
<div>
<label for="jwk">JWK:</label>
<br>
<textarea id="jwk" name="jwk"></textarea>
</div>
<button class="js-sign" hidden>Sign</button>
</form>
<div class="js-pem-loading" hidden>Loading</div>
<details class="js-toc-jws" hidden>
<summary>JWS </summary>
<pre><code class="js-jws"></code></pre>
</details>
<details class="js-toc-jwt" hidden>
<summary>JWT </summary>
<pre><code class="js-jwt"></code></pre>
</details>
<script src="./lib/bluecrypt-encoding.js"></script> <script src="./lib/bluecrypt-encoding.js"></script>
<script src="./lib/asn1-packer.js"></script> <script src="./lib/asn1-packer.js"></script>
<script src="./lib/x509.js"></script> <script src="./lib/x509.js"></script>
@ -95,5 +123,5 @@
<script src="./lib/rsa.js"></script> <script src="./lib/rsa.js"></script>
<script src="./lib/keypairs.js"></script> <script src="./lib/keypairs.js"></script>
<script src="./app.js"></script> <script src="./app.js"></script>
</body> </body>
</html> </html>