diff --git a/app/build.gradle b/app/build.gradle index b828daf6b..84bfb960f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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') diff --git a/app/libs/encrypt.aar b/app/libs/encrypt.aar new file mode 100644 index 000000000..c314aa6f5 Binary files /dev/null and b/app/libs/encrypt.aar differ diff --git a/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/AesKdf.kt b/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/AesKdf.kt index 53e49e9ac..d618c9138 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/AesKdf.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/AesKdf.kt @@ -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) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/Argon2Kdf.kt b/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/Argon2Kdf.kt index 31355ff32..03daea093 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/Argon2Kdf.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/crypto/kdf/Argon2Kdf.kt @@ -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) { diff --git a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt index 7185863f5..1cec233d4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/element/database/DatabaseKDB.kt @@ -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() { @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) }