mirror of
https://github.com/OneKeyHQ/bip39.git
synced 2026-05-23 17:14:45 +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>
|
<label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
|
||||||
<div class="col-sm-7">
|
<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>
|
<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">
|
<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>
|
<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>
|
<div class="crack-time col-sm-3 form-control-static"></div>
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
|
DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
|
||||||
DOM.entropyBinary = DOM.entropyContainer.find(".binary");
|
DOM.entropyBinary = DOM.entropyContainer.find(".binary");
|
||||||
DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
|
DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
|
||||||
|
DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
|
||||||
DOM.phrase = $(".phrase");
|
DOM.phrase = $(".phrase");
|
||||||
DOM.passphrase = $(".passphrase");
|
DOM.passphrase = $(".passphrase");
|
||||||
DOM.generateContainer = $(".generate-container");
|
DOM.generateContainer = $(".generate-container");
|
||||||
@@ -1061,6 +1062,16 @@
|
|||||||
DOM.entropyWordCount.text(wordCount);
|
DOM.entropyWordCount.text(wordCount);
|
||||||
DOM.entropyBinary.text(entropy.binaryStr);
|
DOM.entropyBinary.text(entropy.binaryStr);
|
||||||
DOM.entropyBitsPerEvent.text(bitsPerEvent);
|
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) {
|
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...
|
// If you wish to add more tests, do so here...
|
||||||
|
|
||||||
// Here is a blank test template
|
// Here is a blank test template
|
||||||
|
|||||||
Reference in New Issue
Block a user