Work on JsSodiumLoader in process. Current problem: wrong type in try-catch (JsAny instead of throwable)
This commit is contained in:
parent
99e6316120
commit
669e8ee0c9
@ -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
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user