Skip to content

Commit ebdbdb3

Browse files
committed
Adding checkbox to toggle base64 encoding secret.
1 parent f1f6242 commit ebdbdb3

File tree

7 files changed

+26
-13
lines changed

7 files changed

+26
-13
lines changed

dist/css/app.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/app.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

html/index.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ <h1>JSON Web Tokens</h1>
2424
base64UrlEncode(header) .
2525
base64UrlEncode(payload),
2626
<input type="text" name="secret" value="secret" />
27-
)</pre></div>
27+
) <span class="is-base64-encoded-label"> <input type="checkbox" name="is-base64-encoded" />secret base64 encoded?</span></pre></div>
2828
</div>
2929
<div class="validation-status js-signature">
3030
</div>
3131
</div>
3232

33-
3433
<!-- build:js dist/js/app.js -->
3534
<script src="vendor/zepto/zepto.js"></script>
3635
<script src="vendor/jsonlint/lib/jsonlint.js"></script>

index.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,12 @@ <h1>JSON Web Tokens</h1>
1919
base64UrlEncode(header) .
2020
base64UrlEncode(payload),
2121
<input type="text" name="secret" value="secret">
22-
)</pre></div>
22+
) <span class="is-base64-encoded-label"> <input type="checkbox" name="is-base64-encoded">secret base64 encoded?</span></pre></div>
2323
</div>
2424
<div class="validation-status js-signature">
2525
</div>
2626
</div>
2727

28-
2928
<script src="dist/js/app.js"></script>
3029
</body>
3130
</html>

js/app.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@
9191
function refreshTokenEditor(instance) {
9292
tokenEditor.off('change', tokenEditorOnChangeListener);
9393
var secretElement = document.getElementsByName('secret')[0];
94-
var signResult = window.sign(headerEditor.getValue(), payloadEditor.getValue(), secretElement.value);
94+
var isBase64EncodedElement = document.getElementsByName('is-base64-encoded')[0];
95+
var signResult = window.sign(headerEditor.getValue(), payloadEditor.getValue(), secretElement.value,
96+
isBase64EncodedElement.checked);
9597

9698
if (signResult.error) {
9799
tokenEditor.setValue('');
@@ -137,13 +139,16 @@
137139
headerEditor.on('change', refreshTokenEditor);
138140

139141
var secretElement = document.getElementsByName('secret')[0];
142+
var isBase64EncodedElement = document.getElementsByName('is-base64-encoded')[0];
143+
140144
function updateSignature () {
141145
var signatureElement = getFirstElementByClassName('js-signature');
146+
142147
if (!signatureElement) {
143148
return;
144149
}
145150
var value = getTrimmedValue(tokenEditor);
146-
var result = window.verify(value, secretElement.value).result;
151+
var result = window.verify(value, secretElement.value, isBase64EncodedElement.checked).result;
147152
if (result) {
148153
$(signatureElement).removeClass('invalid-token');
149154
$(signatureElement).addClass('valid-token');
@@ -156,6 +161,7 @@
156161
}
157162
secretElement.addEventListener('change', updateSignature, false);
158163
secretElement.addEventListener('keyup', updateSignature, false);
164+
isBase64EncodedElement.addEventListener('change', updateSignature, false);
159165

160166
tokenEditor.setValue('eyJhbGciOiJIUzI1NiIsImN0eSI6IkpXVCJ9.eyJhZ2UiOjIxfQ.8nqb61Mdqdama9pZQz07HiIySY6FZC9UjHMKHg6zhjw');
161167

js/jwt.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function asciiToHex(s) {
3737

3838
}
3939

40-
window.sign = function (header, payload, secret) {
40+
window.sign = function (header, payload, secret, isSecretBase64Encoded) {
4141
var value = '', error = null, headerAsJSON, payloadAsJSON;
4242

4343
try {
@@ -59,6 +59,10 @@ window.sign = function (header, payload, secret) {
5959
return error;
6060
}
6161

62+
if (isSecretBase64Encoded) {
63+
secret = url_base64_decode(secret);
64+
}
65+
6266
try {
6367
value = KJUR.jws.JWS.sign(null, headerAsJSON, payloadAsJSON, asciiToHex(secret));
6468
} catch (e) {
@@ -68,8 +72,13 @@ window.sign = function (header, payload, secret) {
6872
return {result: value, error: error};
6973
};
7074

71-
window.verify = function (value, secret) {
75+
window.verify = function (value, secret, isSecretBase64Encoded) {
7276
var result = '', error = null;
77+
78+
if (isSecretBase64Encoded) {
79+
secret = url_base64_decode(secret);
80+
}
81+
7382
try {
7483
result = KJUR.jws.JWS.verify(value, asciiToHex(secret));
7584
} catch (e) {

less/app.less

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ h1 {
112112
color: @jwtSignatureColor;
113113
font-family: monospace;
114114

115-
pre {
116-
padding: 0;
117-
margin: 0;
115+
pre { padding: 0; margin: 0; }
116+
span.is-base64-encoded-label {
117+
font-size: x-small;
118118
}
119119
}
120120
}

0 commit comments

Comments
 (0)