DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes");
DOM.entropyChecksum = DOM.entropyContainer.find(".checksum");
DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
+ DOM.entropyWeakEntropyOverrideWarning = DOM.entropyContainer.find(".weak-entropy-override-warning");
DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
DOM.phrase = $(".phrase");
DOM.passphrase = $(".passphrase");
DOM.bip141path = $("#bip141-path");
DOM.bip141semantics = $(".bip141-semantics");
DOM.generatedStrength = $(".generate-container .strength");
+ DOM.generatedStrengthWarning = $(".generate-container .warning");
DOM.hardenedAddresses = $(".hardened-addresses");
- DOM.useBitpayAddressesContainer = $(".use-bitpay-addresses-container");
- DOM.useBitpayAddresses = $(".use-bitpay-addresses");
+ DOM.bitcoinCashAddressTypeContainer = $(".bch-addr-type-container");
+ DOM.bitcoinCashAddressType = $("[name=bch-addr-type]")
DOM.useBip38 = $(".use-bip38");
DOM.bip38Password = $(".bip38-password");
DOM.addresses = $(".addresses");
function init() {
// Events
+ DOM.generatedStrength.on("change", generatedStrengthChanged);
DOM.network.on("change", networkChanged);
DOM.bip32Client.on("change", bip32ClientChanged);
DOM.useEntropy.on("change", setEntropyVisibility);
DOM.privateKeyToggle.on("click", togglePrivateKeys);
DOM.csvTab.on("click", updateCsv);
DOM.languages.on("click", languageChanged);
- DOM.useBitpayAddresses.on("change", useBitpayAddressesChange);
+ DOM.bitcoinCashAddressType.on("change", bitcoinCashAddressTypeChange);
setQrEvents(DOM.showQrEls);
disableForms();
hidePending();
// Event handlers
+ function generatedStrengthChanged() {
+ var strength = parseInt(DOM.generatedStrength.val());
+ if (strength < 12) {
+ DOM.generatedStrengthWarning.removeClass("hidden");
+ }
+ else {
+ DOM.generatedStrengthWarning.addClass("hidden");
+ }
+ }
+
function networkChanged(e) {
clearDerivedKeys();
clearAddressesList();
DOM.litecoinLtubContainer.addClass("hidden");
- DOM.useBitpayAddressesContainer.addClass("hidden");
+ DOM.bitcoinCashAddressTypeContainer.addClass("hidden");
var networkIndex = e.target.value;
var network = networks[networkIndex];
network.onSelect();
}, 50);
}
- function useBitpayAddressesChange() {
- setBitcoinCashNetworkValues();
+ function bitcoinCashAddressTypeChange() {
phraseChanged();
}
privkey = convertRipplePriv(privkey);
address = convertRippleAdrr(address);
}
+ // Bitcoin Cash address format may vary
+ if (networks[DOM.network.val()].name == "BCH - Bitcoin Cash") {
+ var bchAddrType = DOM.bitcoinCashAddressType.filter(":checked").val();
+ if (bchAddrType == "cashaddr") {
+ address = bchaddr.toCashAddress(address);
+ }
+ else if (bchAddrType == "bitpay") {
+ address = bchaddr.toBitpayAddress(address);
+ }
+ }
// Segwit addresses are different
if (isSegwit) {
if (!segwitAvailable) {
function wordArrayToPhrase(words) {
var phrase = words.join(" ");
var language = getLanguageFromPhrase(phrase);
- if (language == "japanese" || language == "korean") {
+ if (language == "japanese") {
phrase = words.join("\u3000");
}
return phrase;
mnemonicLength = parseInt(mnemonicLength);
var numberOfBits = 32 * mnemonicLength / 3;
bits = bits.substring(0, numberOfBits);
+ // show warning for weak entropy override
+ if (mnemonicLength / 3 * 32 > entropy.binaryStr.length) {
+ DOM.entropyWeakEntropyOverrideWarning.removeClass("hidden");
+ }
+ else {
+ DOM.entropyWeakEntropyOverrideWarning.addClass("hidden");
+ }
+ }
+ else {
+ // hide warning for weak entropy override
+ DOM.entropyWeakEntropyOverrideWarning.addClass("hidden");
}
// Discard trailing entropy
var bitsToUse = Math.floor(bits.length / 32) * 32;
DOM.bip141unavailable.removeClass("hidden");
}
- function useBitpayAddresses() {
- return !(DOM.useBitpayAddresses.prop("checked"));
- }
-
- function setBitcoinCashNetworkValues() {
- if (useBitpayAddresses()) {
- network = bitcoinjs.bitcoin.networks.bitcoin;
- }
- else {
- network = bitcoinjs.bitcoin.networks.bitcoinCashBitbpay;
- }
- }
-
function adjustNetworkForSegwit() {
// If segwit is selected the xpub/xprv prefixes need to be adjusted
// to avoid accidentally importing BIP49 xpub to BIP44 watch only
segwitAvailable: false,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.axe;
- setHdCoin(0);
+ setHdCoin(4242);
},
},
{
name: "BCH - Bitcoin Cash",
segwitAvailable: false,
onSelect: function() {
- DOM.useBitpayAddressesContainer.removeClass("hidden");
- setBitcoinCashNetworkValues();
+ DOM.bitcoinCashAddressTypeContainer.removeClass("hidden");
setHdCoin(145);
},
},
setHdCoin(141);
},
},
+ {
+ name: "KOBO - Kobocoin",
+ bip49available: false,
+ onSelect: function() {
+ network = bitcoinjs.bitcoin.networks.kobocoin;
+ setHdCoin(196);
+ },
+ },
{
name: "LBC - Library Credits",
segwitAvailable: false,
},
{
name: "VTC - Vertcoin",
- segwitAvailable: false,
+ segwitAvailable: true,
onSelect: function() {
network = bitcoinjs.bitcoin.networks.vertcoin;
setHdCoin(28);
setHdCoin(136);
},
},
+ {
+ name: "ZEC - Zcash",
+ segwitAvailable: false,
+ onSelect: function() {
+ network = bitcoinjs.bitcoin.networks.zcash;
+ setHdCoin(133);
+ },
+ },
]
var clients = [