show user friendly error on non-ascii password

This commit is contained in:
woodser 2025-04-09 08:15:14 -04:00 committed by GitHub
parent d78709e1f9
commit 7243d7fa38
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 6 additions and 2 deletions

View file

@ -243,6 +243,11 @@ public class KeyStorage {
//noinspection ResultOfMethodCallIgnored //noinspection ResultOfMethodCallIgnored
storageDir.mkdirs(); storageDir.mkdirs();
// password must be ascii
if (password != null && !password.matches("\\p{ASCII}*")) {
throw new IllegalArgumentException("Password must be ASCII.");
}
var oldPasswordChars = oldPassword == null ? new char[0] : oldPassword.toCharArray(); var oldPasswordChars = oldPassword == null ? new char[0] : oldPassword.toCharArray();
var passwordChars = password == null ? new char[0] : password.toCharArray(); var passwordChars = password == null ? new char[0] : password.toCharArray();
try { try {

View file

@ -39,7 +39,6 @@ import static haveno.desktop.util.FormBuilder.addButtonBusyAnimationLabel;
import static haveno.desktop.util.FormBuilder.addMultilineLabel; import static haveno.desktop.util.FormBuilder.addMultilineLabel;
import static haveno.desktop.util.FormBuilder.addPasswordTextField; import static haveno.desktop.util.FormBuilder.addPasswordTextField;
import static haveno.desktop.util.FormBuilder.addTitledGroupBg; import static haveno.desktop.util.FormBuilder.addTitledGroupBg;
import org.apache.commons.lang3.exception.ExceptionUtils;
import haveno.desktop.util.Layout; import haveno.desktop.util.Layout;
import haveno.desktop.util.validation.PasswordValidator; import haveno.desktop.util.validation.PasswordValidator;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
@ -160,7 +159,7 @@ public class PasswordView extends ActivatableView<GridPane, Void> {
} catch (Throwable t) { } catch (Throwable t) {
log.error("Error applying password: {}\n", t.getMessage(), t); log.error("Error applying password: {}\n", t.getMessage(), t);
new Popup() new Popup()
.warning(Res.get("password.walletEncryptionFailed") + "\n\n" + ExceptionUtils.getStackTrace(t)) .warning(Res.get("password.walletEncryptionFailed") + "\n\n" + t.getMessage())
.show(); .show();
} }
} }