diff --git a/src/popup/app/vault/vaultViewLoginController.js b/src/popup/app/vault/vaultViewLoginController.js index 6fa41792f8..01c877b4c9 100644 --- a/src/popup/app/vault/vaultViewLoginController.js +++ b/src/popup/app/vault/vaultViewLoginController.js @@ -177,13 +177,13 @@ angular function totpTick() { $timeout(function () { var epoch = Math.round(new Date().getTime() / 1000.0); - var mod = (epoch % 30); + var mod = epoch % 30; var sec = 30 - mod; $scope.totpSec = sec; $scope.totpDash = (2.62 * mod).toFixed(2); $scope.totpLow = sec <= 7; - if (epoch % 30 == 0) { + if (mod == 0) { totpUpdateCode(); } }); diff --git a/src/services/totpService.js b/src/services/totpService.js index 892bba33de..b01321aefd 100644 --- a/src/services/totpService.js +++ b/src/services/totpService.js @@ -39,11 +39,25 @@ function initTotpService() { } var b32tohex = function (s) { + s = s.toUpperCase(); + var cleanedInput = ''; + for (var i = 0; i < s.length; i++) { + if (b32Chars.indexOf(s[i]) < 0) { + continue; + } + + cleanedInput += s[i]; + } + s = cleanedInput; + var bits = ''; var hex = ''; for (var i = 0; i < s.length; i++) { - var val = b32Chars.indexOf(s.charAt(i).toUpperCase()); - bits += leftpad(val.toString(2), 5, '0'); + var byteIndex = b32Chars.indexOf(s.charAt(i)); + if (byteIndex < 0) { + continue; + } + bits += leftpad(byteIndex.toString(2), 5, '0'); } for (var i = 0; i + 4 <= bits.length; i += 4) { var chunk = bits.substr(i, 4);