mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-24 12:46:45 +00:00
ask for passphrase re-entry when creating a bip39 wallet
This commit is contained in:
parent
67179127e3
commit
8e0b9a3ea0
2 changed files with 15 additions and 2 deletions
|
@ -21,11 +21,15 @@ public class KeystorePassphraseDialog extends Dialog<String> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public KeystorePassphraseDialog(String walletName, Keystore keystore) {
|
public KeystorePassphraseDialog(String walletName, Keystore keystore) {
|
||||||
|
this(walletName, keystore, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public KeystorePassphraseDialog(String walletName, Keystore keystore, boolean confirm) {
|
||||||
this.passphrase = (CustomPasswordField) TextFields.createClearablePasswordField();
|
this.passphrase = (CustomPasswordField) TextFields.createClearablePasswordField();
|
||||||
|
|
||||||
final DialogPane dialogPane = getDialogPane();
|
final DialogPane dialogPane = getDialogPane();
|
||||||
setTitle("Keystore Passphrase" + (walletName != null ? " - " + walletName : ""));
|
setTitle("Keystore Passphrase" + (walletName != null ? " - " + walletName : ""));
|
||||||
dialogPane.setHeaderText("Enter the BIP39 passphrase\nfor keystore: " + keystore.getLabel());
|
dialogPane.setHeaderText((confirm ? "Re-enter" : "Enter") + " the BIP39 passphrase\n" + (confirm ? "to confirm:" : "for keystore: " + keystore.getLabel()));
|
||||||
dialogPane.getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm());
|
dialogPane.getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm());
|
||||||
AppServices.setStageIcon(dialogPane.getScene().getWindow());
|
AppServices.setStageIcon(dialogPane.getScene().getWindow());
|
||||||
dialogPane.getButtonTypes().addAll(ButtonType.CANCEL, ButtonType.OK);
|
dialogPane.getButtonTypes().addAll(ButtonType.CANCEL, ButtonType.OK);
|
||||||
|
|
|
@ -38,6 +38,7 @@ import java.security.SecureRandom;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class MnemonicKeystoreImportPane extends TitledDescriptionPane {
|
public class MnemonicKeystoreImportPane extends TitledDescriptionPane {
|
||||||
protected final Wallet wallet;
|
protected final Wallet wallet;
|
||||||
|
@ -384,6 +385,14 @@ public class MnemonicKeystoreImportPane extends TitledDescriptionPane {
|
||||||
try {
|
try {
|
||||||
Keystore keystore = importer.getKeystore(derivation, wordEntriesProperty.get(), passphraseProperty.get());
|
Keystore keystore = importer.getKeystore(derivation, wordEntriesProperty.get(), passphraseProperty.get());
|
||||||
if(!dryrun) {
|
if(!dryrun) {
|
||||||
|
if(passphraseProperty.get() != null && !passphraseProperty.get().isEmpty()) {
|
||||||
|
KeystorePassphraseDialog keystorePassphraseDialog = new KeystorePassphraseDialog(null, keystore, true);
|
||||||
|
Optional<String> optPassphrase = keystorePassphraseDialog.showAndWait();
|
||||||
|
if(optPassphrase.isEmpty() || !optPassphrase.get().equals(passphraseProperty.get())) {
|
||||||
|
throw new ImportException("Re-entered passphrase did not match");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EventManager.get().post(new KeystoreImportEvent(keystore));
|
EventManager.get().post(new KeystoreImportEvent(keystore));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -394,7 +403,7 @@ public class MnemonicKeystoreImportPane extends TitledDescriptionPane {
|
||||||
} else if(e.getCause() != null && e.getCause().getMessage() != null && !e.getCause().getMessage().isEmpty()) {
|
} else if(e.getCause() != null && e.getCause().getMessage() != null && !e.getCause().getMessage().isEmpty()) {
|
||||||
errorMessage = e.getCause().getMessage();
|
errorMessage = e.getCause().getMessage();
|
||||||
}
|
}
|
||||||
setError("Import Error", errorMessage);
|
setError("Import Error", errorMessage + ".");
|
||||||
importButton.setDisable(false);
|
importButton.setDisable(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue