From 9bc39377aa0317ffbfed3b6e29814bb26681cfd5 Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Wed, 16 Nov 2016 11:58:51 +1100 Subject: [PATCH] zxcvbn errors are caught, with strength 'unknown' --- src/js/index.js | 21 ++++++++++++++------- tests.js | 9 +++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/js/index.js b/src/js/index.js index e064185..dbbd382 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -810,13 +810,20 @@ // If time to crack is less than one day, and password is considered // strong or better based on the number of bits, rename strength to // 'easily cracked'. - var z = zxcvbn(entropy.cleanStr); - var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second; - if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) { - strength = "easily cracked"; - if (z.feedback.warning != "") { - strength = strength + " - " + z.feedback.warning; - }; + try { + var z = zxcvbn(entropy.base.parts.join("")); + var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second; + if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) { + strength = "easily cracked"; + if (z.feedback.warning != "") { + strength = strength + " - " + z.feedback.warning; + }; + } + } + catch (e) { + strength = "unknown"; + console.log("Error detecting entropy strength with zxcvbn:"); + console.log(e); } var bitsStr = getNumberOfEntropyBits(entropy); var wordCount = Math.floor(entropy.binaryStr.length / 32) * 3; diff --git a/tests.js b/tests.js index b43d1a1..1b1d445 100644 --- a/tests.js +++ b/tests.js @@ -2664,6 +2664,15 @@ page.open(url, function(status) { words: 27, strength: "extremely strong", }, + // Next test was throwing uncaught error in zxcvbn + { + entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsksac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks", + type: "card (full deck, 52 duplicates: ac 2c 3c...)", + events: 104, + bits: 226, + words: 54, + strength: "extremely strong", + }, ]; // use entropy page.evaluate(function() { -- 2.41.0