mirror of
https://github.com/OneKeyHQ/bip39.git
synced 2026-05-04 07:55:59 +00:00
Detect and warn of filtered entropy
This commit is contained in:
@@ -164,6 +164,13 @@
|
||||
<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>
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
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");
|
||||
@@ -1061,6 +1062,16 @@
|
||||
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) {
|
||||
|
||||
@@ -4306,6 +4306,44 @@ page.open(url, function(status) {
|
||||
});
|
||||
},
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user