Refactor Input and Output

This commit is contained in:
J-Jamet
2019-11-27 18:59:09 +01:00
parent b7b2e8dc4e
commit b03fb12fca
13 changed files with 39 additions and 34 deletions

View File

@@ -31,10 +31,10 @@ import com.kunzisoft.keepass.database.cursor.EntryCursorKDBX
import com.kunzisoft.keepass.database.exception.* import com.kunzisoft.keepass.database.exception.*
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX
import com.kunzisoft.keepass.database.file.load.ImporterKDB import com.kunzisoft.keepass.database.file.input.DatabaseInputKDB
import com.kunzisoft.keepass.database.file.load.ImporterKDBX import com.kunzisoft.keepass.database.file.input.DatabaseInputKDBX
import com.kunzisoft.keepass.database.file.save.DatabaseOutputKDB import com.kunzisoft.keepass.database.file.output.DatabaseOutputKDB
import com.kunzisoft.keepass.database.file.save.DatabaseOutputKDBX import com.kunzisoft.keepass.database.file.output.DatabaseOutputKDBX
import com.kunzisoft.keepass.database.search.SearchDbHelper import com.kunzisoft.keepass.database.search.SearchDbHelper
import com.kunzisoft.keepass.icons.IconDrawableFactory import com.kunzisoft.keepass.icons.IconDrawableFactory
import com.kunzisoft.keepass.stream.LEDataInputStream import com.kunzisoft.keepass.stream.LEDataInputStream
@@ -355,14 +355,14 @@ class Database {
when { when {
// Header of database KDB // Header of database KDB
DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(ImporterKDB() DatabaseHeaderKDB.matchesHeader(sig1, sig2) -> setDatabaseKDB(DatabaseInputKDB()
.openDatabase(bufferedInputStream, .openDatabase(bufferedInputStream,
password, password,
keyFileInputStream, keyFileInputStream,
progressTaskUpdater)) progressTaskUpdater))
// Header of database KDBX // Header of database KDBX
DatabaseHeaderKDBX.matchesHeader(sig1, sig2) -> setDatabaseKDBX(ImporterKDBX( DatabaseHeaderKDBX.matchesHeader(sig1, sig2) -> setDatabaseKDBX(DatabaseInputKDBX(
cacheDirectory, cacheDirectory,
fixDuplicateUUID) fixDuplicateUUID)
.openDatabase(bufferedInputStream, .openDatabase(bufferedInputStream,

View File

@@ -17,14 +17,14 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.load package com.kunzisoft.keepass.database.file.input
import com.kunzisoft.keepass.database.element.DatabaseVersioned import com.kunzisoft.keepass.database.element.DatabaseVersioned
import com.kunzisoft.keepass.database.exception.LoadDatabaseException import com.kunzisoft.keepass.database.exception.LoadDatabaseException
import com.kunzisoft.keepass.tasks.ProgressTaskUpdater import com.kunzisoft.keepass.tasks.ProgressTaskUpdater
import java.io.InputStream import java.io.InputStream
abstract class Importer<PwDb : DatabaseVersioned<*, *, *, *>> { abstract class DatabaseInput<PwDb : DatabaseVersioned<*, *, *, *>> {
/** /**
* Load a versioned database file, return contents in a new DatabaseVersioned. * Load a versioned database file, return contents in a new DatabaseVersioned.

View File

@@ -43,7 +43,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
package com.kunzisoft.keepass.database.file.load package com.kunzisoft.keepass.database.file.input
import android.util.Log import android.util.Log
import com.kunzisoft.keepass.R import com.kunzisoft.keepass.R
@@ -69,7 +69,7 @@ import java.util.Arrays
/** /**
* Load a KDB database file. * Load a KDB database file.
*/ */
class ImporterKDB : Importer<DatabaseKDB>() { class DatabaseInputKDB : DatabaseInput<DatabaseKDB>() {
private lateinit var mDatabaseToOpen: DatabaseKDB private lateinit var mDatabaseToOpen: DatabaseKDB
@@ -340,6 +340,6 @@ class ImporterKDB : Importer<DatabaseKDB>() {
} }
companion object { companion object {
private val TAG = ImporterKDB::class.java.name private val TAG = DatabaseInputKDB::class.java.name
} }
} }

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.load package com.kunzisoft.keepass.database.file.input
import android.util.Base64 import android.util.Base64
import com.kunzisoft.keepass.R import com.kunzisoft.keepass.R
@@ -47,8 +47,8 @@ import java.util.zip.GZIPOutputStream
import javax.crypto.Cipher import javax.crypto.Cipher
import kotlin.math.min import kotlin.math.min
class ImporterKDBX(private val streamDir: File, class DatabaseInputKDBX(private val streamDir: File,
private val fixDuplicateUUID: Boolean = false) : Importer<DatabaseKDBX>() { private val fixDuplicateUUID: Boolean = false) : DatabaseInput<DatabaseKDBX>() {
private var randomStream: StreamCipher? = null private var randomStream: StreamCipher? = null
private lateinit var mDatabase: DatabaseKDBX private lateinit var mDatabase: DatabaseKDBX

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
open class DatabaseHeaderOutput { open class DatabaseHeaderOutput {
var hashOfHeader: ByteArray? = null var hashOfHeader: ByteArray? = null

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB
import com.kunzisoft.keepass.stream.LEDataOutputStream import com.kunzisoft.keepass.stream.LEDataOutputStream

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.utils.VariantDictionary import com.kunzisoft.keepass.utils.VariantDictionary
import com.kunzisoft.keepass.crypto.keyDerivation.KdfParameters import com.kunzisoft.keepass.crypto.keyDerivation.KdfParameters

View File

@@ -17,7 +17,7 @@
* along with KeePassDroid. If not, see <http://www.gnu.org/licenses/>. * along with KeePassDroid. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.database.element.DatabaseKDBX import com.kunzisoft.keepass.database.element.DatabaseKDBX
import com.kunzisoft.keepass.database.element.DatabaseKDBX.Companion.BUFFER_SIZE_BYTES import com.kunzisoft.keepass.database.element.DatabaseKDBX.Companion.BUFFER_SIZE_BYTES

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.database.file.DatabaseHeader import com.kunzisoft.keepass.database.file.DatabaseHeader
import com.kunzisoft.keepass.database.exception.DatabaseOutputException import com.kunzisoft.keepass.database.exception.DatabaseOutputException

View File

@@ -17,28 +17,31 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.crypto.CipherFactory import com.kunzisoft.keepass.crypto.CipherFactory
import com.kunzisoft.keepass.database.element.* import com.kunzisoft.keepass.database.element.DatabaseKDB
import com.kunzisoft.keepass.database.element.EncryptionAlgorithm
import com.kunzisoft.keepass.database.element.GroupKDB
import com.kunzisoft.keepass.database.exception.DatabaseOutputException import com.kunzisoft.keepass.database.exception.DatabaseOutputException
import com.kunzisoft.keepass.database.file.DatabaseHeader import com.kunzisoft.keepass.database.file.DatabaseHeader
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB
import com.kunzisoft.keepass.stream.LEDataOutputStream import com.kunzisoft.keepass.stream.LEDataOutputStream
import com.kunzisoft.keepass.stream.NullOutputStream import com.kunzisoft.keepass.stream.NullOutputStream
import javax.crypto.Cipher
import javax.crypto.CipherOutputStream
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec
import java.io.BufferedOutputStream import java.io.BufferedOutputStream
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.IOException import java.io.IOException
import java.io.OutputStream import java.io.OutputStream
import java.security.* import java.security.*
import java.util.ArrayList import java.util.*
import javax.crypto.Cipher
import javax.crypto.CipherOutputStream
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec
class DatabaseOutputKDB(private val mDatabaseKDB: DatabaseKDB, os: OutputStream) : DatabaseOutput<DatabaseHeaderKDB>(os) { class DatabaseOutputKDB(private val mDatabaseKDB: DatabaseKDB,
outputStream: OutputStream)
: DatabaseOutput<DatabaseHeaderKDB>(outputStream) {
private var headerHashBlock: ByteArray? = null private var headerHashBlock: ByteArray? = null

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import android.util.Base64 import android.util.Base64
import android.util.Log import android.util.Log
@@ -35,14 +35,15 @@ import com.kunzisoft.keepass.database.element.security.BinaryAttachment
import com.kunzisoft.keepass.database.element.security.ProtectedString import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.exception.DatabaseOutputException import com.kunzisoft.keepass.database.exception.DatabaseOutputException
import com.kunzisoft.keepass.database.exception.UnknownKDF import com.kunzisoft.keepass.database.exception.UnknownKDF
import com.kunzisoft.keepass.database.file.DateKDBXUtil
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX
import com.kunzisoft.keepass.database.file.DateKDBXUtil
import com.kunzisoft.keepass.stream.* import com.kunzisoft.keepass.stream.*
import com.kunzisoft.keepass.utils.DatabaseInputOutputUtils import com.kunzisoft.keepass.utils.DatabaseInputOutputUtils
import org.joda.time.DateTime import org.joda.time.DateTime
import org.spongycastle.crypto.StreamCipher import org.spongycastle.crypto.StreamCipher
import org.xmlpull.v1.XmlSerializer import org.xmlpull.v1.XmlSerializer
import java.io.* import java.io.IOException
import java.io.OutputStream
import java.security.NoSuchAlgorithmException import java.security.NoSuchAlgorithmException
import java.security.SecureRandom import java.security.SecureRandom
import java.util.* import java.util.*
@@ -53,7 +54,8 @@ import javax.crypto.CipherOutputStream
class DatabaseOutputKDBX(private val mDatabaseKDBX: DatabaseKDBX, class DatabaseOutputKDBX(private val mDatabaseKDBX: DatabaseKDBX,
outputStream: OutputStream) : DatabaseOutput<DatabaseHeaderKDBX>(outputStream) { outputStream: OutputStream)
: DatabaseOutput<DatabaseHeaderKDBX>(outputStream) {
private var randomStream: StreamCipher? = null private var randomStream: StreamCipher? = null
private lateinit var xml: XmlSerializer private lateinit var xml: XmlSerializer

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.database.element.EntryKDB import com.kunzisoft.keepass.database.element.EntryKDB
import com.kunzisoft.keepass.stream.LEDataOutputStream import com.kunzisoft.keepass.stream.LEDataOutputStream

View File

@@ -17,7 +17,7 @@
* along with KeePass DX. If not, see <http://www.gnu.org/licenses/>. * along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
package com.kunzisoft.keepass.database.file.save package com.kunzisoft.keepass.database.file.output
import com.kunzisoft.keepass.database.element.GroupKDB import com.kunzisoft.keepass.database.element.GroupKDB
import com.kunzisoft.keepass.stream.LEDataOutputStream import com.kunzisoft.keepass.stream.LEDataOutputStream