Compare commits

...

1 Commits

Author SHA1 Message Date
J-Jamet
2b8427750b Add Go lib 2021-03-26 20:05:28 +01:00
5 changed files with 17 additions and 7 deletions

View File

@@ -131,6 +131,7 @@ dependencies {
implementation 'commons-codec:commons-codec:1.15'
// Encrypt lib
implementation project(path: ':crypto')
implementation fileTree(include: ['encrypt.aar'], dir: 'libs')
// Icon pack
implementation project(path: ':icon-pack-classic')
implementation project(path: ':icon-pack-material')

BIN
app/libs/encrypt.aar Normal file

Binary file not shown.

View File

@@ -21,8 +21,8 @@ package com.kunzisoft.keepass.database.crypto.kdf
import com.kunzisoft.encrypt.HashManager
import com.kunzisoft.keepass.utils.UnsignedLong
import com.kunzisoft.encrypt.aes.AESTransformer
import com.kunzisoft.keepass.utils.bytes16ToUuid
import encrypt.Encrypt
import java.io.IOException
import java.security.SecureRandom
import java.util.*
@@ -58,7 +58,8 @@ class AesKdf : KdfEngine() {
val rounds = kdfParameters.getUInt64(PARAM_ROUNDS)?.toKotlinLong()
return AESTransformer.transformKey(seed, currentMasterKey, rounds) ?: ByteArray(0)
return Encrypt.transformAESKey(currentMasterKey, seed, rounds!!)
//return AESTransformer.transformKey(seed, currentMasterKey, rounds) ?: ByteArray(0)
}
override fun randomize(kdfParameters: KdfParameters) {

View File

@@ -21,9 +21,8 @@ package com.kunzisoft.keepass.database.crypto.kdf
import com.kunzisoft.keepass.utils.UnsignedInt
import com.kunzisoft.keepass.utils.UnsignedLong
import com.kunzisoft.encrypt.argon2.Argon2Transformer
import com.kunzisoft.encrypt.argon2.Argon2Type
import com.kunzisoft.keepass.utils.bytes16ToUuid
import encrypt.Encrypt
import java.io.IOException
import java.security.SecureRandom
import java.util.*
@@ -63,7 +62,14 @@ class Argon2Kdf(private val type: Type) : KdfEngine() {
// val secretKey = kdfParameters.getByteArray(PARAM_SECRET_KEY)
// val assocData = kdfParameters.getByteArray(PARAM_ASSOC_DATA)
val argonType = if (type == Type.ARGON2_ID) Argon2Type.ARGON2_ID else Argon2Type.ARGON2_D
// With Go lib
return when(type) {
Type.ARGON2_D -> Encrypt.transformArgon2DKey(masterKey, salt, iterations, memory, parallelism.toShort(), 32)
else -> Encrypt.transformArgon2IDKey(masterKey, salt, iterations, memory, parallelism.toShort(), 32)
}
/*
val argonType = if (type == Type.ARGON2_ID) Argon2Type.ARGON2_ID else Argon2Type.ARGON2_ID
return Argon2Transformer.transformKey(
argonType,
@@ -73,6 +79,7 @@ class Argon2Kdf(private val type: Type) : KdfEngine() {
memory,
iterations,
version)
*/
}
override fun randomize(kdfParameters: KdfParameters) {

View File

@@ -20,7 +20,6 @@
package com.kunzisoft.keepass.database.element.database
import com.kunzisoft.encrypt.HashManager
import com.kunzisoft.encrypt.aes.AESTransformer
import com.kunzisoft.keepass.database.crypto.EncryptionAlgorithm
import com.kunzisoft.keepass.database.crypto.kdf.KdfEngine
import com.kunzisoft.keepass.database.crypto.kdf.KdfFactory
@@ -31,6 +30,7 @@ import com.kunzisoft.keepass.database.element.icon.IconImageStandard
import com.kunzisoft.keepass.database.element.node.NodeIdInt
import com.kunzisoft.keepass.database.element.node.NodeIdUUID
import com.kunzisoft.keepass.database.element.node.NodeVersioned
import encrypt.Encrypt
import java.io.IOException
import java.io.InputStream
import java.util.*
@@ -142,7 +142,8 @@ class DatabaseKDB : DatabaseVersioned<Int, UUID, GroupKDB, EntryKDB>() {
@Throws(IOException::class)
fun makeFinalKey(masterSeed: ByteArray, transformSeed: ByteArray, numRounds: Long) {
// Encrypt the master key a few times to make brute-force key-search harder
val transformedKey = AESTransformer.transformKey(transformSeed, masterKey, numRounds) ?: ByteArray(0)
val transformedKey = Encrypt.transformAESKey(masterSeed, transformSeed, numRounds) ?: ByteArray(0)
//val transformedKey = AESTransformer.transformKey(transformSeed, masterKey, numRounds) ?: ByteArray(0)
// Write checksum Checksum
finalKey = HashManager.hashSha256(masterSeed, transformedKey)
}