fix error initializing whirlpool on new wallet without a passphrase

This commit is contained in:
Craig Raw 2023-03-21 08:34:06 +02:00
parent 4f6981b869
commit 3bc7c7473a
3 changed files with 12 additions and 4 deletions

View file

@ -44,7 +44,7 @@ public class MnemonicKeystorePane extends TitledDescriptionPane {
protected Label invalidLabel; protected Label invalidLabel;
protected SimpleListProperty<String> wordEntriesProperty; protected SimpleListProperty<String> wordEntriesProperty;
protected final SimpleStringProperty passphraseProperty = new SimpleStringProperty(); protected final SimpleStringProperty passphraseProperty = new SimpleStringProperty("");
protected IntegerProperty defaultWordSizeProperty; protected IntegerProperty defaultWordSizeProperty;
public MnemonicKeystorePane(String title, String description, String content, String imageUrl) { public MnemonicKeystorePane(String title, String description, String content, String imageUrl) {

View file

@ -59,7 +59,7 @@ public class Soroban {
ScriptType scriptType = wallet.getScriptType(); ScriptType scriptType = wallet.getScriptType();
int purpose = scriptType.getDefaultDerivation().get(0).num(); int purpose = scriptType.getDefaultDerivation().get(0).num();
List<String> words = keystore.getSeed().getMnemonicCode(); List<String> words = keystore.getSeed().getMnemonicCode();
String passphrase = keystore.getSeed().getPassphrase().asString(); String passphrase = keystore.getSeed().getPassphrase() == null ? "" : keystore.getSeed().getPassphrase().asString();
byte[] seed = hdWalletFactory.computeSeedFromWords(words); byte[] seed = hdWalletFactory.computeSeedFromWords(words);
hdWallet = new HD_Wallet(purpose, new ArrayList<>(words), sorobanServer.getParams(), seed, passphrase); hdWallet = new HD_Wallet(purpose, new ArrayList<>(words), sorobanServer.getParams(), seed, passphrase);
bip47Account = wallet.isMasterWallet() ? wallet.getAccountIndex() : wallet.getMasterWallet().getAccountIndex(); bip47Account = wallet.isMasterWallet() ? wallet.getAccountIndex() : wallet.getMasterWallet().getAccountIndex();

View file

@ -68,6 +68,7 @@ public class Whirlpool {
private final ExpirablePoolSupplier poolSupplier; private final ExpirablePoolSupplier poolSupplier;
private final Tx0Service tx0Service; private final Tx0Service tx0Service;
private Tx0FeeTarget tx0FeeTarget = Tx0FeeTarget.BLOCKS_4; private Tx0FeeTarget tx0FeeTarget = Tx0FeeTarget.BLOCKS_4;
private Tx0FeeTarget mixFeeTarget = Tx0FeeTarget.BLOCKS_4;
private HD_Wallet hdWallet; private HD_Wallet hdWallet;
private String walletId; private String walletId;
private String mixToWalletId; private String mixToWalletId;
@ -149,7 +150,6 @@ public class Whirlpool {
} }
private Tx0Config computeTx0Config() { private Tx0Config computeTx0Config() {
Tx0FeeTarget mixFeeTarget = Tx0FeeTarget.BLOCKS_4;
return new Tx0Config(tx0ParamService, poolSupplier, tx0FeeTarget, mixFeeTarget, WhirlpoolAccount.BADBANK); return new Tx0Config(tx0ParamService, poolSupplier, tx0FeeTarget, mixFeeTarget, WhirlpoolAccount.BADBANK);
} }
@ -163,7 +163,7 @@ public class Whirlpool {
ScriptType scriptType = wallet.getScriptType(); ScriptType scriptType = wallet.getScriptType();
int purpose = scriptType.getDefaultDerivation().get(0).num(); int purpose = scriptType.getDefaultDerivation().get(0).num();
List<String> words = keystore.getSeed().getMnemonicCode(); List<String> words = keystore.getSeed().getMnemonicCode();
String passphrase = keystore.getSeed().getPassphrase().asString(); String passphrase = keystore.getSeed().getPassphrase() == null ? "" : keystore.getSeed().getPassphrase().asString();
HD_WalletFactoryGeneric hdWalletFactory = HD_WalletFactoryGeneric.getInstance(); HD_WalletFactoryGeneric hdWalletFactory = HD_WalletFactoryGeneric.getInstance();
byte[] seed = hdWalletFactory.computeSeedFromWords(words); byte[] seed = hdWalletFactory.computeSeedFromWords(words);
this.walletId = walletId; this.walletId = walletId;
@ -488,6 +488,14 @@ public class Whirlpool {
this.tx0FeeTarget = tx0FeeTarget; this.tx0FeeTarget = tx0FeeTarget;
} }
public Tx0FeeTarget getMixFeeTarget() {
return mixFeeTarget;
}
public void setMixFeeTarget(Tx0FeeTarget mixFeeTarget) {
this.mixFeeTarget = mixFeeTarget;
}
public String getWalletId() { public String getWalletId() {
return walletId; return walletId;
} }