<textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
</div>
</div>
+ <div class="form-group litecoin-ltub-container hidden">
+ <label for="litecoin-use-ltub" class="col-sm-2 control-label" data-translate>Prefixes</label>
+ <div class="col-sm-10 checkbox">
+ <label>
+ <input type="checkbox" id="litecoin-use-ltub" class="litecoin-use-ltub">
+ Use <code>Ltpv / Ltub</code> instead of <code>xprv / xpub</code>
+ </label>
+ </div>
+ </div>
</form>
</div>
</div>
wif: 0xef
},
litecoin: {
+ messagePrefix: '\x19Litecoin Signed Message:\n',
+ bip32: {
+ public: 0x0488b21e,
+ private: 0x0488ade4,
+ },
+ pubKeyHash: 0x30,
+ scriptHash: 0x32,
+ wif: 0xb0
+ },
+ litecoinLtub: {
messagePrefix: '\x19Litecoin Signed Message:\n',
bip32: {
public: 0x019da462,
}).call(this,require("buffer").Buffer)
},{"bs58check":80,"buffer":4}]},{},[33])(33)
-});
\ No newline at end of file
+});
var showPubKey = true;
var showPrivKey = true;
var showQr = false;
+ var litecoinUseLtub = false;
var entropyChangeTimeoutEvent = null;
var phraseChangeTimeoutEvent = null;
DOM.generate = $(".generate");
DOM.seed = $(".seed");
DOM.rootKey = $(".root-key");
+ DOM.litecoinLtubContainer = $(".litecoin-ltub-container");
+ DOM.litecoinUseLtub = $(".litecoin-use-ltub");
DOM.extendedPrivKey = $(".extended-priv-key");
DOM.extendedPubKey = $(".extended-pub-key");
DOM.bip32tab = $("#bip32-tab");
DOM.generate.on("click", generateClicked);
DOM.more.on("click", showMore);
DOM.rootKey.on("input", delayedRootKeyChanged);
+ DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
DOM.bip32path.on("input", calcForDerivationPath);
DOM.bip44account.on("input", calcForDerivationPath);
DOM.bip44change.on("input", calcForDerivationPath);
function networkChanged(e) {
clearDerivedKeys();
clearAddressesList();
+ DOM.litecoinLtubContainer.addClass("hidden");
var networkIndex = e.target.value;
var network = networks[networkIndex];
network.onSelect();
calcForDerivationPath();
}
+ function litecoinUseLtubChanged() {
+ litecoinUseLtub = DOM.litecoinUseLtub.prop("checked");
+ if (litecoinUseLtub) {
+ network = bitcoinjs.bitcoin.networks.litecoinLtub;
+ }
+ else {
+ network = bitcoinjs.bitcoin.networks.litecoin;
+ }
+ phraseChanged();
+ }
+
function calcForDerivationPath() {
clearDerivedKeys();
clearAddressesList();
onSelect: function() {
network = bitcoinjs.bitcoin.networks.litecoin;
setHdCoin(2);
+ DOM.litecoinLtubContainer.removeClass("hidden");
},
},
{
});
},
+// Litecoin uses xprv by default, and can optionally be set to ltpv
+// github issue 96
+// https://github.com/iancoleman/bip39/issues/96
+// Issue with extended keys on Litecoin
+function() {
+page.open(url, function(status) {
+ // set the phrase and coin
+ page.evaluate(function() {
+ $(".phrase").val("abandon abandon ability");
+ $(".network option[selected]").removeAttr("selected");
+ $(".network option").filter(function() {
+ return $(this).html() == "LTC - Litecoin";
+ }).prop("selected", true);
+ $(".network").trigger("change");
+ $(".phrase").trigger("input");
+ });
+ // check the extended key is generated correctly
+ waitForGenerate(function() {
+ var expected = "xprv9s21ZrQH143K2jkGDCeTLgRewT9F2pH5JZs2zDmmjXes34geVnFiuNa8KTvY5WoYvdn4Ag6oYRoB6cXtc43NgJAEqDXf51xPm6fhiMCKwpi";
+ var actual = page.evaluate(function() {
+ return $(".root-key").val();
+ });
+ if (actual != expected) {
+ console.log("Litecoin root key does not default to xprv");
+ console.log("Expected: " + expected);
+ console.log("Actual: " + actual);
+ fail();
+ }
+ // set litecoin to use ltub
+ page.evaluate(function() {
+ $(".addresses").empty();
+ $(".litecoin-use-ltub").prop("checked", true);
+ $(".litecoin-use-ltub").trigger("change");
+ });
+ waitForGenerate(function() {
+ var expected = "Ltpv71G8qDifUiNesiPqf6h5V6eQ8ic77oxQiYtawiACjBEx3sTXNR2HGDGnHETYxESjqkMLFBkKhWVq67ey1B2MKQXannUqNy1RZVHbmrEjnEU";
+ var actual = page.evaluate(function() {
+ return $(".root-key").val();
+ });
+ if (actual != expected) {
+ console.log("Litecoin root key cannot be set to use ltub");
+ console.log("Expected: " + expected);
+ console.log("Actual: " + actual);
+ fail();
+ }
+ next();
+ });
+ });
+});
+},
+
// If you wish to add more tests, do so here...
// Here is a blank test template