Skip to content

Commit

Permalink
feat: Add outer header option (#183)
Browse files Browse the repository at this point in the history
  • Loading branch information
behzodhalil committed Feb 4, 2024
1 parent 296ae19 commit d247e0b
Showing 1 changed file with 41 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package io.spherelabs.crypto.tinypass.database.header

import io.spherelabs.crypto.tinypass.database.signature.Signature
import okio.Buffer
import okio.BufferedSink

data class OuterHeaderOption(
val signature: Signature,
val version: Version,
val cipherId: CipherId,
val compressionFlags: CompressionFlags
) {
fun serialize(sink: BufferedSink) {
signature.serialize(sink)
version.serialize(sink)

sink.writeByte(CIPHER_ID)
sink.writeIntLe(16)
val bytes = Buffer().apply {
writeLong(cipherId.uuid.mostSignificantBits)
writeLong(cipherId.uuid.leastSignificantBits)
}
sink.write(bytes.readByteArray())

sink.writeByte(OuterHeader.COMPRESSION)
sink.writeIntLe(Int.SIZE_BYTES)
sink.writeIntLe(compressionFlags.ordinal)
}

companion object {
val Default = OuterHeaderOption(
signature = Signature.Default,
version = Version(4, 1),
compressionFlags = CompressionFlags.GZip,
cipherId = CipherId.Aes,
)

const val CIPHER_ID = 1
const val COMPRESSION = 2
}
}

0 comments on commit d247e0b

Please # to comment.