+ function toggleSplitMnemonic() {
+ if (DOM.showSplitMnemonic.prop("checked")) {
+ DOM.splitMnemonic.removeClass("hidden");
+ }
+ else {
+ DOM.splitMnemonic.addClass("hidden");
+ }
+ }
+
+ function toggleBip85() {
+ if (DOM.showBip85.prop('checked')) {
+ DOM.bip85.removeClass('hidden');
+ toggleBip85Fields();
+ } else {
+ DOM.bip85.addClass('hidden');
+ }
+ }
+
+ function toggleBip85Fields() {
+ if (DOM.showBip85.prop('checked')) {
+ DOM.bip85mnemonicLanguageInput.addClass('hidden');
+ DOM.bip85mnemonicLengthInput.addClass('hidden');
+ DOM.bip85bytesInput.addClass('hidden');
+
+ var app = DOM.bip85application.val();
+ if (app === 'bip39') {
+ DOM.bip85mnemonicLanguageInput.removeClass('hidden');
+ DOM.bip85mnemonicLengthInput.removeClass('hidden');
+ } else if (app === 'hex') {
+ DOM.bip85bytesInput.removeClass('hidden');
+ }
+ }
+ }
+
+ function calcBip85() {
+ toggleBip85Fields();
+
+ var app = DOM.bip85application.val();
+
+ var phrase = DOM.phrase.val();
+ var passphrase = DOM.passphrase.val();
+ if (!phrase) {
+ return;
+ }
+ try {
+ var master = libs.bip85.BIP85.fromMnemonic(phrase, passphrase);
+
+ var result;
+
+ const index = parseInt(DOM.bip85index.val(), 10);
+
+ if (app === 'bip39') {
+ const language = parseInt(DOM.bip85mnemonicLanguage.val(), 10);
+ const length = parseInt(DOM.bip85mnemonicLength.val(), 10);
+
+ result = master.deriveBIP39(language, length, index).toMnemonic();
+ } else if (app === 'wif') {
+ result = master.deriveWIF(index).toWIF();
+ } else if (app === 'xprv') {
+ result = master.deriveXPRV(index).toXPRV();
+ } else if (app === 'hex') {
+ const bytes = parseInt(DOM.bip85bytes.val(), 10);
+
+ result = master.deriveHex(bytes, index).toEntropy();
+ }
+
+ hideValidationError();
+ DOM.bip85Field.val(result);
+ } catch (e) {
+ showValidationError('BIP85: ' + e.message);
+ DOM.bip85Field.val('');
+ }
+ }
+