From cde6c167b274d2a7eac0bb9875bc5cb03fd979d5 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Wed, 18 Apr 2018 21:35:56 -0600 Subject: [PATCH 1/2] allow arbitrary number of digits --- index.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 3052c5e..c02c099 100644 --- a/index.js +++ b/index.js @@ -53,7 +53,7 @@ hotp.gen = function(key, opt) { opt = opt || {}; var counter = opt.counter || 0; - var p = 6; + var p = opt.digits || 6; // Create the byte array var b = new Buffer(intToBytes(counter)); @@ -68,14 +68,16 @@ hotp.gen = function(key, opt) { // Truncate var offset = h[19] & 0xf; - var v = (h[offset] & 0x7f) << 24 | + var v = ( + (h[offset] & 0xff) << 24 | (h[offset + 1] & 0xff) << 16 | (h[offset + 2] & 0xff) << 8 | - (h[offset + 3] & 0xff); + (h[offset + 3] & 0xff) + ) >>> 0; - v = (v % 1000000) + ''; + v = (v % Math.pow(10, p)) + ''; - return Array(7-v.length).join('0') + v; + return new Array((p+1)-v.length).join('0') + v; }; /** From 1afb394d8b7b1b5ebbd4af67bb35a4075009c221 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Wed, 18 Apr 2018 21:54:54 -0600 Subject: [PATCH 2/2] revert integer change --- index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index c02c099..88d84ce 100644 --- a/index.js +++ b/index.js @@ -68,12 +68,10 @@ hotp.gen = function(key, opt) { // Truncate var offset = h[19] & 0xf; - var v = ( - (h[offset] & 0xff) << 24 | + var v = (h[offset] & 0x7f) << 24 | (h[offset + 1] & 0xff) << 16 | (h[offset + 2] & 0xff) << 8 | - (h[offset + 3] & 0xff) - ) >>> 0; + (h[offset + 3] & 0xff); v = (v % Math.pow(10, p)) + '';