aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/index.html5
-rw-r--r--src/js/index.js12
-rw-r--r--tests/spec/tests.js32
3 files changed, 49 insertions, 0 deletions
diff --git a/src/index.html b/src/index.html
index df5bf67..4056610 100644
--- a/src/index.html
+++ b/src/index.html
@@ -113,6 +113,11 @@
113 <option value="21">21 <span>Words</span></option> 113 <option value="21">21 <span>Words</span></option>
114 <option value="24">24 <span>Words</span></option> 114 <option value="24">24 <span>Words</span></option>
115 </select> 115 </select>
116 <p class="weak-entropy-override-warning hidden">
117 <span class="text-danger">
118 The mnemonic will appear more secure than it really is.
119 </span>
120 </p>
116 </div> 121 </div>
117 </div> 122 </div>
118 <div class="col-sm-3"> 123 <div class="col-sm-3">
diff --git a/src/js/index.js b/src/js/index.js
index 0a2d362..e96f4a9 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -40,6 +40,7 @@
40 DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes"); 40 DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes");
41 DOM.entropyChecksum = DOM.entropyContainer.find(".checksum"); 41 DOM.entropyChecksum = DOM.entropyContainer.find(".checksum");
42 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length"); 42 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
43 DOM.entropyWeakEntropyOverrideWarning = DOM.entropyContainer.find(".weak-entropy-override-warning");
43 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning"); 44 DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
44 DOM.phrase = $(".phrase"); 45 DOM.phrase = $(".phrase");
45 DOM.passphrase = $(".passphrase"); 46 DOM.passphrase = $(".passphrase");
@@ -1190,6 +1191,17 @@
1190 mnemonicLength = parseInt(mnemonicLength); 1191 mnemonicLength = parseInt(mnemonicLength);
1191 var numberOfBits = 32 * mnemonicLength / 3; 1192 var numberOfBits = 32 * mnemonicLength / 3;
1192 bits = bits.substring(0, numberOfBits); 1193 bits = bits.substring(0, numberOfBits);
1194 // show warning for weak entropy override
1195 if (mnemonicLength / 3 * 32 > entropy.binaryStr.length) {
1196 DOM.entropyWeakEntropyOverrideWarning.removeClass("hidden");
1197 }
1198 else {
1199 DOM.entropyWeakEntropyOverrideWarning.addClass("hidden");
1200 }
1201 }
1202 else {
1203 // hide warning for weak entropy override
1204 DOM.entropyWeakEntropyOverrideWarning.addClass("hidden");
1193 } 1205 }
1194 // Discard trailing entropy 1206 // Discard trailing entropy
1195 var bitsToUse = Math.floor(bits.length / 32) * 32; 1207 var bitsToUse = Math.floor(bits.length / 32) * 32;
diff --git a/tests/spec/tests.js b/tests/spec/tests.js
index 945a923..034b50f 100644
--- a/tests/spec/tests.js
+++ b/tests/spec/tests.js
@@ -3530,4 +3530,36 @@ it('Does not show a warning if generating strong mnemonics', function(done) {
3530 }); 3530 });
3531}); 3531});
3532 3532
3533it('Shows a warning if overriding weak entropy with longer mnemonics', function(done) {
3534 driver.findElement(By.css('.use-entropy'))
3535 .click();
3536 driver.findElement(By.css('.entropy'))
3537 .sendKeys("0123456789abcdef"); // 6 words
3538 driver.executeScript(function() {
3539 $(".mnemonic-length").val("12").trigger("change");
3540 });
3541 driver.findElement(By.css(".weak-entropy-override-warning"))
3542 .getAttribute("class")
3543 .then(function(classes) {
3544 expect(classes).not.toContain("hidden");
3545 done();
3546 });
3547});
3548
3549it('Does not show a warning if entropy is stronger than mnemonic length', function(done) {
3550 driver.findElement(By.css('.use-entropy'))
3551 .click();
3552 driver.findElement(By.css('.entropy'))
3553 .sendKeys("0123456789abcdef0123456789abcdef0123456789abcdef"); // 18 words
3554 driver.executeScript(function() {
3555 $(".mnemonic-length").val("12").trigger("change");
3556 });
3557 driver.findElement(By.css(".weak-entropy-override-warning"))
3558 .getAttribute("class")
3559 .then(function(classes) {
3560 expect(classes).toContain("hidden");
3561 done();
3562 });
3563});
3564
3533}); 3565});