From 4357124b488eee77a66f7516f1cef62b9d55c0f3 Mon Sep 17 00:00:00 2001 From: Ugljesa Jovanovic Date: Sat, 6 Jun 2020 22:20:27 +0200 Subject: [PATCH] Blake2b cleanup --- .../crypto/hash/blake2b/Blake2bDelegated.kt | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt b/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt index 31a8440..656c76b 100644 --- a/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt +++ b/multiplatform-crypto-delegated/src/nativeMain/kotlin/com/ionspin/kotlin/crypto/hash/blake2b/Blake2bDelegated.kt @@ -2,6 +2,7 @@ package com.ionspin.kotlin.crypto.hash.blake2b import com.ionspin.kotlin.crypto.util.toHexString import kotlinx.cinterop.* import libsodium.* +import platform.posix.malloc /** * Created by Ugljesa Jovanovic * ugljesa.jovanovic@ionspin.com @@ -19,7 +20,9 @@ actual class Blake2bDelegated actual constructor(key: UByteArray?, hashLength: I requestedHashLength = hashLength println("Size ${crypto_generichash_state.size}") println("Align ${crypto_generichash_state.align}") - state = nativeHeap.alloc(crypto_generichash_state.size, 1).reinterpret() + println("Using sodium malloc for state") + val allocated = sodium_malloc(crypto_generichash_state.size.convert())!! + state = allocated.reinterpret().pointed println("allocated state") crypto_generichash_init(state.ptr, key?.run { this.toUByteArray().toCValues() }, key?.size?.convert() ?: 0UL, hashLength.convert()) println("Initialized libsodium hash") @@ -41,33 +44,6 @@ actual class Blake2bDelegated actual constructor(key: UByteArray?, hashLength: I println("HashPointer: ${hashResult.toHexString()}") return hashResult -// val inputString = "test" -// val hashLength = 64 -// val key : String? = null -// val result2 = allocEverything(inputString, key, hashLength) -// val result2String = result2.toHexString() -// println(result2String) -// return ubyteArrayOf(0U) - } - - fun allocEverything(inputString: String, key: String?, hashLength: Int) : UByteArray { - val res = memScoped { - val result = allocArray(hashLength) - println("Alloced: $result") - crypto_generichash( - result, - hashLength.convert(), - inputString.encodeToByteArray().toUByteArray().toCValues(), - inputString.length.convert(), - key?.run { this.encodeToByteArray().toUByteArray().toCValues() }, - key?.length?.convert() ?: 0UL - ) - println("Result: $result") - UByteArray(hashLength) { - result[it] - } - } - return res } override fun digestString(): String { @@ -78,7 +54,6 @@ actual class Blake2bDelegated actual constructor(key: UByteArray?, hashLength: I @Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_UNSIGNED_LITERALS") actual object Blake2bStateless : Blake2bStatelessInterface { override fun digest(inputString: String, key: String?, hashLength: Int): UByteArray { -// return allocEverything(inputString, key, hashLength) println("Input $inputString, ${key ?: "null"}, $hashLength") val hashResult = UByteArray(MAX_HASH_BYTES) val hashResultPinned = hashResult.pin() @@ -90,8 +65,6 @@ actual object Blake2bStateless : Blake2bStatelessInterface { key?.run { this.encodeToByteArray().toUByteArray().toCValues() }, key?.length?.convert() ?: 0UL ) - println("HashPointer: ${hashResult.toHexString()}") - println(hashResult.toHexString()) return hashResult }