X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests.js;h=1b1d44577a91b01e8addb301c54b707c594610c8;hb=9bc39377aa0317ffbfed3b6e29814bb26681cfd5;hp=f672cbd86ad374dc68b2044d15d3231305850cb4;hpb=439f0e252bb28e1b3a86935f48bff8cf87875494;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/tests.js b/tests.js index f672cbd..1b1d445 100644 --- a/tests.js +++ b/tests.js @@ -80,7 +80,7 @@ function waitForEntropyFeedback(fn, maxTime) { maxTime = testMaxTime; } var origFeedback = page.evaluate(function() { - return $(".entropy-feedback").text(); + return $(".entropy-container").text(); }); var start = new Date().getTime(); var wait = function keepWaiting() { @@ -92,7 +92,7 @@ function waitForEntropyFeedback(fn, maxTime) { return; } var feedback = page.evaluate(function() { - return $(".entropy-feedback").text(); + return $(".entropy-container").text(); }); var hasFinished = feedback != origFeedback; if (hasFinished) { @@ -2503,6 +2503,7 @@ page.open(url, function(status) { [ "222F", "16" ], [ "FFFF", "16" ], [ "0000101017", "33" ], // 10 events at 3.32 bits per event + [ "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks", "226" ], // cards are not replaced, so a full deck is not 52^52 entropy which is 296 bits, it's 52!, which is 226 bits ] // use entropy page.evaluate(function(e) { @@ -2519,7 +2520,7 @@ page.open(url, function(status) { // check the number of bits of entropy is shown waitForEntropyFeedback(function() { var entropyText = page.evaluate(function() { - return $(".entropy-feedback").text(); + return $(".entropy-container").text(); }); if (entropyText.replace(/\s/g,"").indexOf("Bits" + expected) == -1) { console.log("Accumulated entropy is not shown correctly for " + entropy); @@ -2594,11 +2595,20 @@ page.open(url, function(status) { events: 32, bits: 128, words: 12, + strength: "easily cracked", + }, + { + entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDA", + filtered: "AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDA", + type: "hexadecimal", + events: 32, + bits: 128, + words: 12, strength: "strong", }, { - entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE", - filtered: "AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEE", + entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDA EEEEEEEE", + filtered: "AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDAEEEEEEEE", type: "hexadecimal", events: 40, bits: 160, @@ -2606,14 +2616,63 @@ page.open(url, function(status) { strength: "very strong", }, { - entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE FFFFFFFF", - filtered: "AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFF", + entropy: "AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDA EEEEEEEE FFFFFFFF", + filtered: "AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDAEEEEEEEEFFFFFFFF", type: "hexadecimal", events: 48, bits: 192, words: 18, strength: "extremely strong", }, + { + entropy: "7d", + type: "card", + events: 1, + bits: 5, + words: 0, + strength: "extremely weak", + }, + { + entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks", + type: "card (full deck)", + events: 52, + bits: 226, + words: 27, + strength: "extremely strong", + }, + { + entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqsks3d", + type: "card (full deck, 1 duplicate: 3d)", + events: 53, + bits: 226, + words: 27, + strength: "extremely strong", + }, + { + entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqs3d4d", + type: "card (2 duplicates: 3d 4d)", + events: 53, + bits: 226, + words: 27, + strength: "extremely strong", + }, + { + entropy: "ac2c3c4c5c6c7c8c9ctcjcqckcad2d3d4d5d6d7d8d9dtdjdqdkdah2h3h4h5h6h7h8h9hthjhqhkhas2s3s4s5s6s7s8s9stsjsqs3d4d5d6d", + type: "card (4 duplicates: 3d 4d 5d...)", + events: 53, + bits: 226, + 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() { @@ -2621,7 +2680,7 @@ page.open(url, function(status) { }); var nextTest = function runNextTest(i) { function getFeedbackError(expected, actual) { - if (actual.indexOf(expected.filtered) == -1) { + if ("filtered" in expected && actual.indexOf(expected.filtered) == -1) { return "Filtered value not in feedback"; } if (actual.indexOf(expected.type) == -1) { @@ -2665,7 +2724,7 @@ page.open(url, function(status) { } // check feedback var feedback = page.evaluate(function() { - return $(".entropy-feedback").text(); + return $(".entropy-container").text(); }); var feedbackError = getFeedbackError(test, feedback); if (feedbackError) { @@ -2687,15 +2746,15 @@ page.open(url, function(status) { }); }, -// Entropy is truncated from the right +// Entropy is truncated from the left function() { page.open(url, function(status) { - var expected = "abandon abandon ability"; + var expected = "avocado zoo zone"; // use entropy page.evaluate(function() { $(".use-entropy").prop("checked", true).trigger("change"); var entropy = "00000000 00000000 00000000 00000000"; - entropy += "11111111 11111111 11111111 1111"; // Missing last byte, only first 8 bytes are used + entropy += "11111111 11111111 11111111 1111"; // Missing last byte $(".entropy").val(entropy).trigger("input"); }); // check the entropy is truncated from the right @@ -2746,8 +2805,6 @@ page.open(url, function(status) { // https://bip32jp.github.io/english/index.html // NOTES: // Is incompatible with: -// base 6 with leading zeros -// base 6 wth 12 words / 53 chars // base 20 function() { page.open(url, function(status) {