Call sodium init in js and jvm

This commit is contained in:
Ugljesa Jovanovic committed 2021-05-01 12:43:29 +02:00
1 parent 010ee5bd11
commit e000d13b79
6 files changed
+18 -2

No files matched your search

@@ -11,6 +11,8 @@ import org.khronos.webgl.Uint8Array
*/
interface JsSodiumInterface {
fun sodium_init() : Int
fun randombytes_buf(numberOfBytes: Int): Uint8Array
fun crypto_generichash(hashLength: Int, inputMessage: Uint8Array, key: Uint8Array): Uint8Array
@@ -3,6 +3,7 @@ package ext.libsodium.com.ionspin.kotlin.crypto
import com.ionspin.kotlin.crypto.getSodiumLoaded
import com.ionspin.kotlin.crypto.setSodiumPointer
import com.ionspin.kotlin.crypto.sodiumLoaded
import com.ionspin.kotlin.crypto.sodiumPointer
import ext.libsodium.*
import kotlin.coroutines.Continuation
import kotlin.coroutines.suspendCoroutine
@@ -28,13 +29,16 @@ object JsSodiumLoader {
setSodiumPointer(promisedSodium)
sodiumLoaded = true
continuation.resumeWith(Result.success(Unit))
sodiumPointer.sodium_init()
}
suspend fun load() = suspendCoroutine<Unit> { continuation ->
console.log(getSodiumLoaded())
if (!getSodiumLoaded()) {
val libsodiumModule = js("\$module\$libsodium_wrappers_sumo")
_libsodiumPromise.then<dynamic> { storeSodium(libsodiumModule, continuation) }
_libsodiumPromise.then<dynamic> {
storeSodium(libsodiumModule, continuation)
}
} else {
continuation.resumeWith(Result.success(Unit))
}
@@ -46,6 +50,7 @@ object JsSodiumLoader {
val libsodiumModule = js("\$module\$libsodium_wrappers_sumo")
_libsodiumPromise.then<dynamic> {
setSodiumPointer(libsodiumModule)
sodiumPointer.sodium_init()
sodiumLoaded = true
doneCallback.invoke()
}