var phraseChangeTimeoutEvent = null;
var rootKeyChangedTimeoutEvent = null;
+ var generationProcesses = [];
+
var DOM = {};
DOM.network = $(".network");
DOM.phraseNetwork = $("#network-phrase");
}
function displayAddresses(start, total) {
- for (var i=0; i<total; i++) {
- var index = i + start;
- new TableRow(index);
- }
+ generationProcesses.push(new (function() {
+
+ var rows = [];
+
+ this.stop = function() {
+ for (var i=0; i<rows.length; i++) {
+ rows[i].shouldGenerate = false;
+ }
+ }
+
+ for (var i=0; i<total; i++) {
+ var index = i + start;
+ rows.push(new TableRow(index));
+ }
+
+ })());
}
function TableRow(index) {
+ var self = this;
+ this.shouldGenerate = true;
var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
function init() {
function calculateValues() {
setTimeout(function() {
+ if (!self.shouldGenerate) {
+ return;
+ }
var key = "";
if (useHardenedAddresses) {
key = bip32ExtendedKey.deriveHardened(index);
if (useHardenedAddresses) {
indexText = indexText + "'";
}
+ // Ethereum values are different
+ if (networks[DOM.network.val()].name == "Ethereum") {
+ var privKeyBuffer = key.privKey.d.toBuffer();
+ privkey = privKeyBuffer.toString('hex');
+ var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
+ address = "0x" + addressBuffer.toString('hex');
+ }
addAddressToList(indexText, address, pubkey, privkey);
}, 50)
}
function clearAddressesList() {
DOM.addresses.empty();
+ stopGenerating();
+ }
+
+ function stopGenerating() {
+ while (generationProcesses.length > 0) {
+ var generation = generationProcesses.shift();
+ generation.stop();
+ }
}
function clearKey() {
var closestWord = words[0];
for (var i=0; i<words.length; i++) {
var comparedTo = words[i];
- if (comparedTo.indexOf(word) == 0) return comparedTo;
-
+ if (comparedTo.indexOf(word) == 0) {
+ return comparedTo;
+ }
var distance = Levenshtein.get(word, comparedTo);
if (distance < minDistance) {
closestWord = comparedTo;
var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
var hex = sjcl.codec.hex.fromBits(hash);
bits = BigInteger.parse(hex, 16).toString(2);
- for (var i=0; i<256-bits.length; i++) {
+ while (bits.length % 256 != 0) {
bits = "0" + bits;
}
// Truncate hash to suit number of words
DOM.bip44coin.val(6);
},
},
+ {
+ name: "Ethereum",
+ onSelect: function() {
+ network = bitcoin.networks.bitcoin;
+ DOM.bip44coin.val(60);
+ },
+ },
]
init();