Update app.js

Use let instead of var.
master
Andrew Gregory 2022-03-23 16:36:42 +08:00 committed by GitHub
parent 05b75d2241
commit b3cc125a3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 21 deletions

View File

@ -22,8 +22,8 @@ if (settings.tokens) tokens = settings.tokens; /* v0.03+ settings */
function b32decode(seedstr) { function b32decode(seedstr) {
// RFC4648 // RFC4648
var buf = 0, bitcount = 0, retstr = ""; let buf = 0, bitcount = 0, retstr = "";
for (var c of seedstr.toUpperCase()) { for (let c of seedstr.toUpperCase()) {
if (c == '0') c = 'O'; if (c == '0') c = 'O';
if (c == '1') c = 'I'; if (c == '1') c = 'I';
if (c == '8') c = 'B'; if (c == '8') c = 'B';
@ -39,63 +39,62 @@ function b32decode(seedstr) {
} }
} }
} }
var retbuf = new Uint8Array(retstr.length); let retbuf = new Uint8Array(retstr.length);
for (var i in retstr) { for (let i in retstr) {
retbuf[i] = retstr.charCodeAt(i); retbuf[i] = retstr.charCodeAt(i);
} }
return retbuf; return retbuf;
} }
function hmac(key, message, algo) { function hmac(key, message, algo) {
var a = algos[algo.toUpperCase()]; let a = algos[algo.toUpperCase()];
// RFC2104 // RFC2104
if (key.length > a.blksz) { if (key.length > a.blksz) {
key = a.sha(key); key = a.sha(key);
} }
var istr = new Uint8Array(a.blksz + message.length); let istr = new Uint8Array(a.blksz + message.length);
var ostr = new Uint8Array(a.blksz + a.retsz); let ostr = new Uint8Array(a.blksz + a.retsz);
for (var i = 0; i < a.blksz; ++i) { for (let i = 0; i < a.blksz; ++i) {
var c = (i < key.length) ? key[i] : 0; let c = (i < key.length) ? key[i] : 0;
istr[i] = c ^ 0x36; istr[i] = c ^ 0x36;
ostr[i] = c ^ 0x5C; ostr[i] = c ^ 0x5C;
} }
istr.set(message, a.blksz); istr.set(message, a.blksz);
ostr.set(a.sha(istr), a.blksz); ostr.set(a.sha(istr), a.blksz);
var ret = a.sha(ostr); let ret = a.sha(ostr);
// RFC4226 dynamic truncation // RFC4226 dynamic truncation
var v = new DataView(ret, ret[ret.length - 1] & 0x0F, 4); let v = new DataView(ret, ret[ret.length - 1] & 0x0F, 4);
return v.getUint32(0) & 0x7FFFFFFF; return v.getUint32(0) & 0x7FFFFFFF;
} }
function formatOtp(otp, digits) { function formatOtp(otp, digits) {
// add 0 padding // add 0 padding
var ret = "" + otp % Math.pow(10, digits); let ret = "" + otp % Math.pow(10, digits);
while (ret.length < digits) { while (ret.length < digits) {
ret = "0" + ret; ret = "0" + ret;
} }
// add a space after every 3rd or 4th digit // add a space after every 3rd or 4th digit
var re = (digits % 3 == 0 || (digits % 3 >= digits % 4 && digits % 4 != 0)) ? "" : "."; let re = (digits % 3 == 0 || (digits % 3 >= digits % 4 && digits % 4 != 0)) ? "" : ".";
return ret.replace(new RegExp("(..." + re + ")", "g"), "$1 ").trim(); return ret.replace(new RegExp("(..." + re + ")", "g"), "$1 ").trim();
} }
function hotp(token) { function hotp(token) {
var d = Date.now(); let d = Date.now();
var tick, next; let tick, next;
if (token.period > 0) { if (token.period > 0) {
// RFC6238 - timed // RFC6238 - timed
var seconds = Math.floor(d / 1000); tick = Math.floor(Math.floor(d / 1000) / token.period);
tick = Math.floor(seconds / token.period);
next = (tick + 1) * token.period * 1000; next = (tick + 1) * token.period * 1000;
} else { } else {
// RFC4226 - counter // RFC4226 - counter
tick = -token.period; tick = -token.period;
next = d + 30000; next = d + 30000;
} }
var msg = new Uint8Array(8); let msg = new Uint8Array(8);
var v = new DataView(msg.buffer); let v = new DataView(msg.buffer);
v.setUint32(0, tick >> 16 >> 16); v.setUint32(0, tick >> 16 >> 16);
v.setUint32(4, tick & 0xFFFFFFFF); v.setUint32(4, tick & 0xFFFFFFFF);
var ret; let ret;
try { try {
ret = hmac(b32decode(token.secret), msg, token.algorithm); ret = hmac(b32decode(token.secret), msg, token.algorithm);
ret = formatOtp(ret, token.digits); ret = formatOtp(ret, token.digits);
@ -117,7 +116,7 @@ var state = {
}; };
function sizeFont(id, txt, w) { function sizeFont(id, txt, w) {
var sz = fontszCache[id]; let sz = fontszCache[id];
if (sz) { if (sz) {
g.setFont("Vector", sz); g.setFont("Vector", sz);
} else { } else {