X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Ftotp.js;fp=lib%2Ftotp.js;h=a1d2fce6820afffc3a2d892565262666897f6363;hb=0f47cb65da1c1619c998f9c4cd297279d647bf9c;hp=a305193e7dde085bc4ba7a76bef1814e1fa9acf6;hpb=2207e51e71606cbd1b4e3a688d450a79853dc8e9;p=squeep-totp diff --git a/lib/totp.js b/lib/totp.js index a305193..a1d2fce 100644 --- a/lib/totp.js +++ b/lib/totp.js @@ -25,7 +25,7 @@ class TimeBasedOneTimePassword extends HOTP { ]; } - get _algorithmKeyLengths() { + static get _algorithmKeyLengths() { return { ...super._algorithmKeyLengths, 'sha256': 32, @@ -33,14 +33,24 @@ class TimeBasedOneTimePassword extends HOTP { }; } + /** + * The type used when constructing the otpauth URI. + */ + static get _type() { + return 'totp'; + } + + /** + * Derive counter from epoch. + */ get counter() { const epoch = Math.floor(Date.now() / 1000); return BigInt(Math.floor((epoch - this.timeStepStartSeconds) / this.timeStepSeconds)); } - set counter(_) { /* */ } + set counter(_) { /* ignore assignment */ } // eslint-disable-line class-methods-use-this - get _defaultOptions() { + static get _defaultOptions() { const options = Object.assign(super._defaultOptions, { timeStepSeconds: 30, timeStepStartSeconds: 0, @@ -51,6 +61,11 @@ class TimeBasedOneTimePassword extends HOTP { return options; } + /** + * + * @param {BigInt=} count + * @returns {String} + */ generate(count = this.counter) { return super.generate(count); } @@ -71,7 +86,7 @@ class TimeBasedOneTimePassword extends HOTP { } return false; } - + } module.exports = TimeBasedOneTimePassword;