<label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
<div class="col-sm-7">
<textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts either binary, base 6, 6-sided dice, base 10, hexadecimal or cards" data-translate-placeholder></textarea>
+ <div class="row filter-warning text-danger hidden">
+ <p class="col-sm-12">
+ <strong>
+ Some characters have been discarded
+ </strong>
+ </p>
+ </div>
<div class="row">
<label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</span></label>
<div class="crack-time col-sm-3 form-control-static"></div>
DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
DOM.entropyBinary = DOM.entropyContainer.find(".binary");
DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
+ DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
DOM.phrase = $(".phrase");
DOM.passphrase = $(".passphrase");
DOM.generateContainer = $(".generate-container");
DOM.entropyWordCount.text(wordCount);
DOM.entropyBinary.text(entropy.binaryStr);
DOM.entropyBitsPerEvent.text(bitsPerEvent);
+ // detect and warn of filtering
+ var rawNoSpaces = DOM.entropy.val().replace(/\s/g, "");
+ var cleanNoSpaces = entropy.cleanStr.replace(/\s/g, "");
+ var isFiltered = rawNoSpaces.length != cleanNoSpaces.length;
+ if (isFiltered) {
+ DOM.entropyFilterWarning.removeClass('hidden');
+ }
+ else {
+ DOM.entropyFilterWarning.addClass('hidden');
+ }
}
function getEntropyTypeStr(entropy) {
});
},
+// github issue 99
+// https://github.com/iancoleman/bip39/issues/99#issuecomment-327094159
+// "warn me emphatically when they have detected invalid input" to the entropy field
+// A warning is shown when entropy is filtered and discarded
+function() {
+page.open(url, function(status) {
+ // use entropy
+ page.evaluate(function() {
+ $(".use-entropy").prop("checked", true).trigger("change");
+ $(".entropy").val("00000000 00000000 00000000 00000000").trigger("input");
+ });
+ // check the filter warning does not show
+ waitForGenerate(function() {
+ var warningIsHidden = page.evaluate(function() {
+ return $(".entropy-container .filter-warning").hasClass("hidden");
+ });
+ if (!warningIsHidden) {
+ console.log("Entropy filter warning is showing when it should not");
+ fail();
+ }
+ page.evaluate(function() {
+ $(".entropy").val("10000000 zxcvbn 00000000 00000000 00000000").trigger("input");
+ });
+ // check the filter warning shows
+ waitForEntropyFeedback(function() {
+ var warningIsHidden = page.evaluate(function() {
+ return $(".entropy-container .filter-warning").hasClass("hidden");
+ });
+ if (warningIsHidden) {
+ console.log("Entropy filter warning is not showing when it should");
+ fail();
+ }
+ next();
+ });
+ });
+});
+},
+
// If you wish to add more tests, do so here...
// Here is a blank test template