mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Merge branch 'develop' into feature/Stream_Binaries
This commit is contained in:
@@ -355,7 +355,8 @@ class Database {
|
||||
when {
|
||||
// Header of database KDB
|
||||
DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(DatabaseInputKDB(
|
||||
cacheDirectory)
|
||||
cacheDirectory,
|
||||
fixDuplicateUUID)
|
||||
.openDatabase(databaseInputStream,
|
||||
password,
|
||||
keyFileInputStream,
|
||||
|
||||
@@ -16,31 +16,6 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
|
||||
Derived from
|
||||
|
||||
KeePass for J2ME
|
||||
|
||||
Copyright 2007 Naomaru Itoi <nao@phoneid.org>
|
||||
|
||||
This file was derived from
|
||||
|
||||
Java clone of KeePass - A KeePass file viewer for Java
|
||||
Copyright 2006 Bill Zwicky <billzwicky@users.sourceforge.net>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package com.kunzisoft.keepass.database.file.input
|
||||
@@ -72,7 +47,9 @@ import javax.crypto.spec.SecretKeySpec
|
||||
/**
|
||||
* Load a KDB database file.
|
||||
*/
|
||||
class DatabaseInputKDB(cacheDirectory: File) : DatabaseInput<DatabaseKDB>(cacheDirectory) {
|
||||
class DatabaseInputKDB(cacheDirectory: File,
|
||||
private val fixDuplicateUUID: Boolean = false)
|
||||
: DatabaseInput<DatabaseKDB>(cacheDirectory) {
|
||||
|
||||
private lateinit var mDatabaseToOpen: DatabaseKDB
|
||||
|
||||
@@ -107,6 +84,8 @@ class DatabaseInputKDB(cacheDirectory: File) : DatabaseInput<DatabaseKDB>(cacheD
|
||||
|
||||
progressTaskUpdater?.updateMessage(R.string.retrieving_db_key)
|
||||
mDatabaseToOpen = DatabaseKDB()
|
||||
|
||||
mDatabaseToOpen.changeDuplicateId = fixDuplicateUUID
|
||||
mDatabaseToOpen.retrieveMasterKey(password, keyInputStream)
|
||||
|
||||
// Select algorithm
|
||||
|
||||
@@ -21,6 +21,7 @@ package com.kunzisoft.keepass.database.file.output
|
||||
|
||||
import com.kunzisoft.keepass.database.element.database.DatabaseKDB
|
||||
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.*
|
||||
import com.kunzisoft.keepass.utils.StringDatabaseKDBUtils
|
||||
import java.io.IOException
|
||||
@@ -52,12 +53,12 @@ class EntryOutputKDB
|
||||
|
||||
// Group ID
|
||||
mOutputStream.write(GROUPID_FIELD_TYPE)
|
||||
mOutputStream.write(LONG_FOUR)
|
||||
mOutputStream.write(GROUPID_FIELD_SIZE)
|
||||
mOutputStream.write(intTo4Bytes(mEntry.parent!!.id))
|
||||
|
||||
// Image ID
|
||||
mOutputStream.write(IMAGEID_FIELD_TYPE)
|
||||
mOutputStream.write(LONG_FOUR)
|
||||
mOutputStream.write(IMAGEID_FIELD_SIZE)
|
||||
mOutputStream.write(intTo4Bytes(mEntry.icon.iconId))
|
||||
|
||||
// Title
|
||||
@@ -162,12 +163,13 @@ class EntryOutputKDB
|
||||
val BINARY_DESC_FIELD_TYPE:ByteArray = uShortTo2Bytes(13)
|
||||
val BINARY_DATA_FIELD_TYPE:ByteArray = uShortTo2Bytes(14)
|
||||
val END_FIELD_TYPE:ByteArray = uShortTo2Bytes(0xFFFF)
|
||||
|
||||
val LONG_FOUR:ByteArray = intTo4Bytes(4)
|
||||
val UUID_FIELD_SIZE:ByteArray = intTo4Bytes(16)
|
||||
val DATE_FIELD_SIZE:ByteArray = intTo4Bytes(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 = intTo4Bytes(4)
|
||||
val LEVEL_FIELD_SIZE:ByteArray = intTo4Bytes(4)
|
||||
val FLAGS_FIELD_SIZE:ByteArray = intTo4Bytes(4)
|
||||
val ZERO_FIELD_SIZE:ByteArray = intTo4Bytes(0)
|
||||
val ZERO_FIVE:ByteArray = byteArrayOf(0x00, 0x00, 0x00, 0x00, 0x00)
|
||||
}
|
||||
|
||||
@@ -97,13 +97,12 @@ class GroupOutputKDB (private val mGroup: GroupKDB, private val mOutputStream: O
|
||||
val LEVEL_FIELD_TYPE:ByteArray = uShortTo2Bytes(8)
|
||||
val FLAGS_FIELD_TYPE:ByteArray = uShortTo2Bytes(9)
|
||||
val END_FIELD_TYPE:ByteArray = uShortTo2Bytes(0xFFFF)
|
||||
val LONG_FOUR:ByteArray = intTo4Bytes(4)
|
||||
val GROUPID_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
|
||||
val GROUPID_FIELD_SIZE:ByteArray = intTo4Bytes(4)
|
||||
val DATE_FIELD_SIZE:ByteArray = intTo4Bytes(5)
|
||||
val IMAGEID_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val IMAGEID_FIELD_SIZE:ByteArray = intTo4Bytes(4)
|
||||
val LEVEL_FIELD_SIZE:ByteArray = intTo4Bytes(2)
|
||||
val FLAGS_FIELD_SIZE:ByteArray = LONG_FOUR
|
||||
val FLAGS_FIELD_SIZE:ByteArray = intTo4Bytes(4)
|
||||
val ZERO_FIELD_SIZE:ByteArray = intTo4Bytes(0)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user