This commit is contained in:
Ugljesa Jovanovic authored and Ugljesa Jovanovic committed 2020-05-28 19:48:44 +02:00
1 parent f51374ce15
commit ccbb8ebe5b
15 files changed
+41 -33

No files matched your search

@@ -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(),
@@ -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(),
@@ -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) {
@@ -3,4 +3,7 @@ package com.ionspin.kotlin.crypto
actual object Initializer {
actual suspend fun initialize() {
}
actual fun initializeWithCallback(done: () -> Unit) {
}
}
@@ -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")
}
@@ -2,5 +2,9 @@ package com.ionspin.kotlin.crypto
actual object Initializer {
actual suspend fun initialize() {
// sodi
}
actual fun initializeWithCallback(done: () -> Unit) {
}
}
@@ -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
}
@@ -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")
}
}
@@ -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<UByteVar>(amount)
val urandomFile = fopen("/dev/urandom", "rb")
if (urandomFile != null) {
fread(array, 1, amount.convert(), urandomFile)
}
// randombytes_buf()
return UByteArray(amount) {
array[it]
}