mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Merge branch 'feature/Duplicate_UUID_Database1' into develop
This commit is contained in:
@@ -363,7 +363,7 @@ class Database {
|
||||
|
||||
when {
|
||||
// Header of database KDB
|
||||
DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(DatabaseInputKDB()
|
||||
DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(DatabaseInputKDB(fixDuplicateUUID)
|
||||
.openDatabase(bufferedInputStream,
|
||||
password,
|
||||
keyFileInputStream,
|
||||
|
||||
@@ -74,7 +74,7 @@ import java.util.Arrays
|
||||
/**
|
||||
* Load a KDB database file.
|
||||
*/
|
||||
class DatabaseInputKDB : DatabaseInput<DatabaseKDB>() {
|
||||
class DatabaseInputKDB(private val fixDuplicateUUID: Boolean = false) : DatabaseInput<DatabaseKDB>() {
|
||||
|
||||
private lateinit var mDatabaseToOpen: DatabaseKDB
|
||||
|
||||
@@ -107,6 +107,8 @@ class DatabaseInputKDB : DatabaseInput<DatabaseKDB>() {
|
||||
|
||||
progressTaskUpdater?.updateMessage(R.string.retrieving_db_key)
|
||||
mDatabaseToOpen = DatabaseKDB()
|
||||
|
||||
mDatabaseToOpen.changeDuplicateId = fixDuplicateUUID
|
||||
mDatabaseToOpen.retrieveMasterKey(password, keyInputStream)
|
||||
|
||||
// Select algorithm
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
package com.kunzisoft.keepass.database.file.output
|
||||
|
||||
import com.kunzisoft.keepass.database.element.entry.EntryKDB
|
||||
import com.kunzisoft.keepass.database.file.output.GroupOutputKDB.Companion.GROUPID_FIELD_SIZE
|
||||
import com.kunzisoft.keepass.stream.LEDataOutputStream
|
||||
import com.kunzisoft.keepass.utils.DatabaseInputOutputUtils
|
||||
|
||||
@@ -51,12 +52,12 @@ class EntryOutputKDB
|
||||
|
||||
// Group ID
|
||||
mOutputStream.write(GROUPID_FIELD_TYPE)
|
||||
mOutputStream.write(LONG_FOUR)
|
||||
mOutputStream.write(GROUPID_FIELD_SIZE)
|
||||
mOutputStream.write(LEDataOutputStream.writeIntBuf(mEntry.parent!!.id))
|
||||
|
||||
// Image ID
|
||||
mOutputStream.write(IMAGEID_FIELD_TYPE)
|
||||
mOutputStream.write(LONG_FOUR)
|
||||
mOutputStream.write(IMAGEID_FIELD_SIZE)
|
||||
mOutputStream.write(LEDataOutputStream.writeIntBuf(mEntry.icon.iconId))
|
||||
|
||||
// Title
|
||||
@@ -138,12 +139,12 @@ class EntryOutputKDB
|
||||
val BINARY_DESC_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(13)
|
||||
val BINARY_DATA_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(14)
|
||||
val END_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(0xFFFF)
|
||||
val LONG_FOUR:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
|
||||
val UUID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(16)
|
||||
val DATE_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(5)
|
||||
val IMAGEID_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val LEVEL_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val FLAGS_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val IMAGEID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val LEVEL_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val FLAGS_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val ZERO_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(0)
|
||||
val ZERO_FIVE:ByteArray = byteArrayOf(0x00, 0x00, 0x00, 0x00, 0x00)
|
||||
}
|
||||
|
||||
@@ -96,12 +96,12 @@ class GroupOutputKDB (private val mGroup: GroupKDB, private val mOutputStream: O
|
||||
val LEVEL_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(8)
|
||||
val FLAGS_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(9)
|
||||
val END_FIELD_TYPE:ByteArray = LEDataOutputStream.writeUShortBuf(0xFFFF)
|
||||
val LONG_FOUR:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val GROUPID_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
|
||||
val GROUPID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val DATE_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(5)
|
||||
val IMAGEID_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val IMAGEID_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val LEVEL_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(2)
|
||||
val FLAGS_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val FLAGS_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(4)
|
||||
val ZERO_FIELD_SIZE:ByteArray = LEDataOutputStream.writeIntBuf(0)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user