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

View File

@@ -17,14 +17,14 @@
* 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.exception.LoadDatabaseException
import com.kunzisoft.keepass.tasks.ProgressTaskUpdater
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.

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
*/
package com.kunzisoft.keepass.database.file.load
package com.kunzisoft.keepass.database.file.input
import android.util.Log
import com.kunzisoft.keepass.R
@@ -69,7 +69,7 @@ import java.util.Arrays
/**
* Load a KDB database file.
*/
class ImporterKDB : Importer<DatabaseKDB>() {
class DatabaseInputKDB : DatabaseInput<DatabaseKDB>() {
private lateinit var mDatabaseToOpen: DatabaseKDB
@@ -340,6 +340,6 @@ class ImporterKDB : Importer<DatabaseKDB>() {
}
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/>.
*
*/
package com.kunzisoft.keepass.database.file.load
package com.kunzisoft.keepass.database.file.input
import android.util.Base64
import com.kunzisoft.keepass.R
@@ -47,8 +47,8 @@ import java.util.zip.GZIPOutputStream
import javax.crypto.Cipher
import kotlin.math.min
class ImporterKDBX(private val streamDir: File,
private val fixDuplicateUUID: Boolean = false) : Importer<DatabaseKDBX>() {
class DatabaseInputKDBX(private val streamDir: File,
private val fixDuplicateUUID: Boolean = false) : DatabaseInput<DatabaseKDBX>() {
private var randomStream: StreamCipher? = null
private lateinit var mDatabase: DatabaseKDBX

View File

@@ -17,7 +17,7 @@
* 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 {
var hashOfHeader: ByteArray? = null

View File

@@ -17,7 +17,7 @@
* 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.stream.LEDataOutputStream

View File

@@ -17,7 +17,7 @@
* 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.crypto.keyDerivation.KdfParameters

View File

@@ -17,7 +17,7 @@
* 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.Companion.BUFFER_SIZE_BYTES

View File

@@ -17,7 +17,7 @@
* 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.exception.DatabaseOutputException

View File

@@ -17,28 +17,31 @@
* 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.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.file.DatabaseHeader
import com.kunzisoft.keepass.database.file.DatabaseHeaderKDB
import com.kunzisoft.keepass.stream.LEDataOutputStream
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.ByteArrayOutputStream
import java.io.IOException
import java.io.OutputStream
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

View File

@@ -17,7 +17,7 @@
* 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.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.exception.DatabaseOutputException
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.DateKDBXUtil
import com.kunzisoft.keepass.stream.*
import com.kunzisoft.keepass.utils.DatabaseInputOutputUtils
import org.joda.time.DateTime
import org.spongycastle.crypto.StreamCipher
import org.xmlpull.v1.XmlSerializer
import java.io.*
import java.io.IOException
import java.io.OutputStream
import java.security.NoSuchAlgorithmException
import java.security.SecureRandom
import java.util.*
@@ -53,7 +54,8 @@ import javax.crypto.CipherOutputStream
class DatabaseOutputKDBX(private val mDatabaseKDBX: DatabaseKDBX,
outputStream: OutputStream) : DatabaseOutput<DatabaseHeaderKDBX>(outputStream) {
outputStream: OutputStream)
: DatabaseOutput<DatabaseHeaderKDBX>(outputStream) {
private var randomStream: StreamCipher? = null
private lateinit var xml: XmlSerializer

View File

@@ -17,7 +17,7 @@
* 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.stream.LEDataOutputStream

View File

@@ -17,7 +17,7 @@
* 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.stream.LEDataOutputStream