Compare commits

...

17 Commits

Author SHA1 Message Date
J-Jamet
2928b7daa3 Merge branch 'release/2.9.11' 2021-01-16 19:09:22 +01:00
J-Jamet
3a55dea276 Merge branch 'develop' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2021-01-16 18:54:47 +01:00
J-Jamet
2a25213d66 Update CHANGELOG 2021-01-16 18:49:11 +01:00
J-Jamet
035ffd8135 Fix hexadecimal keyfile #861 2021-01-16 18:46:17 +01:00
J-Jamet
b040487f1f Use decodeHex method 2021-01-15 18:16:46 +01:00
J-Jamet
6fc821aecf Fix keyx file version 2 #844 2021-01-15 17:00:29 +01:00
J-Jamet
cdceb1fb6f Fix keyx file version 2 #844 2021-01-15 16:57:29 +01:00
J-Jamet
07d185913d Upgrade to 2.9.11 2021-01-15 16:35:25 +01:00
Eric
f2a245a9c8 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2021-01-15 14:19:14 +01:00
Oliver Cervera
33338f4759 Translated using Weblate (Italian)
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2021-01-15 14:19:13 +01:00
J-Jamet
f7a4370b29 Merge tag '2.9.10' into develop
2.9.10
2021-01-15 01:53:07 +01:00
Oğuz Ersen
d619e089c0 Translated using Weblate (Turkish)
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2021-01-14 23:11:57 +01:00
Ihor Hordiichuk
3c50348a79 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2021-01-14 23:11:56 +01:00
solokot
167ea3b82b Translated using Weblate (Russian)
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2021-01-14 23:11:56 +01:00
WaldiS
9eda3e62f7 Translated using Weblate (Polish)
Currently translated at 99.0% (502 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2021-01-14 23:11:56 +01:00
Kunzisoft
99c4319b51 Translated using Weblate (French)
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2021-01-14 23:11:55 +01:00
Retrial
790b25db65 Translated using Weblate (Greek)
Currently translated at 100.0% (507 of 507 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2021-01-14 23:11:55 +01:00
15 changed files with 92 additions and 27 deletions

View File

@@ -1,3 +1,7 @@
KeePassDX(2.9.11)
* Add Keyfile XML version 2 (fix hex) #844
* Fix hex Keyfile #861
KeePassDX(2.9.10)
* Try to fix autofill #852
* Fix database change dialog displayed too often #853

View File

@@ -12,8 +12,8 @@ android {
applicationId "com.kunzisoft.keepass"
minSdkVersion 14
targetSdkVersion 30
versionCode = 54
versionName = "2.9.10"
versionCode = 55
versionName = "2.9.11"
multiDexEnabled true
testApplicationId = "com.kunzisoft.keepass.tests"

View File

@@ -43,11 +43,11 @@ import com.kunzisoft.keepass.database.element.security.MemoryProtectionConfig
import com.kunzisoft.keepass.database.exception.UnknownKDF
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX.Companion.FILE_VERSION_32_3
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX.Companion.FILE_VERSION_32_4
import com.kunzisoft.keepass.utils.StringUtil.hexStringToByteArray
import com.kunzisoft.keepass.utils.StringUtil.removeSpaceChars
import com.kunzisoft.keepass.utils.StringUtil.toHexString
import com.kunzisoft.keepass.utils.UnsignedInt
import com.kunzisoft.keepass.utils.VariantDictionary
import org.apache.commons.codec.binary.Hex
import org.w3c.dom.Node
import java.io.File
import java.io.IOException
@@ -445,16 +445,19 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
when (xmlKeyFileVersion) {
1F -> {
// No hash in KeyFile XML version 1
return Base64.decode(dataString, BASE_64_FLAG)
}
2F -> {
if (hashString != null
&& checkKeyFileHash(dataString, hashString))
return if (hashString != null
&& checkKeyFileHash(dataString, hashString)) {
Log.i(TAG, "Successful key file hash check.")
else
Hex.decodeHex(dataString)
} else {
Log.e(TAG, "Unable to check the hash of the key file.")
null
}
}
}
return Base64.decode(dataString, BASE_64_FLAG)
}
}
}
@@ -474,7 +477,7 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
digest = MessageDigest.getInstance("SHA-256")
digest?.reset()
// hexadecimal encoding of the first 4 bytes of the SHA-256 hash of the key.
val dataDigest = digest.digest(data.hexStringToByteArray())
val dataDigest = digest.digest(Hex.decodeHex(data))
.copyOfRange(0, 4)
.toHexString()
success = dataDigest == hash
@@ -698,8 +701,8 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
private const val DEFAULT_HISTORY_MAX_SIZE = (6 * 1024 * 1024).toLong() // -1 unlimited
private const val XML_NODE_ROOT_NAME = "KeyFile"
private const val XML_NODE_META_NAME = "Meta";
private const val XML_NODE_VERSION_NAME = "Version";
private const val XML_NODE_META_NAME = "Meta"
private const val XML_NODE_VERSION_NAME = "Version"
private const val XML_NODE_KEY_NAME = "Key"
private const val XML_NODE_DATA_NAME = "Data"
private const val XML_ATTRIBUTE_DATA_HASH = "Hash"

View File

@@ -27,6 +27,7 @@ import com.kunzisoft.keepass.database.element.node.NodeId
import com.kunzisoft.keepass.database.element.node.Type
import com.kunzisoft.keepass.database.element.security.EncryptionAlgorithm
import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException
import org.apache.commons.codec.binary.Hex
import java.io.ByteArrayInputStream
import java.io.IOException
import java.io.InputStream
@@ -135,9 +136,14 @@ abstract class DatabaseVersioned<
return xmlKeyByteArray
}
// Check 32 bits key file
if (keyData.size == 32) {
return keyData
// Check 32 bytes key file
when (keyData.size) {
32 -> return keyData
64 -> try {
return Hex.decodeHex(String(keyData))
} catch (ignoredException: Exception) {
// Key is not base 64, treat it as binary data
}
}
// Hash file as binary data

View File

@@ -10,17 +10,5 @@ object StringUtil {
return this.replace("[\\r|\\n|\\t|\\s|\\u00A0]+".toRegex(), "")
}
fun String.hexStringToByteArray(): ByteArray {
val len = this.length
val data = ByteArray(len / 2)
var i = 0
while (i < len) {
data[i / 2] = ((Character.digit(this[i], 16) shl 4)
+ Character.digit(this[i + 1], 16)).toByte()
i += 2
}
return data
}
fun ByteArray.toHexString() = joinToString("") { "%02X".format(it) }
}

View File

@@ -545,4 +545,11 @@
<string name="kdf_Argon2d">Argon2d</string>
<string name="error_rebuild_list">Δεν είναι δυνατή η σωστή αναδημιουργία της λίστας.</string>
<string name="error_database_uri_null">Δεν είναι δυνατή η ανάκτηση του URI βάσης δεδομένων.</string>
<string name="autofill_inline_suggestions_keyboard">Προστέθηκαν προτάσεις αυτόματης συμπλήρωσης.</string>
<string name="autofill_inline_suggestions_summary">Απόπειρα εμφάνισης προτάσεων αυτόματης συμπλήρωσης απευθείας από ένα συμβατό πληκτρολόγιο</string>
<string name="autofill_inline_suggestions_title">Προτάσεις στην ίδια γραμμή</string>
<string name="warning_database_revoked">Πρόσβαση στο αρχείο που ανακλήθηκε από το διαχειριστή αρχείων, κλείστε τη βάση δεδομένων και ανοίξτε το ξανά από τη θέση του.</string>
<string name="warning_database_info_changed_options">Αντικαταστήστε τις εξωτερικές τροποποιήσεις αποθηκεύοντας τη βάση δεδομένων ή φορτώστε την ξανά με τις πιο πρόσφατες αλλαγές.</string>
<string name="warning_database_info_changed">Οι πληροφορίες που περιέχονται στο αρχείο της βάσης δεδομένων σας έχουν τροποποιηθεί εκτός της εφαρμογής.</string>
<string name="menu_reload_database">Επαναφόρτωση βάσης δεδομένων</string>
</resources>

View File

@@ -554,4 +554,11 @@
<string name="kdf_Argon2d">Argon2d</string>
<string name="error_rebuild_list">Impossible de reconstruire correctement la liste.</string>
<string name="error_database_uri_null">L\'URI de la base de données ne peut pas être récupéré.</string>
<string name="autofill_inline_suggestions_keyboard">Suggestions de remplissage automatique ajoutées.</string>
<string name="autofill_inline_suggestions_summary">Tente d\'afficher des suggestions de remplissage automatique directement à partir d\'un clavier compatible</string>
<string name="autofill_inline_suggestions_title">Suggestions en ligne</string>
<string name="warning_database_info_changed_options">Écraser les modifications externes en sauvegardant la base de données ou recharger-la avec les dernières modifications.</string>
<string name="warning_database_revoked">Accès au dossier révoqué par le gestionnaire de fichiers, fermer la base de données et la rouvrir à partir de son emplacement.</string>
<string name="warning_database_info_changed">Les informations contenues dans votre fichier de base de données ont été modifiées en dehors de l\'application.</string>
<string name="menu_reload_database">Recharger la base de données</string>
</resources>

View File

@@ -197,7 +197,7 @@
<string name="autofill_service_name">Autocompletamento di KeePassDX</string>
<string name="autofill_sign_in_prompt">Accedi con KeePassDX</string>
<string name="set_autofill_service_title">Imposta servizio predefinito di autocompletamento</string>
<string name="autofill_explanation_summary">Attiva l\'autocompletamento per compilare velocemente i moduli in altre app</string>
<string name="autofill_explanation_summary">Attiva l\'autocompletamento per riempire velocemente i campi in altre app</string>
<string name="password_size_title">Dimensione password generata</string>
<string name="password_size_summary">Imposta la dimensione predefinita delle password generate</string>
<string name="list_password_generator_options_title">Caratteri password</string>
@@ -235,7 +235,7 @@
<string name="other">Altro</string>
<string name="keyboard">Tastiera</string>
<string name="magic_keyboard_title">Magitastiera</string>
<string name="magic_keyboard_explanation_summary">Attiva una tastiera personale che popola le tue password e i campi di identità</string>
<string name="magic_keyboard_explanation_summary">Attiva una tastiera personale che inserisce le tue password e i campi di identità</string>
<string name="allow_no_password_title">Non consentire nessuna chiave principale</string>
<string name="allow_no_password_summary">Permetti di toccare il pulsante \"Apri\" se non sono selezionate credenziali</string>
<string name="enable_read_only_title">Protetto da scrittura</string>
@@ -548,4 +548,11 @@
<string name="kdf_Argon2d">Argon2d</string>
<string name="error_rebuild_list">Non è possibile ricostruire la lista correttamente.</string>
<string name="error_database_uri_null">Non è stato recuperato l\'indirizzo del database.</string>
<string name="autofill_inline_suggestions_keyboard">Suggerimento di riempimento aggiunto.</string>
<string name="autofill_inline_suggestions_summary">Mostra i suggerimenti di riempimento campi in una tastiera compatibile</string>
<string name="autofill_inline_suggestions_title">Suggerimenti in linea</string>
<string name="warning_database_revoked">L\'accesso al file è stato revocato dal file manager, chiudi il database e riaprilo dalla sua posizione originale.</string>
<string name="warning_database_info_changed_options">Sovrascrivi le modifiche esterne salvano il database o ricaricalo con gli ultimi cambiamenti.</string>
<string name="warning_database_info_changed">I dati nel tuo database sono stati modificati al di fuori di questa app.</string>
<string name="menu_reload_database">Ricarica database</string>
</resources>

View File

@@ -541,4 +541,15 @@
<string name="advanced_unlock_scanning_error">Błąd zaawansowanego odblokowywania: %1$s</string>
<string name="error_rebuild_list">Nie można poprawnie odbudować listy.</string>
<string name="error_database_uri_null">Nie można pobrać identyfikatora URI bazy danych.</string>
<string name="autofill_inline_suggestions_keyboard">Dodano sugestie autouzupełniania.</string>
<string name="autofill_inline_suggestions_title">Sugestie wbudowane</string>
<string name="autofill_inline_suggestions_summary">Spróbuj wyświetlić sugestie autouzupełniania bezpośrednio z kompatybilnej klawiatury</string>
<string name="temp_advanced_unlock_enable_title">Zaawansowane odblokowywanie tymczasowe</string>
<string name="advanced_unlock_prompt_not_initialized">Nie można zainicjować zaawansowanego monitu o odblokowanie.</string>
<string name="open_advanced_unlock_prompt_store_credential">Otwórz zaawansowany monit o odblokowanie, aby zapisać poświadczenia</string>
<string name="open_advanced_unlock_prompt_unlock_database">Otwórz zaawansowany monit o odblokowanie, aby odblokować bazę danych</string>
<string name="warning_database_revoked">Dostęp do pliku odwołany przez menedżera plików, zamknij bazę danych i otwórz ją ponownie z jej lokalizacji.</string>
<string name="warning_database_info_changed_options">Nadpisz zewnętrzne modyfikacje, zapisując bazę danych lub przeładuj ją z najnowszymi zmianami.</string>
<string name="warning_database_info_changed">Informacje zawarte w pliku bazy danych zostały zmodyfikowane poza aplikacją.</string>
<string name="menu_reload_database">Załaduj ponownie bazę danych</string>
</resources>

View File

@@ -545,4 +545,11 @@
<string name="kdf_Argon2d">Argon2D</string>
<string name="error_database_uri_null">Невозможно получить URI базы.</string>
<string name="error_rebuild_list">Невозможно правильно перестроить список.</string>
<string name="autofill_inline_suggestions_keyboard">Предложения автозаполнения добавлены.</string>
<string name="autofill_inline_suggestions_summary">Показывать предложения автозаполнения непосредственно в совместимой клавиатуре</string>
<string name="autofill_inline_suggestions_title">Встроенные предложения</string>
<string name="warning_database_revoked">Доступ к файлу отозван файловым менеджером, закройте базу и снова откройте.</string>
<string name="warning_database_info_changed_options">Сохранить базу, перезаписав внешние изменения, или перезагрузить её с последними изменениями.</string>
<string name="warning_database_info_changed">Информация, содержащаяся в файле базы, была изменена вне этого приложения.</string>
<string name="menu_reload_database">Перезагрузить базу</string>
</resources>

View File

@@ -529,4 +529,11 @@
<string name="kdf_Argon2d">Argon2d</string>
<string name="error_rebuild_list">Liste düzgün şekilde yeniden oluşturulamıyor.</string>
<string name="error_database_uri_null">Veri tabanı URI\'si alınamıyor.</string>
<string name="autofill_inline_suggestions_keyboard">Otomatik doldurma önerileri eklendi.</string>
<string name="autofill_inline_suggestions_summary">Doğrudan uyumlu bir klavyeden otomatik doldurma önerileri görüntülemeye çalış</string>
<string name="autofill_inline_suggestions_title">Satır içi öneriler</string>
<string name="warning_database_revoked">Dosyaya erişim dosya yöneticisi tarafından iptal edildi, veri tabanını kapatın ve bulunduğu yerden yeniden açın.</string>
<string name="warning_database_info_changed_options">Veri tabanını kaydederek veya en son değişikliklerle yeniden yükleyerek harici değişikliklerin üzerine yazın.</string>
<string name="warning_database_info_changed">Veri tabanı dosyanızda bulunan bilgiler, uygulamanın dışında değiştirildi.</string>
<string name="menu_reload_database">Veri tabanını yeniden yükle</string>
</resources>

View File

@@ -545,4 +545,11 @@
<string name="kdf_Argon2d">Argon2d</string>
<string name="error_rebuild_list">Не вдалося належним чином відновити список.</string>
<string name="error_database_uri_null">Неможливо отримати URI бази даних.</string>
<string name="autofill_inline_suggestions_keyboard">Додано пропозиції автозаповнення.</string>
<string name="autofill_inline_suggestions_summary">Спробувати показ пропозицій автозаповнення безпосередньо з сумісної клавіатури</string>
<string name="autofill_inline_suggestions_title">Вбудовані пропозиції</string>
<string name="warning_database_revoked">Доступ до файлу скасовано менеджером файлів, закрийте базу даних і знову відкрийте її з її розташування.</string>
<string name="warning_database_info_changed_options">Перезаписати зовнішні зміни, зберігши базу даних або перезавантажте її з найновішими змінами.</string>
<string name="warning_database_info_changed">Відомості, що містяться у файлі бази даних, змінено за межами застосунку.</string>
<string name="menu_reload_database">Перезавантажити базу даних</string>
</resources>

View File

@@ -545,4 +545,11 @@
<string name="kdf_Argon2d">Argon2d</string>
<string name="error_rebuild_list">无法正确地重建列表。</string>
<string name="error_database_uri_null">无法检索数据库 URI 。</string>
<string name="autofill_inline_suggestions_keyboard">已添加自动填充建议。</string>
<string name="autofill_inline_suggestions_summary">尝试直接从兼容的键盘显示自动填充建议</string>
<string name="autofill_inline_suggestions_title">内联建议</string>
<string name="warning_database_revoked">文件管理器撤销了对此文件的访问,关闭数据库并从其位置重新打开它。</string>
<string name="warning_database_info_changed_options">通过保存数据库或用最新的更改重新加载数据库来覆盖外部修改。</string>
<string name="warning_database_info_changed">数据库文件中包含的信息已在应用程序之外被修改。</string>
<string name="menu_reload_database">重新加载数据库</string>
</resources>

View File

@@ -0,0 +1,2 @@
* Add Keyfile XML version 2 (fix hex) #844
* Fix hex Keyfile #861

View File

@@ -0,0 +1,2 @@
* Ajout de fichier de clé XML version 2 (correction hex) #844
* Correction de fichier de clé hex #861