From ccbb8ebe5b17e64b0884311b335dc50b2d744d41 Mon Sep 17 00:00:00 2001 From: Ugljesa Jovanovic Date: Thu, 28 May 2020 19:48:44 +0200 Subject: [PATCH] Cleanup --- .../com/ionspin/kotlin/crypto/hash/Hash.kt | 2 +- .../kotlin/crypto/hash/blake2b/Blake2b.kt | 6 ++++- .../build.gradle.kts | 27 +++++++++---------- .../kotlin/crypto/hash/sha/Sha256Pure.kt | 2 +- .../kotlin/crypto/hash/sha/Sha512Pure.kt | 2 +- .../crypto/hash/blake2b/Blake2bDelegated.kt | 2 +- .../com/ionspin/kotlin/crypto/Initializer.kt | 3 +++ .../crypto/hash/blake2b/Blake2bDelegated.kt | 8 +++--- .../com/ionspin/kotlin/crypto/Initializer.kt | 4 +++ .../crypto/hash/blake2b/Blake2bDelegated.kt | 3 +-- .../crypto/hash/blake2b/Blake2bLinuxTest.kt | 3 ++- .../kotlin/com/ionspin/kotlin/crypto/SRNG.kt | 6 ++--- .../kotlin/crypto/hash/blake2b/Blake2bPure.kt | 2 +- .../kotlin/crypto/hash/sha/Sha256Pure.kt | 2 +- .../kotlin/crypto/hash/sha/Sha512Pure.kt | 2 +- 15 files changed, 41 insertions(+), 33 deletions(-) diff --git a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/Hash.kt b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/Hash.kt index a04dbad..327556a 100644 --- a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/Hash.kt +++ b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/Hash.kt @@ -39,7 +39,7 @@ interface UpdatableHash : Hash { @ExperimentalUnsignedTypes interface StatelessHash : Hash { - suspend fun digest(inputString: String, key: String? = null, hashLength: Int = MAX_HASH_BYTES): UByteArray + fun digest(inputString: String, key: String? = null, hashLength: Int = MAX_HASH_BYTES): UByteArray fun digest( inputMessage: UByteArray = ubyteArrayOf(), diff --git a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2b.kt b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2b.kt index e363538..f9cb896 100644 --- a/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2b.kt +++ b/multiplatform-crypto-api/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2b.kt @@ -9,5 +9,9 @@ import com.ionspin.kotlin.crypto.hash.UpdatableHash * on 24-May-2020 */ interface Blake2b : UpdatableHash -interface Blake2bStatelessInterface : StatelessHash +interface Blake2bStatelessInterface : StatelessHash { + @ExperimentalUnsignedTypes + override val MAX_HASH_BYTES: Int + get() = 64 +} diff --git a/multiplatform-crypto-delegated/build.gradle.kts b/multiplatform-crypto-delegated/build.gradle.kts index 7186584..77fd751 100644 --- a/multiplatform-crypto-delegated/build.gradle.kts +++ b/multiplatform-crypto-delegated/build.gradle.kts @@ -61,12 +61,21 @@ fun getHostOsName(): String { } kotlin { + + val libsodiumCompilation : org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests.() -> Unit = { + compilations.getByName("main") { + val libsodiumCinterop by cinterops.creating { + defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) + } + } + } + val hostOsName = getHostOsName() if (ideaActive) { when(hostOsName) { - "linux" -> linuxX64("native") - "macos" -> macosX64("native") - "windows" -> mingwX64("native") + "linux" -> linuxX64("native", libsodiumCompilation) + "macos" -> macosX64("native", libsodiumCompilation) + "windows" -> mingwX64("native", libsodiumCompilation) } } if (hostOsName == "linux") { @@ -90,17 +99,7 @@ kotlin { } linuxX64("linux") { - compilations.getByName("main") { - val libsodiumCinterop by cinterops.creating { - defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) -// packageName("sodium") -// includeDirs.apply { -// allHeaders("/usr/include/sodium") -// header("/usr/include/sodium.h") -// } -// linkerOpts("-lsodium") - } - } + libsodiumCompilation(this) binaries { staticLib { } diff --git a/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt b/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt index 27eb1d4..ec646c1 100644 --- a/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt +++ b/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt @@ -66,7 +66,7 @@ class Sha256Pure : Sha256 { ) @ExperimentalStdlibApi - override suspend fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { return digest( inputString.encodeToByteArray().toUByteArray(), key?.run { encodeToByteArray().toUByteArray()} ?: ubyteArrayOf(), diff --git a/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt b/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt index 6c3725f..955ee61 100644 --- a/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt +++ b/multiplatform-crypto-delegated/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt @@ -134,7 +134,7 @@ class Sha512Pure : Sha512 { ) @ExperimentalStdlibApi - override suspend fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { return digest( inputString.encodeToByteArray().toUByteArray(), key?.run { encodeToByteArray().toUByteArray() } ?: ubyteArrayOf(), diff --git a/multiplatform-crypto-delegated/src/jsMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt b/multiplatform-crypto-delegated/src/jsMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt index f7ed9f2..9962f7f 100644 --- a/multiplatform-crypto-delegated/src/jsMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt +++ b/multiplatform-crypto-delegated/src/jsMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt @@ -36,7 +36,7 @@ actual class Blake2bDelegated actual constructor(key: UByteArray?, hashLength: I actual object Blake2bStateless : Blake2bStatelessInterface { override val MAX_HASH_BYTES: Int = 64 - override suspend fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { val hashed = getSodium().crypto_generichash(64, inputString) val hash = UByteArray(MAX_HASH_BYTES) for (i in 0 until MAX_HASH_BYTES) { diff --git a/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt b/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt index e53ffa4..a0fb818 100644 --- a/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt +++ b/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt @@ -3,4 +3,7 @@ package com.ionspin.kotlin.crypto actual object Initializer { actual suspend fun initialize() { } + + actual fun initializeWithCallback(done: () -> Unit) { + } } \ No newline at end of file diff --git a/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt b/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt index 7c03af0..9be1ed1 100644 --- a/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt +++ b/multiplatform-crypto-delegated/src/jvmMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt @@ -29,7 +29,10 @@ actual class Blake2bDelegated actual constructor(key: UByteArray?, hashLength: I } @ExperimentalUnsignedTypes actual object Blake2bStateless : Blake2bStatelessInterface { - suspend override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + + + + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { TODO("not implemented yet") } @@ -37,7 +40,4 @@ actual object Blake2bStateless : Blake2bStatelessInterface { TODO("not implemented yet") } - override val MAX_HASH_BYTES: Int - get() = TODO("not implemented yet") - } \ No newline at end of file diff --git a/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt b/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt index e53ffa4..1f82177 100644 --- a/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt +++ b/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/Initializer.kt @@ -2,5 +2,9 @@ package com.ionspin.kotlin.crypto actual object Initializer { actual suspend fun initialize() { +// sodi + } + + actual fun initializeWithCallback(done: () -> Unit) { } } \ No newline at end of file diff --git a/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt b/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt index 7f49a0c..cc72c28 100644 --- a/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt +++ b/multiplatform-crypto-delegated/src/linuxMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt @@ -34,7 +34,7 @@ actual class Blake2bDelegated actual constructor(key: UByteArray?, hashLength: I @Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS") actual object Blake2bStateless : Blake2bStatelessInterface { - suspend override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { val hashResult = UByteArray(MAX_HASH_BYTES) val hashResultPinned = hashResult.pin() crypto_generichash( @@ -67,6 +67,5 @@ actual object Blake2bStateless : Blake2bStatelessInterface { } - override val MAX_HASH_BYTES: Int = 64 } \ No newline at end of file diff --git a/multiplatform-crypto-delegated/src/linuxTest/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bLinuxTest.kt b/multiplatform-crypto-delegated/src/linuxTest/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bLinuxTest.kt index c9a5298..30d4fba 100644 --- a/multiplatform-crypto-delegated/src/linuxTest/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bLinuxTest.kt +++ b/multiplatform-crypto-delegated/src/linuxTest/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bLinuxTest.kt @@ -6,6 +6,7 @@ package com.ionspin.kotlin.crypto.hash.blake2b * on 24-May-2020 */ +import com.ionspin.kotlin.crypto.util.testBlocking import interop.* import kotlinx.cinterop.* import libsodium.* @@ -22,7 +23,7 @@ class Blake2bLinuxTest { } @Test - fun testBlake2BSodiumInterop() { + fun testBlake2BSodiumInterop() = testBlocking { Blake2bStateless.digest("test") } } \ No newline at end of file diff --git a/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/SRNG.kt b/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/SRNG.kt index e76cf80..fe7c281 100644 --- a/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/SRNG.kt +++ b/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/SRNG.kt @@ -18,6 +18,7 @@ package com.ionspin.kotlin.crypto import kotlinx.cinterop.* import platform.posix.* +//import libsod /** * Created by Ugljesa Jovanovic @@ -29,10 +30,7 @@ actual object SRNG { actual fun getRandomBytes(amount: Int): UByteArray { memScoped { val array = allocArray(amount) - val urandomFile = fopen("/dev/urandom", "rb") - if (urandomFile != null) { - fread(array, 1, amount.convert(), urandomFile) - } +// randombytes_buf() return UByteArray(amount) { array[it] } diff --git a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bPure.kt b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bPure.kt index a60bcb2..5ad92b8 100644 --- a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bPure.kt +++ b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bPure.kt @@ -145,7 +145,7 @@ class Blake2bPure(val key: UByteArray? = null, val hashLength: Int = 64) : Blake } @ExperimentalStdlibApi - override suspend fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { val array = inputString.encodeToByteArray().toUByteArray() val keyBytes = key?.run { encodeToByteArray().toUByteArray() diff --git a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt index 7bbb4a4..ec646c1 100644 --- a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt +++ b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha256Pure.kt @@ -66,7 +66,7 @@ class Sha256Pure : Sha256 { ) @ExperimentalStdlibApi - suspend override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { return digest( inputString.encodeToByteArray().toUByteArray(), key?.run { encodeToByteArray().toUByteArray()} ?: ubyteArrayOf(), diff --git a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt index 6c3725f..955ee61 100644 --- a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt +++ b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/hash/sha/Sha512Pure.kt @@ -134,7 +134,7 @@ class Sha512Pure : Sha512 { ) @ExperimentalStdlibApi - override suspend fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { + override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { return digest( inputString.encodeToByteArray().toUByteArray(), key?.run { encodeToByteArray().toUByteArray() } ?: ubyteArrayOf(),