Add Go lib

This commit is contained in:
J-Jamet
2021-03-26 20:05:28 +01:00
parent 10bf149a07
commit 2b8427750b
5 changed files with 17 additions and 7 deletions

View File

@@ -131,6 +131,7 @@ dependencies {
implementation 'commons-codec:commons-codec:1.15' implementation 'commons-codec:commons-codec:1.15'
// Encrypt lib // Encrypt lib
implementation project(path: ':crypto') implementation project(path: ':crypto')
implementation fileTree(include: ['encrypt.aar'], dir: 'libs')
// Icon pack // Icon pack
implementation project(path: ':icon-pack-classic') implementation project(path: ':icon-pack-classic')
implementation project(path: ':icon-pack-material') 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.encrypt.HashManager
import com.kunzisoft.keepass.utils.UnsignedLong import com.kunzisoft.keepass.utils.UnsignedLong
import com.kunzisoft.encrypt.aes.AESTransformer
import com.kunzisoft.keepass.utils.bytes16ToUuid import com.kunzisoft.keepass.utils.bytes16ToUuid
import encrypt.Encrypt
import java.io.IOException import java.io.IOException
import java.security.SecureRandom import java.security.SecureRandom
import java.util.* import java.util.*
@@ -58,7 +58,8 @@ class AesKdf : KdfEngine() {
val rounds = kdfParameters.getUInt64(PARAM_ROUNDS)?.toKotlinLong() 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) { 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.UnsignedInt
import com.kunzisoft.keepass.utils.UnsignedLong 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 com.kunzisoft.keepass.utils.bytes16ToUuid
import encrypt.Encrypt
import java.io.IOException import java.io.IOException
import java.security.SecureRandom import java.security.SecureRandom
import java.util.* import java.util.*
@@ -63,7 +62,14 @@ class Argon2Kdf(private val type: Type) : KdfEngine() {
// val secretKey = kdfParameters.getByteArray(PARAM_SECRET_KEY) // val secretKey = kdfParameters.getByteArray(PARAM_SECRET_KEY)
// val assocData = kdfParameters.getByteArray(PARAM_ASSOC_DATA) // 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( return Argon2Transformer.transformKey(
argonType, argonType,
@@ -73,6 +79,7 @@ class Argon2Kdf(private val type: Type) : KdfEngine() {
memory, memory,
iterations, iterations,
version) version)
*/
} }
override fun randomize(kdfParameters: KdfParameters) { override fun randomize(kdfParameters: KdfParameters) {

View File

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