From 05336e93a05376085de112fb6b6273dcfa43c1e1 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 7 Oct 2025 13:56:27 +0200 Subject: [PATCH] fix: Special Characters #2180 --- CHANGELOG | 2 +- .../fragments/PasswordGeneratorFragment.kt | 30 +++++++++-------- .../keepass/password/PasswordGenerator.kt | 32 ++++++++++--------- app/src/main/res/values/donottranslate.xml | 2 +- .../metadata/android/en-US/changelogs/144.txt | 2 +- .../metadata/android/fr-FR/changelogs/144.txt | 2 +- 6 files changed, 37 insertions(+), 33 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 937bdf22e..3ad936709 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,7 +6,7 @@ KeePassDX(4.2.0) * Change Passkey Backup Eligibility & Backup State #2135 #2150 * Search settings #2112 #2181 #2187 * Autofill refactoring #765 - * Small fixes #2157 #2164 #2171 #2122 + * Small fixes #2157 #2164 #2171 #2122 #2180 KeePassDX(4.1.9) * Fix landscape UI #2198 #2200 (@chenxiaolong) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt index 7a7d9c067..4be533f8e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt @@ -293,20 +293,22 @@ class PasswordGeneratorFragment : DatabaseFragment() { private fun generatePassword() { var password = "" try { - password = PasswordGenerator(resources).generatePassword(getPasswordLength(), - uppercaseCompound.isChecked, - lowercaseCompound.isChecked, - digitsCompound.isChecked, - minusCompound.isChecked, - underlineCompound.isChecked, - spaceCompound.isChecked, - specialsCompound.isChecked, - bracketsCompound.isChecked, - extendedCompound.isChecked, - getConsiderChars(), - getIgnoreChars(), - atLeastOneCompound.isChecked, - excludeAmbiguousCompound.isChecked) + password = PasswordGenerator(resources).generatePassword( + length = getPasswordLength(), + upperCase = uppercaseCompound.isChecked, + lowerCase = lowercaseCompound.isChecked, + digits = digitsCompound.isChecked, + minus = minusCompound.isChecked, + underline = underlineCompound.isChecked, + space = spaceCompound.isChecked, + specials = specialsCompound.isChecked, + brackets = bracketsCompound.isChecked, + extended = extendedCompound.isChecked, + considerChars = getConsiderChars(), + ignoreChars = getIgnoreChars(), + atLeastOneFromEach = atLeastOneCompound.isChecked, + excludeAmbiguousChar = excludeAmbiguousCompound.isChecked + ) } catch (e: Exception) { Log.e(TAG, "Unable to generate a password", e) } diff --git a/app/src/main/java/com/kunzisoft/keepass/password/PasswordGenerator.kt b/app/src/main/java/com/kunzisoft/keepass/password/PasswordGenerator.kt index 692f33557..3a1355768 100644 --- a/app/src/main/java/com/kunzisoft/keepass/password/PasswordGenerator.kt +++ b/app/src/main/java/com/kunzisoft/keepass/password/PasswordGenerator.kt @@ -33,20 +33,22 @@ import java.util.* class PasswordGenerator(private val resources: Resources) { @Throws(IllegalArgumentException::class) - fun generatePassword(length: Int, - upperCase: Boolean, - lowerCase: Boolean, - digits: Boolean, - minus: Boolean, - underline: Boolean, - space: Boolean, - specials: Boolean, - brackets: Boolean, - extended: Boolean, - considerChars: String, - ignoreChars: String, - atLeastOneFromEach: Boolean, - excludeAmbiguousChar: Boolean): String { + fun generatePassword( + length: Int, + upperCase: Boolean, + lowerCase: Boolean, + digits: Boolean, + minus: Boolean, + underline: Boolean, + space: Boolean, + specials: Boolean, + brackets: Boolean, + extended: Boolean, + considerChars: String, + ignoreChars: String, + atLeastOneFromEach: Boolean, + excludeAmbiguousChar: Boolean + ): String { // Desired password length is 0 or less if (length <= 0) { throw IllegalArgumentException(resources.getString(R.string.error_wrong_length)) @@ -228,7 +230,7 @@ class PasswordGenerator(private val resources: Resources) { private const val MINUS_CHAR = "-" private const val UNDERLINE_CHAR = "_" private const val SPACE_CHAR = " " - private const val SPECIAL_CHARS = "!\"#$%&'*+,./:;=?@\\^`" + private const val SPECIAL_CHARS = "&/,^@.#:%\\='$!?*`;+\"|~" private const val BRACKET_CHARS = "[]{}()<>" private const val AMBIGUOUS_CHARS = "iI|lLoO01" diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index ce1d86c36..71198ab22 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -462,7 +462,7 @@ - _ - &\/,^@.#":%\\='$!*`;+ + &\/,^@.#":%\\='$!?*`;+\"|~ [](){}<> ñæËÌÂÝÜ... diff --git a/fastlane/metadata/android/en-US/changelogs/144.txt b/fastlane/metadata/android/en-US/changelogs/144.txt index dc975cc8e..7c1e2daf1 100644 --- a/fastlane/metadata/android/en-US/changelogs/144.txt +++ b/fastlane/metadata/android/en-US/changelogs/144.txt @@ -3,4 +3,4 @@ * Setting to close database after a Passkey selection #2187 * Warning when overwriting existing Passkey #2124 * Autofill refactoring #765 - * Small fixes #2171 #2150 #2159 #2122 \ No newline at end of file + * Small fixes #2171 #2150 #2159 #2122 #2180 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/144.txt b/fastlane/metadata/android/fr-FR/changelogs/144.txt index 174549e2e..dd972d660 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/144.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/144.txt @@ -3,4 +3,4 @@ * Paramètre de fermeture de la base après une sélection de Passkey #2187 * Mise en garde lors de l'écrasement d'un Passkey existant #21124 * Refonte du remplissage automatique #765 - * Petites corrections #2171 #2150 #2159 #2122 \ No newline at end of file + * Petites corrections #2171 #2150 #2159 #2122 #2180 \ No newline at end of file