Work on JsSodiumLoader in process. Current problem: wrong type in try-catch (JsAny instead of throwable)

This commit is contained in:
Maria Chernova 2024-12-01 20:51:43 +03:00 committed by kildishevps
parent 99e6316120
commit 669e8ee0c9
3 changed files with 19 additions and 7 deletions

View File

@ -9,6 +9,11 @@ import org.khronos.webgl.Uint8Array
* ugljesa.jovanovic@ionspin.com * ugljesa.jovanovic@ionspin.com
* on 27-May-2020 * on 27-May-2020
*/ */
typealias UByte = Int
typealias UInt = Long
@JsModule("libsodium-wrappers-sumo") @JsModule("libsodium-wrappers-sumo")
external object JsSodiumInterface { external object JsSodiumInterface {
@ -93,6 +98,9 @@ external object JsSodiumInterface {
@JsName("crypto_secretstream_xchacha20poly1305_init_push") @JsName("crypto_secretstream_xchacha20poly1305_init_push")
fun crypto_secretstream_xchacha20poly1305_init_push(key: Uint8Array) : JsAny fun crypto_secretstream_xchacha20poly1305_init_push(key: Uint8Array) : JsAny
@JsName("crypto_secretstream_xchacha20poly1305_push") @JsName("crypto_secretstream_xchacha20poly1305_push")
// TODO: два варианта: \/
// 1. Меняем юбайт на байт и юинт на инт \/
// 2. Меняем юбайт на инт и юинт на лонг \/ и далее по списку
fun crypto_secretstream_xchacha20poly1305_push(state: JsAny, message: Uint8Array, associatedData: Uint8Array, tag: UByte) : Uint8Array fun crypto_secretstream_xchacha20poly1305_push(state: JsAny, message: Uint8Array, associatedData: Uint8Array, tag: UByte) : Uint8Array
//decrypt //decrypt

View File

@ -27,14 +27,18 @@ object JsSodiumLoader {
} }
suspend fun load() = suspendCoroutine { continuation -> // TODO: попробовать сделать из этого suspend вместо continuation
suspend fun load(): Unit = suspendCoroutine { continuation ->
if (!getSodiumLoaded()) { if (!getSodiumLoaded()) {
_libsodiumPromise.then<dynamic> { _libsodiumPromise.then<JsAny?> {
sodium_init() sodium_init()
sodiumLoaded = true sodiumLoaded = true
//Dynamic может быть Юнит, но Unit не может быть JsAny?
continuation.resumeWith(Result.success(Unit)) continuation.resumeWith(Result.success(Unit))
}.catch { e -> null
}.catch { e->
continuation.resumeWith(Result.failure(e)) continuation.resumeWith(Result.failure(e))
null
} }
} else { } else {
continuation.resumeWith(Result.success(Unit)) continuation.resumeWith(Result.success(Unit))
@ -43,7 +47,7 @@ object JsSodiumLoader {
fun loadWithCallback(doneCallback: () -> (Unit)) { fun loadWithCallback(doneCallback: () -> (Unit)) {
if (!getSodiumLoaded()) { if (!getSodiumLoaded()) {
_libsodiumPromise.then<dynamic> { _libsodiumPromise.then<JsAny> {
sodium_init() sodium_init()
sodiumLoaded = true sodiumLoaded = true
doneCallback.invoke() doneCallback.invoke()

View File

@ -1,5 +1,5 @@
@file:JsModule("libsodium-sumo") @file:JsModule("libsodium-sumo")
@file:JsNonModule //@file:JsNonModule
package ext.libsodium package ext.libsodium
import org.khronos.webgl.Uint8Array import org.khronos.webgl.Uint8Array
@ -13,7 +13,7 @@ import kotlin.js.Promise
*/ */
@JsName("ready") @JsName("ready")
external val _libsodiumPromise : Promise<dynamic> external val _libsodiumPromise : Promise<JsAny>
@JsName("_sodium_init") @JsName("_sodium_init")
external fun sodium_init() : Int external fun sodium_init() : Int
@ -23,7 +23,7 @@ external fun crypto_generichash(hashLength: Int, inputMessage: Uint8Array) : Uin
external fun crypto_hash_sha256(message: Uint8Array) : Uint8Array external fun crypto_hash_sha256(message: Uint8Array) : Uint8Array
external fun crypto_hash_sha512(message: Uint8Array) : Uint8Array external fun crypto_hash_sha512(message: Uint8Array) : Uint8Array
external fun crypto_hash_sha256_init(): dynamic external fun crypto_hash_sha256_init(): JsAny