From 2c669deae5de30da79af0c39262f30da68e018e2 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Fri, 25 Sep 2020 19:34:02 +0200 Subject: [PATCH] Add writeByte method in LittleEndianDataOutputStream --- .../file/output/DatabaseInnerHeaderOutputKDBX.kt | 13 ++++++------- .../keepass/stream/LittleEndianDataOutputStream.kt | 5 +++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/file/output/DatabaseInnerHeaderOutputKDBX.kt b/app/src/main/java/com/kunzisoft/keepass/database/file/output/DatabaseInnerHeaderOutputKDBX.kt index a9104e00d..12ba52a50 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/file/output/DatabaseInnerHeaderOutputKDBX.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/file/output/DatabaseInnerHeaderOutputKDBX.kt @@ -24,7 +24,6 @@ import com.kunzisoft.keepass.database.element.database.DatabaseKDBX.Companion.BU import com.kunzisoft.keepass.database.file.DatabaseHeaderKDBX import com.kunzisoft.keepass.stream.LittleEndianDataOutputStream import com.kunzisoft.keepass.stream.readBytes -import com.kunzisoft.keepass.stream.uIntTo4Bytes import com.kunzisoft.keepass.utils.UnsignedInt import java.io.IOException import java.io.OutputStream @@ -38,14 +37,14 @@ class DatabaseInnerHeaderOutputKDBX(private val database: DatabaseKDBX, @Throws(IOException::class) fun output() { - dataOutputStream.write(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.InnerRandomStreamID.toInt()) + dataOutputStream.writeByte(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.InnerRandomStreamID) dataOutputStream.writeInt(4) if (header.innerRandomStream == null) throw IOException("Can't write innerRandomStream") dataOutputStream.writeInt(header.innerRandomStream!!.id.toKotlinInt()) val streamKeySize = header.innerRandomStreamKey.size - dataOutputStream.write(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.InnerRandomstreamKey.toInt()) + dataOutputStream.writeByte(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.InnerRandomstreamKey) dataOutputStream.writeInt(streamKeySize) dataOutputStream.write(header.innerRandomStreamKey) @@ -54,15 +53,15 @@ class DatabaseInnerHeaderOutputKDBX(private val database: DatabaseKDBX, // Force decompression to add binary in header protectedBinary.decompress() // Write type binary - dataOutputStream.write(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.Binary.toInt()) + dataOutputStream.writeByte(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.Binary) // Write size - dataOutputStream.write(uIntTo4Bytes(UnsignedInt.fromKotlinLong(protectedBinary.length() + 1))) + dataOutputStream.writeUInt(UnsignedInt.fromKotlinLong(protectedBinary.length() + 1)) // Write protected flag var flag = DatabaseHeaderKDBX.KdbxBinaryFlags.None if (protectedBinary.isProtected) { flag = flag or DatabaseHeaderKDBX.KdbxBinaryFlags.Protected } - dataOutputStream.write(flag.toInt()) + dataOutputStream.writeByte(flag) protectedBinary.getInputDataStream().use { inputStream -> inputStream.readBytes(BUFFER_SIZE_BYTES) { buffer -> @@ -71,7 +70,7 @@ class DatabaseInnerHeaderOutputKDBX(private val database: DatabaseKDBX, } } - dataOutputStream.write(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.EndOfHeader.toInt()) + dataOutputStream.writeByte(DatabaseHeaderKDBX.PwDbInnerHeaderV4Fields.EndOfHeader) dataOutputStream.writeInt(0) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/stream/LittleEndianDataOutputStream.kt b/app/src/main/java/com/kunzisoft/keepass/stream/LittleEndianDataOutputStream.kt index f445afced..91684c9c2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/stream/LittleEndianDataOutputStream.kt +++ b/app/src/main/java/com/kunzisoft/keepass/stream/LittleEndianDataOutputStream.kt @@ -60,6 +60,11 @@ class LittleEndianDataOutputStream(private val baseStream: OutputStream) : Outpu baseStream.write(oneByte) } + @Throws(IOException::class) + fun writeByte(byte: Byte) { + baseStream.write(byte.toInt()) + } + @Throws(IOException::class) fun writeLong(value: Long) { baseStream.write(longTo8Bytes(value))