From fadf6bd8cf38fb62eb42ce4c2f64ad2c8eea7a54 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Wed, 24 Jul 2024 16:12:12 -0400 Subject: [PATCH 01/43] initial commit --- Cargo.lock | 429 ++++++++ Cargo.toml | 8 +- ffi/Cargo.toml | 2 +- python/Cargo.toml | 2 +- uniffi/uniffi-bindgen/Cargo.toml | 12 + uniffi/uniffi-bindgen/src/uniffi-bindgen.rs | 3 + uniffi/uniffi-lib/Cargo.toml | 11 + uniffi/uniffi-lib/src/lib.rs | 7 + wrappers/kotlin/generate.bat | 6 + .../output/uniffi/uniffi_lib/uniffi_lib.kt | 947 ++++++++++++++++++ wrappers/switft/generate.bat | 6 + wrappers/switft/output/uniffi_lib.swift | 461 +++++++++ wrappers/switft/output/uniffi_libFFI.h | 552 ++++++++++ .../switft/output/uniffi_libFFI.modulemap | 6 + 14 files changed, 2449 insertions(+), 3 deletions(-) create mode 100644 uniffi/uniffi-bindgen/Cargo.toml create mode 100644 uniffi/uniffi-bindgen/src/uniffi-bindgen.rs create mode 100644 uniffi/uniffi-lib/Cargo.toml create mode 100644 uniffi/uniffi-lib/src/lib.rs create mode 100644 wrappers/kotlin/generate.bat create mode 100644 wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt create mode 100644 wrappers/switft/generate.bat create mode 100644 wrappers/switft/output/uniffi_lib.swift create mode 100644 wrappers/switft/output/uniffi_libFFI.h create mode 100644 wrappers/switft/output/uniffi_libFFI.modulemap diff --git a/Cargo.lock b/Cargo.lock index 167bfbd26..f97be327f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -78,6 +78,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + [[package]] name = "arbitrary" version = "0.4.7" @@ -99,6 +105,47 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "askama" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" +dependencies = [ + "askama_derive", + "askama_escape", +] + +[[package]] +name = "askama_derive" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" +dependencies = [ + "askama_parser", + "basic-toml", + "mime", + "mime_guess", + "proc-macro2", + "quote", + "serde", + "syn 2.0.66", +] + +[[package]] +name = "askama_escape" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" + +[[package]] +name = "askama_parser" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" +dependencies = [ + "nom", +] + [[package]] name = "autocfg" version = "1.3.0" @@ -129,6 +176,24 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "basic-toml" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" +dependencies = [ + "serde", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "2.5.0" @@ -187,6 +252,44 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "cbc" version = "0.1.2" @@ -412,6 +515,7 @@ dependencies = [ "sha2", "strum", "subtle", + "uniffi", "wasm-bindgen", "wasm-bindgen-test", "x25519-dalek", @@ -504,10 +608,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] +<<<<<<< HEAD name = "foldhash" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +======= +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] +>>>>>>> d4b0a2d (initial commit) [[package]] name = "generic-array" @@ -532,6 +646,23 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "goblin" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" +dependencies = [ + "log", + "plain", + "scroll", +] + [[package]] name = "hashbrown" version = "0.14.5" @@ -602,6 +733,12 @@ version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + [[package]] name = "js-sys" version = "0.3.69" @@ -658,6 +795,38 @@ dependencies = [ "autocfg", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "num_enum" version = "0.7.2" @@ -714,6 +883,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pbkdf2" version = "0.12.2" @@ -734,6 +909,12 @@ dependencies = [ "spki", ] +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "poly1305" version = "0.8.0" @@ -913,6 +1094,12 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + [[package]] name = "salsa20" version = "0.10.2" @@ -934,6 +1121,26 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "scroll" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "scrypt" version = "0.11.0" @@ -950,6 +1157,9 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "serde" @@ -982,6 +1192,17 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "serde_json" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + [[package]] name = "sha2" version = "0.10.8" @@ -1002,12 +1223,24 @@ dependencies = [ "rand_core", ] +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + [[package]] name = "spki" version = "0.7.3" @@ -1018,6 +1251,12 @@ dependencies = [ "der", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "strsim" version = "0.11.1" @@ -1080,6 +1319,44 @@ version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +dependencies = [ + "smawk", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml_datetime" version = "0.6.6" @@ -1103,12 +1380,155 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "uniffi" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31bff6daf87277a9014bcdefbc2842b0553392919d1096843c5aad899ca4588" +dependencies = [ + "anyhow", + "camino", + "clap", + "uniffi_bindgen", + "uniffi_core", + "uniffi_macros", +] + +[[package]] +name = "uniffi-bindgen" +version = "0.1.0" +dependencies = [ + "uniffi", +] + +[[package]] +name = "uniffi-lib" +version = "0.9.1" +dependencies = [ + "devolutions-crypto", + "uniffi", +] + +[[package]] +name = "uniffi_bindgen" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96061d7e01b185aa405f7c9b134741ab3e50cc6796a47d6fd8ab9a5364b5feed" +dependencies = [ + "anyhow", + "askama", + "camino", + "cargo_metadata", + "fs-err", + "glob", + "goblin", + "heck 0.5.0", + "once_cell", + "paste", + "serde", + "textwrap", + "toml", + "uniffi_meta", + "uniffi_testing", + "uniffi_udl", +] + +[[package]] +name = "uniffi_checksum_derive" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" +dependencies = [ + "quote", + "syn 2.0.66", +] + +[[package]] +name = "uniffi_core" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3210d57d6ab6065ab47a2898dacdb7c606fd6a4156196831fa3bf82e34ac58a6" +dependencies = [ + "anyhow", + "bytes", + "camino", + "log", + "once_cell", + "paste", + "static_assertions", +] + +[[package]] +name = "uniffi_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58691741080935437dc862122e68d7414432a11824ac1137868de46181a0bd2" +dependencies = [ + "bincode", + "camino", + "fs-err", + "once_cell", + "proc-macro2", + "quote", + "serde", + "syn 2.0.66", + "toml", + "uniffi_meta", +] + +[[package]] +name = "uniffi_meta" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7663eacdbd9fbf4a88907ddcfe2e6fa85838eb6dc2418a7d91eebb3786f8e20b" +dependencies = [ + "anyhow", + "bytes", + "siphasher", + "uniffi_checksum_derive", +] + +[[package]] +name = "uniffi_testing" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f922465f7566f25f8fe766920205fdfa9a3fcdc209c6bfb7557f0b5bf45b04dd" +dependencies = [ + "anyhow", + "camino", + "cargo_metadata", + "fs-err", + "once_cell", +] + +[[package]] +name = "uniffi_udl" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef408229a3a407fafa4c36dc4f6ece78a6fb258ab28d2b64bddd49c8cb680f6" +dependencies = [ + "anyhow", + "textwrap", + "uniffi_meta", + "uniffi_testing", + "weedle2", +] + [[package]] name = "unindent" version = "0.2.3" @@ -1244,6 +1664,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "weedle2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e" +dependencies = [ + "nom", +] + [[package]] name = "windows-sys" version = "0.52.0" diff --git a/Cargo.toml b/Cargo.toml index cae4ccc31..5588db6a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,8 @@ members = [ "ffi", "fuzz", "python", -] + "uniffi/uniffi-bindgen" +, "uniffi/uniffi-lib"] [package] name = "devolutions-crypto" @@ -42,6 +43,7 @@ subtle = "2" zeroize = { version = "1.8" } rand = "0.8" rand_core = { version = "0.6" } +uniffi = { version = "0.28" } ed25519-dalek = { version = "2", features = [ "rand_core" ] } x25519-dalek = { version = "2", features = [ "static_secrets" ] } @@ -71,7 +73,11 @@ rust-argon2 = "1.0" wasm-bindgen-test = "0.3" [features] +<<<<<<< HEAD default = [] fuzz = ["arbitrary", "blahaj/fuzzing"] +======= +fuzz = ["arbitrary", "sharks/fuzzing"] +>>>>>>> d4b0a2d (initial commit) wbindgen = ["wasm-bindgen", "serde-wasm-bindgen", "js-sys"] diff --git a/ffi/Cargo.toml b/ffi/Cargo.toml index 753a88c9c..ba947713f 100644 --- a/ffi/Cargo.toml +++ b/ffi/Cargo.toml @@ -4,7 +4,7 @@ version.workspace = true edition = "2021" [lib] -name = "devolutions_crypto" +name = "devolutions_crypto_ffi" crate-type = ["cdylib"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/python/Cargo.toml b/python/Cargo.toml index bfbaca3e3..66f92e104 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -4,7 +4,7 @@ version.workspace = true edition = "2021" [lib] -name = "devolutions_crypto" +name = "devolutions_crypto_python" crate-type = ["cdylib"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/uniffi/uniffi-bindgen/Cargo.toml b/uniffi/uniffi-bindgen/Cargo.toml new file mode 100644 index 000000000..dc4c06048 --- /dev/null +++ b/uniffi/uniffi-bindgen/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "uniffi-bindgen" +version = "0.1.0" +edition = "2021" +publish = false + +[[bin]] +name = "uniffi-bindgen" +path = "src/uniffi-bindgen.rs" + +[dependencies] +uniffi = { version = "0.28", features = ["cli"] } diff --git a/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs b/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs new file mode 100644 index 000000000..d96eac70f --- /dev/null +++ b/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs @@ -0,0 +1,3 @@ +fn main() { + uniffi::uniffi_bindgen_main() +} \ No newline at end of file diff --git a/uniffi/uniffi-lib/Cargo.toml b/uniffi/uniffi-lib/Cargo.toml new file mode 100644 index 000000000..dfee85965 --- /dev/null +++ b/uniffi/uniffi-lib/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "uniffi-lib" +edition = "2021" +version.workspace = true + +[lib] +crate-type = ["cdylib"] + +[dependencies] +devolutions-crypto = { path = "../../" } +uniffi = "0.28.0" diff --git a/uniffi/uniffi-lib/src/lib.rs b/uniffi/uniffi-lib/src/lib.rs new file mode 100644 index 000000000..823e25c8e --- /dev/null +++ b/uniffi/uniffi-lib/src/lib.rs @@ -0,0 +1,7 @@ +#[uniffi::export] +fn hello() { +println!("baba"); +} + + +uniffi::setup_scaffolding!(); diff --git a/wrappers/kotlin/generate.bat b/wrappers/kotlin/generate.bat new file mode 100644 index 000000000..99fd4a4e8 --- /dev/null +++ b/wrappers/kotlin/generate.bat @@ -0,0 +1,6 @@ + +cargo run -p uniffi-bindgen generate --library "..\..\target\release\uniffi_lib.dll" --language kotlin -o output --no-format + + + + diff --git a/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt b/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt new file mode 100644 index 000000000..f5bb58e6f --- /dev/null +++ b/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt @@ -0,0 +1,947 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +@file:Suppress("NAME_SHADOWING") + +package uniffi.uniffi_lib + +// Common helper code. +// +// Ideally this would live in a separate .kt file where it can be unittested etc +// in isolation, and perhaps even published as a re-useable package. +// +// However, it's important that the details of how this helper code works (e.g. the +// way that different builtin types are passed across the FFI) exactly match what's +// expected by the Rust code on the other side of the interface. In practice right +// now that means coming from the exact some version of `uniffi` that was used to +// compile the Rust component. The easiest way to ensure this is to bundle the Kotlin +// helpers directly inline like we're doing here. + +import com.sun.jna.Library +import com.sun.jna.IntegerType +import com.sun.jna.Native +import com.sun.jna.Pointer +import com.sun.jna.Structure +import com.sun.jna.Callback +import com.sun.jna.ptr.* +import java.nio.ByteBuffer +import java.nio.ByteOrder +import java.nio.CharBuffer +import java.nio.charset.CodingErrorAction +import java.util.concurrent.atomic.AtomicLong +import java.util.concurrent.ConcurrentHashMap + +// This is a helper for safely working with byte buffers returned from the Rust code. +// A rust-owned buffer is represented by its capacity, its current length, and a +// pointer to the underlying data. + +@Structure.FieldOrder("capacity", "len", "data") +open class RustBuffer : Structure() { + // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values. + // When dealing with these fields, make sure to call `toULong()`. + @JvmField var capacity: Long = 0 + @JvmField var len: Long = 0 + @JvmField var data: Pointer? = null + + class ByValue: RustBuffer(), Structure.ByValue + class ByReference: RustBuffer(), Structure.ByReference + + internal fun setValue(other: RustBuffer) { + capacity = other.capacity + len = other.len + data = other.data + } + + companion object { + internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status -> + // Note: need to convert the size to a `Long` value to make this work with JVM. + UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_alloc(size.toLong(), status) + }.also { + if(it.data == null) { + throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})") + } + } + + internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue { + var buf = RustBuffer.ByValue() + buf.capacity = capacity.toLong() + buf.len = len.toLong() + buf.data = data + return buf + } + + internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status -> + UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_free(buf, status) + } + } + + @Suppress("TooGenericExceptionThrown") + fun asByteBuffer() = + this.data?.getByteBuffer(0, this.len.toLong())?.also { + it.order(ByteOrder.BIG_ENDIAN) + } +} + +/** + * The equivalent of the `*mut RustBuffer` type. + * Required for callbacks taking in an out pointer. + * + * Size is the sum of all values in the struct. + */ +class RustBufferByReference : ByReference(16) { + /** + * Set the pointed-to `RustBuffer` to the given value. + */ + fun setValue(value: RustBuffer.ByValue) { + // NOTE: The offsets are as they are in the C-like struct. + val pointer = getPointer() + pointer.setLong(0, value.capacity) + pointer.setLong(8, value.len) + pointer.setPointer(16, value.data) + } + + /** + * Get a `RustBuffer.ByValue` from this reference. + */ + fun getValue(): RustBuffer.ByValue { + val pointer = getPointer() + val value = RustBuffer.ByValue() + value.writeField("capacity", pointer.getLong(0)) + value.writeField("len", pointer.getLong(8)) + value.writeField("data", pointer.getLong(16)) + + return value + } +} + +// This is a helper for safely passing byte references into the rust code. +// It's not actually used at the moment, because there aren't many things that you +// can take a direct pointer to in the JVM, and if we're going to copy something +// then we might as well copy it into a `RustBuffer`. But it's here for API +// completeness. + +@Structure.FieldOrder("len", "data") +open class ForeignBytes : Structure() { + @JvmField var len: Int = 0 + @JvmField var data: Pointer? = null + + class ByValue : ForeignBytes(), Structure.ByValue +} +// The FfiConverter interface handles converter types to and from the FFI +// +// All implementing objects should be public to support external types. When a +// type is external we need to import it's FfiConverter. +public interface FfiConverter { + // Convert an FFI type to a Kotlin type + fun lift(value: FfiType): KotlinType + + // Convert an Kotlin type to an FFI type + fun lower(value: KotlinType): FfiType + + // Read a Kotlin type from a `ByteBuffer` + fun read(buf: ByteBuffer): KotlinType + + // Calculate bytes to allocate when creating a `RustBuffer` + // + // This must return at least as many bytes as the write() function will + // write. It can return more bytes than needed, for example when writing + // Strings we can't know the exact bytes needed until we the UTF-8 + // encoding, so we pessimistically allocate the largest size possible (3 + // bytes per codepoint). Allocating extra bytes is not really a big deal + // because the `RustBuffer` is short-lived. + fun allocationSize(value: KotlinType): ULong + + // Write a Kotlin type to a `ByteBuffer` + fun write(value: KotlinType, buf: ByteBuffer) + + // Lower a value into a `RustBuffer` + // + // This method lowers a value into a `RustBuffer` rather than the normal + // FfiType. It's used by the callback interface code. Callback interface + // returns are always serialized into a `RustBuffer` regardless of their + // normal FFI type. + fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue { + val rbuf = RustBuffer.alloc(allocationSize(value)) + try { + val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also { + it.order(ByteOrder.BIG_ENDIAN) + } + write(value, bbuf) + rbuf.writeField("len", bbuf.position().toLong()) + return rbuf + } catch (e: Throwable) { + RustBuffer.free(rbuf) + throw e + } + } + + // Lift a value from a `RustBuffer`. + // + // This here mostly because of the symmetry with `lowerIntoRustBuffer()`. + // It's currently only used by the `FfiConverterRustBuffer` class below. + fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType { + val byteBuf = rbuf.asByteBuffer()!! + try { + val item = read(byteBuf) + if (byteBuf.hasRemaining()) { + throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!") + } + return item + } finally { + RustBuffer.free(rbuf) + } + } +} + +// FfiConverter that uses `RustBuffer` as the FfiType +public interface FfiConverterRustBuffer: FfiConverter { + override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value) + override fun lower(value: KotlinType) = lowerIntoRustBuffer(value) +} +// A handful of classes and functions to support the generated data structures. +// This would be a good candidate for isolating in its own ffi-support lib. + +internal const val UNIFFI_CALL_SUCCESS = 0.toByte() +internal const val UNIFFI_CALL_ERROR = 1.toByte() +internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte() + +@Structure.FieldOrder("code", "error_buf") +internal open class UniffiRustCallStatus : Structure() { + @JvmField var code: Byte = 0 + @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue() + + class ByValue: UniffiRustCallStatus(), Structure.ByValue + + fun isSuccess(): Boolean { + return code == UNIFFI_CALL_SUCCESS + } + + fun isError(): Boolean { + return code == UNIFFI_CALL_ERROR + } + + fun isPanic(): Boolean { + return code == UNIFFI_CALL_UNEXPECTED_ERROR + } + + companion object { + fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue { + val callStatus = UniffiRustCallStatus.ByValue() + callStatus.code = code + callStatus.error_buf = errorBuf + return callStatus + } + } +} + +class InternalException(message: String) : kotlin.Exception(message) + +// Each top-level error class has a companion object that can lift the error from the call status's rust buffer +interface UniffiRustCallStatusErrorHandler { + fun lift(error_buf: RustBuffer.ByValue): E; +} + +// Helpers for calling Rust +// In practice we usually need to be synchronized to call this safely, so it doesn't +// synchronize itself + +// Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err +private inline fun uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler, callback: (UniffiRustCallStatus) -> U): U { + var status = UniffiRustCallStatus() + val return_value = callback(status) + uniffiCheckCallStatus(errorHandler, status) + return return_value +} + +// Check UniffiRustCallStatus and throw an error if the call wasn't successful +private fun uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler, status: UniffiRustCallStatus) { + if (status.isSuccess()) { + return + } else if (status.isError()) { + throw errorHandler.lift(status.error_buf) + } else if (status.isPanic()) { + // when the rust code sees a panic, it tries to construct a rustbuffer + // with the message. but if that code panics, then it just sends back + // an empty buffer. + if (status.error_buf.len > 0) { + throw InternalException(FfiConverterString.lift(status.error_buf)) + } else { + throw InternalException("Rust panic") + } + } else { + throw InternalException("Unknown rust call status: $status.code") + } +} + +// UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR +object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler { + override fun lift(error_buf: RustBuffer.ByValue): InternalException { + RustBuffer.free(error_buf) + return InternalException("Unexpected CALL_ERROR") + } +} + +// Call a rust function that returns a plain value +private inline fun uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U { + return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback) +} + +internal inline fun uniffiTraitInterfaceCall( + callStatus: UniffiRustCallStatus, + makeCall: () -> T, + writeReturn: (T) -> Unit, +) { + try { + writeReturn(makeCall()) + } catch(e: kotlin.Exception) { + callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR + callStatus.error_buf = FfiConverterString.lower(e.toString()) + } +} + +internal inline fun uniffiTraitInterfaceCallWithError( + callStatus: UniffiRustCallStatus, + makeCall: () -> T, + writeReturn: (T) -> Unit, + lowerError: (E) -> RustBuffer.ByValue +) { + try { + writeReturn(makeCall()) + } catch(e: kotlin.Exception) { + if (e is E) { + callStatus.code = UNIFFI_CALL_ERROR + callStatus.error_buf = lowerError(e) + } else { + callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR + callStatus.error_buf = FfiConverterString.lower(e.toString()) + } + } +} +// Map handles to objects +// +// This is used pass an opaque 64-bit handle representing a foreign object to the Rust code. +internal class UniffiHandleMap { + private val map = ConcurrentHashMap() + private val counter = java.util.concurrent.atomic.AtomicLong(0) + + val size: Int + get() = map.size + + // Insert a new object into the handle map and get a handle for it + fun insert(obj: T): Long { + val handle = counter.getAndAdd(1) + map.put(handle, obj) + return handle + } + + // Get an object from the handle map + fun get(handle: Long): T { + return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle") + } + + // Remove an entry from the handlemap and get the Kotlin object back + fun remove(handle: Long): T { + return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle") + } +} + +// Contains loading, initialization code, +// and the FFI Function declarations in a com.sun.jna.Library. +@Synchronized +private fun findLibraryName(componentName: String): String { + val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride") + if (libOverride != null) { + return libOverride + } + return "uniffi_lib" +} + +private inline fun loadIndirect( + componentName: String +): Lib { + return Native.load(findLibraryName(componentName), Lib::class.java) +} + +// Define FFI callback types +internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback { + fun callback(`data`: Long,`pollResult`: Byte,) +} +internal interface UniffiForeignFutureFree : com.sun.jna.Callback { + fun callback(`handle`: Long,) +} +internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback { + fun callback(`handle`: Long,) +} +@Structure.FieldOrder("handle", "free") +internal open class UniffiForeignFuture( + @JvmField internal var `handle`: Long = 0.toLong(), + @JvmField internal var `free`: UniffiForeignFutureFree? = null, +) : Structure() { + class UniffiByValue( + `handle`: Long = 0.toLong(), + `free`: UniffiForeignFutureFree? = null, + ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFuture) { + `handle` = other.`handle` + `free` = other.`free` + } + +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU8( + @JvmField internal var `returnValue`: Byte = 0.toByte(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Byte = 0.toByte(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI8( + @JvmField internal var `returnValue`: Byte = 0.toByte(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Byte = 0.toByte(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU16( + @JvmField internal var `returnValue`: Short = 0.toShort(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Short = 0.toShort(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI16( + @JvmField internal var `returnValue`: Short = 0.toShort(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Short = 0.toShort(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU32( + @JvmField internal var `returnValue`: Int = 0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Int = 0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI32( + @JvmField internal var `returnValue`: Int = 0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Int = 0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU64( + @JvmField internal var `returnValue`: Long = 0.toLong(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Long = 0.toLong(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI64( + @JvmField internal var `returnValue`: Long = 0.toLong(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Long = 0.toLong(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructF32( + @JvmField internal var `returnValue`: Float = 0.0f, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Float = 0.0f, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructF64( + @JvmField internal var `returnValue`: Double = 0.0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Double = 0.0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructPointer( + @JvmField internal var `returnValue`: Pointer = Pointer.NULL, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Pointer = Pointer.NULL, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructRustBuffer( + @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,) +} +@Structure.FieldOrder("callStatus") +internal open class UniffiForeignFutureStructVoid( + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) { + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,) +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// A JNA Library to expose the extern-C FFI definitions. +// This is an implementation detail which will be called internally by the public API. + +internal interface UniffiLib : Library { + companion object { + internal val INSTANCE: UniffiLib by lazy { + loadIndirect(componentName = "uniffi_lib") + .also { lib: UniffiLib -> + uniffiCheckContractApiVersion(lib) + uniffiCheckApiChecksums(lib) + } + } + + } + + fun uniffi_uniffi_lib_fn_func_hello(uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun ffi_uniffi_lib_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun ffi_uniffi_lib_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_uniffi_lib_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_uniffi_lib_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Short + fun ffi_uniffi_lib_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Short + fun ffi_uniffi_lib_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Int + fun ffi_uniffi_lib_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Int + fun ffi_uniffi_lib_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Long + fun ffi_uniffi_lib_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Long + fun ffi_uniffi_lib_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_f32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_f32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Float + fun ffi_uniffi_lib_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_f64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_f64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Double + fun ffi_uniffi_lib_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_pointer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_pointer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun ffi_uniffi_lib_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_rust_buffer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_rust_buffer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_void(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_void(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_uniffi_lib_checksum_func_hello( + ): Short + fun ffi_uniffi_lib_uniffi_contract_version( + ): Int + +} + +private fun uniffiCheckContractApiVersion(lib: UniffiLib) { + // Get the bindings contract version from our ComponentInterface + val bindings_contract_version = 26 + // Get the scaffolding contract version by calling the into the dylib + val scaffolding_contract_version = lib.ffi_uniffi_lib_uniffi_contract_version() + if (bindings_contract_version != scaffolding_contract_version) { + throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project") + } +} + +@Suppress("UNUSED_PARAMETER") +private fun uniffiCheckApiChecksums(lib: UniffiLib) { + if (lib.uniffi_uniffi_lib_checksum_func_hello() != 17287.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } +} + +// Async support + +// Public interface members begin here. + + +// Interface implemented by anything that can contain an object reference. +// +// Such types expose a `destroy()` method that must be called to cleanly +// dispose of the contained objects. Failure to call this method may result +// in memory leaks. +// +// The easiest way to ensure this method is called is to use the `.use` +// helper method to execute a block and destroy the object at the end. +interface Disposable { + fun destroy() + companion object { + fun destroy(vararg args: Any?) { + args.filterIsInstance() + .forEach(Disposable::destroy) + } + } +} + +inline fun T.use(block: (T) -> R) = + try { + block(this) + } finally { + try { + // N.B. our implementation is on the nullable type `Disposable?`. + this?.destroy() + } catch (e: Throwable) { + // swallow + } + } + +/** Used to instantiate an interface without an actual pointer, for fakes in tests, mostly. */ +object NoPointer + +public object FfiConverterString: FfiConverter { + // Note: we don't inherit from FfiConverterRustBuffer, because we use a + // special encoding when lowering/lifting. We can use `RustBuffer.len` to + // store our length and avoid writing it out to the buffer. + override fun lift(value: RustBuffer.ByValue): String { + try { + val byteArr = ByteArray(value.len.toInt()) + value.asByteBuffer()!!.get(byteArr) + return byteArr.toString(Charsets.UTF_8) + } finally { + RustBuffer.free(value) + } + } + + override fun read(buf: ByteBuffer): String { + val len = buf.getInt() + val byteArr = ByteArray(len) + buf.get(byteArr) + return byteArr.toString(Charsets.UTF_8) + } + + fun toUtf8(value: String): ByteBuffer { + // Make sure we don't have invalid UTF-16, check for lone surrogates. + return Charsets.UTF_8.newEncoder().run { + onMalformedInput(CodingErrorAction.REPORT) + encode(CharBuffer.wrap(value)) + } + } + + override fun lower(value: String): RustBuffer.ByValue { + val byteBuf = toUtf8(value) + // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us + // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`. + val rbuf = RustBuffer.alloc(byteBuf.limit().toULong()) + rbuf.asByteBuffer()!!.put(byteBuf) + return rbuf + } + + // We aren't sure exactly how many bytes our string will be once it's UTF-8 + // encoded. Allocate 3 bytes per UTF-16 code unit which will always be + // enough. + override fun allocationSize(value: String): ULong { + val sizeForLength = 4UL + val sizeForString = value.length.toULong() * 3UL + return sizeForLength + sizeForString + } + + override fun write(value: String, buf: ByteBuffer) { + val byteBuf = toUtf8(value) + buf.putInt(byteBuf.limit()) + buf.put(byteBuf) + } +} fun `hello`() + = + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_uniffi_lib_fn_func_hello( + _status) +} + + + + diff --git a/wrappers/switft/generate.bat b/wrappers/switft/generate.bat new file mode 100644 index 000000000..f6432fc49 --- /dev/null +++ b/wrappers/switft/generate.bat @@ -0,0 +1,6 @@ + +cargo run -p uniffi-bindgen generate --library "..\..\target\release\uniffi_lib.dll" --language swift -o output --no-format + + + + diff --git a/wrappers/switft/output/uniffi_lib.swift b/wrappers/switft/output/uniffi_lib.swift new file mode 100644 index 000000000..8ee2d8693 --- /dev/null +++ b/wrappers/switft/output/uniffi_lib.swift @@ -0,0 +1,461 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +// swiftlint:disable all +import Foundation + +// Depending on the consumer's build setup, the low-level FFI code +// might be in a separate module, or it might be compiled inline into +// this module. This is a bit of light hackery to work with both. +#if canImport(uniffi_libFFI) +import uniffi_libFFI +#endif + +fileprivate extension RustBuffer { + // Allocate a new buffer, copying the contents of a `UInt8` array. + init(bytes: [UInt8]) { + let rbuf = bytes.withUnsafeBufferPointer { ptr in + RustBuffer.from(ptr) + } + self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data) + } + + static func empty() -> RustBuffer { + RustBuffer(capacity: 0, len:0, data: nil) + } + + static func from(_ ptr: UnsafeBufferPointer) -> RustBuffer { + try! rustCall { ffi_uniffi_lib_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } + } + + // Frees the buffer in place. + // The buffer must not be used after this is called. + func deallocate() { + try! rustCall { ffi_uniffi_lib_rustbuffer_free(self, $0) } + } +} + +fileprivate extension ForeignBytes { + init(bufferPointer: UnsafeBufferPointer) { + self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress) + } +} + +// For every type used in the interface, we provide helper methods for conveniently +// lifting and lowering that type from C-compatible data, and for reading and writing +// values of that type in a buffer. + +// Helper classes/extensions that don't change. +// Someday, this will be in a library of its own. + +fileprivate extension Data { + init(rustBuffer: RustBuffer) { + // TODO: This copies the buffer. Can we read directly from a + // Rust buffer? + self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len)) + } +} + +// Define reader functionality. Normally this would be defined in a class or +// struct, but we use standalone functions instead in order to make external +// types work. +// +// With external types, one swift source file needs to be able to call the read +// method on another source file's FfiConverter, but then what visibility +// should Reader have? +// - If Reader is fileprivate, then this means the read() must also +// be fileprivate, which doesn't work with external types. +// - If Reader is internal/public, we'll get compile errors since both source +// files will try define the same type. +// +// Instead, the read() method and these helper functions input a tuple of data + +fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) { + (data: data, offset: 0) +} + +// Reads an integer at the current offset, in big-endian order, and advances +// the offset on success. Throws if reading the integer would move the +// offset past the end of the buffer. +fileprivate func readInt(_ reader: inout (data: Data, offset: Data.Index)) throws -> T { + let range = reader.offset...size + guard reader.data.count >= range.upperBound else { + throw UniffiInternalError.bufferOverflow + } + if T.self == UInt8.self { + let value = reader.data[reader.offset] + reader.offset += 1 + return value as! T + } + var value: T = 0 + let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)}) + reader.offset = range.upperBound + return value.bigEndian +} + +// Reads an arbitrary number of bytes, to be used to read +// raw bytes, this is useful when lifting strings +fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array { + let range = reader.offset..<(reader.offset+count) + guard reader.data.count >= range.upperBound else { + throw UniffiInternalError.bufferOverflow + } + var value = [UInt8](repeating: 0, count: count) + value.withUnsafeMutableBufferPointer({ buffer in + reader.data.copyBytes(to: buffer, from: range) + }) + reader.offset = range.upperBound + return value +} + +// Reads a float at the current offset. +fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float { + return Float(bitPattern: try readInt(&reader)) +} + +// Reads a float at the current offset. +fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double { + return Double(bitPattern: try readInt(&reader)) +} + +// Indicates if the offset has reached the end of the buffer. +fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool { + return reader.offset < reader.data.count +} + +// Define writer functionality. Normally this would be defined in a class or +// struct, but we use standalone functions instead in order to make external +// types work. See the above discussion on Readers for details. + +fileprivate func createWriter() -> [UInt8] { + return [] +} + +fileprivate func writeBytes(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 { + writer.append(contentsOf: byteArr) +} + +// Writes an integer in big-endian order. +// +// Warning: make sure what you are trying to write +// is in the correct type! +fileprivate func writeInt(_ writer: inout [UInt8], _ value: T) { + var value = value.bigEndian + withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) } +} + +fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) { + writeInt(&writer, value.bitPattern) +} + +fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) { + writeInt(&writer, value.bitPattern) +} + +// Protocol for types that transfer other types across the FFI. This is +// analogous to the Rust trait of the same name. +fileprivate protocol FfiConverter { + associatedtype FfiType + associatedtype SwiftType + + static func lift(_ value: FfiType) throws -> SwiftType + static func lower(_ value: SwiftType) -> FfiType + static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType + static func write(_ value: SwiftType, into buf: inout [UInt8]) +} + +// Types conforming to `Primitive` pass themselves directly over the FFI. +fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { } + +extension FfiConverterPrimitive { + public static func lift(_ value: FfiType) throws -> SwiftType { + return value + } + + public static func lower(_ value: SwiftType) -> FfiType { + return value + } +} + +// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`. +// Used for complex types where it's hard to write a custom lift/lower. +fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {} + +extension FfiConverterRustBuffer { + public static func lift(_ buf: RustBuffer) throws -> SwiftType { + var reader = createReader(data: Data(rustBuffer: buf)) + let value = try read(from: &reader) + if hasRemaining(reader) { + throw UniffiInternalError.incompleteData + } + buf.deallocate() + return value + } + + public static func lower(_ value: SwiftType) -> RustBuffer { + var writer = createWriter() + write(value, into: &writer) + return RustBuffer(bytes: writer) + } +} +// An error type for FFI errors. These errors occur at the UniFFI level, not +// the library level. +fileprivate enum UniffiInternalError: LocalizedError { + case bufferOverflow + case incompleteData + case unexpectedOptionalTag + case unexpectedEnumCase + case unexpectedNullPointer + case unexpectedRustCallStatusCode + case unexpectedRustCallError + case unexpectedStaleHandle + case rustPanic(_ message: String) + + public var errorDescription: String? { + switch self { + case .bufferOverflow: return "Reading the requested value would read past the end of the buffer" + case .incompleteData: return "The buffer still has data after lifting its containing value" + case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1" + case .unexpectedEnumCase: return "Raw enum value doesn't match any cases" + case .unexpectedNullPointer: return "Raw pointer value was null" + case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code" + case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified" + case .unexpectedStaleHandle: return "The object in the handle map has been dropped already" + case let .rustPanic(message): return message + } + } +} + +fileprivate extension NSLock { + func withLock(f: () throws -> T) rethrows -> T { + self.lock() + defer { self.unlock() } + return try f() + } +} + +fileprivate let CALL_SUCCESS: Int8 = 0 +fileprivate let CALL_ERROR: Int8 = 1 +fileprivate let CALL_UNEXPECTED_ERROR: Int8 = 2 +fileprivate let CALL_CANCELLED: Int8 = 3 + +fileprivate extension RustCallStatus { + init() { + self.init( + code: CALL_SUCCESS, + errorBuf: RustBuffer.init( + capacity: 0, + len: 0, + data: nil + ) + ) + } +} + +private func rustCall(_ callback: (UnsafeMutablePointer) -> T) throws -> T { + let neverThrow: ((RustBuffer) throws -> Never)? = nil + return try makeRustCall(callback, errorHandler: neverThrow) +} + +private func rustCallWithError( + _ errorHandler: @escaping (RustBuffer) throws -> E, + _ callback: (UnsafeMutablePointer) -> T) throws -> T { + try makeRustCall(callback, errorHandler: errorHandler) +} + +private func makeRustCall( + _ callback: (UnsafeMutablePointer) -> T, + errorHandler: ((RustBuffer) throws -> E)? +) throws -> T { + uniffiEnsureInitialized() + var callStatus = RustCallStatus.init() + let returnedVal = callback(&callStatus) + try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler) + return returnedVal +} + +private func uniffiCheckCallStatus( + callStatus: RustCallStatus, + errorHandler: ((RustBuffer) throws -> E)? +) throws { + switch callStatus.code { + case CALL_SUCCESS: + return + + case CALL_ERROR: + if let errorHandler = errorHandler { + throw try errorHandler(callStatus.errorBuf) + } else { + callStatus.errorBuf.deallocate() + throw UniffiInternalError.unexpectedRustCallError + } + + case CALL_UNEXPECTED_ERROR: + // When the rust code sees a panic, it tries to construct a RustBuffer + // with the message. But if that code panics, then it just sends back + // an empty buffer. + if callStatus.errorBuf.len > 0 { + throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf)) + } else { + callStatus.errorBuf.deallocate() + throw UniffiInternalError.rustPanic("Rust panic") + } + + case CALL_CANCELLED: + fatalError("Cancellation not supported yet") + + default: + throw UniffiInternalError.unexpectedRustCallStatusCode + } +} + +private func uniffiTraitInterfaceCall( + callStatus: UnsafeMutablePointer, + makeCall: () throws -> T, + writeReturn: (T) -> () +) { + do { + try writeReturn(makeCall()) + } catch let error { + callStatus.pointee.code = CALL_UNEXPECTED_ERROR + callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) + } +} + +private func uniffiTraitInterfaceCallWithError( + callStatus: UnsafeMutablePointer, + makeCall: () throws -> T, + writeReturn: (T) -> (), + lowerError: (E) -> RustBuffer +) { + do { + try writeReturn(makeCall()) + } catch let error as E { + callStatus.pointee.code = CALL_ERROR + callStatus.pointee.errorBuf = lowerError(error) + } catch { + callStatus.pointee.code = CALL_UNEXPECTED_ERROR + callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) + } +} +fileprivate class UniffiHandleMap { + private var map: [UInt64: T] = [:] + private let lock = NSLock() + private var currentHandle: UInt64 = 1 + + func insert(obj: T) -> UInt64 { + lock.withLock { + let handle = currentHandle + currentHandle += 1 + map[handle] = obj + return handle + } + } + + func get(handle: UInt64) throws -> T { + try lock.withLock { + guard let obj = map[handle] else { + throw UniffiInternalError.unexpectedStaleHandle + } + return obj + } + } + + @discardableResult + func remove(handle: UInt64) throws -> T { + try lock.withLock { + guard let obj = map.removeValue(forKey: handle) else { + throw UniffiInternalError.unexpectedStaleHandle + } + return obj + } + } + + var count: Int { + get { + map.count + } + } +} + + +// Public interface members begin here. + + +fileprivate struct FfiConverterString: FfiConverter { + typealias SwiftType = String + typealias FfiType = RustBuffer + + public static func lift(_ value: RustBuffer) throws -> String { + defer { + value.deallocate() + } + if value.data == nil { + return String() + } + let bytes = UnsafeBufferPointer(start: value.data!, count: Int(value.len)) + return String(bytes: bytes, encoding: String.Encoding.utf8)! + } + + public static func lower(_ value: String) -> RustBuffer { + return value.utf8CString.withUnsafeBufferPointer { ptr in + // The swift string gives us int8_t, we want uint8_t. + ptr.withMemoryRebound(to: UInt8.self) { ptr in + // The swift string gives us a trailing null byte, we don't want it. + let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1)) + return RustBuffer.from(buf) + } + } + } + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String { + let len: Int32 = try readInt(&buf) + return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)! + } + + public static func write(_ value: String, into buf: inout [UInt8]) { + let len = Int32(value.utf8.count) + writeInt(&buf, len) + writeBytes(&buf, value.utf8) + } +} +public func hello() {try! rustCall() { + uniffi_uniffi_lib_fn_func_hello($0 + ) +} +} + +private enum InitializationResult { + case ok + case contractVersionMismatch + case apiChecksumMismatch +} +// Use a global variable to perform the versioning checks. Swift ensures that +// the code inside is only computed once. +private var initializationResult: InitializationResult = { + // Get the bindings contract version from our ComponentInterface + let bindings_contract_version = 26 + // Get the scaffolding contract version by calling the into the dylib + let scaffolding_contract_version = ffi_uniffi_lib_uniffi_contract_version() + if bindings_contract_version != scaffolding_contract_version { + return InitializationResult.contractVersionMismatch + } + if (uniffi_uniffi_lib_checksum_func_hello() != 17287) { + return InitializationResult.apiChecksumMismatch + } + + return InitializationResult.ok +}() + +private func uniffiEnsureInitialized() { + switch initializationResult { + case .ok: + break + case .contractVersionMismatch: + fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project") + case .apiChecksumMismatch: + fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } +} + +// swiftlint:enable all \ No newline at end of file diff --git a/wrappers/switft/output/uniffi_libFFI.h b/wrappers/switft/output/uniffi_libFFI.h new file mode 100644 index 000000000..6bda9d871 --- /dev/null +++ b/wrappers/switft/output/uniffi_libFFI.h @@ -0,0 +1,552 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +#pragma once + +#include +#include +#include + +// The following structs are used to implement the lowest level +// of the FFI, and thus useful to multiple uniffied crates. +// We ensure they are declared exactly once, with a header guard, UNIFFI_SHARED_H. +#ifdef UNIFFI_SHARED_H + // We also try to prevent mixing versions of shared uniffi header structs. + // If you add anything to the #else block, you must increment the version suffix in UNIFFI_SHARED_HEADER_V4 + #ifndef UNIFFI_SHARED_HEADER_V4 + #error Combining helper code from multiple versions of uniffi is not supported + #endif // ndef UNIFFI_SHARED_HEADER_V4 +#else +#define UNIFFI_SHARED_H +#define UNIFFI_SHARED_HEADER_V4 +// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️ +// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️ + +typedef struct RustBuffer +{ + uint64_t capacity; + uint64_t len; + uint8_t *_Nullable data; +} RustBuffer; + +typedef struct ForeignBytes +{ + int32_t len; + const uint8_t *_Nullable data; +} ForeignBytes; + +// Error definitions +typedef struct RustCallStatus { + int8_t code; + RustBuffer errorBuf; +} RustCallStatus; + +// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️ +// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️ +#endif // def UNIFFI_SHARED_H +#ifndef UNIFFI_FFIDEF_RUST_FUTURE_CONTINUATION_CALLBACK +#define UNIFFI_FFIDEF_RUST_FUTURE_CONTINUATION_CALLBACK +typedef void (*UniffiRustFutureContinuationCallback)(uint64_t, int8_t + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_FREE +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_FREE +typedef void (*UniffiForeignFutureFree)(uint64_t + ); + +#endif +#ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_FREE +#define UNIFFI_FFIDEF_CALLBACK_INTERFACE_FREE +typedef void (*UniffiCallbackInterfaceFree)(uint64_t + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE +#define UNIFFI_FFIDEF_FOREIGN_FUTURE +typedef struct UniffiForeignFuture { + uint64_t handle; + UniffiForeignFutureFree _Nonnull free; +} UniffiForeignFuture; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U8 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U8 +typedef struct UniffiForeignFutureStructU8 { + uint8_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructU8; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U8 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U8 +typedef void (*UniffiForeignFutureCompleteU8)(uint64_t, UniffiForeignFutureStructU8 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I8 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I8 +typedef struct UniffiForeignFutureStructI8 { + int8_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructI8; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I8 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I8 +typedef void (*UniffiForeignFutureCompleteI8)(uint64_t, UniffiForeignFutureStructI8 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U16 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U16 +typedef struct UniffiForeignFutureStructU16 { + uint16_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructU16; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U16 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U16 +typedef void (*UniffiForeignFutureCompleteU16)(uint64_t, UniffiForeignFutureStructU16 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I16 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I16 +typedef struct UniffiForeignFutureStructI16 { + int16_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructI16; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I16 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I16 +typedef void (*UniffiForeignFutureCompleteI16)(uint64_t, UniffiForeignFutureStructI16 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U32 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U32 +typedef struct UniffiForeignFutureStructU32 { + uint32_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructU32; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U32 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U32 +typedef void (*UniffiForeignFutureCompleteU32)(uint64_t, UniffiForeignFutureStructU32 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I32 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I32 +typedef struct UniffiForeignFutureStructI32 { + int32_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructI32; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I32 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I32 +typedef void (*UniffiForeignFutureCompleteI32)(uint64_t, UniffiForeignFutureStructI32 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U64 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U64 +typedef struct UniffiForeignFutureStructU64 { + uint64_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructU64; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U64 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U64 +typedef void (*UniffiForeignFutureCompleteU64)(uint64_t, UniffiForeignFutureStructU64 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I64 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I64 +typedef struct UniffiForeignFutureStructI64 { + int64_t returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructI64; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I64 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I64 +typedef void (*UniffiForeignFutureCompleteI64)(uint64_t, UniffiForeignFutureStructI64 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F32 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F32 +typedef struct UniffiForeignFutureStructF32 { + float returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructF32; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F32 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F32 +typedef void (*UniffiForeignFutureCompleteF32)(uint64_t, UniffiForeignFutureStructF32 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F64 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F64 +typedef struct UniffiForeignFutureStructF64 { + double returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructF64; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F64 +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F64 +typedef void (*UniffiForeignFutureCompleteF64)(uint64_t, UniffiForeignFutureStructF64 + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_POINTER +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_POINTER +typedef struct UniffiForeignFutureStructPointer { + void*_Nonnull returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructPointer; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_POINTER +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_POINTER +typedef void (*UniffiForeignFutureCompletePointer)(uint64_t, UniffiForeignFutureStructPointer + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_RUST_BUFFER +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_RUST_BUFFER +typedef struct UniffiForeignFutureStructRustBuffer { + RustBuffer returnValue; + RustCallStatus callStatus; +} UniffiForeignFutureStructRustBuffer; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_RUST_BUFFER +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_RUST_BUFFER +typedef void (*UniffiForeignFutureCompleteRustBuffer)(uint64_t, UniffiForeignFutureStructRustBuffer + ); + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_VOID +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_VOID +typedef struct UniffiForeignFutureStructVoid { + RustCallStatus callStatus; +} UniffiForeignFutureStructVoid; + +#endif +#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_VOID +#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_VOID +typedef void (*UniffiForeignFutureCompleteVoid)(uint64_t, UniffiForeignFutureStructVoid + ); + +#endif +#ifndef UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_FN_FUNC_HELLO +#define UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_FN_FUNC_HELLO +void uniffi_uniffi_lib_fn_func_hello(RustCallStatus *_Nonnull out_status + +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_ALLOC +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_ALLOC +RustBuffer ffi_uniffi_lib_rustbuffer_alloc(uint64_t size, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FROM_BYTES +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FROM_BYTES +RustBuffer ffi_uniffi_lib_rustbuffer_from_bytes(ForeignBytes bytes, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FREE +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FREE +void ffi_uniffi_lib_rustbuffer_free(RustBuffer buf, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_RESERVE +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_RESERVE +RustBuffer ffi_uniffi_lib_rustbuffer_reserve(RustBuffer buf, uint64_t additional, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U8 +void ffi_uniffi_lib_rust_future_poll_u8(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U8 +void ffi_uniffi_lib_rust_future_cancel_u8(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U8 +void ffi_uniffi_lib_rust_future_free_u8(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U8 +uint8_t ffi_uniffi_lib_rust_future_complete_u8(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I8 +void ffi_uniffi_lib_rust_future_poll_i8(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I8 +void ffi_uniffi_lib_rust_future_cancel_i8(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I8 +void ffi_uniffi_lib_rust_future_free_i8(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I8 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I8 +int8_t ffi_uniffi_lib_rust_future_complete_i8(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U16 +void ffi_uniffi_lib_rust_future_poll_u16(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U16 +void ffi_uniffi_lib_rust_future_cancel_u16(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U16 +void ffi_uniffi_lib_rust_future_free_u16(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U16 +uint16_t ffi_uniffi_lib_rust_future_complete_u16(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I16 +void ffi_uniffi_lib_rust_future_poll_i16(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I16 +void ffi_uniffi_lib_rust_future_cancel_i16(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I16 +void ffi_uniffi_lib_rust_future_free_i16(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I16 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I16 +int16_t ffi_uniffi_lib_rust_future_complete_i16(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U32 +void ffi_uniffi_lib_rust_future_poll_u32(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U32 +void ffi_uniffi_lib_rust_future_cancel_u32(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U32 +void ffi_uniffi_lib_rust_future_free_u32(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U32 +uint32_t ffi_uniffi_lib_rust_future_complete_u32(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I32 +void ffi_uniffi_lib_rust_future_poll_i32(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I32 +void ffi_uniffi_lib_rust_future_cancel_i32(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I32 +void ffi_uniffi_lib_rust_future_free_i32(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I32 +int32_t ffi_uniffi_lib_rust_future_complete_i32(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U64 +void ffi_uniffi_lib_rust_future_poll_u64(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U64 +void ffi_uniffi_lib_rust_future_cancel_u64(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U64 +void ffi_uniffi_lib_rust_future_free_u64(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U64 +uint64_t ffi_uniffi_lib_rust_future_complete_u64(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I64 +void ffi_uniffi_lib_rust_future_poll_i64(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I64 +void ffi_uniffi_lib_rust_future_cancel_i64(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I64 +void ffi_uniffi_lib_rust_future_free_i64(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I64 +int64_t ffi_uniffi_lib_rust_future_complete_i64(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F32 +void ffi_uniffi_lib_rust_future_poll_f32(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F32 +void ffi_uniffi_lib_rust_future_cancel_f32(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F32 +void ffi_uniffi_lib_rust_future_free_f32(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F32 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F32 +float ffi_uniffi_lib_rust_future_complete_f32(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F64 +void ffi_uniffi_lib_rust_future_poll_f64(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F64 +void ffi_uniffi_lib_rust_future_cancel_f64(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F64 +void ffi_uniffi_lib_rust_future_free_f64(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F64 +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F64 +double ffi_uniffi_lib_rust_future_complete_f64(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_POINTER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_POINTER +void ffi_uniffi_lib_rust_future_poll_pointer(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_POINTER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_POINTER +void ffi_uniffi_lib_rust_future_cancel_pointer(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_POINTER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_POINTER +void ffi_uniffi_lib_rust_future_free_pointer(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_POINTER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_POINTER +void*_Nonnull ffi_uniffi_lib_rust_future_complete_pointer(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_RUST_BUFFER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_RUST_BUFFER +void ffi_uniffi_lib_rust_future_poll_rust_buffer(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_RUST_BUFFER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_RUST_BUFFER +void ffi_uniffi_lib_rust_future_cancel_rust_buffer(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_RUST_BUFFER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_RUST_BUFFER +void ffi_uniffi_lib_rust_future_free_rust_buffer(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_RUST_BUFFER +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_RUST_BUFFER +RustBuffer ffi_uniffi_lib_rust_future_complete_rust_buffer(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_VOID +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_VOID +void ffi_uniffi_lib_rust_future_poll_void(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_VOID +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_VOID +void ffi_uniffi_lib_rust_future_cancel_void(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_VOID +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_VOID +void ffi_uniffi_lib_rust_future_free_void(uint64_t handle +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_VOID +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_VOID +void ffi_uniffi_lib_rust_future_complete_void(uint64_t handle, RustCallStatus *_Nonnull out_status +); +#endif +#ifndef UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_CHECKSUM_FUNC_HELLO +#define UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_CHECKSUM_FUNC_HELLO +uint16_t uniffi_uniffi_lib_checksum_func_hello(void + +); +#endif +#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_UNIFFI_CONTRACT_VERSION +#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_UNIFFI_CONTRACT_VERSION +uint32_t ffi_uniffi_lib_uniffi_contract_version(void + +); +#endif + diff --git a/wrappers/switft/output/uniffi_libFFI.modulemap b/wrappers/switft/output/uniffi_libFFI.modulemap new file mode 100644 index 000000000..fd67834bd --- /dev/null +++ b/wrappers/switft/output/uniffi_libFFI.modulemap @@ -0,0 +1,6 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! +module uniffi_libFFI { + header "uniffi_libFFI.h" + export * +} \ No newline at end of file From 226ed9cffd22faa28519f9f58964a9ec5023af80 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Wed, 31 Jul 2024 15:12:14 -0400 Subject: [PATCH 02/43] wip kotlin --- wrappers/kotlin/lib/.gitattributes | 12 + wrappers/kotlin/lib/.gitignore | 5 + wrappers/kotlin/lib/gradle/libs.versions.toml | 15 + .../lib/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43504 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + wrappers/kotlin/lib/gradlew | 252 +++++ wrappers/kotlin/lib/gradlew.bat | 94 ++ wrappers/kotlin/lib/lib/build.gradle.kts | 73 ++ .../src/main/kotlin/org/example/Library.kt | 14 + .../kotlin/uniffi/uniffi_lib/uniffi_lib.kt | 964 ++++++++++++++++++ .../lib/lib/src/main/resources/uniffi_lib.dll | Bin 0 -> 1248431 bytes .../test/kotlin/org/example/LibraryTest.kt | 15 + wrappers/kotlin/lib/settings.gradle.kts | 15 + 13 files changed, 1466 insertions(+) create mode 100644 wrappers/kotlin/lib/.gitattributes create mode 100644 wrappers/kotlin/lib/.gitignore create mode 100644 wrappers/kotlin/lib/gradle/libs.versions.toml create mode 100644 wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.jar create mode 100644 wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties create mode 100644 wrappers/kotlin/lib/gradlew create mode 100644 wrappers/kotlin/lib/gradlew.bat create mode 100644 wrappers/kotlin/lib/lib/build.gradle.kts create mode 100644 wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt create mode 100644 wrappers/kotlin/lib/lib/src/main/kotlin/uniffi/uniffi_lib/uniffi_lib.kt create mode 100644 wrappers/kotlin/lib/lib/src/main/resources/uniffi_lib.dll create mode 100644 wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt create mode 100644 wrappers/kotlin/lib/settings.gradle.kts diff --git a/wrappers/kotlin/lib/.gitattributes b/wrappers/kotlin/lib/.gitattributes new file mode 100644 index 000000000..f91f64602 --- /dev/null +++ b/wrappers/kotlin/lib/.gitattributes @@ -0,0 +1,12 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + +# Binary files should be left untouched +*.jar binary + diff --git a/wrappers/kotlin/lib/.gitignore b/wrappers/kotlin/lib/.gitignore new file mode 100644 index 000000000..1b6985c00 --- /dev/null +++ b/wrappers/kotlin/lib/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/wrappers/kotlin/lib/gradle/libs.versions.toml b/wrappers/kotlin/lib/gradle/libs.versions.toml new file mode 100644 index 000000000..1471de60f --- /dev/null +++ b/wrappers/kotlin/lib/gradle/libs.versions.toml @@ -0,0 +1,15 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format + +[versions] +commons-math3 = "3.6.1" +guava = "33.1.0-jre" +junit-jupiter-engine = "5.10.2" + +[libraries] +commons-math3 = { module = "org.apache.commons:commons-math3", version.ref = "commons-math3" } +guava = { module = "com.google.guava:guava", version.ref = "guava" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter-engine" } + +[plugins] +jvm = { id = "org.jetbrains.kotlin.jvm", version = "1.9.23" } diff --git a/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.jar b/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2c3521197d7c4586c843d1d3e9090525f1898cde GIT binary patch literal 43504 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 yu?e%!_ptzGB|8GrCfu%p?(_ zQccdaaVK$5bz;*rnyK{_SQYM>;aES6Qs^lj9lEs6_J+%nIiuQC*fN;z8md>r_~Mfl zU%p5Dt_YT>gQqfr@`cR!$NWr~+`CZb%dn;WtzrAOI>P_JtsB76PYe*<%H(y>qx-`Kq!X_; z<{RpAqYhE=L1r*M)gNF3B8r(<%8mo*SR2hu zccLRZwGARt)Hlo1euqTyM>^!HK*!Q2P;4UYrysje@;(<|$&%vQekbn|0Ruu_Io(w4#%p6ld2Yp7tlA`Y$cciThP zKzNGIMPXX%&Ud0uQh!uQZz|FB`4KGD?3!ND?wQt6!n*f4EmCoJUh&b?;B{|lxs#F- z31~HQ`SF4x$&v00@(P+j1pAaj5!s`)b2RDBp*PB=2IB>oBF!*6vwr7Dp%zpAx*dPr zb@Zjq^XjN?O4QcZ*O+8>)|HlrR>oD*?WQl5ri3R#2?*W6iJ>>kH%KnnME&TT@ZzrHS$Q%LC?n|e>V+D+8D zYc4)QddFz7I8#}y#Wj6>4P%34dZH~OUDb?uP%-E zwjXM(?Sg~1!|wI(RVuxbu)-rH+O=igSho_pDCw(c6b=P zKk4ATlB?bj9+HHlh<_!&z0rx13K3ZrAR8W)!@Y}o`?a*JJsD+twZIv`W)@Y?Amu_u zz``@-e2X}27$i(2=9rvIu5uTUOVhzwu%mNazS|lZb&PT;XE2|B&W1>=B58#*!~D&) zfVmJGg8UdP*fx(>Cj^?yS^zH#o-$Q-*$SnK(ZVFkw+er=>N^7!)FtP3y~Xxnu^nzY zikgB>Nj0%;WOltWIob|}%lo?_C7<``a5hEkx&1ku$|)i>Rh6@3h*`slY=9U}(Ql_< zaNG*J8vb&@zpdhAvv`?{=zDedJ23TD&Zg__snRAH4eh~^oawdYi6A3w8<Ozh@Kw)#bdktM^GVb zrG08?0bG?|NG+w^&JvD*7LAbjED{_Zkc`3H!My>0u5Q}m!+6VokMLXxl`Mkd=g&Xx z-a>m*#G3SLlhbKB!)tnzfWOBV;u;ftU}S!NdD5+YtOjLg?X}dl>7m^gOpihrf1;PY zvll&>dIuUGs{Qnd- zwIR3oIrct8Va^Tm0t#(bJD7c$Z7DO9*7NnRZorrSm`b`cxz>OIC;jSE3DO8`hX955ui`s%||YQtt2 z5DNA&pG-V+4oI2s*x^>-$6J?p=I>C|9wZF8z;VjR??Icg?1w2v5Me+FgAeGGa8(3S z4vg*$>zC-WIVZtJ7}o9{D-7d>zCe|z#<9>CFve-OPAYsneTb^JH!Enaza#j}^mXy1 z+ULn^10+rWLF6j2>Ya@@Kq?26>AqK{A_| zQKb*~F1>sE*=d?A?W7N2j?L09_7n+HGi{VY;MoTGr_)G9)ot$p!-UY5zZ2Xtbm=t z@dpPSGwgH=QtIcEulQNI>S-#ifbnO5EWkI;$A|pxJd885oM+ zGZ0_0gDvG8q2xebj+fbCHYfAXuZStH2j~|d^sBAzo46(K8n59+T6rzBwK)^rfPT+B zyIFw)9YC-V^rhtK`!3jrhmW-sTmM+tPH+;nwjL#-SjQPUZ53L@A>y*rt(#M(qsiB2 zx6B)dI}6Wlsw%bJ8h|(lhkJVogQZA&n{?Vgs6gNSXzuZpEyu*xySy8ro07QZ7Vk1!3tJphN_5V7qOiyK8p z#@jcDD8nmtYi1^l8ml;AF<#IPK?!pqf9D4moYk>d99Im}Jtwj6c#+A;f)CQ*f-hZ< z=p_T86jog%!p)D&5g9taSwYi&eP z#JuEK%+NULWus;0w32-SYFku#i}d~+{Pkho&^{;RxzP&0!RCm3-9K6`>KZpnzS6?L z^H^V*s!8<>x8bomvD%rh>Zp3>Db%kyin;qtl+jAv8Oo~1g~mqGAC&Qi_wy|xEt2iz zWAJEfTV%cl2Cs<1L&DLRVVH05EDq`pH7Oh7sR`NNkL%wi}8n>IXcO40hp+J+sC!W?!krJf!GJNE8uj zg-y~Ns-<~D?yqbzVRB}G>0A^f0!^N7l=$m0OdZuqAOQqLc zX?AEGr1Ht+inZ-Qiwnl@Z0qukd__a!C*CKuGdy5#nD7VUBM^6OCpxCa2A(X;e0&V4 zM&WR8+wErQ7UIc6LY~Q9x%Sn*Tn>>P`^t&idaOEnOd(Ufw#>NoR^1QdhJ8s`h^|R_ zXX`c5*O~Xdvh%q;7L!_!ohf$NfEBmCde|#uVZvEo>OfEq%+Ns7&_f$OR9xsihRpBb z+cjk8LyDm@U{YN>+r46?nn{7Gh(;WhFw6GAxtcKD+YWV?uge>;+q#Xx4!GpRkVZYu zzsF}1)7$?%s9g9CH=Zs+B%M_)+~*j3L0&Q9u7!|+T`^O{xE6qvAP?XWv9_MrZKdo& z%IyU)$Q95AB4!#hT!_dA>4e@zjOBD*Y=XjtMm)V|+IXzjuM;(l+8aA5#Kaz_$rR6! zj>#&^DidYD$nUY(D$mH`9eb|dtV0b{S>H6FBfq>t5`;OxA4Nn{J(+XihF(stSche7$es&~N$epi&PDM_N`As;*9D^L==2Q7Z2zD+CiU(|+-kL*VG+&9!Yb3LgPy?A zm7Z&^qRG_JIxK7-FBzZI3Q<;{`DIxtc48k> zc|0dmX;Z=W$+)qE)~`yn6MdoJ4co;%!`ddy+FV538Y)j(vg}5*k(WK)KWZ3WaOG!8 z!syGn=s{H$odtpqFrT#JGM*utN7B((abXnpDM6w56nhw}OY}0TiTG1#f*VFZr+^-g zbP10`$LPq_;PvrA1XXlyx2uM^mrjTzX}w{yuLo-cOClE8MMk47T25G8M!9Z5ypOSV zAJUBGEg5L2fY)ZGJb^E34R2zJ?}Vf>{~gB!8=5Z) z9y$>5c)=;o0HeHHSuE4U)#vG&KF|I%-cF6f$~pdYJWk_dD}iOA>iA$O$+4%@>JU08 zS`ep)$XLPJ+n0_i@PkF#ri6T8?ZeAot$6JIYHm&P6EB=BiaNY|aA$W0I+nz*zkz_z zkEru!tj!QUffq%)8y0y`T&`fuus-1p>=^hnBiBqD^hXrPs`PY9tU3m0np~rISY09> z`P3s=-kt_cYcxWd{de@}TwSqg*xVhp;E9zCsnXo6z z?f&Sv^U7n4`xr=mXle94HzOdN!2kB~4=%)u&N!+2;z6UYKUDqi-s6AZ!haB;@&B`? z_TRX0%@suz^TRdCb?!vNJYPY8L_}&07uySH9%W^Tc&1pia6y1q#?*Drf}GjGbPjBS zbOPcUY#*$3sL2x4v_i*Y=N7E$mR}J%|GUI(>WEr+28+V z%v5{#e!UF*6~G&%;l*q*$V?&r$Pp^sE^i-0$+RH3ERUUdQ0>rAq2(2QAbG}$y{de( z>{qD~GGuOk559Y@%$?N^1ApVL_a704>8OD%8Y%8B;FCt%AoPu8*D1 zLB5X>b}Syz81pn;xnB}%0FnwazlWfUV)Z-~rZg6~b z6!9J$EcE&sEbzcy?CI~=boWA&eeIa%z(7SE^qgVLz??1Vbc1*aRvc%Mri)AJaAG!p z$X!_9Ds;Zz)f+;%s&dRcJt2==P{^j3bf0M=nJd&xwUGlUFn?H=2W(*2I2Gdu zv!gYCwM10aeus)`RIZSrCK=&oKaO_Ry~D1B5!y0R=%!i2*KfXGYX&gNv_u+n9wiR5 z*e$Zjju&ODRW3phN925%S(jL+bCHv6rZtc?!*`1TyYXT6%Ju=|X;6D@lq$8T zW{Y|e39ioPez(pBH%k)HzFITXHvnD6hw^lIoUMA;qAJ^CU?top1fo@s7xT13Fvn1H z6JWa-6+FJF#x>~+A;D~;VDs26>^oH0EI`IYT2iagy23?nyJ==i{g4%HrAf1-*v zK1)~@&(KkwR7TL}L(A@C_S0G;-GMDy=MJn2$FP5s<%wC)4jC5PXoxrQBFZ_k0P{{s@sz+gX`-!=T8rcB(=7vW}^K6oLWMmp(rwDh}b zwaGGd>yEy6fHv%jM$yJXo5oMAQ>c9j`**}F?MCry;T@47@r?&sKHgVe$MCqk#Z_3S z1GZI~nOEN*P~+UaFGnj{{Jo@16`(qVNtbU>O0Hf57-P>x8Jikp=`s8xWs^dAJ9lCQ z)GFm+=OV%AMVqVATtN@|vp61VVAHRn87}%PC^RAzJ%JngmZTasWBAWsoAqBU+8L8u z4A&Pe?fmTm0?mK-BL9t+{y7o(7jm+RpOhL9KnY#E&qu^}B6=K_dB}*VlSEiC9fn)+V=J;OnN)Ta5v66ic1rG+dGAJ1 z1%Zb_+!$=tQ~lxQrzv3x#CPb?CekEkA}0MYSgx$Jdd}q8+R=ma$|&1a#)TQ=l$1tQ z=tL9&_^vJ)Pk}EDO-va`UCT1m#Uty1{v^A3P~83_#v^ozH}6*9mIjIr;t3Uv%@VeW zGL6(CwCUp)Jq%G0bIG%?{_*Y#5IHf*5M@wPo6A{$Um++Co$wLC=J1aoG93&T7Ho}P z=mGEPP7GbvoG!uD$k(H3A$Z))+i{Hy?QHdk>3xSBXR0j!11O^mEe9RHmw!pvzv?Ua~2_l2Yh~_!s1qS`|0~0)YsbHSz8!mG)WiJE| z2f($6TQtt6L_f~ApQYQKSb=`053LgrQq7G@98#igV>y#i==-nEjQ!XNu9 z~;mE+gtj4IDDNQJ~JVk5Ux6&LCSFL!y=>79kE9=V}J7tD==Ga+IW zX)r7>VZ9dY=V&}DR))xUoV!u(Z|%3ciQi_2jl}3=$Agc(`RPb z8kEBpvY>1FGQ9W$n>Cq=DIpski};nE)`p3IUw1Oz0|wxll^)4dq3;CCY@RyJgFgc# zKouFh!`?Xuo{IMz^xi-h=StCis_M7yq$u) z?XHvw*HP0VgR+KR6wI)jEMX|ssqYvSf*_3W8zVTQzD?3>H!#>InzpSO)@SC8q*ii- z%%h}_#0{4JG;Jm`4zg};BPTGkYamx$Xo#O~lBirRY)q=5M45n{GCfV7h9qwyu1NxOMoP4)jjZMxmT|IQQh0U7C$EbnMN<3)Kk?fFHYq$d|ICu>KbY_hO zTZM+uKHe(cIZfEqyzyYSUBZa8;Fcut-GN!HSA9ius`ltNebF46ZX_BbZNU}}ZOm{M2&nANL9@0qvih15(|`S~z}m&h!u4x~(%MAO$jHRWNfuxWF#B)E&g3ghSQ9|> z(MFaLQj)NE0lowyjvg8z0#m6FIuKE9lDO~Glg}nSb7`~^&#(Lw{}GVOS>U)m8bF}x zVjbXljBm34Cs-yM6TVusr+3kYFjr28STT3g056y3cH5Tmge~ASxBj z%|yb>$eF;WgrcOZf569sDZOVwoo%8>XO>XQOX1OyN9I-SQgrm;U;+#3OI(zrWyow3 zk==|{lt2xrQ%FIXOTejR>;wv(Pb8u8}BUpx?yd(Abh6? zsoO3VYWkeLnF43&@*#MQ9-i-d0t*xN-UEyNKeyNMHw|A(k(_6QKO=nKMCxD(W(Yop zsRQ)QeL4X3Lxp^L%wzi2-WVSsf61dqliPUM7srDB?Wm6Lzn0&{*}|IsKQW;02(Y&| zaTKv|`U(pSzuvR6Rduu$wzK_W-Y-7>7s?G$)U}&uK;<>vU}^^ns@Z!p+9?St1s)dG zK%y6xkPyyS1$~&6v{kl?Md6gwM|>mt6Upm>oa8RLD^8T{0?HC!Z>;(Bob7el(DV6x zi`I)$&E&ngwFS@bi4^xFLAn`=fzTC;aimE^!cMI2n@Vo%Ae-ne`RF((&5y6xsjjAZ zVguVoQ?Z9uk$2ON;ersE%PU*xGO@T*;j1BO5#TuZKEf(mB7|g7pcEA=nYJ{s3vlbg zd4-DUlD{*6o%Gc^N!Nptgay>j6E5;3psI+C3Q!1ZIbeCubW%w4pq9)MSDyB{HLm|k zxv-{$$A*pS@csolri$Ge<4VZ}e~78JOL-EVyrbxKra^d{?|NnPp86!q>t<&IP07?Z z^>~IK^k#OEKgRH+LjllZXk7iA>2cfH6+(e&9ku5poo~6y{GC5>(bRK7hwjiurqAiZ zg*DmtgY}v83IjE&AbiWgMyFbaRUPZ{lYiz$U^&Zt2YjG<%m((&_JUbZcfJ22(>bi5 z!J?<7AySj0JZ&<-qXX;mcV!f~>G=sB0KnjWca4}vrtunD^1TrpfeS^4dvFr!65knK zZh`d;*VOkPs4*-9kL>$GP0`(M!j~B;#x?Ba~&s6CopvO86oM?-? zOw#dIRc;6A6T?B`Qp%^<U5 z19x(ywSH$_N+Io!6;e?`tWaM$`=Db!gzx|lQ${DG!zb1Zl&|{kX0y6xvO1o z220r<-oaS^^R2pEyY;=Qllqpmue|5yI~D|iI!IGt@iod{Opz@*ml^w2bNs)p`M(Io z|E;;m*Xpjd9l)4G#KaWfV(t8YUn@A;nK^#xgv=LtnArX|vWQVuw3}B${h+frU2>9^ z!l6)!Uo4`5k`<<;E(ido7M6lKTgWezNLq>U*=uz&s=cc$1%>VrAeOoUtA|T6gO4>UNqsdK=NF*8|~*sl&wI=x9-EGiq*aqV!(VVXA57 zw9*o6Ir8Lj1npUXvlevtn(_+^X5rzdR>#(}4YcB9O50q97%rW2me5_L=%ffYPUSRc z!vv?Kv>dH994Qi>U(a<0KF6NH5b16enCp+mw^Hb3Xs1^tThFpz!3QuN#}KBbww`(h z7GO)1olDqy6?T$()R7y%NYx*B0k_2IBiZ14&8|JPFxeMF{vW>HF-ViB*%t0;Thq2} z+qP}n=Cp0wwr%5S+qN<7?r+``=l(h0z2`^8j;g2~Q4u?{cIL{JYY%l|iw&YH4FL(8 z1-*E#ANDHi+1f%lMJbRfq*`nG)*#?EJEVoDH5XdfqwR-C{zmbQoh?E zhW!|TvYv~>R*OAnyZf@gC+=%}6N90yU@E;0b_OV#xL9B?GX(D&7BkujjFC@HVKFci zb_>I5e!yuHA1LC`xm&;wnn|3ht3h7|rDaOsh0ePhcg_^Wh8Bq|AGe`4t5Gk(9^F;M z8mFr{uCm{)Uq0Xa$Fw6+da`C4%)M_#jaX$xj;}&Lzc8wTc%r!Y#1akd|6FMf(a4I6 z`cQqS_{rm0iLnhMG~CfDZc96G3O=Tihnv8g;*w?)C4N4LE0m#H1?-P=4{KeC+o}8b zZX)x#(zEysFm$v9W8-4lkW%VJIjM~iQIVW)A*RCO{Oe_L;rQ3BmF*bhWa}!=wcu@# zaRWW{&7~V-e_$s)j!lJsa-J?z;54!;KnU3vuhp~(9KRU2GKYfPj{qA?;#}H5f$Wv-_ zGrTb(EAnpR0*pKft3a}6$npzzq{}ApC&=C&9KoM3Ge@24D^8ZWJDiXq@r{hP=-02& z@Qrn-cbr2YFc$7XR0j7{jAyR;4LLBf_XNSrmd{dV3;ae;fsEjds*2DZ&@#e)Qcc}w zLgkfW=9Kz|eeM$E`-+=jQSt}*kAwbMBn7AZSAjkHUn4n||NBq*|2QPcKaceA6m)g5 z_}3?DX>90X|35eI7?n+>f9+hl5b>#q`2+`FXbOu9Q94UX-GWH;d*dpmSFd~7WM#H2 zvKNxjOtC)U_tx*0(J)eAI8xAD8SvhZ+VRUA?)| zeJjvg9)vi`Qx;;1QP!c_6hJp1=J=*%!>ug}%O!CoSh-D_6LK0JyiY}rOaqSeja&jb#P|DR7 z_JannlfrFeaE$irfrRIiN|huXmQhQUN6VG*6`bzN4Z3!*G?FjN8!`ZTn6Wn4n=Ync z_|Sq=pO7+~{W2}599SfKz@umgRYj6LR9u0*BaHqdEw^i)dKo5HomT9zzB$I6w$r?6 zs2gu*wNOAMK`+5yPBIxSOJpL$@SN&iUaM zQ3%$EQt%zQBNd`+rl9R~utRDAH%7XP@2Z1s=)ks77I(>#FuwydE5>LzFx)8ye4ClM zb*e2i*E$Te%hTKh7`&rQXz;gvm4Dam(r-!FBEcw*b$U%Wo9DIPOwlC5Ywm3WRCM4{ zF42rnEbBzUP>o>MA){;KANhAW7=FKR=DKK&S1AqSxyP;k z;fp_GVuV}y6YqAd)5p=tJ~0KtaeRQv^nvO?*hZEK-qA;vuIo!}Xgec4QGW2ipf2HK z&G&ppF*1aC`C!FR9(j4&r|SHy74IiDky~3Ab)z@9r&vF+Bapx<{u~gb2?*J zSl{6YcZ$&m*X)X?|8<2S}WDrWN3yhyY7wlf*q`n^z3LT4T$@$y``b{m953kfBBPpQ7hT;zs(Nme`Qw@{_pUO0OG zfugi3N?l|jn-Du3Qn{Aa2#6w&qT+oof=YM!Zq~Xi`vlg<;^)Jreeb^x6_4HL-j}sU z1U^^;-WetwPLKMsdx4QZ$haq3)rA#ATpEh{NXto-tOXjCwO~nJ(Z9F%plZ{z(ZW!e zF>nv&4ViOTs58M+f+sGimF^9cB*9b(gAizwyu5|--SLmBOP-uftqVnVBd$f7YrkJ8!jm*QQEQC zEQ+@T*AA1kV@SPF6H5sT%^$$6!e5;#N((^=OA5t}bqIdqf`PiMMFEDhnV#AQWSfLp zX=|ZEsbLt8Sk&wegQU0&kMC|cuY`&@<#r{t2*sq2$%epiTVpJxWm#OPC^wo_4p++U zU|%XFYs+ZCS4JHSRaVET)jV?lbYAd4ouXx0Ka6*wIFBRgvBgmg$kTNQEvs0=2s^sU z_909)3`Ut!m}}@sv<63E@aQx}-!qVdOjSOnAXTh~MKvr$0nr(1Fj-3uS{U6-T9NG1Y(Ua)Nc}Mi< zOBQz^&^v*$BqmTIO^;r@kpaq3n!BI?L{#bw)pdFV&M?D0HKqC*YBxa;QD_4(RlawI z5wBK;7T^4dT7zt%%P<*-M~m?Et;S^tdNgQSn?4$mFvIHHL!`-@K~_Ar4vBnhy{xuy zigp!>UAwPyl!@~(bkOY;un&B~Evy@5#Y&cEmzGm+)L~4o4~|g0uu&9bh8N0`&{B2b zDj2>biRE1`iw}lv!rl$Smn(4Ob>j<{4dT^TfLe-`cm#S!w_9f;U)@aXWSU4}90LuR zVcbw;`2|6ra88#Cjf#u62xq?J)}I)_y{`@hzES(@mX~}cPWI8}SRoH-H;o~`>JWU$ zhLudK3ug%iS=xjv9tnmOdTXcq_?&o30O;(+VmC&p+%+pd_`V}RY4ibQMNE&N5O+hb3bQ8bxk^33Fu4DB2*~t1909gqoutQHx^plq~;@g$d_+rzS0`2;}2UR2h#?p35B=B*f0BZS4ysiWC!kw?4B-dM%m6_BfRbey1Wh? zT1!@>-y=U}^fxH0A`u1)Mz90G6-<4aW^a@l_9L6Y;cd$3<#xIrhup)XLkFi$W&Ohu z8_j~-VeVXDf9b&6aGelt$g*BzEHgzh)KDgII_Y zb$fcY8?XI6-GEGTZVWW%O;njZld)29a_&1QvNYJ@OpFrUH{er@mnh*}326TYAK7_Z zA={KnK_o3QLk|%m@bx3U#^tCChLxjPxMesOc5D4G+&mvp@Clicz^=kQlWp1|+z|V7 zkU#7l61m@^#`1`{+m2L{sZC#j?#>0)2z4}}kqGhB{NX%~+3{5jOyij!e$5-OAs zDvq+>I2(XsY9%NNhNvKiF<%!6t^7&k{L7~FLdkP9!h%=2Kt$bUt(Zwp*&xq_+nco5 zK#5RCM_@b4WBK*~$CsWj!N!3sF>ijS=~$}_iw@vbKaSp5Jfg89?peR@51M5}xwcHW z(@1TK_kq$c4lmyb=aX3-JORe+JmuNkPP=bM*B?};c=_;h2gT-nt#qbriPkpaqoF@q z<)!80iKvTu`T-B3VT%qKO^lfPQ#m5Ei6Y%Fs@%Pt!8yX&C#tL$=|Ma8i?*^9;}Fk> zyzdQQC5YTBO&gx6kB~yhUUT&%q3a3o+zueh>5D7tdByYVcMz@>j!C@Iyg{N1)veYl`SPshuH6Rk=O6pvVrI71rI5*%uU3u81DpD%qmXsbKWMFR@2m4vO_^l6MMbO9a()DcWmYT&?0B_ zuY~tDiQ6*X7;9B*5pj?;xy_B}*{G}LjW*qU&%*QAyt30@-@O&NQTARZ+%VScr>`s^KX;M!p; z?8)|}P}L_CbOn!u(A{c5?g{s31Kn#7i)U@+_KNU-ZyVD$H7rtOjSht8%N(ST-)%r` z63;Hyp^KIm-?D;E-EnpAAWgz2#z{fawTx_;MR7)O6X~*jm*VUkam7>ueT^@+Gb3-Y zN3@wZls8ibbpaoR2xH=$b3x1Ng5Tai=LT2@_P&4JuBQ!r#Py3ew!ZVH4~T!^TcdyC ze#^@k4a(nNe~G+y zI~yXK@1HHWU4pj{gWT6v@$c(x){cLq*KlFeKy?f$_u##)hDu0X_mwL6uKei~oPd9( zRaF_k&w(J3J8b_`F~?0(Ei_pH}U^c&r$uSYawB8Ybs-JZ|&;vKLWX! z|HFZ%-uBDaP*hMcQKf*|j5!b%H40SPD*#{A`kj|~esk@1?q}-O7WyAm3mD@-vHzw( zTSOlO(K9>GW;@?@xSwpk%X3Ui4_Psm;c*HF~RW+q+C#RO_VT5(x!5B#On-W`T|u z>>=t)W{=B-8wWZejxMaBC9sHzBZGv5uz_uu281kxHg2cll_sZBC&1AKD`CYh2vKeW zm#|MMdC}6A&^DX=>_(etx8f}9o}`(G?Y``M?D+aTPJbZqONmSs>y>WSbvs>7PE~cb zjO+1Y)PMi*!=06^$%< z*{b^66BIl{7zKvz^jut7ylDQBt)ba_F*$UkDgJ2gSNfHB6+`OEiz@xs$Tcrl>X4?o zu9~~b&Xl0?w(7lJXu8-9Yh6V|A3f?)1|~+u-q&6#YV`U2i?XIqUw*lc-QTXwuf@8d zSjMe1BhBKY`Mo{$s%Ce~Hv(^B{K%w{yndEtvyYjjbvFY^rn2>C1Lbi!3RV7F>&;zlSDSk}R>{twI}V zA~NK%T!z=^!qbw(OEgsmSj?#?GR&A$0&K>^(?^4iphc3rN_(xXA%joi)k~DmRLEXl zaWmwMolK%@YiyI|HvX{X$*Ei7y+zJ%m{b}$?N7_SN&p+FpeT%4Z_2`0CP=}Y3D-*@ zL|4W4ja#8*%SfkZzn5sfVknpJv&>glRk^oUqykedE8yCgIwCV)fC1iVwMr4hc#KcV!|M-r_N|nQWw@`j+0(Ywct~kLXQ)Qyncmi{Q4`Ur7A{Ep)n`zCtm8D zVX`kxa8Syc`g$6$($Qc-(_|LtQKWZXDrTir5s*pSVmGhk#dKJzCYT?vqA9}N9DGv> zw}N$byrt?Mk*ZZbN5&zb>pv;rU}EH@Rp54)vhZ=330bLvrKPEPu!WqR%yeM3LB!(E zw|J05Y!tajnZ9Ml*-aX&5T8YtuWDq@on)_*FMhz-?m|>RT0~e3OHllrEMthVY(KwQ zu>ijTc4>Xz-q1(g!ESjaZ+C+Zk5FgmF)rFX29_RmU!`7Pw+0}>8xK^=pOxtUDV)ok zw-=p=OvEH&VO3wToRdI!hPHc`qX+_{T_mj!NxcA&xOgkEuvz`-Aa`ZlNv>qnD0`YT1T3USO0ec!%{KE~UOGPJX%I5_rZDGx@|w zVIMsRPP+}^Xxa&{x!q{hY1wat8jDO7YP0(8xHWeEdrd79lUjB8%)v{X1pQu|1dr*y9M&a(J`038}4>lK&K zIM~6wnX{XA?pFHz{hOmEq{oYBnB@56twXqEcFrFqvCy)sH9B{pQ`G50o{W^t&onwY z-l{ur4#8ylPV5YRLD%%j^d0&_WI>0nmfZ8! zaZ&vo@7D`!=?215+Vk181*U@^{U>VyoXh2F&ZNzZx5tDDtlLc)gi2=|o=GC`uaH;< zFuuF?Q9Q`>S#c(~2p|s49RA`3242`2P+)F)t2N!CIrcl^0#gN@MLRDQ2W4S#MXZJO z8<(9P>MvW;rf2qZ$6sHxCVIr0B-gP?G{5jEDn%W#{T#2_&eIjvlVqm8J$*8A#n`5r zs6PuC!JuZJ@<8cFbbP{cRnIZs>B`?`rPWWL*A?1C3QqGEG?*&!*S0|DgB~`vo_xIo z&n_Sa(>6<$P7%Py{R<>n6Jy?3W|mYYoxe5h^b6C#+UoKJ(zl?^WcBn#|7wMI5=?S# zRgk8l-J`oM%GV&jFc)9&h#9mAyowg^v%Fc-7_^ou5$*YvELa!1q>4tHfX7&PCGqW* zu8In~5`Q5qQvMdToE$w+RP^_cIS2xJjghjCTp6Z(za_D<$S;0Xjt?mAE8~Ym{)zfb zV62v9|59XOvR}wEpm~Cnhyr`=JfC$*o15k?T`3s-ZqF6Gy;Gm+_6H$%oJPywWA^Wl zzn$L=N%{VT8DkQba0|2LqGR#O2Pw!b%LV4#Ojcx5`?Cm;+aLpkyZ=!r1z@E}V= z$2v6v%Ai)MMd`@IM&UD!%%(63VH8+m0Ebk<5Du#0=WeK(E<2~3@>8TceT$wy5F52n zRFtY>G9Gp~h#&R92{G{jLruZSNJ4)gNK+zg*$P zW@~Hf>_Do)tvfEAAMKE1nQ=8coTgog&S;wj(s?Xa0!r?UU5#2>18V#|tKvay1Ka53 zl$RxpMqrkv`Sv&#!_u8$8PMken`QL0_sD2)r&dZziefzSlAdKNKroVU;gRJE#o*}w zP_bO{F4g;|t!iroy^xf~(Q5qc8a3<+vBW%VIOQ1!??d;yEn1at1wpt}*n- z0iQtfu}Isw4ZfH~8p~#RQUKwf<$XeqUr-5?8TSqokdHL7tY|47R; z#d+4NS%Cqp>LQbvvAMIhcCX@|HozKXl)%*5o>P2ZegGuOerV&_MeA}|+o-3L!ZNJd z#1xB^(r!IfE~i>*5r{u;pIfCjhY^Oev$Y1MT16w8pJ0?9@&FH*`d;hS=c#F6fq z{mqsHd*xa;>Hg?j80MwZ%}anqc@&s&2v{vHQS68fueNi5Z(VD2eH>jmv4uvE|HEQm z^=b&?1R9?<@=kjtUfm*I!wPf5Xnma(4*DfPk}Es*H$%NGCIM1qt(LSvbl7&tV>e2$ zUqvZOTiwQyxDoxL(mn?n_x%Tre?L&!FYCOy0>o}#DTC3uSPnyGBv*}!*Yv5IV)Bg_t%V+UrTXfr!Q8+eX}ANR*YLzwme7Rl z@q_*fP7wP2AZ(3WG*)4Z(q@)~c{Je&7?w^?&Wy3)v0{TvNQRGle9mIG>$M2TtQ(Vf z3*PV@1mX)}beRTPjoG#&&IO#Mn(DLGp}mn)_0e=9kXDewC8Pk@yo<8@XZjFP-_zic z{mocvT9Eo)H4Oj$>1->^#DbbiJn^M4?v7XbK>co+v=7g$hE{#HoG6ZEat!s~I<^_s zlFee93KDSbJKlv_+GPfC6P8b>(;dlJ5r9&Pc4kC2uR(0{Kjf+SMeUktef``iXD}8` zGufkM9*Sx4>+5WcK#Vqm$g#5z1DUhc_#gLGe4_icSzN5GKr|J&eB)LS;jTXWA$?(k zy?*%U9Q#Y88(blIlxrtKp6^jksNF>-K1?8=pmYAPj?qq}yO5L>_s8CAv=LQMe3J6? zOfWD>Kx_5A4jRoIU}&aICTgdYMqC|45}St;@0~7>Af+uK3vps9D!9qD)1;Y6Fz>4^ zR1X$s{QNZl7l%}Zwo2wXP+Cj-K|^wqZW?)s1WUw_APZLhH55g{wNW3liInD)WHh${ zOz&K>sB*4inVY3m)3z8w!yUz+CKF%_-s2KVr7DpwTUuZjPS9k-em^;>H4*?*B0Bg7 zLy2nfU=ac5N}x1+Tlq^lkNmB~Dj+t&l#fO&%|7~2iw*N!*xBy+ZBQ>#g_;I*+J{W* z=@*15><)Bh9f>>dgQrEhkrr2FEJ;R2rH%`kda8sD-FY6e#7S-<)V*zQA>)Ps)L- zgUuu@5;Ych#jX_KZ+;qEJJbu{_Z9WSsLSo#XqLpCK$gFidk}gddW(9$v}iyGm_OoH ztn$pv81zROq686_7@avq2heXZnkRi4n(3{5jTDO?9iP%u8S4KEqGL?^uBeg(-ws#1 z9!!Y_2Q~D?gCL3MQZO!n$+Wy(Twr5AS3{F7ak2f)Bu0iG^k^x??0}b6l!>Vjp{e*F z8r*(Y?3ZDDoS1G?lz#J4`d9jAEc9YGq1LbpYoFl!W!(j8-33Ey)@yx+BVpDIVyvpZ zq5QgKy>P}LlV?Bgy@I)JvefCG)I69H1;q@{8E8Ytw^s-rC7m5>Q>ZO(`$`9@`49s2)q#{2eN0A?~qS8%wxh%P*99h*Sv` zW_z3<=iRZBQKaDsKw^TfN;6`mRck|6Yt&e$R~tMA0ix;qgw$n~fe=62aG2v0S`7mU zI}gR#W)f+Gn=e3mm*F^r^tcv&S`Rym`X`6K`i8g-a0!p|#69@Bl!*&)QJ9(E7ycxz z)5-m9v`~$N1zszFi^=m%vw}Y{ZyYub!-6^KIY@mwF|W+|t~bZ%@rifEZ-28I@s$C` z>E+k~R1JC-M>8iC_GR>V9f9+uL2wPRATL9bC(sxd;AMJ>v6c#PcG|Xx1N5^1>ISd0 z4%vf-SNOw+1%yQq1YP`>iqq>5Q590_pr?OxS|HbLjx=9~Y)QO37RihG%JrJ^=Nj>g zPTcO$6r{jdE_096b&L;Wm8vcxUVxF0mA%W`aZz4n6XtvOi($ zaL!{WUCh&{5ar=>u)!mit|&EkGY$|YG<_)ZD)I32uEIWwu`R-_ z`FVeKyrx3>8Ep#2~%VVrQ%u#exo!anPe`bc)-M=^IP1n1?L2UQ@# zpNjoq-0+XCfqXS!LwMgFvG$PkX}5^6yxW)6%`S8{r~BA2-c%-u5SE#%mQ~5JQ=o$c z%+qa0udVq9`|=2n=0k#M=yiEh_vp?(tB|{J{EhVLPM^S@f-O*Lgb390BvwK7{wfdMKqUc0uIXKj5>g^z z#2`5^)>T73Eci+=E4n&jl42E@VYF2*UDiWLUOgF#p9`E4&-A#MJLUa&^hB@g7KL+n zr_bz+kfCcLIlAevILckIq~RCwh6dc5@%yN@#f3lhHIx4fZ_yT~o0#3@h#!HCN(rHHC6#0$+1AMq?bY~(3nn{o5g8{*e_#4RhW)xPmK zTYBEntuYd)`?`bzDksI9*MG$=^w!iiIcWg1lD&kM1NF@qKha0fDVz^W7JCam^!AQFxY@7*`a3tfBwN0uK_~YBQ18@^i%=YB}K0Iq(Q3 z=7hNZ#!N@YErE7{T|{kjVFZ+f9Hn($zih;f&q^wO)PJSF`K)|LdT>!^JLf=zXG>>G z15TmM=X`1%Ynk&dvu$Vic!XyFC(c=qM33v&SIl|p+z6Ah9(XQ0CWE^N-LgE#WF6Z+ zb_v`7^Rz8%KKg_@B>5*s-q*TVwu~MCRiXvVx&_3#r1h&L+{rM&-H6 zrcgH@I>0eY8WBX#Qj}Vml+fpv?;EQXBbD0lx%L?E4)b-nvrmMQS^}p_CI3M24IK(f| zV?tWzkaJXH87MBz^HyVKT&oHB;A4DRhZy;fIC-TlvECK)nu4-3s7qJfF-ZZGt7+6C3xZt!ZX4`M{eN|q!y*d^B+cF5W- zc9C|FzL;$bAfh56fg&y0j!PF8mjBV!qA=z$=~r-orU-{0AcQUt4 zNYC=_9(MOWe$Br9_50i#0z!*a1>U6ZvH>JYS9U$kkrCt7!mEUJR$W#Jt5vT?U&LCD zd@)kn%y|rkV|CijnZ((B2=j_rB;`b}F9+E1T46sg_aOPp+&*W~44r9t3AI}z)yUFJ z+}z5E6|oq+oPC3Jli)EPh9)o^B4KUYkk~AU9!g`OvC`a!#Q>JmDiMLTx>96_iDD9h@nW%Je4%>URwYM%5YU1&Dcdulvv3IH3GSrA4$)QjlGwUt6 zsR6+PnyJ$1x{|R=ogzErr~U|X!+b+F8=6y?Yi`E$yjWXsdmxZa^hIqa)YV9ubUqOj&IGY}bk zH4*DEn({py@MG5LQCI;J#6+98GaZYGW-K-&C`(r5#?R0Z){DlY8ZZk}lIi$xG}Q@2 z0LJhzuus-7dLAEpG1Lf+KOxn&NSwO{wn_~e0=}dovX)T(|WRMTqacoW8;A>8tTDr+0yRa+U!LW z!H#Gnf^iCy$tTk3kBBC=r@xhskjf1}NOkEEM4*r+A4`yNAIjz`_JMUI#xTf$+{UA7 zpBO_aJkKz)iaKqRA{8a6AtpdUwtc#Y-hxtZnWz~i(sfjMk`lq|kGea=`62V6y)TMPZw8q}tFDDHrW_n(Z84ZxWvRrntcw;F|Mv4ff9iaM% z4IM{=*zw}vIpbg=9%w&v`sA+a3UV@Rpn<6`c&5h+8a7izP>E@7CSsCv*AAvd-izwU z!sGJQ?fpCbt+LK`6m2Z3&cKtgcElAl){*m0b^0U#n<7?`8ktdIe#ytZTvaZy728o6 z3GDmw=vhh*U#hCo0gb9s#V5(IILXkw>(6a?BFdIb0%3~Y*5FiMh&JWHd2n(|y@?F8 zL$%!)uFu&n+1(6)oW6Hx*?{d~y zBeR)N*Z{7*gMlhMOad#k4gf`37OzEJ&pH?h!Z4#mNNCfnDI@LbiU~&2Gd^q7ix8~Y6$a=B9bK(BaTEO0$Oh=VCkBPwt0 zf#QuB25&2!m7MWY5xV_~sf(0|Y*#Wf8+FQI(sl2wgdM5H7V{aH6|ntE+OcLsTC`u; zeyrlkJgzdIb5=n#SCH)+kjN)rYW7=rppN3Eb;q_^8Zi}6jtL@eZ2XO^w{mCwX(q!t ztM^`%`ndZ5c+2@?p>R*dDNeVk#v>rsn>vEo;cP2Ecp=@E>A#n0!jZACKZ1=D0`f|{ zZnF;Ocp;$j86m}Gt~N+Ch6CJo7+Wzv|nlsXBvm z?St-5Ke&6hbGAWoO!Z2Rd8ARJhOY|a1rm*sOif%Th`*=^jlgWo%e9`3sS51n*>+Mh(9C7g@*mE|r%h*3k6I_uo;C!N z7CVMIX4kbA#gPZf_0%m18+BVeS4?D;U$QC`TT;X zP#H}tMsa=zS6N7n#BA$Fy8#R7vOesiCLM@d1UO6Tsnwv^gb}Q9I}ZQLI?--C8ok&S z9Idy06+V(_aj?M78-*vYBu|AaJ9mlEJpFEIP}{tRwm?G{ag>6u(ReBKAAx zDR6qe!3G88NQP$i99DZ~CW9lzz}iGynvGA4!yL}_9t`l*SZbEL-%N{n$%JgpDHJRn zvh<{AqR7z@ylV`kXdk+uEu-WWAt^=A4n(J=A1e8DpeLzAd;Nl#qlmp#KcHU!8`YJY zvBZy@>WiBZpx*wQ8JzKw?@k}8l99Wo&H>__vCFL}>m~MTmGvae% zPTn9?iR=@7NJ)?e+n-4kx$V#qS4tLpVUX*Je0@`f5LICdxLnph&Vjbxd*|+PbzS(l zBqqMlUeNoo8wL&_HKnM^8{iDI3IdzJAt32UupSr6XXh9KH2LjWD)Pz+`cmps%eHeD zU%i1SbPuSddp6?th;;DfUlxYnjRpd~i7vQ4V`cD%4+a9*!{+#QRBr5^Q$5Ec?gpju zv@dk9;G>d7QNEdRy}fgeA?i=~KFeibDtYffy)^OP?Ro~-X!onDpm+uGpe&6)*f@xJ zE1I3Qh}`1<7aFB@TS#}ee={<#9%1wOL%cuvOd($y4MC2?`1Nin=pVLXPkknn*0kx> z!9XHW${hYEV;r6F#iz7W=fg|a@GY0UG5>>9>$3Bj5@!N{nWDD`;JOdz_ZaZVVIUgH zo+<=+n8VGL*U%M|J$A~#ll__<`y+jL>bv;TpC!&|d=q%E2B|5p=)b-Q+ZrFO%+D_u z4%rc8BmOAO6{n(i(802yZW93?U;K^ZZlo0Gvs7B+<%}R;$%O}pe*Gi;!xP-M73W`k zXLv473Ex_VPcM-M^JO|H>KD;!sEGJ|E}Qepen;yNG2 zXqgD5sjQUDI(XLM+^8ZX1s_(X+PeyQ$Q5RukRt|Kwr-FSnW!^9?OG64UYX1^bU9d8 zJ}8K&UEYG+Je^cThf8W*^RqG07nSCmp*o5Z;#F zS?jochDWX@p+%CZ%dOKUl}q{9)^U@}qkQtA3zBF)`I&zyIKgb{mv)KtZ}?_h{r#VZ z%C+hwv&nB?we0^H+H`OKGw-&8FaF;=ei!tAclS5Q?qH9J$nt+YxdKkbRFLnWvn7GH zezC6<{mK0dd763JlLFqy&Oe|7UXII;K&2pye~yG4jldY~N;M9&rX}m76NsP=R#FEw zt(9h+=m9^zfl=6pH*D;JP~OVgbJkXh(+2MO_^;%F{V@pc2nGn~=U)Qx|JEV-e=vXk zPxA2J<9~IH{}29#X~KW$(1reJv}lc4_1JF31gdev>!CddVhf_62nsr6%w)?IWxz}{ z(}~~@w>c07!r=FZANq4R!F2Qi2?QGavZ{)PCq~X}3x;4ylsd&m;dQe;0GFSn5 zZ*J<=Xg1fEGYYDZ0{Z4}Jh*xlXa}@412nlKSM#@wjMM z*0(k>Gfd1Mj)smUuX}EM6m)811%n5zzr}T?$ZzH~*3b`3q3gHSpA<3cbzTeRDi`SA zT{O)l3%bH(CN0EEF9ph1(Osw5y$SJolG&Db~uL!I3U{X`h(h%^KsL71`2B1Yn z7(xI+Fk?|xS_Y5)x?oqk$xmjG@_+JdErI(q95~UBTvOXTQaJs?lgrC6Wa@d0%O0cC zzvslIeWMo0|C0({iEWX{=5F)t4Z*`rh@-t0ZTMse3VaJ`5`1zeUK0~F^KRY zj2z-gr%sR<(u0@SNEp%Lj38AB2v-+cd<8pKdtRU&8t3eYH#h7qH%bvKup4cnnrN>l z!5fve)~Y5_U9US`uXDFoOtx2gI&Z!t&VPIoqiv>&H(&1;J9b}kZhcOX7EiW*Bujy#MaCl52%NO-l|@2$aRKvZ!YjwpXwC#nA(tJtd1p?jx&U|?&jcb!0MT6oBlWurVRyiSCX?sN3j}d zh3==XK$^*8#zr+U^wk(UkF}bta4bKVgr`elH^az{w(m}3%23;y7dsEnH*pp{HW$Uk zV9J^I9ea7vp_A}0F8qF{>|rj`CeHZ?lf%HImvEJF<@7cgc1Tw%vAUA47{Qe(sP^5M zT=z<~l%*ZjJvObcWtlN?0$b%NdAj&l`Cr|x((dFs-njsj9%IIqoN|Q?tYtJYlRNIu zY(LtC-F14)Og*_V@gjGH^tLV4uN?f^#=dscCFV~a`r8_o?$gj3HrSk=YK2k^UW)sJ z&=a&&JkMkWshp0sto$c6j8f$J!Bsn*MTjC`3cv@l@7cINa!}fNcu(0XF7ZCAYbX|WJIL$iGx8l zGFFQsw}x|i!jOZIaP{@sw0BrV5Z5u!TGe@JGTzvH$}55Gf<;rieZlz+6E1}z_o3m2 z(t;Cp^Geen7iSt)ZVtC`+tzuv^<6--M`^5JXBeeLXV)>2;f7=l%(-4?+<5~;@=Th{1#>rK3+rLn(44TAFS@u(}dunUSYu}~))W*fr` zkBL}3k_@a4pXJ#u*_N|e#1gTqxE&WPsfDa=`@LL?PRR()9^HxG?~^SNmeO#^-5tMw zeGEW&CuX(Uz#-wZOEt8MmF}hQc%14L)0=ebo`e$$G6nVrb)afh!>+Nfa5P;N zCCOQ^NRel#saUVt$Ds0rGd%gkKP2LsQRxq6)g*`-r(FGM!Q51c|9lk!ha8Um3ys1{ zWpT7XDWYshQ{_F!8D8@3hvXhQDw;GlkUOzni&T1>^uD){WH3wRONgjh$u4u7?+$(Y zqTXEF>1aPNZCXP0nJ;zs6_%6;+D&J_|ugcih**y(4ApT`RKAi5>SZe0Bz|+l7z>P14>0ljIH*LhK z@}2O#{?1RNa&!~sEPBvIkm-uIt^Pt#%JnsbJ`-T0%pb ze}d;dzJFu7oQ=i`VHNt%Sv@?7$*oO`Rt*bRNhXh{FArB`9#f%ksG%q?Z`_<19;dBW z5pIoIo-JIK9N$IE1)g8@+4}_`sE7;Lus&WNAJ^H&=4rGjeAJP%Dw!tn*koQ&PrNZw zY88=H7qpHz11f}oTD!0lWO>pMI;i4sauS`%_!zM!n@91sLH#rz1~iEAu#1b%LA zhB}7{1(8{1{V8+SEs=*f=FcRE^;`6Pxm$Hie~|aD~W1BYy#@Y$C?pxJh*cC!T@8C9{xx*T*8P zhbkRk3*6)Zbk%}u>^?ItOhxdmX$j9KyoxxN>NrYGKMkLF4*fLsL_PRjHNNHCyaUHN z7W8yEhf&ag07fc9FD>B{t0#Civsoy0hvVepDREX(NK1LbK0n*>UJp&1FygZMg7T^G z(02BS)g#qMOI{RJIh7}pGNS8WhSH@kG+4n=(8j<+gVfTur)s*hYus70AHUBS2bN6Zp_GOHYxsbg{-Rcet{@0gzE`t$M0_!ZIqSAIW53j+Ln7N~8J zLZ0DOUjp^j`MvX#hq5dFixo^1szoQ=FTqa|@m>9F@%>7OuF9&_C_MDco&-{wfLKNrDMEN4pRUS8-SD6@GP`>_7$;r>dJo>KbeXm>GfQS? zjFS+Y6^%pDCaI0?9(z^ELsAE1`WhbhNv5DJ$Y}~r;>FynHjmjmA{bfDbseZXsKUv`%Fekv)1@f%7ti;B5hhs}5db1dP+P0${1DgKtb(DvN}6H6;0*LP6blg*rpr;Z(7? zrve>M`x6ZI(wtQc4%lO?v5vr{0iTPl&JT!@k-7qUN8b$O9YuItu7zrQ*$?xJIN#~b z#@z|*5z&D7g5>!o(^v+3N?JnJns5O2W4EkF>re*q1uVjgT#6ROP5>Ho)XTJoHDNRC zuLC(Cd_ZM?FAFPoMw;3FM4Ln0=!+vgTYBx2TdXpM@EhDCorzTS6@2`swp4J^9C0)U zq?)H8)=D;i+H`EVYge>kPy8d*AxKl};iumYu^UeM+e_3>O+LY`D4?pD%;Vextj!(; zomJ(u+dR(0m>+-61HTV7!>03vqozyo@uY@Zh^KrW`w7^ENCYh86_P2VC|4}(ilMBe zwa&B|1a7%Qkd>d14}2*_yYr@8-N}^&?LfSwr)C~UUHr)ydENu=?ZHkvoLS~xTiBH= zD%A=OdoC+10l7@rXif~Z#^AvW+4M-(KQBj=Nhgts)>xmA--IJf1jSZF6>@Ns&nmv} zXRk`|`@P5_9W4O-SI|f^DCZ-n*yX@2gf6N)epc~lRWl7QgCyXdx|zr^gy>q`Vwn^y z&r3_zS}N=HmrVtTZhAQS`3$kBmVZDqr4+o(oNok?tqel9kn3;uUerFRti=k+&W{bb zT{ZtEf51Qf+|Jc*@(nyn#U+nr1SFpu4(I7<1a=)M_yPUAcKVF+(vK!|DTL2;P)yG~ zrI*7V)wN_92cM)j`PtAOFz_dO)jIfTeawh2{d@x0nd^#?pDkBTBzr0Oxgmvjt`U^$ zcTPl=iwuen=;7ExMVh7LLFSKUrTiPJpMB&*Ml32>wl} zYn(H0N4+>MCrm2BC4p{meYPafDEXd4yf$i%ylWpC|9%R4XZBUQiha(x%wgQ5iJ?K_wQBRfw z+pYuKoIameAWV7Ex4$PCd>bYD7)A9J`ri&bwTRN*w~7DR0EeLXW|I2()Zkl6vxiw? zFBX){0zT@w_4YUT4~@TXa;nPb^Tu$DJ=vluc~9)mZ}uHd#4*V_eS7)^eZ9oI%Wws_ z`;97^W|?_Z6xHSsE!3EKHPN<3IZ^jTJW=Il{rMmlnR#OuoE6dqOO1KOMpW84ZtDHNn)(pYvs=frO`$X}sY zKY0At$G85&2>B|-{*+B*aqQn&Mqjt*DVH2kdwEm5f}~Xwn9+tPt?EPwh8=8=VWA8rjt*bHEs1FJ92QohQ)Y z4sQH~AzB5!Pisyf?pVa0?L4gthx2;SKlrr?XRU`?Y>RJgUeJn!az#sNF7oDbzksrD zw8)f=f1t*UK&$}_ktf!yf4Rjt{56ffTA{A=9n})E7~iXaQkE+%GW4zqbmlYF(|hE@ z421q9`UQf$uA5yDLx67`=EnSTxdEaG!6C%9_obpb?;u-^QFX% zU1wQ}Li{PeT^fS;&Sk2#$ZM#Zpxrn7jsd<@qhfWy*H)cw9q!I9!fDOCw~4zg zbW`EHsTp9IQUCETUse)!ZmuRICx}0Oe1KVoqdK+u>67A8v`*X*!*_i5`_qTzYRkbYXg#4vT5~A{lK#bA}Oc4ePu5hr-@;i%Z!4Y;-(yR z(1rHYTc7i1h1aipP4DaIY3g2kF#MX{XW7g&zL!39ohO98=eo5nZtq+nz}2E$OZpxx z&OFaOM1O;?mxq+`%k>YS!-=H7BB&WhqSTUC{S!x*k9E zcB;u0I!h%3nEchQwu1GnNkaQxuWnW0D@Xq5j@5WE@E(WlgDU;FLsT*eV|Bh)aH0;~@^yygFj<=+Vu3p)LlF%1AA%y5z-Oh`2 z$RDKk_6r+f#I`8fQ%y#Wx%~de1qkWL2(q^~veLKwht-dIcpt(@lc>`~@mISRIPKPm zD!Za&aX@7dy*CT!&Z7JC1jP2@8+ro8SmlH>_gzRte%ojgiwfd?TR+%Ny0`sp`QRLy zl5TiQkFhIC!2aaJ&=Ua`c9UuOk9GkSFZ}!IGeMZ5MXrL zGtMj`m{(X9+l%=d|L zW2OY?8!_pyhvJ1@O!Chsf6}@3HmKq@)x;CFItPMpkSr@npO&8zMc_O?*|sqkuL^U? zV9+x3vbr|6;Ft0J^J>IH_xpa<{S5K?u-sQWC7FB9YFMwoCKK3WZ*gvO-wAApF`K%#7@1 z^sEj4*%hH`f0@sRDGI|#Dl20o$Z*gttP$q(_?#~2!H9(!d=)I93-3)?e%@$1^*F=t9t&OQ9!p84Z`+y<$yQ9wlamK~Hz2CRpS8dWJfBl@(M2qX!9d_F= zd|4A&U~8dX^M25wyC7$Swa22$G61V;fl{%Q4Lh!t_#=SP(sr_pvQ=wqOi`R)do~QX zk*_gsy75$xoi5XE&h7;-xVECk;DLoO0lJ3|6(Ba~ezi73_SYdCZPItS5MKaGE_1My zdQpx?h&RuoQ7I=UY{2Qf ziGQ-FpR%piffR_4X{74~>Q!=i`)J@T415!{8e`AXy`J#ZK)5WWm3oH?x1PVvcAqE@ zWI|DEUgxyN({@Y99vCJVwiGyx@9)y2jNg`R{$s2o;`4!^6nDX_pb~fTuzf>ZoPV@X zXKe1ehcZ+3dxCB+vikgKz8pvH?>ZzlOEObd{(-aWY;F0XIbuIjSA+!%TNy87a>BoX zsae$}Fcw&+)z@n{Fvzo;SkAw0U*}?unSO)^-+sbpNRjD8&qyfp%GNH;YKdHlz^)4( z;n%`#2Pw&DPA8tc)R9FW7EBR3?GDWhf@0(u3G4ijQV;{qp3B)`Fd}kMV}gB2U%4Sy z3x>YU&`V^PU$xWc4J!OG{Jglti@E3rdYo62K31iu!BU&pdo}S66Ctq{NB<88P92Y9 zTOqX$h6HH_8fKH(I>MEJZl1_2GB~xI+!|BLvN;CnQrjHuh?grzUO7h;1AbzLi|_O= z2S=(0tX#nBjN92gRsv;7`rDCATA!o(ZA}6)+;g;T#+1~HXGFD1@3D#|Ky9!E@)u=h z3@zg3Us0BCYmq(pB`^QTp|RB9!lX*{;7r|Z(^>J+av(0-oUmIdR78c4(q%hP#=R@W ze{;yy$T^8kXr(oC*#NQMZSQlgU)aa=BrZDwpLUk5tm&(AkNt&Gel`=ydcL*<@Ypx{ z2uOxl>2vSY2g3%Si&JU<9D5#{_z{9PzJh=miNH;STk^;5#%8iMRfPe#G~T>^U_zt? zgSE)`UQhb!G$at%yCf5MU)<&(L73(hY3*%qqPbX;`%QDHed3ZaWw^k)8Vjd#ePg@;I&pMe+A18k+S+bou|QX?8eQ`{P-0vrm=uR;Y(bHV>d>Gen4LHILqcm_ z3peDMRE3JMA8wWgPkSthI^K<|8aal38qvIcEgLjHAFB0P#IfqP2y}L>=8eBR}Fm^V*mw2Q4+o=exP@*#=Zs zIqHh@neG)Vy%v4cB1!L}w9J>IqAo}CsqbFPrUVc@;~Ld7t_2IIG=15mT7Itrjq#2~ zqX*&nwZP>vso$6W!#` z-YZ}jhBwQku-Qc>TIMpn%_z~`^u4v3Skyf)KA}V{`dr!Q;3xK1TuGYdl}$sKF^9X!*a-R*Oq1#tLq!W)gO}{q`1HM;oh1-k4FU@8W(qe>P05$+ z`ud2&;4IW4vq8#2yA{G>OH=G+pS_jctJ*BqD$j-MI#avR+<>m-`H1@{3VgKYn2_Ih z0`2_1qUMRuzgj_V^*;5Ax_0s{_3tYR>|$i#c!F7)#`oVGmsD*M2?%930cBSI4Mj>P zTm&JmUrvDXlB%zeA_7$&ogjGK3>SOlV$ct{4)P0k)Kua%*fx9?)_fkvz<(G=F`KCp zE`0j*=FzH$^Y@iUI}MM2Hf#Yr@oQdlJMB5xe0$aGNk%tgex;0)NEuVYtLEvOt{}ti zL`o$K9HnnUnl*;DTGTNiwr&ydfDp@3Y)g5$pcY9l1-9g;yn6SBr_S9MV8Xl+RWgwb zXL%kZLE4#4rUO(Pj484!=`jy74tQxD0Zg>99vvQ}R$7~GW)-0DVJR@$5}drsp3IQG zlrJL}M{+SdWbrO@+g2BY^a}0VdQtuoml`jJ2s6GsG5D@(^$5pMi3$27psEIOe^n=*Nj|Ug7VXN0OrwMrRq&@sR&vdnsRlI%*$vfmJ~)s z^?lstAT$Ked`b&UZ@A6I<(uCHGZ9pLqNhD_g-kj*Sa#0%(=8j}4zd;@!o;#vJ+Bsd z4&K4RIP>6It9Ir)ey?M6Gi6@JzKNg;=jM=$)gs2#u_WhvuTRwm1x2^*!e%l&j02xz zYInQgI$_V7Epzf3*BU~gos}|EurFj8l}hsI(!5yX!~ECL%cnYMS-e<`AKDL%(G)62 zPU;uF1(~(YbH2444JGh58coXT>(*CdEwaFuyvB|%CULgVQesH$ znB`vk3BMP<-QauWOZ0W6xB5y7?tE5cisG|V;bhY^8+*BH1T0ZLbn&gi12|a9Oa%;I zxvaxX_xe3@ng%;4C?zPHQ1v%dbhjA6Sl7w<*)Nr#F{Ahzj}%n9c&!g5HVrlvUO&R2C)_$x6M9 zahficAbeHL2%jILO>Pq&RPPxl;i{K5#O*Yt15AORTCvkjNfJ)LrN4K{sY7>tGuTQ@ z^?N*+xssG&sfp0c$^vV*H)U1O!fTHk8;Q7@42MT@z6UTd^&DKSxVcC-1OLjl7m63& zBb&goU!hes(GF^yc!107bkV6Pr%;A-WWd@DK2;&=zyiK*0i^0@f?fh2c)4&DRSjrI zk!W^=l^JKlPW9US{*yo?_XT@T2Bx+Cm^+r{*5LVcKVw*ll3+)lkebA-4)o z8f5xHWOx0!FDSs4nv@o@>mxTQrOeKzj@5uL`d>mXSp|#{FE54EE_!KtQNq>-G(&5) ztz?xkqPU16A-8@-quJ|SU^ClZ?bJ2kCJPB|6L>NTDYBprw$WcwCH{B z5qlJ6wK_9sT@Kl6G|Q&$gsl@WT>hE;nDAbH#%f1ZwuOkvWLj{qV$m3LF423&l!^iV zhym*>R>Yyens++~6F5+uZQTCz9t~PEW+e?w)XF2g!^^%6k?@Jcu;MG0FG9!T+Gx{Z zK;31y@(J{!-$k4E{5#Sv(2DGy3EZQY}G_*z*G&CZ_J?m&Fg4IBrvPx1w z1zAb3k}6nT?E)HNCi%}aR^?)%w-DcpBR*tD(r_c{QU6V&2vU-j0;{TVDN6los%YJZ z5C(*ZE#kv-BvlGLDf9>EO#RH_jtolA)iRJ>tSfJpF!#DO+tk% zBAKCwVZwO^p)(Rhk2en$XLfWjQQ`ix>K}Ru6-sn8Ih6k&$$y`zQ}}4dj~o@9gX9_= z#~EkchJqd5$**l}~~6mOl(q#GMIcFg&XCKO;$w>!K14 zko1egAORiG{r|8qj*FsN>?7d`han?*MD#xe^)sOqj;o;hgdaVnBH$BM{_73?znS+R z*G2VHM!Jw6#<FfJ-J%-9AuDW$@mc-Eyk~F{Jbvt` zn;(%DbBDnKIYr~|I>ZTvbH@cxUyw%bp*)OSs}lwO^HTJ2M#u5QsPF0?Jv*OVPfdKv z+t$Z5P!~jzZ~Y!d#iP?S{?M_g%Ua0Q)WawbIx+2uYpcf(7Im%W=rAu4dSceo7RZh# zN38=RmwOJQE$qbPXIuO^E`wSeJKCx3Q76irp~QS#19dusEVCWPrKhK9{7cbIMg9U} TZiJi*F`$tkWLn) literal 0 HcmV?d00001 diff --git a/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties b/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..09523c0e5 --- /dev/null +++ b/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/wrappers/kotlin/lib/gradlew b/wrappers/kotlin/lib/gradlew new file mode 100644 index 000000000..f5feea6d6 --- /dev/null +++ b/wrappers/kotlin/lib/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/wrappers/kotlin/lib/gradlew.bat b/wrappers/kotlin/lib/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/wrappers/kotlin/lib/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/wrappers/kotlin/lib/lib/build.gradle.kts b/wrappers/kotlin/lib/lib/build.gradle.kts new file mode 100644 index 000000000..b9b378724 --- /dev/null +++ b/wrappers/kotlin/lib/lib/build.gradle.kts @@ -0,0 +1,73 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Kotlin library project to get you started. + * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.9/userguide/building_java_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the org.jetbrains.kotlin.jvm Plugin to add support for Kotlin. + alias(libs.plugins.jvm) + + // Apply the java-library plugin for API and implementation separation. + `java-library` +} + + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use the Kotlin JUnit 5 integration. + testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") + + // Use the JUnit 5 integration. + testImplementation(libs.junit.jupiter.engine) + + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + + // This dependency is exported to consumers, that is to say found on their compile classpath. + api(libs.commons.math3) + + // This dependency is used internally, and not exposed to consumers on their own compile classpath. + implementation(libs.guava) + + implementation("net.java.dev.jna:jna:5.10.0") +} + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +tasks.named("test") { + + doFirst { + // systemProperty("java.library.path", file("native-libs").absolutePath) + // systemProperty("PATH", file("native-libs").absolutePath) + //systemProperty("jna.library.path", file("native-libs").absolutePath) + // systemProperty("java.class.path", file("native-libs").absolutePath) + + + + //systemProperty("jna.library.path", file("$projectDir/lib/native-libs").absolutePath) + //systemProperty("jna.library.path", file("native-libs").absolutePath) + + /* + val nativeLibPath = file("native-libs").absolutePath + systemProperty("java.library.path", nativeLibPath) + + println("Library path: $nativeLibPath") + } +*/ + } + // Use JUnit Platform for unit tests. + useJUnitPlatform() + +} + + diff --git a/wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt b/wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt new file mode 100644 index 000000000..5feaf0822 --- /dev/null +++ b/wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt @@ -0,0 +1,14 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.example + +import uniffi.uniffi_lib.hello + +class Library { + fun someLibraryMethod(): Boolean { + hello(); + + return true + } +} diff --git a/wrappers/kotlin/lib/lib/src/main/kotlin/uniffi/uniffi_lib/uniffi_lib.kt b/wrappers/kotlin/lib/lib/src/main/kotlin/uniffi/uniffi_lib/uniffi_lib.kt new file mode 100644 index 000000000..c5dbddff2 --- /dev/null +++ b/wrappers/kotlin/lib/lib/src/main/kotlin/uniffi/uniffi_lib/uniffi_lib.kt @@ -0,0 +1,964 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +@file:Suppress("NAME_SHADOWING") + +package uniffi.uniffi_lib + +// Common helper code. +// +// Ideally this would live in a separate .kt file where it can be unittested etc +// in isolation, and perhaps even published as a re-useable package. +// +// However, it's important that the details of how this helper code works (e.g. the +// way that different builtin types are passed across the FFI) exactly match what's +// expected by the Rust code on the other side of the interface. In practice right +// now that means coming from the exact some version of `uniffi` that was used to +// compile the Rust component. The easiest way to ensure this is to bundle the Kotlin +// helpers directly inline like we're doing here. + +import com.sun.jna.Library +import com.sun.jna.IntegerType +import com.sun.jna.Native +import com.sun.jna.Pointer +import com.sun.jna.Structure +import com.sun.jna.Callback +import com.sun.jna.ptr.* +import java.nio.ByteBuffer +import java.nio.ByteOrder +import java.nio.CharBuffer +import java.nio.charset.CodingErrorAction +import java.util.concurrent.atomic.AtomicLong +import java.util.concurrent.ConcurrentHashMap + +// This is a helper for safely working with byte buffers returned from the Rust code. +// A rust-owned buffer is represented by its capacity, its current length, and a +// pointer to the underlying data. + +@Structure.FieldOrder("capacity", "len", "data") +open class RustBuffer : Structure() { + // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values. + // When dealing with these fields, make sure to call `toULong()`. + @JvmField var capacity: Long = 0 + @JvmField var len: Long = 0 + @JvmField var data: Pointer? = null + + class ByValue: RustBuffer(), Structure.ByValue + class ByReference: RustBuffer(), Structure.ByReference + + internal fun setValue(other: RustBuffer) { + capacity = other.capacity + len = other.len + data = other.data + } + + companion object { + internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status -> + // Note: need to convert the size to a `Long` value to make this work with JVM. + UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_alloc(size.toLong(), status) + }.also { + if(it.data == null) { + throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})") + } + } + + internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue { + var buf = RustBuffer.ByValue() + buf.capacity = capacity.toLong() + buf.len = len.toLong() + buf.data = data + return buf + } + + internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status -> + UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_free(buf, status) + } + } + + @Suppress("TooGenericExceptionThrown") + fun asByteBuffer() = + this.data?.getByteBuffer(0, this.len.toLong())?.also { + it.order(ByteOrder.BIG_ENDIAN) + } +} + +/** + * The equivalent of the `*mut RustBuffer` type. + * Required for callbacks taking in an out pointer. + * + * Size is the sum of all values in the struct. + */ +class RustBufferByReference : ByReference(16) { + /** + * Set the pointed-to `RustBuffer` to the given value. + */ + fun setValue(value: RustBuffer.ByValue) { + // NOTE: The offsets are as they are in the C-like struct. + val pointer = getPointer() + pointer.setLong(0, value.capacity) + pointer.setLong(8, value.len) + pointer.setPointer(16, value.data) + } + + /** + * Get a `RustBuffer.ByValue` from this reference. + */ + fun getValue(): RustBuffer.ByValue { + val pointer = getPointer() + val value = RustBuffer.ByValue() + value.writeField("capacity", pointer.getLong(0)) + value.writeField("len", pointer.getLong(8)) + value.writeField("data", pointer.getLong(16)) + + return value + } +} + +// This is a helper for safely passing byte references into the rust code. +// It's not actually used at the moment, because there aren't many things that you +// can take a direct pointer to in the JVM, and if we're going to copy something +// then we might as well copy it into a `RustBuffer`. But it's here for API +// completeness. + +@Structure.FieldOrder("len", "data") +open class ForeignBytes : Structure() { + @JvmField var len: Int = 0 + @JvmField var data: Pointer? = null + + class ByValue : ForeignBytes(), Structure.ByValue +} +// The FfiConverter interface handles converter types to and from the FFI +// +// All implementing objects should be public to support external types. When a +// type is external we need to import it's FfiConverter. +public interface FfiConverter { + // Convert an FFI type to a Kotlin type + fun lift(value: FfiType): KotlinType + + // Convert an Kotlin type to an FFI type + fun lower(value: KotlinType): FfiType + + // Read a Kotlin type from a `ByteBuffer` + fun read(buf: ByteBuffer): KotlinType + + // Calculate bytes to allocate when creating a `RustBuffer` + // + // This must return at least as many bytes as the write() function will + // write. It can return more bytes than needed, for example when writing + // Strings we can't know the exact bytes needed until we the UTF-8 + // encoding, so we pessimistically allocate the largest size possible (3 + // bytes per codepoint). Allocating extra bytes is not really a big deal + // because the `RustBuffer` is short-lived. + fun allocationSize(value: KotlinType): ULong + + // Write a Kotlin type to a `ByteBuffer` + fun write(value: KotlinType, buf: ByteBuffer) + + // Lower a value into a `RustBuffer` + // + // This method lowers a value into a `RustBuffer` rather than the normal + // FfiType. It's used by the callback interface code. Callback interface + // returns are always serialized into a `RustBuffer` regardless of their + // normal FFI type. + fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue { + val rbuf = RustBuffer.alloc(allocationSize(value)) + try { + val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also { + it.order(ByteOrder.BIG_ENDIAN) + } + write(value, bbuf) + rbuf.writeField("len", bbuf.position().toLong()) + return rbuf + } catch (e: Throwable) { + RustBuffer.free(rbuf) + throw e + } + } + + // Lift a value from a `RustBuffer`. + // + // This here mostly because of the symmetry with `lowerIntoRustBuffer()`. + // It's currently only used by the `FfiConverterRustBuffer` class below. + fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType { + val byteBuf = rbuf.asByteBuffer()!! + try { + val item = read(byteBuf) + if (byteBuf.hasRemaining()) { + throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!") + } + return item + } finally { + RustBuffer.free(rbuf) + } + } +} + +// FfiConverter that uses `RustBuffer` as the FfiType +public interface FfiConverterRustBuffer: FfiConverter { + override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value) + override fun lower(value: KotlinType) = lowerIntoRustBuffer(value) +} +// A handful of classes and functions to support the generated data structures. +// This would be a good candidate for isolating in its own ffi-support lib. + +internal const val UNIFFI_CALL_SUCCESS = 0.toByte() +internal const val UNIFFI_CALL_ERROR = 1.toByte() +internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte() + +@Structure.FieldOrder("code", "error_buf") +internal open class UniffiRustCallStatus : Structure() { + @JvmField var code: Byte = 0 + @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue() + + class ByValue: UniffiRustCallStatus(), Structure.ByValue + + fun isSuccess(): Boolean { + return code == UNIFFI_CALL_SUCCESS + } + + fun isError(): Boolean { + return code == UNIFFI_CALL_ERROR + } + + fun isPanic(): Boolean { + return code == UNIFFI_CALL_UNEXPECTED_ERROR + } + + companion object { + fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue { + val callStatus = UniffiRustCallStatus.ByValue() + callStatus.code = code + callStatus.error_buf = errorBuf + return callStatus + } + } +} + +class InternalException(message: String) : kotlin.Exception(message) + +// Each top-level error class has a companion object that can lift the error from the call status's rust buffer +interface UniffiRustCallStatusErrorHandler { + fun lift(error_buf: RustBuffer.ByValue): E; +} + +// Helpers for calling Rust +// In practice we usually need to be synchronized to call this safely, so it doesn't +// synchronize itself + +// Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err +private inline fun uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler, callback: (UniffiRustCallStatus) -> U): U { + var status = UniffiRustCallStatus() + val return_value = callback(status) + uniffiCheckCallStatus(errorHandler, status) + return return_value +} + +// Check UniffiRustCallStatus and throw an error if the call wasn't successful +private fun uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler, status: UniffiRustCallStatus) { + if (status.isSuccess()) { + return + } else if (status.isError()) { + throw errorHandler.lift(status.error_buf) + } else if (status.isPanic()) { + // when the rust code sees a panic, it tries to construct a rustbuffer + // with the message. but if that code panics, then it just sends back + // an empty buffer. + if (status.error_buf.len > 0) { + throw InternalException(FfiConverterString.lift(status.error_buf)) + } else { + throw InternalException("Rust panic") + } + } else { + throw InternalException("Unknown rust call status: $status.code") + } +} + +// UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR +object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler { + override fun lift(error_buf: RustBuffer.ByValue): InternalException { + RustBuffer.free(error_buf) + return InternalException("Unexpected CALL_ERROR") + } +} + +// Call a rust function that returns a plain value +private inline fun uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U { + return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback) +} + +internal inline fun uniffiTraitInterfaceCall( + callStatus: UniffiRustCallStatus, + makeCall: () -> T, + writeReturn: (T) -> Unit, +) { + try { + writeReturn(makeCall()) + } catch(e: kotlin.Exception) { + callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR + callStatus.error_buf = FfiConverterString.lower(e.toString()) + } +} + +internal inline fun uniffiTraitInterfaceCallWithError( + callStatus: UniffiRustCallStatus, + makeCall: () -> T, + writeReturn: (T) -> Unit, + lowerError: (E) -> RustBuffer.ByValue +) { + try { + writeReturn(makeCall()) + } catch(e: kotlin.Exception) { + if (e is E) { + callStatus.code = UNIFFI_CALL_ERROR + callStatus.error_buf = lowerError(e) + } else { + callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR + callStatus.error_buf = FfiConverterString.lower(e.toString()) + } + } +} +// Map handles to objects +// +// This is used pass an opaque 64-bit handle representing a foreign object to the Rust code. +internal class UniffiHandleMap { + private val map = ConcurrentHashMap() + private val counter = java.util.concurrent.atomic.AtomicLong(0) + + val size: Int + get() = map.size + + // Insert a new object into the handle map and get a handle for it + fun insert(obj: T): Long { + val handle = counter.getAndAdd(1) + map.put(handle, obj) + return handle + } + + // Get an object from the handle map + fun get(handle: Long): T { + return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle") + } + + // Remove an entry from the handlemap and get the Kotlin object back + fun remove(handle: Long): T { + return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle") + } +} + +// Contains loading, initialization code, +// and the FFI Function declarations in a com.sun.jna.Library. +@Synchronized +private fun findLibraryName(componentName: String): String { + val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride") + if (libOverride != null) { + return libOverride + } + return "uniffi_lib" +} + +private inline fun loadIndirect( + componentName: String +): Lib { + return Native.load(findLibraryName(componentName), Lib::class.java) +} + +// Define FFI callback types +internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback { + fun callback(`data`: Long,`pollResult`: Byte,) +} +internal interface UniffiForeignFutureFree : com.sun.jna.Callback { + fun callback(`handle`: Long,) +} +internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback { + fun callback(`handle`: Long,) +} +@Structure.FieldOrder("handle", "free") +internal open class UniffiForeignFuture( + @JvmField internal var `handle`: Long = 0.toLong(), + @JvmField internal var `free`: UniffiForeignFutureFree? = null, +) : Structure() { + class UniffiByValue( + `handle`: Long = 0.toLong(), + `free`: UniffiForeignFutureFree? = null, + ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFuture) { + `handle` = other.`handle` + `free` = other.`free` + } + +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU8( + @JvmField internal var `returnValue`: Byte = 0.toByte(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Byte = 0.toByte(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI8( + @JvmField internal var `returnValue`: Byte = 0.toByte(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Byte = 0.toByte(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU16( + @JvmField internal var `returnValue`: Short = 0.toShort(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Short = 0.toShort(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI16( + @JvmField internal var `returnValue`: Short = 0.toShort(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Short = 0.toShort(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU32( + @JvmField internal var `returnValue`: Int = 0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Int = 0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI32( + @JvmField internal var `returnValue`: Int = 0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Int = 0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU64( + @JvmField internal var `returnValue`: Long = 0.toLong(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Long = 0.toLong(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI64( + @JvmField internal var `returnValue`: Long = 0.toLong(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Long = 0.toLong(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructF32( + @JvmField internal var `returnValue`: Float = 0.0f, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Float = 0.0f, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructF64( + @JvmField internal var `returnValue`: Double = 0.0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Double = 0.0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructPointer( + @JvmField internal var `returnValue`: Pointer = Pointer.NULL, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Pointer = Pointer.NULL, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructRustBuffer( + @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,) +} +@Structure.FieldOrder("callStatus") +internal open class UniffiForeignFutureStructVoid( + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) { + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,) +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// A JNA Library to expose the extern-C FFI definitions. +// This is an implementation detail which will be called internally by the public API. + +internal interface UniffiLib : Library { + companion object { + internal val INSTANCE: UniffiLib by lazy { + loadIndirect(componentName = "uniffi_lib") + .also { lib: UniffiLib -> + uniffiCheckContractApiVersion(lib) + uniffiCheckApiChecksums(lib) + } + } + + } + + fun uniffi_uniffi_lib_fn_func_hello(uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun ffi_uniffi_lib_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_uniffi_lib_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i8(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_uniffi_lib_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Short + fun ffi_uniffi_lib_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i16(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Short + fun ffi_uniffi_lib_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Int + fun ffi_uniffi_lib_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Int + fun ffi_uniffi_lib_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_u64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_u64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Long + fun ffi_uniffi_lib_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_i64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_i64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Long + fun ffi_uniffi_lib_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_f32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_f32(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Float + fun ffi_uniffi_lib_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_f64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_f64(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Double + fun ffi_uniffi_lib_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_pointer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_pointer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun ffi_uniffi_lib_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_rust_buffer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_rust_buffer(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_uniffi_lib_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_cancel_void(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_free_void(`handle`: Long, + ): Unit + fun ffi_uniffi_lib_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_uniffi_lib_checksum_func_hello( + ): Short + fun ffi_uniffi_lib_uniffi_contract_version( + ): Int + +} + +private fun uniffiCheckContractApiVersion(lib: UniffiLib) { + // Get the bindings contract version from our ComponentInterface + val bindings_contract_version = 26 + // Get the scaffolding contract version by calling the into the dylib + val scaffolding_contract_version = lib.ffi_uniffi_lib_uniffi_contract_version() + if (bindings_contract_version != scaffolding_contract_version) { + throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project") + } +} + +@Suppress("UNUSED_PARAMETER") +private fun uniffiCheckApiChecksums(lib: UniffiLib) { + if (lib.uniffi_uniffi_lib_checksum_func_hello() != 40685.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } +} + +// Async support + +// Public interface members begin here. + + +// Interface implemented by anything that can contain an object reference. +// +// Such types expose a `destroy()` method that must be called to cleanly +// dispose of the contained objects. Failure to call this method may result +// in memory leaks. +// +// The easiest way to ensure this method is called is to use the `.use` +// helper method to execute a block and destroy the object at the end. +interface Disposable { + fun destroy() + companion object { + fun destroy(vararg args: Any?) { + args.filterIsInstance() + .forEach(Disposable::destroy) + } + } +} + +inline fun T.use(block: (T) -> R) = + try { + block(this) + } finally { + try { + // N.B. our implementation is on the nullable type `Disposable?`. + this?.destroy() + } catch (e: Throwable) { + // swallow + } + } + +/** Used to instantiate an interface without an actual pointer, for fakes in tests, mostly. */ +object NoPointer + +public object FfiConverterString: FfiConverter { + // Note: we don't inherit from FfiConverterRustBuffer, because we use a + // special encoding when lowering/lifting. We can use `RustBuffer.len` to + // store our length and avoid writing it out to the buffer. + override fun lift(value: RustBuffer.ByValue): String { + try { + val byteArr = ByteArray(value.len.toInt()) + value.asByteBuffer()!!.get(byteArr) + return byteArr.toString(Charsets.UTF_8) + } finally { + RustBuffer.free(value) + } + } + + override fun read(buf: ByteBuffer): String { + val len = buf.getInt() + val byteArr = ByteArray(len) + buf.get(byteArr) + return byteArr.toString(Charsets.UTF_8) + } + + fun toUtf8(value: String): ByteBuffer { + // Make sure we don't have invalid UTF-16, check for lone surrogates. + return Charsets.UTF_8.newEncoder().run { + onMalformedInput(CodingErrorAction.REPORT) + encode(CharBuffer.wrap(value)) + } + } + + override fun lower(value: String): RustBuffer.ByValue { + val byteBuf = toUtf8(value) + // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us + // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`. + val rbuf = RustBuffer.alloc(byteBuf.limit().toULong()) + rbuf.asByteBuffer()!!.put(byteBuf) + return rbuf + } + + // We aren't sure exactly how many bytes our string will be once it's UTF-8 + // encoded. Allocate 3 bytes per UTF-16 code unit which will always be + // enough. + override fun allocationSize(value: String): ULong { + val sizeForLength = 4UL + val sizeForString = value.length.toULong() * 3UL + return sizeForLength + sizeForString + } + + override fun write(value: String, buf: ByteBuffer) { + val byteBuf = toUtf8(value) + buf.putInt(byteBuf.limit()) + buf.put(byteBuf) + } +} + +public object FfiConverterByteArray: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): ByteArray { + val len = buf.getInt() + val byteArr = ByteArray(len) + buf.get(byteArr) + return byteArr + } + override fun allocationSize(value: ByteArray): ULong { + return 4UL + value.size.toULong() + } + override fun write(value: ByteArray, buf: ByteBuffer) { + buf.putInt(value.size) + buf.put(value) + } +} fun `hello`(): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_uniffi_lib_fn_func_hello( + _status) +} + ) + } + + + diff --git a/wrappers/kotlin/lib/lib/src/main/resources/uniffi_lib.dll b/wrappers/kotlin/lib/lib/src/main/resources/uniffi_lib.dll new file mode 100644 index 0000000000000000000000000000000000000000..b26e63020b1c0cfab7fdb0d7f56b4af8cf60b51a GIT binary patch literal 1248431 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 z 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�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�TK%zYu@C2VR2u<9%=p8i)_UM}8;H_#k`+ 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 z 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 literal 0 HcmV?d00001 diff --git a/wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt b/wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt new file mode 100644 index 000000000..831f3f7d4 --- /dev/null +++ b/wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt @@ -0,0 +1,15 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.example + +import kotlin.test.Test +import kotlin.test.assertTrue + +class LibraryTest { + @Test fun someLibraryMethodReturnsTrue() { + + val classUnderTest = Library() + assertTrue(classUnderTest.someLibraryMethod(), "someLibraryMethod should return 'true'") + } +} diff --git a/wrappers/kotlin/lib/settings.gradle.kts b/wrappers/kotlin/lib/settings.gradle.kts new file mode 100644 index 000000000..6810a0132 --- /dev/null +++ b/wrappers/kotlin/lib/settings.gradle.kts @@ -0,0 +1,15 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.9/userguide/multi_project_builds.html in the Gradle documentation. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" +} + + +rootProject.name = "lib" +include("lib") From 70b7862763ec547d75eab673c18146ec67d4db57 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Wed, 7 Aug 2024 11:37:59 -0400 Subject: [PATCH 03/43] progress --- Cargo.lock | 168 +++++++++--------- uniffi/uniffi-lib/src/lib.rs | 3 +- .../output/uniffi/uniffi_lib/uniffi_lib.kt | 27 ++- wrappers/swift/.gitignore | 8 + wrappers/swift/generate.bat | 11 ++ .../output/lib_output/uniffi_lib.swiftdoc | Bin 0 -> 380 bytes .../output/lib_output/uniffi_lib.swiftmodule | Bin 0 -> 39992 bytes .../lib_output/uniffi_lib.swiftsourceinfo | Bin 0 -> 1856 bytes wrappers/swift/output/uniffi_lib.dll | Bin 0 -> 61440 bytes wrappers/swift/output/uniffi_lib.exp | Bin 0 -> 796 bytes wrappers/swift/output/uniffi_lib.lib | Bin 0 -> 1898 bytes .../{switft => swift}/output/uniffi_lib.swift | 22 ++- .../{switft => swift}/output/uniffi_libFFI.h | 2 +- .../output/uniffi_libFFI.modulemap | 0 wrappers/swift/package/.gitignore | 8 + .../swift/package/Modules/uniffi_lib.swiftdoc | Bin 0 -> 380 bytes .../package/Modules/uniffi_lib.swiftmodule | Bin 0 -> 39992 bytes .../Modules/uniffi_lib.swiftsourceinfo | Bin 0 -> 1856 bytes wrappers/swift/package/Package.swift | 28 +++ .../package/Sources/package/package.swift | 8 + .../Tests/packageTests/packageTests.swift | 12 ++ wrappers/switft/generate.bat | 6 - 22 files changed, 203 insertions(+), 100 deletions(-) create mode 100644 wrappers/swift/.gitignore create mode 100644 wrappers/swift/generate.bat create mode 100644 wrappers/swift/output/lib_output/uniffi_lib.swiftdoc create mode 100644 wrappers/swift/output/lib_output/uniffi_lib.swiftmodule create mode 100644 wrappers/swift/output/lib_output/uniffi_lib.swiftsourceinfo create mode 100644 wrappers/swift/output/uniffi_lib.dll create mode 100644 wrappers/swift/output/uniffi_lib.exp create mode 100644 wrappers/swift/output/uniffi_lib.lib rename wrappers/{switft => swift}/output/uniffi_lib.swift (96%) rename wrappers/{switft => swift}/output/uniffi_libFFI.h (99%) rename wrappers/{switft => swift}/output/uniffi_libFFI.modulemap (100%) create mode 100644 wrappers/swift/package/.gitignore create mode 100644 wrappers/swift/package/Modules/uniffi_lib.swiftdoc create mode 100644 wrappers/swift/package/Modules/uniffi_lib.swiftmodule create mode 100644 wrappers/swift/package/Modules/uniffi_lib.swiftsourceinfo create mode 100644 wrappers/swift/package/Package.swift create mode 100644 wrappers/swift/package/Sources/package/package.swift create mode 100644 wrappers/swift/package/Tests/packageTests/packageTests.swift delete mode 100644 wrappers/switft/generate.bat diff --git a/Cargo.lock b/Cargo.lock index f97be327f..e25fa94c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -31,9 +31,9 @@ checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -46,33 +46,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys", @@ -95,9 +95,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -128,7 +128,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -196,9 +196,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blahaj" @@ -301,9 +301,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" [[package]] name = "cfg-if" @@ -348,9 +348,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.7" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" dependencies = [ "clap_builder", "clap_derive", @@ -358,9 +358,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" dependencies = [ "anstream", "anstyle", @@ -370,27 +370,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "console_error_panic_hook" @@ -464,7 +464,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -729,9 +729,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" @@ -776,9 +776,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" @@ -845,7 +845,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -928,9 +928,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "ppv-lite86" @@ -949,9 +949,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1003,7 +1003,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1016,7 +1016,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1060,9 +1060,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags", ] @@ -1138,7 +1138,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1163,9 +1163,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -1183,13 +1183,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1265,9 +1265,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] @@ -1282,14 +1282,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] name = "subtle" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -1304,9 +1304,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -1315,9 +1315,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" [[package]] name = "textwrap" @@ -1345,7 +1345,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1359,9 +1359,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" [[package]] name = "toml_edit" @@ -1455,7 +1455,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1486,7 +1486,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.66", + "syn 2.0.72", "toml", "uniffi_meta", ] @@ -1584,7 +1584,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -1618,7 +1618,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1651,7 +1651,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] [[package]] @@ -1684,9 +1684,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1700,51 +1700,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -1784,5 +1784,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.72", ] diff --git a/uniffi/uniffi-lib/src/lib.rs b/uniffi/uniffi-lib/src/lib.rs index 823e25c8e..4ca4c289a 100644 --- a/uniffi/uniffi-lib/src/lib.rs +++ b/uniffi/uniffi-lib/src/lib.rs @@ -1,6 +1,7 @@ #[uniffi::export] -fn hello() { +fn hello() -> Vec{ println!("baba"); +Vec::new() } diff --git a/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt b/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt index f5bb58e6f..c5dbddff2 100644 --- a/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt +++ b/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt @@ -708,7 +708,7 @@ internal interface UniffiLib : Library { } fun uniffi_uniffi_lib_fn_func_hello(uniffi_out_err: UniffiRustCallStatus, - ): Unit + ): RustBuffer.ByValue fun ffi_uniffi_lib_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue fun ffi_uniffi_lib_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, @@ -840,7 +840,7 @@ private fun uniffiCheckContractApiVersion(lib: UniffiLib) { @Suppress("UNUSED_PARAMETER") private fun uniffiCheckApiChecksums(lib: UniffiLib) { - if (lib.uniffi_uniffi_lib_checksum_func_hello() != 17287.toShort()) { + if (lib.uniffi_uniffi_lib_checksum_func_hello() != 40685.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } } @@ -935,13 +935,30 @@ public object FfiConverterString: FfiConverter { buf.putInt(byteBuf.limit()) buf.put(byteBuf) } -} fun `hello`() - = +} + +public object FfiConverterByteArray: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): ByteArray { + val len = buf.getInt() + val byteArr = ByteArray(len) + buf.get(byteArr) + return byteArr + } + override fun allocationSize(value: ByteArray): ULong { + return 4UL + value.size.toULong() + } + override fun write(value: ByteArray, buf: ByteBuffer) { + buf.putInt(value.size) + buf.put(value) + } +} fun `hello`(): kotlin.ByteArray { + return FfiConverterByteArray.lift( uniffiRustCall() { _status -> UniffiLib.INSTANCE.uniffi_uniffi_lib_fn_func_hello( _status) } - + ) + } diff --git a/wrappers/swift/.gitignore b/wrappers/swift/.gitignore new file mode 100644 index 000000000..0023a5340 --- /dev/null +++ b/wrappers/swift/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/wrappers/swift/generate.bat b/wrappers/swift/generate.bat new file mode 100644 index 000000000..fd593db9c --- /dev/null +++ b/wrappers/swift/generate.bat @@ -0,0 +1,11 @@ +rmdir /s /q .\output + +cargo run -p uniffi-bindgen generate --library "..\..\target\release\uniffi_lib.dll" --language swift -o output --no-format + +ren ..\..\target\release\libuniffi_lib.dll.a uniffi_lib.lib + +cd output + +swiftc -module-name uniffi_lib -emit-library -o uniffi_lib.dll -emit-module -emit-module-path ./lib_output/uniffi_lib.swiftmodule -parse-as-library -L ../../../target/release/ -luniffi_lib -Xcc -fmodule-map-file="C:\dev\git\devolutions-crypto\wrappers\swift\output\uniffi_libFFI.modulemap" uniffi_lib.swift + + diff --git a/wrappers/swift/output/lib_output/uniffi_lib.swiftdoc b/wrappers/swift/output/lib_output/uniffi_lib.swiftdoc new file mode 100644 index 0000000000000000000000000000000000000000..a271417925866e738617b0d7b601fad78a294c8b GIT binary patch literal 380 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 literal 0 HcmV?d00001 diff --git a/wrappers/swift/output/lib_output/uniffi_lib.swiftsourceinfo b/wrappers/swift/output/lib_output/uniffi_lib.swiftsourceinfo new file mode 100644 index 0000000000000000000000000000000000000000..28df5914622abf98a56a52bb77a631a41ac35e9d GIT binary patch literal 1856 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 N%`=?L@_Kg!UIDHYsPs zf`Y05y69eW&ySXy0*-8qk}i*Mz=bdQYM6m7ZVs4|t5$cBoQ^ORG&o zIm_q?y{vB{{jdL5%0p_>&QGHEYLpvm5*IW-?FR48dgt_;Ue#$d6?AgMg}mTn<-9ez z@GaZDQGS^@!>4(iWiq$iPF3Q#DO^@Kk~8Voeay``k0(J_X=(XtlYz2Dtb@KQgfhIv zS}mWNNNZ6#)_icnKO3X5qz^Z0hiw+_?;o-ke5g|X)>t=t-sT=!rQdNjN%V{k>;6@4 zec7FnnPj07IDf@IZjCyLj9tjsHg0sztdEi}UZeG)!OVfNKYH;54YUx=bMkR^fdF^A lV&+-?xt2N854j*>H%z0)AQ8R3Vc?YG;H{S`?LpuAfY*4#ta$(c literal 0 HcmV?d00001 diff --git a/wrappers/swift/output/uniffi_lib.lib b/wrappers/swift/output/uniffi_lib.lib new file mode 100644 index 0000000000000000000000000000000000000000..c3ea0c378e332fcb00522f4fb00ebba4e728e1dd GIT binary patch literal 1898 zcmcIlPj3=I6#ubcRbnbZIhw3WVm(NKvehPy*(z-yrL+NRyscZd$R=C1Y2n~Slcpga zyn6Brc=zgokI<7bUNns#!Fa9j?alxjYYV1KGV}h-+nM)%@4eaEi{@Uv`8YbO2FHU; zP?l0!FqwsU!M%tAxCAJ1AW|Uq0GK-FX&A+|jrB^+$S+r)R*D<7^@`DH*^P#6IQA9{ zqr6!v{cVFc10&z0R@f}B8u_K#5|aCw^k7?SZaa>fNw2t_mSwhWx0TDAZS&cy6*}GC z*)>KsA29}c>;Hpn%xKR-cz|xoa-3Q9yh_l9 zkg&R8eE;_TcRU1KAyjyztnIDN%VgD;fIKnpq#&q{*prk^88nkwxpkA6Bbq;jB1}|A zx+m=Bg&Hwp6uM8^v0jJTql6%Vt1MzV7}P!7h+QT%AJ1bNGe{i9*X;V9yYDvI>P+Rn zS}K-T{q5j-jYRf^Csn-1u@97Z(giOfPwMW@F1egI424ckhQA_nu#XC4 literal 0 HcmV?d00001 diff --git a/wrappers/switft/output/uniffi_lib.swift b/wrappers/swift/output/uniffi_lib.swift similarity index 96% rename from wrappers/switft/output/uniffi_lib.swift rename to wrappers/swift/output/uniffi_lib.swift index 8ee2d8693..095ade639 100644 --- a/wrappers/switft/output/uniffi_lib.swift +++ b/wrappers/swift/output/uniffi_lib.swift @@ -419,10 +419,26 @@ fileprivate struct FfiConverterString: FfiConverter { writeBytes(&buf, value.utf8) } } -public func hello() {try! rustCall() { + +fileprivate struct FfiConverterData: FfiConverterRustBuffer { + typealias SwiftType = Data + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data { + let len: Int32 = try readInt(&buf) + return Data(try readBytes(&buf, count: Int(len))) + } + + public static func write(_ value: Data, into buf: inout [UInt8]) { + let len = Int32(value.count) + writeInt(&buf, len) + writeBytes(&buf, value) + } +} +public func hello() -> Data { + return try! FfiConverterData.lift(try! rustCall() { uniffi_uniffi_lib_fn_func_hello($0 ) -} +}) } private enum InitializationResult { @@ -440,7 +456,7 @@ private var initializationResult: InitializationResult = { if bindings_contract_version != scaffolding_contract_version { return InitializationResult.contractVersionMismatch } - if (uniffi_uniffi_lib_checksum_func_hello() != 17287) { + if (uniffi_uniffi_lib_checksum_func_hello() != 40685) { return InitializationResult.apiChecksumMismatch } diff --git a/wrappers/switft/output/uniffi_libFFI.h b/wrappers/swift/output/uniffi_libFFI.h similarity index 99% rename from wrappers/switft/output/uniffi_libFFI.h rename to wrappers/swift/output/uniffi_libFFI.h index 6bda9d871..02303031a 100644 --- a/wrappers/switft/output/uniffi_libFFI.h +++ b/wrappers/swift/output/uniffi_libFFI.h @@ -253,7 +253,7 @@ typedef void (*UniffiForeignFutureCompleteVoid)(uint64_t, UniffiForeignFutureStr #endif #ifndef UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_FN_FUNC_HELLO #define UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_FN_FUNC_HELLO -void uniffi_uniffi_lib_fn_func_hello(RustCallStatus *_Nonnull out_status +RustBuffer uniffi_uniffi_lib_fn_func_hello(RustCallStatus *_Nonnull out_status ); #endif diff --git a/wrappers/switft/output/uniffi_libFFI.modulemap b/wrappers/swift/output/uniffi_libFFI.modulemap similarity index 100% rename from wrappers/switft/output/uniffi_libFFI.modulemap rename to wrappers/swift/output/uniffi_libFFI.modulemap diff --git a/wrappers/swift/package/.gitignore b/wrappers/swift/package/.gitignore new file mode 100644 index 000000000..0023a5340 --- /dev/null +++ b/wrappers/swift/package/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/wrappers/swift/package/Modules/uniffi_lib.swiftdoc b/wrappers/swift/package/Modules/uniffi_lib.swiftdoc new file mode 100644 index 0000000000000000000000000000000000000000..a271417925866e738617b0d7b601fad78a294c8b GIT binary patch literal 380 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 literal 0 HcmV?d00001 diff --git a/wrappers/swift/package/Modules/uniffi_lib.swiftsourceinfo b/wrappers/swift/package/Modules/uniffi_lib.swiftsourceinfo new file mode 100644 index 0000000000000000000000000000000000000000..28df5914622abf98a56a52bb77a631a41ac35e9d GIT binary patch literal 1856 zcmbVMPiWg#7=MU|*@~0-5X-U0Xc%6ch8@gYTe503u4F7Z zj(1v(4?ARQ#xhtT&}C$&bxS(B9Y)5AMxloc66k4%vCE*PmvoGsGT8T&e@;l8un#1C zf8P83-uu2!-{zfLA3M$>6h#QR9K}H9n@#sp%5yj6{+aVEr##tWwNYgI=+iS*tJF8)N1vwn_P$@V1s!f59jrb;#Aj*&WB%gyY4$7urDiTKu_0H#q60b zR18(udcysf>&HE`LA>m?#f~S&60vl`k0xM!RZ|s3&6dGGl?oXhtzy+O`NL>USX4)S3+9~6X0UXcZy6AE0OmlZ{p!Qur) z5)>J8SjtO-A$}+v5r(iN1^IkX&SPQr%KFXUYENIOjo5I=cc!>_ep|KQ-vi${&|YZq z5j6o%yVwsM2=&4m*nU9BzFm0;YhDNADC~AItrMX>*w+qw84AK5gWWFnkqe=r6Rq+UJDTW5t4mW zzJqRW*L9gHK}l?((8eF}#VOE@;li*noYrwLsaFc>HBGFW1!EF(`)!}Ve7>qEg-S|S zHM3BOiRtmW5x(-4W=1C8%$gF6={d;{=s?{+IqzKE zV};9d1ZW%hAZ0jDt`9fN{hu2G1+e{Xj=WFXY^_-g7Yn5lFdx2gJxPk Date: Wed, 7 Aug 2024 16:14:25 -0400 Subject: [PATCH 04/43] progress --- .gitignore | 2 + uniffi/uniffi-lib/Cargo.toml | 2 +- wrappers/swift/generate.sh | 50 ++ .../output/lib_output/uniffi_lib.swiftdoc | Bin 380 -> 0 bytes .../output/lib_output/uniffi_lib.swiftmodule | Bin 39992 -> 0 bytes .../lib_output/uniffi_lib.swiftsourceinfo | Bin 1856 -> 0 bytes wrappers/swift/output/uniffi_lib.dll | Bin 61440 -> 0 bytes wrappers/swift/output/uniffi_lib.exp | Bin 796 -> 0 bytes wrappers/swift/output/uniffi_lib.lib | Bin 1898 -> 0 bytes wrappers/swift/output/uniffi_lib.swift | 477 --------------- wrappers/swift/output/uniffi_libFFI.h | 552 ------------------ wrappers/swift/output/uniffi_libFFI.modulemap | 6 - wrappers/swift/package/.gitignore | 8 - .../swift/package/Modules/uniffi_lib.swiftdoc | Bin 380 -> 0 bytes .../package/Modules/uniffi_lib.swiftmodule | Bin 39992 -> 0 bytes .../Modules/uniffi_lib.swiftsourceinfo | Bin 1856 -> 0 bytes wrappers/swift/package/Package.swift | 28 - .../package/Sources/package/package.swift | 8 - .../Tests/packageTests/packageTests.swift | 12 - 19 files changed, 53 insertions(+), 1092 deletions(-) create mode 100644 wrappers/swift/generate.sh delete mode 100644 wrappers/swift/output/lib_output/uniffi_lib.swiftdoc delete mode 100644 wrappers/swift/output/lib_output/uniffi_lib.swiftmodule delete mode 100644 wrappers/swift/output/lib_output/uniffi_lib.swiftsourceinfo delete mode 100644 wrappers/swift/output/uniffi_lib.dll delete mode 100644 wrappers/swift/output/uniffi_lib.exp delete mode 100644 wrappers/swift/output/uniffi_lib.lib delete mode 100644 wrappers/swift/output/uniffi_lib.swift delete mode 100644 wrappers/swift/output/uniffi_libFFI.h delete mode 100644 wrappers/swift/output/uniffi_libFFI.modulemap delete mode 100644 wrappers/swift/package/.gitignore delete mode 100644 wrappers/swift/package/Modules/uniffi_lib.swiftdoc delete mode 100644 wrappers/swift/package/Modules/uniffi_lib.swiftmodule delete mode 100644 wrappers/swift/package/Modules/uniffi_lib.swiftsourceinfo delete mode 100644 wrappers/swift/package/Package.swift delete mode 100644 wrappers/swift/package/Sources/package/package.swift delete mode 100644 wrappers/swift/package/Tests/packageTests/packageTests.swift diff --git a/.gitignore b/.gitignore index f9e679942..5bbfe7b8b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ packages .vs *.nupkg *.user +wrappers/swift/bindings/* +wrappers/swift/output/* wrappers/csharp/nuget/dotnet/package/* wrappers/csharp/nuget/Android/Devolutions.Crypto.Android/package/* wrappers/csharp/nuget/iOS/Devolutions.Crypto.iOS/package/* diff --git a/uniffi/uniffi-lib/Cargo.toml b/uniffi/uniffi-lib/Cargo.toml index dfee85965..d9a72890f 100644 --- a/uniffi/uniffi-lib/Cargo.toml +++ b/uniffi/uniffi-lib/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" version.workspace = true [lib] -crate-type = ["cdylib"] +crate-type = ["cdylib", "staticlib"] [dependencies] devolutions-crypto = { path = "../../" } diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh new file mode 100644 index 000000000..80b16356f --- /dev/null +++ b/wrappers/swift/generate.sh @@ -0,0 +1,50 @@ +rm -rf bindings +rm -rf output + +cargo run -p uniffi-bindgen generate --library "../../target/debug/libuniffi_lib.dylib" --language swift -o bindings --no-format + +mkdir ./bindings/mac +mkdir ./bindings/ios-simulator + +rustup target add x86_64-apple-ios # iOS Simulator on Intel based mac +rustup target add aarch64-apple-ios-sim # iOS Simulator on Arm based mac +rustup target add aarch64-apple-ios # iOS & iPad +rustup target add aarch64-apple-darwin # Arm based mac +rustup target add x86_64-apple-darwin # Intel based mac + + +cargo build --release --target=x86_64-apple-ios -p uniffi-lib +cargo build --release --target=aarch64-apple-ios-sim -p uniffi-lib +cargo build --release --target=aarch64-apple-ios -p uniffi-lib +cargo build --release --target=aarch64-apple-darwin -p uniffi-lib +cargo build --release --target=x86_64-apple-darwin -p uniffi-lib + + +mv ./bindings/uniffi_libFFI.modulemap ./bindings/module.modulemap + +# combine the platforms + +# ios simulator +lipo ../../target/x86_64-apple-ios/release/libuniffi_lib.a \ + ../../target/aarch64-apple-ios-sim/release/libuniffi_lib.a \ + -create -output ./bindings/ios-simulator/libuniffi_lib.a + +# mac +lipo ../../target/x86_64-apple-darwin/release/libuniffi_lib.a \ + ../../target/aarch64-apple-darwin/release/libuniffi_lib.a \ + -create -output ./bindings/mac/libuniffi_lib.a + + +# no need to combine ios + +# create the XCFramework +xcodebuild -create-xcframework \ + -library ./bindings/ios-simulator/libuniffi_lib.a -headers ./bindings \ + -library ./bindings/mac/libuniffi_lib.a -headers ./bindings \ + -library ../../target/aarch64-apple-ios/release/libuniffi_lib.a -headers ./bindings \ + -output "./output/devolutions-crypto.xcframework" + + + + + diff --git a/wrappers/swift/output/lib_output/uniffi_lib.swiftdoc b/wrappers/swift/output/lib_output/uniffi_lib.swiftdoc deleted file mode 100644 index a271417925866e738617b0d7b601fad78a294c8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 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 diff --git a/wrappers/swift/output/lib_output/uniffi_lib.swiftsourceinfo b/wrappers/swift/output/lib_output/uniffi_lib.swiftsourceinfo deleted file mode 100644 index 28df5914622abf98a56a52bb77a631a41ac35e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1856 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 N%`=?L@_Kg!UIDHYsPs zf`Y05y69eW&ySXy0*-8qk}i*Mz=bdQYM6m7ZVs4|t5$cBoQ^ORG&o zIm_q?y{vB{{jdL5%0p_>&QGHEYLpvm5*IW-?FR48dgt_;Ue#$d6?AgMg}mTn<-9ez z@GaZDQGS^@!>4(iWiq$iPF3Q#DO^@Kk~8Voeay``k0(J_X=(XtlYz2Dtb@KQgfhIv zS}mWNNNZ6#)_icnKO3X5qz^Z0hiw+_?;o-ke5g|X)>t=t-sT=!rQdNjN%V{k>;6@4 zec7FnnPj07IDf@IZjCyLj9tjsHg0sztdEi}UZeG)!OVfNKYH;54YUx=bMkR^fdF^A lV&+-?xt2N854j*>H%z0)AQ8R3Vc?YG;H{S`?LpuAfY*4#ta$(c diff --git a/wrappers/swift/output/uniffi_lib.lib b/wrappers/swift/output/uniffi_lib.lib deleted file mode 100644 index c3ea0c378e332fcb00522f4fb00ebba4e728e1dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1898 zcmcIlPj3=I6#ubcRbnbZIhw3WVm(NKvehPy*(z-yrL+NRyscZd$R=C1Y2n~Slcpga zyn6Brc=zgokI<7bUNns#!Fa9j?alxjYYV1KGV}h-+nM)%@4eaEi{@Uv`8YbO2FHU; zP?l0!FqwsU!M%tAxCAJ1AW|Uq0GK-FX&A+|jrB^+$S+r)R*D<7^@`DH*^P#6IQA9{ zqr6!v{cVFc10&z0R@f}B8u_K#5|aCw^k7?SZaa>fNw2t_mSwhWx0TDAZS&cy6*}GC z*)>KsA29}c>;Hpn%xKR-cz|xoa-3Q9yh_l9 zkg&R8eE;_TcRU1KAyjyztnIDN%VgD;fIKnpq#&q{*prk^88nkwxpkA6Bbq;jB1}|A zx+m=Bg&Hwp6uM8^v0jJTql6%Vt1MzV7}P!7h+QT%AJ1bNGe{i9*X;V9yYDvI>P+Rn zS}K-T{q5j-jYRf^Csn-1u@97Z(giOfPwMW@F1egI424ckhQA_nu#XC4 diff --git a/wrappers/swift/output/uniffi_lib.swift b/wrappers/swift/output/uniffi_lib.swift deleted file mode 100644 index 095ade639..000000000 --- a/wrappers/swift/output/uniffi_lib.swift +++ /dev/null @@ -1,477 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! - -// swiftlint:disable all -import Foundation - -// Depending on the consumer's build setup, the low-level FFI code -// might be in a separate module, or it might be compiled inline into -// this module. This is a bit of light hackery to work with both. -#if canImport(uniffi_libFFI) -import uniffi_libFFI -#endif - -fileprivate extension RustBuffer { - // Allocate a new buffer, copying the contents of a `UInt8` array. - init(bytes: [UInt8]) { - let rbuf = bytes.withUnsafeBufferPointer { ptr in - RustBuffer.from(ptr) - } - self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data) - } - - static func empty() -> RustBuffer { - RustBuffer(capacity: 0, len:0, data: nil) - } - - static func from(_ ptr: UnsafeBufferPointer) -> RustBuffer { - try! rustCall { ffi_uniffi_lib_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } - } - - // Frees the buffer in place. - // The buffer must not be used after this is called. - func deallocate() { - try! rustCall { ffi_uniffi_lib_rustbuffer_free(self, $0) } - } -} - -fileprivate extension ForeignBytes { - init(bufferPointer: UnsafeBufferPointer) { - self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress) - } -} - -// For every type used in the interface, we provide helper methods for conveniently -// lifting and lowering that type from C-compatible data, and for reading and writing -// values of that type in a buffer. - -// Helper classes/extensions that don't change. -// Someday, this will be in a library of its own. - -fileprivate extension Data { - init(rustBuffer: RustBuffer) { - // TODO: This copies the buffer. Can we read directly from a - // Rust buffer? - self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len)) - } -} - -// Define reader functionality. Normally this would be defined in a class or -// struct, but we use standalone functions instead in order to make external -// types work. -// -// With external types, one swift source file needs to be able to call the read -// method on another source file's FfiConverter, but then what visibility -// should Reader have? -// - If Reader is fileprivate, then this means the read() must also -// be fileprivate, which doesn't work with external types. -// - If Reader is internal/public, we'll get compile errors since both source -// files will try define the same type. -// -// Instead, the read() method and these helper functions input a tuple of data - -fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) { - (data: data, offset: 0) -} - -// Reads an integer at the current offset, in big-endian order, and advances -// the offset on success. Throws if reading the integer would move the -// offset past the end of the buffer. -fileprivate func readInt(_ reader: inout (data: Data, offset: Data.Index)) throws -> T { - let range = reader.offset...size - guard reader.data.count >= range.upperBound else { - throw UniffiInternalError.bufferOverflow - } - if T.self == UInt8.self { - let value = reader.data[reader.offset] - reader.offset += 1 - return value as! T - } - var value: T = 0 - let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)}) - reader.offset = range.upperBound - return value.bigEndian -} - -// Reads an arbitrary number of bytes, to be used to read -// raw bytes, this is useful when lifting strings -fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array { - let range = reader.offset..<(reader.offset+count) - guard reader.data.count >= range.upperBound else { - throw UniffiInternalError.bufferOverflow - } - var value = [UInt8](repeating: 0, count: count) - value.withUnsafeMutableBufferPointer({ buffer in - reader.data.copyBytes(to: buffer, from: range) - }) - reader.offset = range.upperBound - return value -} - -// Reads a float at the current offset. -fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float { - return Float(bitPattern: try readInt(&reader)) -} - -// Reads a float at the current offset. -fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double { - return Double(bitPattern: try readInt(&reader)) -} - -// Indicates if the offset has reached the end of the buffer. -fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool { - return reader.offset < reader.data.count -} - -// Define writer functionality. Normally this would be defined in a class or -// struct, but we use standalone functions instead in order to make external -// types work. See the above discussion on Readers for details. - -fileprivate func createWriter() -> [UInt8] { - return [] -} - -fileprivate func writeBytes(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 { - writer.append(contentsOf: byteArr) -} - -// Writes an integer in big-endian order. -// -// Warning: make sure what you are trying to write -// is in the correct type! -fileprivate func writeInt(_ writer: inout [UInt8], _ value: T) { - var value = value.bigEndian - withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) } -} - -fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) { - writeInt(&writer, value.bitPattern) -} - -fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) { - writeInt(&writer, value.bitPattern) -} - -// Protocol for types that transfer other types across the FFI. This is -// analogous to the Rust trait of the same name. -fileprivate protocol FfiConverter { - associatedtype FfiType - associatedtype SwiftType - - static func lift(_ value: FfiType) throws -> SwiftType - static func lower(_ value: SwiftType) -> FfiType - static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType - static func write(_ value: SwiftType, into buf: inout [UInt8]) -} - -// Types conforming to `Primitive` pass themselves directly over the FFI. -fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { } - -extension FfiConverterPrimitive { - public static func lift(_ value: FfiType) throws -> SwiftType { - return value - } - - public static func lower(_ value: SwiftType) -> FfiType { - return value - } -} - -// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`. -// Used for complex types where it's hard to write a custom lift/lower. -fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {} - -extension FfiConverterRustBuffer { - public static func lift(_ buf: RustBuffer) throws -> SwiftType { - var reader = createReader(data: Data(rustBuffer: buf)) - let value = try read(from: &reader) - if hasRemaining(reader) { - throw UniffiInternalError.incompleteData - } - buf.deallocate() - return value - } - - public static func lower(_ value: SwiftType) -> RustBuffer { - var writer = createWriter() - write(value, into: &writer) - return RustBuffer(bytes: writer) - } -} -// An error type for FFI errors. These errors occur at the UniFFI level, not -// the library level. -fileprivate enum UniffiInternalError: LocalizedError { - case bufferOverflow - case incompleteData - case unexpectedOptionalTag - case unexpectedEnumCase - case unexpectedNullPointer - case unexpectedRustCallStatusCode - case unexpectedRustCallError - case unexpectedStaleHandle - case rustPanic(_ message: String) - - public var errorDescription: String? { - switch self { - case .bufferOverflow: return "Reading the requested value would read past the end of the buffer" - case .incompleteData: return "The buffer still has data after lifting its containing value" - case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1" - case .unexpectedEnumCase: return "Raw enum value doesn't match any cases" - case .unexpectedNullPointer: return "Raw pointer value was null" - case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code" - case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified" - case .unexpectedStaleHandle: return "The object in the handle map has been dropped already" - case let .rustPanic(message): return message - } - } -} - -fileprivate extension NSLock { - func withLock(f: () throws -> T) rethrows -> T { - self.lock() - defer { self.unlock() } - return try f() - } -} - -fileprivate let CALL_SUCCESS: Int8 = 0 -fileprivate let CALL_ERROR: Int8 = 1 -fileprivate let CALL_UNEXPECTED_ERROR: Int8 = 2 -fileprivate let CALL_CANCELLED: Int8 = 3 - -fileprivate extension RustCallStatus { - init() { - self.init( - code: CALL_SUCCESS, - errorBuf: RustBuffer.init( - capacity: 0, - len: 0, - data: nil - ) - ) - } -} - -private func rustCall(_ callback: (UnsafeMutablePointer) -> T) throws -> T { - let neverThrow: ((RustBuffer) throws -> Never)? = nil - return try makeRustCall(callback, errorHandler: neverThrow) -} - -private func rustCallWithError( - _ errorHandler: @escaping (RustBuffer) throws -> E, - _ callback: (UnsafeMutablePointer) -> T) throws -> T { - try makeRustCall(callback, errorHandler: errorHandler) -} - -private func makeRustCall( - _ callback: (UnsafeMutablePointer) -> T, - errorHandler: ((RustBuffer) throws -> E)? -) throws -> T { - uniffiEnsureInitialized() - var callStatus = RustCallStatus.init() - let returnedVal = callback(&callStatus) - try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler) - return returnedVal -} - -private func uniffiCheckCallStatus( - callStatus: RustCallStatus, - errorHandler: ((RustBuffer) throws -> E)? -) throws { - switch callStatus.code { - case CALL_SUCCESS: - return - - case CALL_ERROR: - if let errorHandler = errorHandler { - throw try errorHandler(callStatus.errorBuf) - } else { - callStatus.errorBuf.deallocate() - throw UniffiInternalError.unexpectedRustCallError - } - - case CALL_UNEXPECTED_ERROR: - // When the rust code sees a panic, it tries to construct a RustBuffer - // with the message. But if that code panics, then it just sends back - // an empty buffer. - if callStatus.errorBuf.len > 0 { - throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf)) - } else { - callStatus.errorBuf.deallocate() - throw UniffiInternalError.rustPanic("Rust panic") - } - - case CALL_CANCELLED: - fatalError("Cancellation not supported yet") - - default: - throw UniffiInternalError.unexpectedRustCallStatusCode - } -} - -private func uniffiTraitInterfaceCall( - callStatus: UnsafeMutablePointer, - makeCall: () throws -> T, - writeReturn: (T) -> () -) { - do { - try writeReturn(makeCall()) - } catch let error { - callStatus.pointee.code = CALL_UNEXPECTED_ERROR - callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) - } -} - -private func uniffiTraitInterfaceCallWithError( - callStatus: UnsafeMutablePointer, - makeCall: () throws -> T, - writeReturn: (T) -> (), - lowerError: (E) -> RustBuffer -) { - do { - try writeReturn(makeCall()) - } catch let error as E { - callStatus.pointee.code = CALL_ERROR - callStatus.pointee.errorBuf = lowerError(error) - } catch { - callStatus.pointee.code = CALL_UNEXPECTED_ERROR - callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) - } -} -fileprivate class UniffiHandleMap { - private var map: [UInt64: T] = [:] - private let lock = NSLock() - private var currentHandle: UInt64 = 1 - - func insert(obj: T) -> UInt64 { - lock.withLock { - let handle = currentHandle - currentHandle += 1 - map[handle] = obj - return handle - } - } - - func get(handle: UInt64) throws -> T { - try lock.withLock { - guard let obj = map[handle] else { - throw UniffiInternalError.unexpectedStaleHandle - } - return obj - } - } - - @discardableResult - func remove(handle: UInt64) throws -> T { - try lock.withLock { - guard let obj = map.removeValue(forKey: handle) else { - throw UniffiInternalError.unexpectedStaleHandle - } - return obj - } - } - - var count: Int { - get { - map.count - } - } -} - - -// Public interface members begin here. - - -fileprivate struct FfiConverterString: FfiConverter { - typealias SwiftType = String - typealias FfiType = RustBuffer - - public static func lift(_ value: RustBuffer) throws -> String { - defer { - value.deallocate() - } - if value.data == nil { - return String() - } - let bytes = UnsafeBufferPointer(start: value.data!, count: Int(value.len)) - return String(bytes: bytes, encoding: String.Encoding.utf8)! - } - - public static func lower(_ value: String) -> RustBuffer { - return value.utf8CString.withUnsafeBufferPointer { ptr in - // The swift string gives us int8_t, we want uint8_t. - ptr.withMemoryRebound(to: UInt8.self) { ptr in - // The swift string gives us a trailing null byte, we don't want it. - let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1)) - return RustBuffer.from(buf) - } - } - } - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String { - let len: Int32 = try readInt(&buf) - return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)! - } - - public static func write(_ value: String, into buf: inout [UInt8]) { - let len = Int32(value.utf8.count) - writeInt(&buf, len) - writeBytes(&buf, value.utf8) - } -} - -fileprivate struct FfiConverterData: FfiConverterRustBuffer { - typealias SwiftType = Data - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data { - let len: Int32 = try readInt(&buf) - return Data(try readBytes(&buf, count: Int(len))) - } - - public static func write(_ value: Data, into buf: inout [UInt8]) { - let len = Int32(value.count) - writeInt(&buf, len) - writeBytes(&buf, value) - } -} -public func hello() -> Data { - return try! FfiConverterData.lift(try! rustCall() { - uniffi_uniffi_lib_fn_func_hello($0 - ) -}) -} - -private enum InitializationResult { - case ok - case contractVersionMismatch - case apiChecksumMismatch -} -// Use a global variable to perform the versioning checks. Swift ensures that -// the code inside is only computed once. -private var initializationResult: InitializationResult = { - // Get the bindings contract version from our ComponentInterface - let bindings_contract_version = 26 - // Get the scaffolding contract version by calling the into the dylib - let scaffolding_contract_version = ffi_uniffi_lib_uniffi_contract_version() - if bindings_contract_version != scaffolding_contract_version { - return InitializationResult.contractVersionMismatch - } - if (uniffi_uniffi_lib_checksum_func_hello() != 40685) { - return InitializationResult.apiChecksumMismatch - } - - return InitializationResult.ok -}() - -private func uniffiEnsureInitialized() { - switch initializationResult { - case .ok: - break - case .contractVersionMismatch: - fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project") - case .apiChecksumMismatch: - fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } -} - -// swiftlint:enable all \ No newline at end of file diff --git a/wrappers/swift/output/uniffi_libFFI.h b/wrappers/swift/output/uniffi_libFFI.h deleted file mode 100644 index 02303031a..000000000 --- a/wrappers/swift/output/uniffi_libFFI.h +++ /dev/null @@ -1,552 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! - -#pragma once - -#include -#include -#include - -// The following structs are used to implement the lowest level -// of the FFI, and thus useful to multiple uniffied crates. -// We ensure they are declared exactly once, with a header guard, UNIFFI_SHARED_H. -#ifdef UNIFFI_SHARED_H - // We also try to prevent mixing versions of shared uniffi header structs. - // If you add anything to the #else block, you must increment the version suffix in UNIFFI_SHARED_HEADER_V4 - #ifndef UNIFFI_SHARED_HEADER_V4 - #error Combining helper code from multiple versions of uniffi is not supported - #endif // ndef UNIFFI_SHARED_HEADER_V4 -#else -#define UNIFFI_SHARED_H -#define UNIFFI_SHARED_HEADER_V4 -// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️ -// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️ - -typedef struct RustBuffer -{ - uint64_t capacity; - uint64_t len; - uint8_t *_Nullable data; -} RustBuffer; - -typedef struct ForeignBytes -{ - int32_t len; - const uint8_t *_Nullable data; -} ForeignBytes; - -// Error definitions -typedef struct RustCallStatus { - int8_t code; - RustBuffer errorBuf; -} RustCallStatus; - -// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️ -// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️ -#endif // def UNIFFI_SHARED_H -#ifndef UNIFFI_FFIDEF_RUST_FUTURE_CONTINUATION_CALLBACK -#define UNIFFI_FFIDEF_RUST_FUTURE_CONTINUATION_CALLBACK -typedef void (*UniffiRustFutureContinuationCallback)(uint64_t, int8_t - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_FREE -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_FREE -typedef void (*UniffiForeignFutureFree)(uint64_t - ); - -#endif -#ifndef UNIFFI_FFIDEF_CALLBACK_INTERFACE_FREE -#define UNIFFI_FFIDEF_CALLBACK_INTERFACE_FREE -typedef void (*UniffiCallbackInterfaceFree)(uint64_t - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE -#define UNIFFI_FFIDEF_FOREIGN_FUTURE -typedef struct UniffiForeignFuture { - uint64_t handle; - UniffiForeignFutureFree _Nonnull free; -} UniffiForeignFuture; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U8 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U8 -typedef struct UniffiForeignFutureStructU8 { - uint8_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructU8; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U8 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U8 -typedef void (*UniffiForeignFutureCompleteU8)(uint64_t, UniffiForeignFutureStructU8 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I8 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I8 -typedef struct UniffiForeignFutureStructI8 { - int8_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructI8; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I8 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I8 -typedef void (*UniffiForeignFutureCompleteI8)(uint64_t, UniffiForeignFutureStructI8 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U16 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U16 -typedef struct UniffiForeignFutureStructU16 { - uint16_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructU16; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U16 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U16 -typedef void (*UniffiForeignFutureCompleteU16)(uint64_t, UniffiForeignFutureStructU16 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I16 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I16 -typedef struct UniffiForeignFutureStructI16 { - int16_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructI16; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I16 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I16 -typedef void (*UniffiForeignFutureCompleteI16)(uint64_t, UniffiForeignFutureStructI16 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U32 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U32 -typedef struct UniffiForeignFutureStructU32 { - uint32_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructU32; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U32 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U32 -typedef void (*UniffiForeignFutureCompleteU32)(uint64_t, UniffiForeignFutureStructU32 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I32 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I32 -typedef struct UniffiForeignFutureStructI32 { - int32_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructI32; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I32 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I32 -typedef void (*UniffiForeignFutureCompleteI32)(uint64_t, UniffiForeignFutureStructI32 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U64 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_U64 -typedef struct UniffiForeignFutureStructU64 { - uint64_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructU64; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U64 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_U64 -typedef void (*UniffiForeignFutureCompleteU64)(uint64_t, UniffiForeignFutureStructU64 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I64 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_I64 -typedef struct UniffiForeignFutureStructI64 { - int64_t returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructI64; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I64 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_I64 -typedef void (*UniffiForeignFutureCompleteI64)(uint64_t, UniffiForeignFutureStructI64 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F32 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F32 -typedef struct UniffiForeignFutureStructF32 { - float returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructF32; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F32 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F32 -typedef void (*UniffiForeignFutureCompleteF32)(uint64_t, UniffiForeignFutureStructF32 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F64 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_F64 -typedef struct UniffiForeignFutureStructF64 { - double returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructF64; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F64 -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_F64 -typedef void (*UniffiForeignFutureCompleteF64)(uint64_t, UniffiForeignFutureStructF64 - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_POINTER -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_POINTER -typedef struct UniffiForeignFutureStructPointer { - void*_Nonnull returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructPointer; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_POINTER -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_POINTER -typedef void (*UniffiForeignFutureCompletePointer)(uint64_t, UniffiForeignFutureStructPointer - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_RUST_BUFFER -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_RUST_BUFFER -typedef struct UniffiForeignFutureStructRustBuffer { - RustBuffer returnValue; - RustCallStatus callStatus; -} UniffiForeignFutureStructRustBuffer; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_RUST_BUFFER -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_RUST_BUFFER -typedef void (*UniffiForeignFutureCompleteRustBuffer)(uint64_t, UniffiForeignFutureStructRustBuffer - ); - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_VOID -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_STRUCT_VOID -typedef struct UniffiForeignFutureStructVoid { - RustCallStatus callStatus; -} UniffiForeignFutureStructVoid; - -#endif -#ifndef UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_VOID -#define UNIFFI_FFIDEF_FOREIGN_FUTURE_COMPLETE_VOID -typedef void (*UniffiForeignFutureCompleteVoid)(uint64_t, UniffiForeignFutureStructVoid - ); - -#endif -#ifndef UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_FN_FUNC_HELLO -#define UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_FN_FUNC_HELLO -RustBuffer uniffi_uniffi_lib_fn_func_hello(RustCallStatus *_Nonnull out_status - -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_ALLOC -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_ALLOC -RustBuffer ffi_uniffi_lib_rustbuffer_alloc(uint64_t size, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FROM_BYTES -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FROM_BYTES -RustBuffer ffi_uniffi_lib_rustbuffer_from_bytes(ForeignBytes bytes, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FREE -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_FREE -void ffi_uniffi_lib_rustbuffer_free(RustBuffer buf, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_RESERVE -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUSTBUFFER_RESERVE -RustBuffer ffi_uniffi_lib_rustbuffer_reserve(RustBuffer buf, uint64_t additional, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U8 -void ffi_uniffi_lib_rust_future_poll_u8(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U8 -void ffi_uniffi_lib_rust_future_cancel_u8(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U8 -void ffi_uniffi_lib_rust_future_free_u8(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U8 -uint8_t ffi_uniffi_lib_rust_future_complete_u8(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I8 -void ffi_uniffi_lib_rust_future_poll_i8(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I8 -void ffi_uniffi_lib_rust_future_cancel_i8(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I8 -void ffi_uniffi_lib_rust_future_free_i8(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I8 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I8 -int8_t ffi_uniffi_lib_rust_future_complete_i8(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U16 -void ffi_uniffi_lib_rust_future_poll_u16(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U16 -void ffi_uniffi_lib_rust_future_cancel_u16(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U16 -void ffi_uniffi_lib_rust_future_free_u16(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U16 -uint16_t ffi_uniffi_lib_rust_future_complete_u16(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I16 -void ffi_uniffi_lib_rust_future_poll_i16(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I16 -void ffi_uniffi_lib_rust_future_cancel_i16(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I16 -void ffi_uniffi_lib_rust_future_free_i16(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I16 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I16 -int16_t ffi_uniffi_lib_rust_future_complete_i16(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U32 -void ffi_uniffi_lib_rust_future_poll_u32(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U32 -void ffi_uniffi_lib_rust_future_cancel_u32(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U32 -void ffi_uniffi_lib_rust_future_free_u32(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U32 -uint32_t ffi_uniffi_lib_rust_future_complete_u32(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I32 -void ffi_uniffi_lib_rust_future_poll_i32(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I32 -void ffi_uniffi_lib_rust_future_cancel_i32(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I32 -void ffi_uniffi_lib_rust_future_free_i32(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I32 -int32_t ffi_uniffi_lib_rust_future_complete_i32(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_U64 -void ffi_uniffi_lib_rust_future_poll_u64(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_U64 -void ffi_uniffi_lib_rust_future_cancel_u64(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_U64 -void ffi_uniffi_lib_rust_future_free_u64(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_U64 -uint64_t ffi_uniffi_lib_rust_future_complete_u64(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_I64 -void ffi_uniffi_lib_rust_future_poll_i64(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_I64 -void ffi_uniffi_lib_rust_future_cancel_i64(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_I64 -void ffi_uniffi_lib_rust_future_free_i64(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_I64 -int64_t ffi_uniffi_lib_rust_future_complete_i64(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F32 -void ffi_uniffi_lib_rust_future_poll_f32(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F32 -void ffi_uniffi_lib_rust_future_cancel_f32(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F32 -void ffi_uniffi_lib_rust_future_free_f32(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F32 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F32 -float ffi_uniffi_lib_rust_future_complete_f32(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_F64 -void ffi_uniffi_lib_rust_future_poll_f64(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_F64 -void ffi_uniffi_lib_rust_future_cancel_f64(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_F64 -void ffi_uniffi_lib_rust_future_free_f64(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F64 -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_F64 -double ffi_uniffi_lib_rust_future_complete_f64(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_POINTER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_POINTER -void ffi_uniffi_lib_rust_future_poll_pointer(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_POINTER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_POINTER -void ffi_uniffi_lib_rust_future_cancel_pointer(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_POINTER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_POINTER -void ffi_uniffi_lib_rust_future_free_pointer(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_POINTER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_POINTER -void*_Nonnull ffi_uniffi_lib_rust_future_complete_pointer(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_RUST_BUFFER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_RUST_BUFFER -void ffi_uniffi_lib_rust_future_poll_rust_buffer(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_RUST_BUFFER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_RUST_BUFFER -void ffi_uniffi_lib_rust_future_cancel_rust_buffer(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_RUST_BUFFER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_RUST_BUFFER -void ffi_uniffi_lib_rust_future_free_rust_buffer(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_RUST_BUFFER -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_RUST_BUFFER -RustBuffer ffi_uniffi_lib_rust_future_complete_rust_buffer(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_VOID -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_POLL_VOID -void ffi_uniffi_lib_rust_future_poll_void(uint64_t handle, UniffiRustFutureContinuationCallback _Nonnull callback, uint64_t callback_data -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_VOID -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_CANCEL_VOID -void ffi_uniffi_lib_rust_future_cancel_void(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_VOID -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_FREE_VOID -void ffi_uniffi_lib_rust_future_free_void(uint64_t handle -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_VOID -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_RUST_FUTURE_COMPLETE_VOID -void ffi_uniffi_lib_rust_future_complete_void(uint64_t handle, RustCallStatus *_Nonnull out_status -); -#endif -#ifndef UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_CHECKSUM_FUNC_HELLO -#define UNIFFI_FFIDEF_UNIFFI_UNIFFI_LIB_CHECKSUM_FUNC_HELLO -uint16_t uniffi_uniffi_lib_checksum_func_hello(void - -); -#endif -#ifndef UNIFFI_FFIDEF_FFI_UNIFFI_LIB_UNIFFI_CONTRACT_VERSION -#define UNIFFI_FFIDEF_FFI_UNIFFI_LIB_UNIFFI_CONTRACT_VERSION -uint32_t ffi_uniffi_lib_uniffi_contract_version(void - -); -#endif - diff --git a/wrappers/swift/output/uniffi_libFFI.modulemap b/wrappers/swift/output/uniffi_libFFI.modulemap deleted file mode 100644 index fd67834bd..000000000 --- a/wrappers/swift/output/uniffi_libFFI.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! -module uniffi_libFFI { - header "uniffi_libFFI.h" - export * -} \ No newline at end of file diff --git a/wrappers/swift/package/.gitignore b/wrappers/swift/package/.gitignore deleted file mode 100644 index 0023a5340..000000000 --- a/wrappers/swift/package/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -/.build -/Packages -xcuserdata/ -DerivedData/ -.swiftpm/configuration/registries.json -.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata -.netrc diff --git a/wrappers/swift/package/Modules/uniffi_lib.swiftdoc b/wrappers/swift/package/Modules/uniffi_lib.swiftdoc deleted file mode 100644 index a271417925866e738617b0d7b601fad78a294c8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 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 diff --git a/wrappers/swift/package/Modules/uniffi_lib.swiftsourceinfo b/wrappers/swift/package/Modules/uniffi_lib.swiftsourceinfo deleted file mode 100644 index 28df5914622abf98a56a52bb77a631a41ac35e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1856 zcmbVMPiWg#7=MU|*@~0-5X-U0Xc%6ch8@gYTe503u4F7Z zj(1v(4?ARQ#xhtT&}C$&bxS(B9Y)5AMxloc66k4%vCE*PmvoGsGT8T&e@;l8un#1C zf8P83-uu2!-{zfLA3M$>6h#QR9K}H9n@#sp%5yj6{+aVEr##tWwNYgI=+iS*tJF8)N1vwn_P$@V1s!f59jrb;#Aj*&WB%gyY4$7urDiTKu_0H#q60b zR18(udcysf>&HE`LA>m?#f~S&60vl`k0xM!RZ|s3&6dGGl?oXhtzy+O`NL>USX4)S3+9~6X0UXcZy6AE0OmlZ{p!Qur) z5)>J8SjtO-A$}+v5r(iN1^IkX&SPQr%KFXUYENIOjo5I=cc!>_ep|KQ-vi${&|YZq z5j6o%yVwsM2=&4m*nU9BzFm0;YhDNADC~AItrMX>*w+qw84AK5gWWFnkqe=r6Rq+UJDTW5t4mW zzJqRW*L9gHK}l?((8eF}#VOE@;li*noYrwLsaFc>HBGFW1!EF(`)!}Ve7>qEg-S|S zHM3BOiRtmW5x(-4W=1C8%$gF6={d;{=s?{+IqzKE zV};9d1ZW%hAZ0jDt`9fN{hu2G1+e{Xj=WFXY^_-g7Yn5lFdx2gJxPk Date: Thu, 8 Aug 2024 08:23:29 -0400 Subject: [PATCH 05/43] improvements swift --- wrappers/swift/generate.sh | 45 ++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh index 80b16356f..4f2438b90 100644 --- a/wrappers/swift/generate.sh +++ b/wrappers/swift/generate.sh @@ -1,7 +1,15 @@ +#!/bin/sh +# based on https://rhonabwy.com/2023/02/10/creating-an-xcframework + + +XCFRAMEWORK_FOLDER="./output/devolutions-crypto.xcframework" +LIBNAME="uniffi_lib" +LIBNAMEBUILD="uniffi-lib" + rm -rf bindings rm -rf output -cargo run -p uniffi-bindgen generate --library "../../target/debug/libuniffi_lib.dylib" --language swift -o bindings --no-format +cargo run -p uniffi-bindgen generate --library "../../target/debug/lib$LIBNAME.dylib" --language swift -o bindings --no-format mkdir ./bindings/mac mkdir ./bindings/ios-simulator @@ -13,37 +21,42 @@ rustup target add aarch64-apple-darwin # Arm based mac rustup target add x86_64-apple-darwin # Intel based mac -cargo build --release --target=x86_64-apple-ios -p uniffi-lib -cargo build --release --target=aarch64-apple-ios-sim -p uniffi-lib -cargo build --release --target=aarch64-apple-ios -p uniffi-lib -cargo build --release --target=aarch64-apple-darwin -p uniffi-lib -cargo build --release --target=x86_64-apple-darwin -p uniffi-lib +cargo build --release --target=x86_64-apple-ios -p "$LIBNAMEBUILD" +cargo build --release --target=aarch64-apple-ios-sim -p "$LIBNAMEBUILD" +cargo build --release --target=aarch64-apple-ios -p "$LIBNAMEBUILD" +cargo build --release --target=aarch64-apple-darwin -p "$LIBNAMEBUILD" +cargo build --release --target=x86_64-apple-darwin -p "$LIBNAMEBUILD" -mv ./bindings/uniffi_libFFI.modulemap ./bindings/module.modulemap +mv "./bindings/${LIBNAME}FFI.modulemap" ./bindings/module.modulemap # combine the platforms # ios simulator -lipo ../../target/x86_64-apple-ios/release/libuniffi_lib.a \ - ../../target/aarch64-apple-ios-sim/release/libuniffi_lib.a \ - -create -output ./bindings/ios-simulator/libuniffi_lib.a +lipo "../../target/x86_64-apple-ios/release/lib$LIBNAME.a" \ + "../../target/aarch64-apple-ios-sim/release/lib$LIBNAME.a" \ + -create -output "./bindings/ios-simulator/lib$LIBNAME.a" # mac -lipo ../../target/x86_64-apple-darwin/release/libuniffi_lib.a \ - ../../target/aarch64-apple-darwin/release/libuniffi_lib.a \ - -create -output ./bindings/mac/libuniffi_lib.a +lipo ../../target/x86_64-apple-darwin/release/lib$LIBNAME.a \ + ../../target/aarch64-apple-darwin/release/lib$LIBNAME.a \ + -create -output ./bindings/mac/lib$LIBNAME.a # no need to combine ios # create the XCFramework xcodebuild -create-xcframework \ - -library ./bindings/ios-simulator/libuniffi_lib.a -headers ./bindings \ - -library ./bindings/mac/libuniffi_lib.a -headers ./bindings \ - -library ../../target/aarch64-apple-ios/release/libuniffi_lib.a -headers ./bindings \ + -library "./bindings/ios-simulator/lib$LIBNAME.a" -headers ./bindings \ + -library "./bindings/mac/lib$LIBNAME.a" -headers ./bindings \ + -library "../../target/aarch64-apple-ios/release/lib$LIBNAME.a" -headers ./bindings \ -output "./output/devolutions-crypto.xcframework" +# Compress XCFramework +ditto -c -k --sequesterRsrc --keepParent "$XCFRAMEWORK_FOLDER" "$XCFRAMEWORK_FOLDER.zip" + +# Compute checksum +swift package compute-checksum "$XCFRAMEWORK_FOLDER.zip" From 2adf43a2fd9d001df47d82481924c07c8283a5c4 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 09:20:32 -0400 Subject: [PATCH 06/43] complete test --- uniffi/uniffi-lib/src/lib.rs | 8 +- .../swift/DevolutionsCryptoSwift/.gitignore | 8 + .../DevolutionsCryptoSwift/Package.swift | 28 + .../DevolutionsCryptoSwift.swift | 477 ++++++++++++++++++ .../DevolutionsCryptoSwiftTests.swift | 15 + wrappers/swift/generate.sh | 10 +- 6 files changed, 542 insertions(+), 4 deletions(-) create mode 100644 wrappers/swift/DevolutionsCryptoSwift/.gitignore create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Package.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift diff --git a/uniffi/uniffi-lib/src/lib.rs b/uniffi/uniffi-lib/src/lib.rs index 4ca4c289a..e9f82540a 100644 --- a/uniffi/uniffi-lib/src/lib.rs +++ b/uniffi/uniffi-lib/src/lib.rs @@ -1,8 +1,12 @@ +use devolutions_crypto::utils::generate_key; + #[uniffi::export] fn hello() -> Vec{ -println!("baba"); -Vec::new() +println!("Generating Key in Rust!"); +generate_key(32) } + + uniffi::setup_scaffolding!(); diff --git a/wrappers/swift/DevolutionsCryptoSwift/.gitignore b/wrappers/swift/DevolutionsCryptoSwift/.gitignore new file mode 100644 index 000000000..0023a5340 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/wrappers/swift/DevolutionsCryptoSwift/Package.swift b/wrappers/swift/DevolutionsCryptoSwift/Package.swift new file mode 100644 index 000000000..391875a35 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Package.swift @@ -0,0 +1,28 @@ +// swift-tools-version: 5.10 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "DevolutionsCryptoSwift", + products: [ + // Products define the executables and libraries a package produces, making them visible to other packages. + .library( + name: "DevolutionsCryptoSwift", + targets: ["DevolutionsCryptoSwift"]), + ], + targets: [ + // Targets are the basic building blocks of a package, defining a module or a test suite. + // Targets can depend on other targets in this package and products from dependencies. + .target( + name: "DevolutionsCryptoSwift", + dependencies: ["DevolutionsCryptoFramework"]), + .testTarget( + name: "DevolutionsCryptoSwiftTests", + dependencies: ["DevolutionsCryptoSwift"]), + .binaryTarget( + name: "DevolutionsCryptoFramework", + path: "../output/DevolutionsCrypto.xcframework" + ) + ] +) diff --git a/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift b/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift new file mode 100644 index 000000000..095ade639 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift @@ -0,0 +1,477 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +// swiftlint:disable all +import Foundation + +// Depending on the consumer's build setup, the low-level FFI code +// might be in a separate module, or it might be compiled inline into +// this module. This is a bit of light hackery to work with both. +#if canImport(uniffi_libFFI) +import uniffi_libFFI +#endif + +fileprivate extension RustBuffer { + // Allocate a new buffer, copying the contents of a `UInt8` array. + init(bytes: [UInt8]) { + let rbuf = bytes.withUnsafeBufferPointer { ptr in + RustBuffer.from(ptr) + } + self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data) + } + + static func empty() -> RustBuffer { + RustBuffer(capacity: 0, len:0, data: nil) + } + + static func from(_ ptr: UnsafeBufferPointer) -> RustBuffer { + try! rustCall { ffi_uniffi_lib_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } + } + + // Frees the buffer in place. + // The buffer must not be used after this is called. + func deallocate() { + try! rustCall { ffi_uniffi_lib_rustbuffer_free(self, $0) } + } +} + +fileprivate extension ForeignBytes { + init(bufferPointer: UnsafeBufferPointer) { + self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress) + } +} + +// For every type used in the interface, we provide helper methods for conveniently +// lifting and lowering that type from C-compatible data, and for reading and writing +// values of that type in a buffer. + +// Helper classes/extensions that don't change. +// Someday, this will be in a library of its own. + +fileprivate extension Data { + init(rustBuffer: RustBuffer) { + // TODO: This copies the buffer. Can we read directly from a + // Rust buffer? + self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len)) + } +} + +// Define reader functionality. Normally this would be defined in a class or +// struct, but we use standalone functions instead in order to make external +// types work. +// +// With external types, one swift source file needs to be able to call the read +// method on another source file's FfiConverter, but then what visibility +// should Reader have? +// - If Reader is fileprivate, then this means the read() must also +// be fileprivate, which doesn't work with external types. +// - If Reader is internal/public, we'll get compile errors since both source +// files will try define the same type. +// +// Instead, the read() method and these helper functions input a tuple of data + +fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) { + (data: data, offset: 0) +} + +// Reads an integer at the current offset, in big-endian order, and advances +// the offset on success. Throws if reading the integer would move the +// offset past the end of the buffer. +fileprivate func readInt(_ reader: inout (data: Data, offset: Data.Index)) throws -> T { + let range = reader.offset...size + guard reader.data.count >= range.upperBound else { + throw UniffiInternalError.bufferOverflow + } + if T.self == UInt8.self { + let value = reader.data[reader.offset] + reader.offset += 1 + return value as! T + } + var value: T = 0 + let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)}) + reader.offset = range.upperBound + return value.bigEndian +} + +// Reads an arbitrary number of bytes, to be used to read +// raw bytes, this is useful when lifting strings +fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array { + let range = reader.offset..<(reader.offset+count) + guard reader.data.count >= range.upperBound else { + throw UniffiInternalError.bufferOverflow + } + var value = [UInt8](repeating: 0, count: count) + value.withUnsafeMutableBufferPointer({ buffer in + reader.data.copyBytes(to: buffer, from: range) + }) + reader.offset = range.upperBound + return value +} + +// Reads a float at the current offset. +fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float { + return Float(bitPattern: try readInt(&reader)) +} + +// Reads a float at the current offset. +fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double { + return Double(bitPattern: try readInt(&reader)) +} + +// Indicates if the offset has reached the end of the buffer. +fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool { + return reader.offset < reader.data.count +} + +// Define writer functionality. Normally this would be defined in a class or +// struct, but we use standalone functions instead in order to make external +// types work. See the above discussion on Readers for details. + +fileprivate func createWriter() -> [UInt8] { + return [] +} + +fileprivate func writeBytes(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 { + writer.append(contentsOf: byteArr) +} + +// Writes an integer in big-endian order. +// +// Warning: make sure what you are trying to write +// is in the correct type! +fileprivate func writeInt(_ writer: inout [UInt8], _ value: T) { + var value = value.bigEndian + withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) } +} + +fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) { + writeInt(&writer, value.bitPattern) +} + +fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) { + writeInt(&writer, value.bitPattern) +} + +// Protocol for types that transfer other types across the FFI. This is +// analogous to the Rust trait of the same name. +fileprivate protocol FfiConverter { + associatedtype FfiType + associatedtype SwiftType + + static func lift(_ value: FfiType) throws -> SwiftType + static func lower(_ value: SwiftType) -> FfiType + static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType + static func write(_ value: SwiftType, into buf: inout [UInt8]) +} + +// Types conforming to `Primitive` pass themselves directly over the FFI. +fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { } + +extension FfiConverterPrimitive { + public static func lift(_ value: FfiType) throws -> SwiftType { + return value + } + + public static func lower(_ value: SwiftType) -> FfiType { + return value + } +} + +// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`. +// Used for complex types where it's hard to write a custom lift/lower. +fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {} + +extension FfiConverterRustBuffer { + public static func lift(_ buf: RustBuffer) throws -> SwiftType { + var reader = createReader(data: Data(rustBuffer: buf)) + let value = try read(from: &reader) + if hasRemaining(reader) { + throw UniffiInternalError.incompleteData + } + buf.deallocate() + return value + } + + public static func lower(_ value: SwiftType) -> RustBuffer { + var writer = createWriter() + write(value, into: &writer) + return RustBuffer(bytes: writer) + } +} +// An error type for FFI errors. These errors occur at the UniFFI level, not +// the library level. +fileprivate enum UniffiInternalError: LocalizedError { + case bufferOverflow + case incompleteData + case unexpectedOptionalTag + case unexpectedEnumCase + case unexpectedNullPointer + case unexpectedRustCallStatusCode + case unexpectedRustCallError + case unexpectedStaleHandle + case rustPanic(_ message: String) + + public var errorDescription: String? { + switch self { + case .bufferOverflow: return "Reading the requested value would read past the end of the buffer" + case .incompleteData: return "The buffer still has data after lifting its containing value" + case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1" + case .unexpectedEnumCase: return "Raw enum value doesn't match any cases" + case .unexpectedNullPointer: return "Raw pointer value was null" + case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code" + case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified" + case .unexpectedStaleHandle: return "The object in the handle map has been dropped already" + case let .rustPanic(message): return message + } + } +} + +fileprivate extension NSLock { + func withLock(f: () throws -> T) rethrows -> T { + self.lock() + defer { self.unlock() } + return try f() + } +} + +fileprivate let CALL_SUCCESS: Int8 = 0 +fileprivate let CALL_ERROR: Int8 = 1 +fileprivate let CALL_UNEXPECTED_ERROR: Int8 = 2 +fileprivate let CALL_CANCELLED: Int8 = 3 + +fileprivate extension RustCallStatus { + init() { + self.init( + code: CALL_SUCCESS, + errorBuf: RustBuffer.init( + capacity: 0, + len: 0, + data: nil + ) + ) + } +} + +private func rustCall(_ callback: (UnsafeMutablePointer) -> T) throws -> T { + let neverThrow: ((RustBuffer) throws -> Never)? = nil + return try makeRustCall(callback, errorHandler: neverThrow) +} + +private func rustCallWithError( + _ errorHandler: @escaping (RustBuffer) throws -> E, + _ callback: (UnsafeMutablePointer) -> T) throws -> T { + try makeRustCall(callback, errorHandler: errorHandler) +} + +private func makeRustCall( + _ callback: (UnsafeMutablePointer) -> T, + errorHandler: ((RustBuffer) throws -> E)? +) throws -> T { + uniffiEnsureInitialized() + var callStatus = RustCallStatus.init() + let returnedVal = callback(&callStatus) + try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler) + return returnedVal +} + +private func uniffiCheckCallStatus( + callStatus: RustCallStatus, + errorHandler: ((RustBuffer) throws -> E)? +) throws { + switch callStatus.code { + case CALL_SUCCESS: + return + + case CALL_ERROR: + if let errorHandler = errorHandler { + throw try errorHandler(callStatus.errorBuf) + } else { + callStatus.errorBuf.deallocate() + throw UniffiInternalError.unexpectedRustCallError + } + + case CALL_UNEXPECTED_ERROR: + // When the rust code sees a panic, it tries to construct a RustBuffer + // with the message. But if that code panics, then it just sends back + // an empty buffer. + if callStatus.errorBuf.len > 0 { + throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf)) + } else { + callStatus.errorBuf.deallocate() + throw UniffiInternalError.rustPanic("Rust panic") + } + + case CALL_CANCELLED: + fatalError("Cancellation not supported yet") + + default: + throw UniffiInternalError.unexpectedRustCallStatusCode + } +} + +private func uniffiTraitInterfaceCall( + callStatus: UnsafeMutablePointer, + makeCall: () throws -> T, + writeReturn: (T) -> () +) { + do { + try writeReturn(makeCall()) + } catch let error { + callStatus.pointee.code = CALL_UNEXPECTED_ERROR + callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) + } +} + +private func uniffiTraitInterfaceCallWithError( + callStatus: UnsafeMutablePointer, + makeCall: () throws -> T, + writeReturn: (T) -> (), + lowerError: (E) -> RustBuffer +) { + do { + try writeReturn(makeCall()) + } catch let error as E { + callStatus.pointee.code = CALL_ERROR + callStatus.pointee.errorBuf = lowerError(error) + } catch { + callStatus.pointee.code = CALL_UNEXPECTED_ERROR + callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) + } +} +fileprivate class UniffiHandleMap { + private var map: [UInt64: T] = [:] + private let lock = NSLock() + private var currentHandle: UInt64 = 1 + + func insert(obj: T) -> UInt64 { + lock.withLock { + let handle = currentHandle + currentHandle += 1 + map[handle] = obj + return handle + } + } + + func get(handle: UInt64) throws -> T { + try lock.withLock { + guard let obj = map[handle] else { + throw UniffiInternalError.unexpectedStaleHandle + } + return obj + } + } + + @discardableResult + func remove(handle: UInt64) throws -> T { + try lock.withLock { + guard let obj = map.removeValue(forKey: handle) else { + throw UniffiInternalError.unexpectedStaleHandle + } + return obj + } + } + + var count: Int { + get { + map.count + } + } +} + + +// Public interface members begin here. + + +fileprivate struct FfiConverterString: FfiConverter { + typealias SwiftType = String + typealias FfiType = RustBuffer + + public static func lift(_ value: RustBuffer) throws -> String { + defer { + value.deallocate() + } + if value.data == nil { + return String() + } + let bytes = UnsafeBufferPointer(start: value.data!, count: Int(value.len)) + return String(bytes: bytes, encoding: String.Encoding.utf8)! + } + + public static func lower(_ value: String) -> RustBuffer { + return value.utf8CString.withUnsafeBufferPointer { ptr in + // The swift string gives us int8_t, we want uint8_t. + ptr.withMemoryRebound(to: UInt8.self) { ptr in + // The swift string gives us a trailing null byte, we don't want it. + let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1)) + return RustBuffer.from(buf) + } + } + } + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String { + let len: Int32 = try readInt(&buf) + return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)! + } + + public static func write(_ value: String, into buf: inout [UInt8]) { + let len = Int32(value.utf8.count) + writeInt(&buf, len) + writeBytes(&buf, value.utf8) + } +} + +fileprivate struct FfiConverterData: FfiConverterRustBuffer { + typealias SwiftType = Data + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data { + let len: Int32 = try readInt(&buf) + return Data(try readBytes(&buf, count: Int(len))) + } + + public static func write(_ value: Data, into buf: inout [UInt8]) { + let len = Int32(value.count) + writeInt(&buf, len) + writeBytes(&buf, value) + } +} +public func hello() -> Data { + return try! FfiConverterData.lift(try! rustCall() { + uniffi_uniffi_lib_fn_func_hello($0 + ) +}) +} + +private enum InitializationResult { + case ok + case contractVersionMismatch + case apiChecksumMismatch +} +// Use a global variable to perform the versioning checks. Swift ensures that +// the code inside is only computed once. +private var initializationResult: InitializationResult = { + // Get the bindings contract version from our ComponentInterface + let bindings_contract_version = 26 + // Get the scaffolding contract version by calling the into the dylib + let scaffolding_contract_version = ffi_uniffi_lib_uniffi_contract_version() + if bindings_contract_version != scaffolding_contract_version { + return InitializationResult.contractVersionMismatch + } + if (uniffi_uniffi_lib_checksum_func_hello() != 40685) { + return InitializationResult.apiChecksumMismatch + } + + return InitializationResult.ok +}() + +private func uniffiEnsureInitialized() { + switch initializationResult { + case .ok: + break + case .contractVersionMismatch: + fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project") + case .apiChecksumMismatch: + fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } +} + +// swiftlint:enable all \ No newline at end of file diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift new file mode 100644 index 000000000..a183899eb --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift @@ -0,0 +1,15 @@ +import XCTest +@testable import DevolutionsCryptoSwift + +final class DevolutionsCryptoSwiftTests: XCTestCase { + func testExample() throws { + // XCTest Documentation + // https://developer.apple.com/documentation/xctest + + // Defining Test Cases and Test Methods + // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods + let key = hello() + + assert(key.count == 32) + } +} diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh index 4f2438b90..f3e88ddb5 100644 --- a/wrappers/swift/generate.sh +++ b/wrappers/swift/generate.sh @@ -2,7 +2,7 @@ # based on https://rhonabwy.com/2023/02/10/creating-an-xcframework -XCFRAMEWORK_FOLDER="./output/devolutions-crypto.xcframework" +XCFRAMEWORK_FOLDER="./output/DevolutionsCrypto.xcframework" LIBNAME="uniffi_lib" LIBNAMEBUILD="uniffi-lib" @@ -50,7 +50,7 @@ xcodebuild -create-xcframework \ -library "./bindings/ios-simulator/lib$LIBNAME.a" -headers ./bindings \ -library "./bindings/mac/lib$LIBNAME.a" -headers ./bindings \ -library "../../target/aarch64-apple-ios/release/lib$LIBNAME.a" -headers ./bindings \ - -output "./output/devolutions-crypto.xcframework" + -output "$XCFRAMEWORK_FOLDER" # Compress XCFramework ditto -c -k --sequesterRsrc --keepParent "$XCFRAMEWORK_FOLDER" "$XCFRAMEWORK_FOLDER.zip" @@ -58,6 +58,12 @@ ditto -c -k --sequesterRsrc --keepParent "$XCFRAMEWORK_FOLDER" "$XCFRAMEWORK_FOL # Compute checksum swift package compute-checksum "$XCFRAMEWORK_FOLDER.zip" +# Move swift file to package +cp "./bindings/$LIBNAME.swift" ./DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift +# Tests +cd ./DevolutionsCryptoSwift + +swift test From 04f6a02c64143d45828194050135bf289cf68505 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 09:41:19 -0400 Subject: [PATCH 07/43] fmt clippy --- uniffi/uniffi-bindgen/src/uniffi-bindgen.rs | 2 +- uniffi/uniffi-lib/src/lib.rs | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs b/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs index d96eac70f..f6cff6cf1 100644 --- a/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs +++ b/uniffi/uniffi-bindgen/src/uniffi-bindgen.rs @@ -1,3 +1,3 @@ fn main() { uniffi::uniffi_bindgen_main() -} \ No newline at end of file +} diff --git a/uniffi/uniffi-lib/src/lib.rs b/uniffi/uniffi-lib/src/lib.rs index e9f82540a..cae5848f3 100644 --- a/uniffi/uniffi-lib/src/lib.rs +++ b/uniffi/uniffi-lib/src/lib.rs @@ -1,12 +1,9 @@ use devolutions_crypto::utils::generate_key; #[uniffi::export] -fn hello() -> Vec{ -println!("Generating Key in Rust!"); -generate_key(32) +fn hello() -> Vec { + println!("Generating Key in Rust!"); + generate_key(32) } - - - uniffi::setup_scaffolding!(); From 82a525fd26dcdc6748028b61cbf62406947ce153 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 10:05:18 -0400 Subject: [PATCH 08/43] fix csharp build --- wrappers/csharp/GeneratePackage.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/wrappers/csharp/GeneratePackage.py b/wrappers/csharp/GeneratePackage.py index 84fa5481f..faefb942c 100644 --- a/wrappers/csharp/GeneratePackage.py +++ b/wrappers/csharp/GeneratePackage.py @@ -220,7 +220,7 @@ def build_windows(assembly_manifest, version, args): dllpath = "./" + folder + "/bin/DevolutionsCrypto-" + arch["name"] + ".dll" - shutil.copy("../../target/" + arch["value"] + "/release/devolutions_crypto.dll", dllpath) + shutil.copy("../../target/" + arch["value"] + "/release/devolutions_crypto_ffi.dll", dllpath) output = exec_command("./tools/rcedit-x64.exe " + dllpath + " --set-file-version " + version) print(output) @@ -294,18 +294,18 @@ def build_linux(assembly_manifest, version, args): if not args.no_32: architectures.append({"name" : "i686", "value" : "i686-unknown-linux-gnu", - "cargo_output": "../../target/i686-unknown-linux-gnu/release/libdevolutions_crypto.so", + "cargo_output": "../../target/i686-unknown-linux-gnu/release/libdevolutions_crypto_ffi.so", "filename" : "libDevolutionsCrypto-x86.so"}) if not args.no_64: architectures.append({"name" : "x86_64", "value" : "x86_64-unknown-linux-gnu", - "cargo_output": "../../target/x86_64-unknown-linux-gnu/release/libdevolutions_crypto.so", + "cargo_output": "../../target/x86_64-unknown-linux-gnu/release/libdevolutions_crypto_ffi.so", "filename" : "libDevolutionsCrypto-x64.so"}) architectures.append({"name" : "aarch64", "value" : "aarch64-unknown-linux-gnu", - "cargo_output": "../../target/aarch64-unknown-linux-gnu/release/libdevolutions_crypto.so", + "cargo_output": "../../target/aarch64-unknown-linux-gnu/release/libdevolutions_crypto_ffi.so", "filename" : "libDevolutionsCrypto-arm64.so"}) target_folder = "./linux" @@ -330,13 +330,13 @@ def build_mac_full(assembly_manifest, version, args): { "name" : "x86_64", "value" : "x86_64-apple-darwin", - "cargo_output": "../../target/x86_64-apple-darwin/release/libdevolutions_crypto.dylib", + "cargo_output": "../../target/x86_64-apple-darwin/release/libdevolutions_crypto_ffi.dylib", "filename" : "x86_64/libDevolutionsCrypto.dylib" }, { "name" : "aarch64", "value" : "aarch64-apple-darwin", - "cargo_output": "../../target/aarch64-apple-darwin/release/libdevolutions_crypto.dylib", + "cargo_output": "../../target/aarch64-apple-darwin/release/libdevolutions_crypto_ffi.dylib", "filename" : "aarch64/libDevolutionsCrypto.dylib" } ] @@ -381,13 +381,13 @@ def build_mac_modern(assembly_manifest, version, args): { "name" : "x86_64", "value" : "x86_64-apple-darwin", - "cargo_output": "../../target/x86_64-apple-darwin/release/libdevolutions_crypto.dylib", + "cargo_output": "../../target/x86_64-apple-darwin/release/libdevolutions_crypto_ffi.dylib", "filename" : "x86_64/libDevolutionsCrypto.dylib" }, { "name" : "aarch64", "value" : "aarch64-apple-darwin", - "cargo_output": "../../target/aarch64-apple-darwin/release/libdevolutions_crypto.dylib", + "cargo_output": "../../target/aarch64-apple-darwin/release/libdevolutions_crypto_ffi.dylib", "filename" : "aarch64/libDevolutionsCrypto.dylib" } ] @@ -425,12 +425,12 @@ def build_ios(assembly_manifest, version, args): {"name" : "x86_64", "value" : "x86_64-apple-ios", "manifest_path" : "./Cargo.toml", - "cargo_output": "../../target/x86_64-apple-ios/release/libdevolutions_crypto.dylib", + "cargo_output": "../../target/x86_64-apple-ios/release/libdevolutions_crypto_ffi.dylib", "filename" : "x86_64/libDevolutionsCrypto.dylib"}, {"name" : "aarch64", "value" : "aarch64-apple-ios", "manifest_path" : "./Cargo.toml", - "cargo_output": "../../target/aarch64-apple-ios/release/libdevolutions_crypto.dylib", + "cargo_output": "../../target/aarch64-apple-ios/release/libdevolutions_crypto_ffi.dylib", "filename" : "aarch64/libDevolutionsCrypto.dylib"}, ] @@ -506,19 +506,19 @@ def build_android(assembly_manifest, version, args): architectures = [ {"name" : "aarch64", "value" : "aarch64-linux-android", - "cargo_output": "../../target/aarch64-linux-android/release/libdevolutions_crypto.so", + "cargo_output": "../../target/aarch64-linux-android/release/libdevolutions_crypto_ffi.so", "filename" : "aarch64/libDevolutionsCrypto.so"}, {"name" : "armv7", "value" : "armv7-linux-androideabi", - "cargo_output": "../../target/armv7-linux-androideabi/release/libdevolutions_crypto.so", + "cargo_output": "../../target/armv7-linux-androideabi/release/libdevolutions_crypto_ffi.so", "filename" : "armv7/libDevolutionsCrypto.so"}, {"name" : "i686", "value" : "i686-linux-android", - "cargo_output": "../../target/i686-linux-android/release/libdevolutions_crypto.so", + "cargo_output": "../../target/i686-linux-android/release/libdevolutions_crypto_ffi.so", "filename" : "i686/libDevolutionsCrypto.so"}, {"name" : "x86_64", "value" : "x86_64-linux-android", - "cargo_output": "../../target/x86_64-linux-android/release/libdevolutions_crypto.so", + "cargo_output": "../../target/x86_64-linux-android/release/libdevolutions_crypto_ffi.so", "filename" : "x86_64/libDevolutionsCrypto.so"} ] From 653a8f77efbd2919916ad6917cc48abac65c2bdf Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 10:27:45 -0400 Subject: [PATCH 09/43] override module name maturin --- python/pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/pyproject.toml b/python/pyproject.toml index 2b120cc3e..812c6af10 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -6,4 +6,5 @@ requires = ["maturin>=0.13"] build-backend = "maturin" [tool.maturin] -bindings = "pyo3" \ No newline at end of file +bindings = "pyo3" +module-name = "devolutions_crypto" \ No newline at end of file From 6fee039a99657e2ff82bfea3e07483ca698af0a0 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 10:34:58 -0400 Subject: [PATCH 10/43] swift test ci --- .github/workflows/ci.yml | 10 ++++++++++ .github/workflows/tests/swift/action.yml | 8 ++++++++ 2 files changed, 18 insertions(+) create mode 100644 .github/workflows/tests/swift/action.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed6bb0a63..099b6ab6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -172,6 +172,16 @@ jobs: lfs: true - run: git lfs pull - uses: ./.github/workflows/tests/csharp/linux + +##### SWIFT TESTS ##### + tests_swift: + runs-on: "macos-12" + steps: + - uses: actions/checkout@v4 + with: + lfs: true + - run: git lfs pull + - uses: ./.github/workflows/tests/swift #================================================= # Disabled for now, Android Emulator doesn't boot. - mmorrissette 2024-02-21 diff --git a/.github/workflows/tests/swift/action.yml b/.github/workflows/tests/swift/action.yml new file mode 100644 index 000000000..19b0925bc --- /dev/null +++ b/.github/workflows/tests/swift/action.yml @@ -0,0 +1,8 @@ +name: Test Swift Package +runs: + using: composite + steps: + - name: Run tests + working-directory: ./wrappers/swift + shell: bash + run: sh generate.sh From 3dddbff78dec601766bbbfeed52d62e04106cc6f Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 10:38:45 -0400 Subject: [PATCH 11/43] fix swift test --- .github/workflows/ci.yml | 2 +- wrappers/swift/generate.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 099b6ab6f..e07733923 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -175,7 +175,7 @@ jobs: ##### SWIFT TESTS ##### tests_swift: - runs-on: "macos-12" + runs-on: "macos-14" steps: - uses: actions/checkout@v4 with: diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh index f3e88ddb5..3ccd8d800 100644 --- a/wrappers/swift/generate.sh +++ b/wrappers/swift/generate.sh @@ -9,6 +9,8 @@ LIBNAMEBUILD="uniffi-lib" rm -rf bindings rm -rf output +cargo build -p "$LIBNAMEBUILD" + cargo run -p uniffi-bindgen generate --library "../../target/debug/lib$LIBNAME.dylib" --language swift -o bindings --no-format mkdir ./bindings/mac From b24992adb234e9b936a697660fda9389f073cd86 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Thu, 8 Aug 2024 11:01:37 -0400 Subject: [PATCH 12/43] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 5bbfe7b8b..cf5623ab0 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ bin obj .angular node_modules +__pycache__ +config.txt \ No newline at end of file From 286264a7f7e857c7e5e2c5a1a37a5590db35b40a Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Thu, 8 Aug 2024 12:21:11 -0400 Subject: [PATCH 13/43] kotlin progress --- .../uniffi/uniffi_lib/uniffi_lib.kt | 0 wrappers/kotlin/generate.sh | 36 + .../kotlin/jniLibs/arm64-v8a/libuniffi_lib.so | Bin 0 -> 353168 bytes .../jniLibs/armeabi-v7a/libuniffi_lib.so | Bin 0 -> 223664 bytes wrappers/kotlin/jniLibs/x86/libuniffi_lib.so | Bin 0 -> 290612 bytes .../kotlin/jniLibs/x86_64/libuniffi_lib.so | Bin 0 -> 305520 bytes wrappers/kotlin/lib/.gitattributes | 12 - wrappers/kotlin/lib/.gitignore | 5 - wrappers/kotlin/lib/gradle/libs.versions.toml | 15 - .../lib/gradle/wrapper/gradle-wrapper.jar | Bin 43504 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 - wrappers/kotlin/lib/gradlew | 252 ----- wrappers/kotlin/lib/gradlew.bat | 94 -- wrappers/kotlin/lib/lib/build.gradle.kts | 73 -- .../src/main/kotlin/org/example/Library.kt | 14 - .../lib/lib/src/main/resources/uniffi_lib.dll | Bin 1248431 -> 0 bytes .../test/kotlin/org/example/LibraryTest.kt | 15 - wrappers/kotlin/lib/settings.gradle.kts | 15 - .../output/uniffi/uniffi_lib/uniffi_lib.kt | 964 ------------------ wrappers/kotlin/setup.sh | 41 + 20 files changed, 77 insertions(+), 1466 deletions(-) rename wrappers/kotlin/{lib/lib/src/main/kotlin => bindings}/uniffi/uniffi_lib/uniffi_lib.kt (100%) create mode 100644 wrappers/kotlin/generate.sh create mode 100755 wrappers/kotlin/jniLibs/arm64-v8a/libuniffi_lib.so create mode 100755 wrappers/kotlin/jniLibs/armeabi-v7a/libuniffi_lib.so create mode 100755 wrappers/kotlin/jniLibs/x86/libuniffi_lib.so create mode 100755 wrappers/kotlin/jniLibs/x86_64/libuniffi_lib.so delete mode 100644 wrappers/kotlin/lib/.gitattributes delete mode 100644 wrappers/kotlin/lib/.gitignore delete mode 100644 wrappers/kotlin/lib/gradle/libs.versions.toml delete mode 100644 wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.jar delete mode 100644 wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties delete mode 100644 wrappers/kotlin/lib/gradlew delete mode 100644 wrappers/kotlin/lib/gradlew.bat delete mode 100644 wrappers/kotlin/lib/lib/build.gradle.kts delete mode 100644 wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt delete mode 100644 wrappers/kotlin/lib/lib/src/main/resources/uniffi_lib.dll delete mode 100644 wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt delete mode 100644 wrappers/kotlin/lib/settings.gradle.kts delete mode 100644 wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt create mode 100644 wrappers/kotlin/setup.sh diff --git a/wrappers/kotlin/lib/lib/src/main/kotlin/uniffi/uniffi_lib/uniffi_lib.kt b/wrappers/kotlin/bindings/uniffi/uniffi_lib/uniffi_lib.kt similarity index 100% rename from wrappers/kotlin/lib/lib/src/main/kotlin/uniffi/uniffi_lib/uniffi_lib.kt rename to wrappers/kotlin/bindings/uniffi/uniffi_lib/uniffi_lib.kt diff --git a/wrappers/kotlin/generate.sh b/wrappers/kotlin/generate.sh new file mode 100644 index 000000000..15f744a78 --- /dev/null +++ b/wrappers/kotlin/generate.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# please run setup.sh to setup all required tools + +rm -rf bindings +rm -rf output +rm -rf jniLibs + +LIBNAME="uniffi_lib" +LIBNAMEBUILD="uniffi-lib" + +rustup target add aarch64-linux-android +rustup target add armv7-linux-androideabi +rustup target add i686-linux-android +rustup target add x86_64-linux-android + +cargo build -p "$LIBNAMEBUILD" + +cargo run -p uniffi-bindgen generate --library "../../target/debug/lib$LIBNAME.so" --language kotlin -o bindings --no-format + +cargo build --release --target=aarch64-linux-android -p "$LIBNAMEBUILD" +cargo build --release --target=armv7-linux-androideabi -p "$LIBNAMEBUILD" +cargo build --release --target=i686-linux-android -p "$LIBNAMEBUILD" +cargo build --release --target=x86_64-linux-android -p "$LIBNAMEBUILD" + + +mkdir jniLibs + +mkdir -p jniLibs/arm64-v8a/ +cp "../../target/aarch64-linux-android/release/lib$LIBNAME.so" "jniLibs/arm64-v8a/lib$LIBNAME.so" +mkdir -p jniLibs/armeabi-v7a/ +cp "../../target/armv7-linux-androideabi/release/lib$LIBNAME.so" "jniLibs/armeabi-v7a/lib$LIBNAME.so" +mkdir -p jniLibs/x86/ +cp "../../target/i686-linux-android/release/lib$LIBNAME.so" "jniLibs/x86/lib$LIBNAME.so" +mkdir -p jniLibs/x86_64/ +cp "../../target/x86_64-linux-android/release/lib$LIBNAME.so" "jniLibs/x86_64/lib$LIBNAME.so" + diff --git a/wrappers/kotlin/jniLibs/arm64-v8a/libuniffi_lib.so b/wrappers/kotlin/jniLibs/arm64-v8a/libuniffi_lib.so new file mode 100755 index 0000000000000000000000000000000000000000..1533d40070afbdd1e502706acd93b1e286bfe1c1 GIT binary patch literal 353168 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
eH9L+w0kK^Y%OLz3&&Zzgqg{OPYE69XoRN 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%0A$a}+nFqEY`Mhjai%%IOmd8Tfx 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 literal 0 HcmV?d00001 diff --git a/wrappers/kotlin/jniLibs/x86/libuniffi_lib.so b/wrappers/kotlin/jniLibs/x86/libuniffi_lib.so new file mode 100755 index 0000000000000000000000000000000000000000..d9789af216a6938bd6a17017baf2ccceb90328b7 GIT binary patch literal 290612 zcmeFa34Bw<`ae8#mYj2vH0hEq&=wAR!P1RVN^t?92#SaxE?2Y-O-dteQj?ZNuJ@Kj zL^e@Tk-C5)pdgDPZXl@0q9~}Kctt@)#l2V2i;Cp^&N-7NR8)TV-rxWKzVD~e;XC{C z%*->-JTqtd_tIg5DWxRx6NyM7u0nX8xK1*H3W-jvB#WezHpBuS78Wu6k$@Q%lbJ|* zSdHKAag;D)

iM|I?*3-Rgh1q5p}6-RWQXeqgIAndn{@=_0=W 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%0DMMW749Q^up>T$FD#&KXlL=pu@w~?{$A_3L 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¥fb~ziyGrRZh>*ceSPs*S;4}&oJ@kya&C_nF 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 A=l}o! literal 0 HcmV?d00001 diff --git a/wrappers/kotlin/lib/.gitattributes b/wrappers/kotlin/lib/.gitattributes deleted file mode 100644 index f91f64602..000000000 --- a/wrappers/kotlin/lib/.gitattributes +++ /dev/null @@ -1,12 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# Linux start script should use lf -/gradlew text eol=lf - -# These are Windows script files and should use crlf -*.bat text eol=crlf - -# Binary files should be left untouched -*.jar binary - diff --git a/wrappers/kotlin/lib/.gitignore b/wrappers/kotlin/lib/.gitignore deleted file mode 100644 index 1b6985c00..000000000 --- a/wrappers/kotlin/lib/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/wrappers/kotlin/lib/gradle/libs.versions.toml b/wrappers/kotlin/lib/gradle/libs.versions.toml deleted file mode 100644 index 1471de60f..000000000 --- a/wrappers/kotlin/lib/gradle/libs.versions.toml +++ /dev/null @@ -1,15 +0,0 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format - -[versions] -commons-math3 = "3.6.1" -guava = "33.1.0-jre" -junit-jupiter-engine = "5.10.2" - -[libraries] -commons-math3 = { module = "org.apache.commons:commons-math3", version.ref = "commons-math3" } -guava = { module = "com.google.guava:guava", version.ref = "guava" } -junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter-engine" } - -[plugins] -jvm = { id = "org.jetbrains.kotlin.jvm", version = "1.9.23" } diff --git a/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.jar b/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 2c3521197d7c4586c843d1d3e9090525f1898cde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43504 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 TZiJi*F`$tkWLn) diff --git a/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties b/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 09523c0e5..000000000 --- a/wrappers/kotlin/lib/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/wrappers/kotlin/lib/gradlew b/wrappers/kotlin/lib/gradlew deleted file mode 100644 index f5feea6d6..000000000 --- a/wrappers/kotlin/lib/gradlew +++ /dev/null @@ -1,252 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/wrappers/kotlin/lib/gradlew.bat b/wrappers/kotlin/lib/gradlew.bat deleted file mode 100644 index 9d21a2183..000000000 --- a/wrappers/kotlin/lib/gradlew.bat +++ /dev/null @@ -1,94 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/wrappers/kotlin/lib/lib/build.gradle.kts b/wrappers/kotlin/lib/lib/build.gradle.kts deleted file mode 100644 index b9b378724..000000000 --- a/wrappers/kotlin/lib/lib/build.gradle.kts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * This generated file contains a sample Kotlin library project to get you started. - * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.9/userguide/building_java_projects.html in the Gradle documentation. - */ - -plugins { - // Apply the org.jetbrains.kotlin.jvm Plugin to add support for Kotlin. - alias(libs.plugins.jvm) - - // Apply the java-library plugin for API and implementation separation. - `java-library` -} - - -repositories { - // Use Maven Central for resolving dependencies. - mavenCentral() -} - -dependencies { - // Use the Kotlin JUnit 5 integration. - testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") - - // Use the JUnit 5 integration. - testImplementation(libs.junit.jupiter.engine) - - testRuntimeOnly("org.junit.platform:junit-platform-launcher") - - // This dependency is exported to consumers, that is to say found on their compile classpath. - api(libs.commons.math3) - - // This dependency is used internally, and not exposed to consumers on their own compile classpath. - implementation(libs.guava) - - implementation("net.java.dev.jna:jna:5.10.0") -} - -// Apply a specific Java toolchain to ease working on different environments. -java { - toolchain { - languageVersion = JavaLanguageVersion.of(21) - } -} - -tasks.named("test") { - - doFirst { - // systemProperty("java.library.path", file("native-libs").absolutePath) - // systemProperty("PATH", file("native-libs").absolutePath) - //systemProperty("jna.library.path", file("native-libs").absolutePath) - // systemProperty("java.class.path", file("native-libs").absolutePath) - - - - //systemProperty("jna.library.path", file("$projectDir/lib/native-libs").absolutePath) - //systemProperty("jna.library.path", file("native-libs").absolutePath) - - /* - val nativeLibPath = file("native-libs").absolutePath - systemProperty("java.library.path", nativeLibPath) - - println("Library path: $nativeLibPath") - } -*/ - } - // Use JUnit Platform for unit tests. - useJUnitPlatform() - -} - - diff --git a/wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt b/wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt deleted file mode 100644 index 5feaf0822..000000000 --- a/wrappers/kotlin/lib/lib/src/main/kotlin/org/example/Library.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example - -import uniffi.uniffi_lib.hello - -class Library { - fun someLibraryMethod(): Boolean { - hello(); - - return true - } -} diff --git a/wrappers/kotlin/lib/lib/src/main/resources/uniffi_lib.dll b/wrappers/kotlin/lib/lib/src/main/resources/uniffi_lib.dll deleted file mode 100644 index b26e63020b1c0cfab7fdb0d7f56b4af8cf60b51a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248431 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 z 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�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�TK%zYu@C2VR2u<9%=p8i)_UM}8;H_#k`+ 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 z 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 diff --git a/wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt b/wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt deleted file mode 100644 index 831f3f7d4..000000000 --- a/wrappers/kotlin/lib/lib/src/test/kotlin/org/example/LibraryTest.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example - -import kotlin.test.Test -import kotlin.test.assertTrue - -class LibraryTest { - @Test fun someLibraryMethodReturnsTrue() { - - val classUnderTest = Library() - assertTrue(classUnderTest.someLibraryMethod(), "someLibraryMethod should return 'true'") - } -} diff --git a/wrappers/kotlin/lib/settings.gradle.kts b/wrappers/kotlin/lib/settings.gradle.kts deleted file mode 100644 index 6810a0132..000000000 --- a/wrappers/kotlin/lib/settings.gradle.kts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.9/userguide/multi_project_builds.html in the Gradle documentation. - */ - -plugins { - // Apply the foojay-resolver plugin to allow automatic download of JDKs - id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" -} - - -rootProject.name = "lib" -include("lib") diff --git a/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt b/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt deleted file mode 100644 index c5dbddff2..000000000 --- a/wrappers/kotlin/output/uniffi/uniffi_lib/uniffi_lib.kt +++ /dev/null @@ -1,964 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! - -@file:Suppress("NAME_SHADOWING") - -package uniffi.uniffi_lib - -// Common helper code. -// -// Ideally this would live in a separate .kt file where it can be unittested etc -// in isolation, and perhaps even published as a re-useable package. -// -// However, it's important that the details of how this helper code works (e.g. the -// way that different builtin types are passed across the FFI) exactly match what's -// expected by the Rust code on the other side of the interface. In practice right -// now that means coming from the exact some version of `uniffi` that was used to -// compile the Rust component. The easiest way to ensure this is to bundle the Kotlin -// helpers directly inline like we're doing here. - -import com.sun.jna.Library -import com.sun.jna.IntegerType -import com.sun.jna.Native -import com.sun.jna.Pointer -import com.sun.jna.Structure -import com.sun.jna.Callback -import com.sun.jna.ptr.* -import java.nio.ByteBuffer -import java.nio.ByteOrder -import java.nio.CharBuffer -import java.nio.charset.CodingErrorAction -import java.util.concurrent.atomic.AtomicLong -import java.util.concurrent.ConcurrentHashMap - -// This is a helper for safely working with byte buffers returned from the Rust code. -// A rust-owned buffer is represented by its capacity, its current length, and a -// pointer to the underlying data. - -@Structure.FieldOrder("capacity", "len", "data") -open class RustBuffer : Structure() { - // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values. - // When dealing with these fields, make sure to call `toULong()`. - @JvmField var capacity: Long = 0 - @JvmField var len: Long = 0 - @JvmField var data: Pointer? = null - - class ByValue: RustBuffer(), Structure.ByValue - class ByReference: RustBuffer(), Structure.ByReference - - internal fun setValue(other: RustBuffer) { - capacity = other.capacity - len = other.len - data = other.data - } - - companion object { - internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status -> - // Note: need to convert the size to a `Long` value to make this work with JVM. - UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_alloc(size.toLong(), status) - }.also { - if(it.data == null) { - throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})") - } - } - - internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue { - var buf = RustBuffer.ByValue() - buf.capacity = capacity.toLong() - buf.len = len.toLong() - buf.data = data - return buf - } - - internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status -> - UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_free(buf, status) - } - } - - @Suppress("TooGenericExceptionThrown") - fun asByteBuffer() = - this.data?.getByteBuffer(0, this.len.toLong())?.also { - it.order(ByteOrder.BIG_ENDIAN) - } -} - -/** - * The equivalent of the `*mut RustBuffer` type. - * Required for callbacks taking in an out pointer. - * - * Size is the sum of all values in the struct. - */ -class RustBufferByReference : ByReference(16) { - /** - * Set the pointed-to `RustBuffer` to the given value. - */ - fun setValue(value: RustBuffer.ByValue) { - // NOTE: The offsets are as they are in the C-like struct. - val pointer = getPointer() - pointer.setLong(0, value.capacity) - pointer.setLong(8, value.len) - pointer.setPointer(16, value.data) - } - - /** - * Get a `RustBuffer.ByValue` from this reference. - */ - fun getValue(): RustBuffer.ByValue { - val pointer = getPointer() - val value = RustBuffer.ByValue() - value.writeField("capacity", pointer.getLong(0)) - value.writeField("len", pointer.getLong(8)) - value.writeField("data", pointer.getLong(16)) - - return value - } -} - -// This is a helper for safely passing byte references into the rust code. -// It's not actually used at the moment, because there aren't many things that you -// can take a direct pointer to in the JVM, and if we're going to copy something -// then we might as well copy it into a `RustBuffer`. But it's here for API -// completeness. - -@Structure.FieldOrder("len", "data") -open class ForeignBytes : Structure() { - @JvmField var len: Int = 0 - @JvmField var data: Pointer? = null - - class ByValue : ForeignBytes(), Structure.ByValue -} -// The FfiConverter interface handles converter types to and from the FFI -// -// All implementing objects should be public to support external types. When a -// type is external we need to import it's FfiConverter. -public interface FfiConverter { - // Convert an FFI type to a Kotlin type - fun lift(value: FfiType): KotlinType - - // Convert an Kotlin type to an FFI type - fun lower(value: KotlinType): FfiType - - // Read a Kotlin type from a `ByteBuffer` - fun read(buf: ByteBuffer): KotlinType - - // Calculate bytes to allocate when creating a `RustBuffer` - // - // This must return at least as many bytes as the write() function will - // write. It can return more bytes than needed, for example when writing - // Strings we can't know the exact bytes needed until we the UTF-8 - // encoding, so we pessimistically allocate the largest size possible (3 - // bytes per codepoint). Allocating extra bytes is not really a big deal - // because the `RustBuffer` is short-lived. - fun allocationSize(value: KotlinType): ULong - - // Write a Kotlin type to a `ByteBuffer` - fun write(value: KotlinType, buf: ByteBuffer) - - // Lower a value into a `RustBuffer` - // - // This method lowers a value into a `RustBuffer` rather than the normal - // FfiType. It's used by the callback interface code. Callback interface - // returns are always serialized into a `RustBuffer` regardless of their - // normal FFI type. - fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue { - val rbuf = RustBuffer.alloc(allocationSize(value)) - try { - val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also { - it.order(ByteOrder.BIG_ENDIAN) - } - write(value, bbuf) - rbuf.writeField("len", bbuf.position().toLong()) - return rbuf - } catch (e: Throwable) { - RustBuffer.free(rbuf) - throw e - } - } - - // Lift a value from a `RustBuffer`. - // - // This here mostly because of the symmetry with `lowerIntoRustBuffer()`. - // It's currently only used by the `FfiConverterRustBuffer` class below. - fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType { - val byteBuf = rbuf.asByteBuffer()!! - try { - val item = read(byteBuf) - if (byteBuf.hasRemaining()) { - throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!") - } - return item - } finally { - RustBuffer.free(rbuf) - } - } -} - -// FfiConverter that uses `RustBuffer` as the FfiType -public interface FfiConverterRustBuffer: FfiConverter { - override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value) - override fun lower(value: KotlinType) = lowerIntoRustBuffer(value) -} -// A handful of classes and functions to support the generated data structures. -// This would be a good candidate for isolating in its own ffi-support lib. - -internal const val UNIFFI_CALL_SUCCESS = 0.toByte() -internal const val UNIFFI_CALL_ERROR = 1.toByte() -internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte() - -@Structure.FieldOrder("code", "error_buf") -internal open class UniffiRustCallStatus : Structure() { - @JvmField var code: Byte = 0 - @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue() - - class ByValue: UniffiRustCallStatus(), Structure.ByValue - - fun isSuccess(): Boolean { - return code == UNIFFI_CALL_SUCCESS - } - - fun isError(): Boolean { - return code == UNIFFI_CALL_ERROR - } - - fun isPanic(): Boolean { - return code == UNIFFI_CALL_UNEXPECTED_ERROR - } - - companion object { - fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue { - val callStatus = UniffiRustCallStatus.ByValue() - callStatus.code = code - callStatus.error_buf = errorBuf - return callStatus - } - } -} - -class InternalException(message: String) : kotlin.Exception(message) - -// Each top-level error class has a companion object that can lift the error from the call status's rust buffer -interface UniffiRustCallStatusErrorHandler { - fun lift(error_buf: RustBuffer.ByValue): E; -} - -// Helpers for calling Rust -// In practice we usually need to be synchronized to call this safely, so it doesn't -// synchronize itself - -// Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err -private inline fun uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler, callback: (UniffiRustCallStatus) -> U): U { - var status = UniffiRustCallStatus() - val return_value = callback(status) - uniffiCheckCallStatus(errorHandler, status) - return return_value -} - -// Check UniffiRustCallStatus and throw an error if the call wasn't successful -private fun uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler, status: UniffiRustCallStatus) { - if (status.isSuccess()) { - return - } else if (status.isError()) { - throw errorHandler.lift(status.error_buf) - } else if (status.isPanic()) { - // when the rust code sees a panic, it tries to construct a rustbuffer - // with the message. but if that code panics, then it just sends back - // an empty buffer. - if (status.error_buf.len > 0) { - throw InternalException(FfiConverterString.lift(status.error_buf)) - } else { - throw InternalException("Rust panic") - } - } else { - throw InternalException("Unknown rust call status: $status.code") - } -} - -// UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR -object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler { - override fun lift(error_buf: RustBuffer.ByValue): InternalException { - RustBuffer.free(error_buf) - return InternalException("Unexpected CALL_ERROR") - } -} - -// Call a rust function that returns a plain value -private inline fun uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U { - return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback) -} - -internal inline fun uniffiTraitInterfaceCall( - callStatus: UniffiRustCallStatus, - makeCall: () -> T, - writeReturn: (T) -> Unit, -) { - try { - writeReturn(makeCall()) - } catch(e: kotlin.Exception) { - callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR - callStatus.error_buf = FfiConverterString.lower(e.toString()) - } -} - -internal inline fun uniffiTraitInterfaceCallWithError( - callStatus: UniffiRustCallStatus, - makeCall: () -> T, - writeReturn: (T) -> Unit, - lowerError: (E) -> RustBuffer.ByValue -) { - try { - writeReturn(makeCall()) - } catch(e: kotlin.Exception) { - if (e is E) { - callStatus.code = UNIFFI_CALL_ERROR - callStatus.error_buf = lowerError(e) - } else { - callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR - callStatus.error_buf = FfiConverterString.lower(e.toString()) - } - } -} -// Map handles to objects -// -// This is used pass an opaque 64-bit handle representing a foreign object to the Rust code. -internal class UniffiHandleMap { - private val map = ConcurrentHashMap() - private val counter = java.util.concurrent.atomic.AtomicLong(0) - - val size: Int - get() = map.size - - // Insert a new object into the handle map and get a handle for it - fun insert(obj: T): Long { - val handle = counter.getAndAdd(1) - map.put(handle, obj) - return handle - } - - // Get an object from the handle map - fun get(handle: Long): T { - return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle") - } - - // Remove an entry from the handlemap and get the Kotlin object back - fun remove(handle: Long): T { - return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle") - } -} - -// Contains loading, initialization code, -// and the FFI Function declarations in a com.sun.jna.Library. -@Synchronized -private fun findLibraryName(componentName: String): String { - val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride") - if (libOverride != null) { - return libOverride - } - return "uniffi_lib" -} - -private inline fun loadIndirect( - componentName: String -): Lib { - return Native.load(findLibraryName(componentName), Lib::class.java) -} - -// Define FFI callback types -internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback { - fun callback(`data`: Long,`pollResult`: Byte,) -} -internal interface UniffiForeignFutureFree : com.sun.jna.Callback { - fun callback(`handle`: Long,) -} -internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback { - fun callback(`handle`: Long,) -} -@Structure.FieldOrder("handle", "free") -internal open class UniffiForeignFuture( - @JvmField internal var `handle`: Long = 0.toLong(), - @JvmField internal var `free`: UniffiForeignFutureFree? = null, -) : Structure() { - class UniffiByValue( - `handle`: Long = 0.toLong(), - `free`: UniffiForeignFutureFree? = null, - ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFuture) { - `handle` = other.`handle` - `free` = other.`free` - } - -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU8( - @JvmField internal var `returnValue`: Byte = 0.toByte(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Byte = 0.toByte(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI8( - @JvmField internal var `returnValue`: Byte = 0.toByte(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Byte = 0.toByte(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU16( - @JvmField internal var `returnValue`: Short = 0.toShort(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Short = 0.toShort(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI16( - @JvmField internal var `returnValue`: Short = 0.toShort(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Short = 0.toShort(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU32( - @JvmField internal var `returnValue`: Int = 0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Int = 0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI32( - @JvmField internal var `returnValue`: Int = 0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Int = 0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU64( - @JvmField internal var `returnValue`: Long = 0.toLong(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Long = 0.toLong(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI64( - @JvmField internal var `returnValue`: Long = 0.toLong(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Long = 0.toLong(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructF32( - @JvmField internal var `returnValue`: Float = 0.0f, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Float = 0.0f, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructF64( - @JvmField internal var `returnValue`: Double = 0.0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Double = 0.0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructPointer( - @JvmField internal var `returnValue`: Pointer = Pointer.NULL, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Pointer = Pointer.NULL, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructRustBuffer( - @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,) -} -@Structure.FieldOrder("callStatus") -internal open class UniffiForeignFutureStructVoid( - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) { - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,) -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// A JNA Library to expose the extern-C FFI definitions. -// This is an implementation detail which will be called internally by the public API. - -internal interface UniffiLib : Library { - companion object { - internal val INSTANCE: UniffiLib by lazy { - loadIndirect(componentName = "uniffi_lib") - .also { lib: UniffiLib -> - uniffiCheckContractApiVersion(lib) - uniffiCheckApiChecksums(lib) - } - } - - } - - fun uniffi_uniffi_lib_fn_func_hello(uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun ffi_uniffi_lib_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_uniffi_lib_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_uniffi_lib_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Short - fun ffi_uniffi_lib_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Short - fun ffi_uniffi_lib_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Int - fun ffi_uniffi_lib_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Int - fun ffi_uniffi_lib_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Long - fun ffi_uniffi_lib_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Long - fun ffi_uniffi_lib_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_f32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_f32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Float - fun ffi_uniffi_lib_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_f64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_f64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Double - fun ffi_uniffi_lib_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_pointer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_pointer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun ffi_uniffi_lib_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_rust_buffer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_rust_buffer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_void(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_void(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun uniffi_uniffi_lib_checksum_func_hello( - ): Short - fun ffi_uniffi_lib_uniffi_contract_version( - ): Int - -} - -private fun uniffiCheckContractApiVersion(lib: UniffiLib) { - // Get the bindings contract version from our ComponentInterface - val bindings_contract_version = 26 - // Get the scaffolding contract version by calling the into the dylib - val scaffolding_contract_version = lib.ffi_uniffi_lib_uniffi_contract_version() - if (bindings_contract_version != scaffolding_contract_version) { - throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project") - } -} - -@Suppress("UNUSED_PARAMETER") -private fun uniffiCheckApiChecksums(lib: UniffiLib) { - if (lib.uniffi_uniffi_lib_checksum_func_hello() != 40685.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } -} - -// Async support - -// Public interface members begin here. - - -// Interface implemented by anything that can contain an object reference. -// -// Such types expose a `destroy()` method that must be called to cleanly -// dispose of the contained objects. Failure to call this method may result -// in memory leaks. -// -// The easiest way to ensure this method is called is to use the `.use` -// helper method to execute a block and destroy the object at the end. -interface Disposable { - fun destroy() - companion object { - fun destroy(vararg args: Any?) { - args.filterIsInstance() - .forEach(Disposable::destroy) - } - } -} - -inline fun T.use(block: (T) -> R) = - try { - block(this) - } finally { - try { - // N.B. our implementation is on the nullable type `Disposable?`. - this?.destroy() - } catch (e: Throwable) { - // swallow - } - } - -/** Used to instantiate an interface without an actual pointer, for fakes in tests, mostly. */ -object NoPointer - -public object FfiConverterString: FfiConverter { - // Note: we don't inherit from FfiConverterRustBuffer, because we use a - // special encoding when lowering/lifting. We can use `RustBuffer.len` to - // store our length and avoid writing it out to the buffer. - override fun lift(value: RustBuffer.ByValue): String { - try { - val byteArr = ByteArray(value.len.toInt()) - value.asByteBuffer()!!.get(byteArr) - return byteArr.toString(Charsets.UTF_8) - } finally { - RustBuffer.free(value) - } - } - - override fun read(buf: ByteBuffer): String { - val len = buf.getInt() - val byteArr = ByteArray(len) - buf.get(byteArr) - return byteArr.toString(Charsets.UTF_8) - } - - fun toUtf8(value: String): ByteBuffer { - // Make sure we don't have invalid UTF-16, check for lone surrogates. - return Charsets.UTF_8.newEncoder().run { - onMalformedInput(CodingErrorAction.REPORT) - encode(CharBuffer.wrap(value)) - } - } - - override fun lower(value: String): RustBuffer.ByValue { - val byteBuf = toUtf8(value) - // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us - // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`. - val rbuf = RustBuffer.alloc(byteBuf.limit().toULong()) - rbuf.asByteBuffer()!!.put(byteBuf) - return rbuf - } - - // We aren't sure exactly how many bytes our string will be once it's UTF-8 - // encoded. Allocate 3 bytes per UTF-16 code unit which will always be - // enough. - override fun allocationSize(value: String): ULong { - val sizeForLength = 4UL - val sizeForString = value.length.toULong() * 3UL - return sizeForLength + sizeForString - } - - override fun write(value: String, buf: ByteBuffer) { - val byteBuf = toUtf8(value) - buf.putInt(byteBuf.limit()) - buf.put(byteBuf) - } -} - -public object FfiConverterByteArray: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): ByteArray { - val len = buf.getInt() - val byteArr = ByteArray(len) - buf.get(byteArr) - return byteArr - } - override fun allocationSize(value: ByteArray): ULong { - return 4UL + value.size.toULong() - } - override fun write(value: ByteArray, buf: ByteBuffer) { - buf.putInt(value.size) - buf.put(value) - } -} fun `hello`(): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_uniffi_lib_fn_func_hello( - _status) -} - ) - } - - - diff --git a/wrappers/kotlin/setup.sh b/wrappers/kotlin/setup.sh new file mode 100644 index 000000000..4a91d0b23 --- /dev/null +++ b/wrappers/kotlin/setup.sh @@ -0,0 +1,41 @@ +# run as root +apt install build-essential unzip openjdk-18-jre-headless + +rm -rf /usr/local/lib/android +mkdir /usr/local/lib/android +mkdir /usr/local/lib/android/sdk + +ANDROID_ROOT="/usr/local/lib/android" +ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk" + +cd /usr/local/lib/android/sdk +sudo wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip +sudo unzip commandlinetools-linux-11076708_latest.zip + +cp -r "${ANDROID_SDK_ROOT}/cmdline-tools/." "${ANDROID_SDK_ROOT}/cmdline-tools/latest/" + + +SDKMANAGER="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" +echo "y" | $SDKMANAGER "ndk;25.2.9519653" + + + +export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk-bundle + + +rm /home/$SUDO_USER/.cargo/config + +echo "[target.aarch64-linux-android] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang\" + [target.armv7-linux-androideabi] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi19-clang\" + [target.i686-linux-android] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android19-clang\" + [target.x86_64-linux-android] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang\"" >> "/home/$SUDO_USER/.cargo/config" + +ln -sfn $ANDROID_SDK_ROOT/ndk/25.2.9519653 $ANDROID_NDK \ No newline at end of file From 5bd8a196aee090f9d5ae3beeeef7b7601031d558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Mon, 23 Sep 2024 17:12:01 -0400 Subject: [PATCH 14/43] use thiserror --- Cargo.lock | 21 ++++-- Cargo.toml | 7 +- src/error.rs | 68 ++++++-------------- uniffi/uniffi-bindgen/Cargo.toml | 2 +- uniffi/uniffi-lib/Cargo.toml | 5 +- uniffi/uniffi-lib/build.rs | 3 + uniffi/uniffi-lib/src/devolutions_crypto.udl | 28 ++++++++ uniffi/uniffi-lib/src/lib.rs | 60 +++++++++++++++-- 8 files changed, 132 insertions(+), 62 deletions(-) create mode 100644 uniffi/uniffi-lib/build.rs create mode 100644 uniffi/uniffi-lib/src/devolutions_crypto.udl diff --git a/Cargo.lock b/Cargo.lock index e25fa94c1..3aa6a6c95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -515,6 +515,7 @@ dependencies = [ "sha2", "strum", "subtle", + "thiserror", "uniffi", "wasm-bindgen", "wasm-bindgen-test", @@ -1330,18 +1331,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -1405,6 +1406,7 @@ dependencies = [ "camino", "clap", "uniffi_bindgen", + "uniffi_build", "uniffi_core", "uniffi_macros", ] @@ -1448,6 +1450,17 @@ dependencies = [ "uniffi_udl", ] +[[package]] +name = "uniffi_build" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6b86f9b221046af0c533eafe09ece04e2f1ded04ccdc9bba0ec09aec1c52bd" +dependencies = [ + "anyhow", + "camino", + "uniffi_bindgen", +] + [[package]] name = "uniffi_checksum_derive" version = "0.28.0" diff --git a/Cargo.toml b/Cargo.toml index 5588db6a7..168752d0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,9 @@ members = [ "uniffi/uniffi-bindgen" , "uniffi/uniffi-lib"] +[workspace.dependencies] +uniffi = "0.28" + [package] name = "devolutions-crypto" version.workspace = true @@ -43,7 +46,6 @@ subtle = "2" zeroize = { version = "1.8" } rand = "0.8" rand_core = { version = "0.6" } -uniffi = { version = "0.28" } ed25519-dalek = { version = "2", features = [ "rand_core" ] } x25519-dalek = { version = "2", features = [ "static_secrets" ] } @@ -52,6 +54,8 @@ x25519-dalek = { version = "2", features = [ "static_secrets" ] } # Version is pinned because newer version requires lifetime annotations # that isn't compatible with the header trait arbitrary = { version = "0.4.7", features = ["derive"], optional = true } +uniffi = { workspace = true, optional = true } +thiserror = "1.0.64" [target.'cfg(target_arch="wasm32")'.dependencies] rust-argon2 = { version = "1.0", default-features = false } @@ -80,4 +84,5 @@ fuzz = ["arbitrary", "blahaj/fuzzing"] fuzz = ["arbitrary", "sharks/fuzzing"] >>>>>>> d4b0a2d (initial commit) wbindgen = ["wasm-bindgen", "serde-wasm-bindgen", "js-sys"] +uniffi = ["dep:uniffi"] diff --git a/src/error.rs b/src/error.rs index 7fecc7297..43f66c99d 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,7 +1,6 @@ //! Possible errors in the library. use cbc::cipher::block_padding::UnpadError; -use std::fmt; #[cfg(feature = "wbindgen")] use wasm_bindgen::JsValue; @@ -11,39 +10,55 @@ use strum::IntoStaticStr; use hmac::digest::MacError; /// This crate's error type. -#[derive(Debug, IntoStaticStr)] +#[derive(Debug, IntoStaticStr, thiserror::Error)] pub enum Error { /// The provided data has an invalid length. Error code: -1 + #[error("The provided data has an invalid length")] InvalidLength, /// The key length is invalid. Error code: -2 + #[error("The key length is invalid.")] InvalidKeyLength, /// The length of the FFI output buffer is invalid. Error code: -3 + #[error("The length of the FFI output buffer is invalid.")] InvalidOutputLength, /// The signature of the data blob does not match 0x0d0c. Error code: -11 + #[error("The signature of the data blob does not match 0x0d0c.")] InvalidSignature, /// The MAC is invalid. Error code: -12 + #[error("The MAC is invalid.")] InvalidMac, /// The operation cannot be done with this type. Error code: -13 + #[error("The operation cannot be done with this type.")] InvalidDataType, /// The data type is unknown. Error code: -21 + #[error("The data type is unknown.")] UnknownType, /// The data subtype is unknown. Error code: -22 + #[error("The data subtype is unknown.")] UnknownSubtype, /// The data type version is unknown. Error code: -23 + #[error("The data type version is unknown.")] UnknownVersion, /// The data is invalid. Error code: -24 + #[error("The data is invalid.")] InvalidData, /// A null pointer has been passed to the FFI interface. Error code: -31 + #[error("A null pointer has been passed to the FFI interface.")] NullPointer, /// A cryptographic error occurred. Error code: -32 + #[error("A cryptographic error occurred.")] CryptoError, /// An error with the Random Number Generator occurred. Error code: -33 + #[error("An error with the Random Number Generator occurred.")] RandomError, /// A generic IO error has occurred. Error code: -34 - IoError(std::io::Error), + #[error("Generic IO error: {0}")] + IoError(#[from] std::io::Error), /// There is not enough shares to regenerate a secret: -41 + #[error("There wasn't enough share to regenerate the secret.")] NotEnoughShares, /// The version of the multiple data is inconsistent: -42 + #[error("The version is not the same for all the data.")] InconsistentVersion, } @@ -70,47 +85,6 @@ impl Error { Error::InconsistentVersion => -42, } } - - /// Returns a description of the error - pub fn description(&self) -> String { - match *self { - Error::InvalidLength => "The provided data has an invalid length.".to_string(), - Error::InvalidKeyLength => "The key length is invalid.".to_string(), - Error::InvalidOutputLength => { - "The length of the FFI output buffer is invalid.".to_string() - } - Error::InvalidSignature => { - "The signature of the data blob does not match 0x0d0c.".to_string() - } - Error::InvalidMac => "The MAC is invalid.".to_string(), - Error::InvalidDataType => "The operation cannot be done with this type.".to_string(), - Error::UnknownType => "The data type is unknown.".to_string(), - Error::UnknownSubtype => "The data subtype is unknown.".to_string(), - Error::InvalidData => "The data is invalid.".to_string(), - Error::UnknownVersion => "The data type version is unknown.".to_string(), - Error::NullPointer => { - "A null pointer has been passed to the FFI interface.".to_string() - } - Error::CryptoError => "A cryptographic error occurred.".to_string(), - Error::RandomError => "An error with the Random Number Generator occurred.".to_string(), - Error::IoError(ref error) => error.to_string(), - Error::NotEnoughShares => { - "There wasn't enough share to regenerate the secret.".to_string() - } - Error::InconsistentVersion => { - "The version is not the same for all the data.".to_string() - } - } - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { - match *self { - Error::IoError(ref error) => error.fmt(f), - _ => write!(f, "Error {}: {}", self.error_code(), self.description()), - } - } } impl From for Error { @@ -143,12 +117,6 @@ impl From for Error { } } -impl From for Error { - fn from(_error: std::io::Error) -> Error { - Error::RandomError - } -} - impl From for Error { fn from(_error: argon2::Error) -> Self { Error::CryptoError diff --git a/uniffi/uniffi-bindgen/Cargo.toml b/uniffi/uniffi-bindgen/Cargo.toml index dc4c06048..173d744e9 100644 --- a/uniffi/uniffi-bindgen/Cargo.toml +++ b/uniffi/uniffi-bindgen/Cargo.toml @@ -9,4 +9,4 @@ name = "uniffi-bindgen" path = "src/uniffi-bindgen.rs" [dependencies] -uniffi = { version = "0.28", features = ["cli"] } +uniffi = { workspace = true, features = ["cli"] } diff --git a/uniffi/uniffi-lib/Cargo.toml b/uniffi/uniffi-lib/Cargo.toml index d9a72890f..a33db23a9 100644 --- a/uniffi/uniffi-lib/Cargo.toml +++ b/uniffi/uniffi-lib/Cargo.toml @@ -8,4 +8,7 @@ crate-type = ["cdylib", "staticlib"] [dependencies] devolutions-crypto = { path = "../../" } -uniffi = "0.28.0" +uniffi = { workspace = true } + +[build-dependencies] +uniffi = { workspace = true, features = ["build"] } diff --git a/uniffi/uniffi-lib/build.rs b/uniffi/uniffi-lib/build.rs new file mode 100644 index 000000000..3f64bede2 --- /dev/null +++ b/uniffi/uniffi-lib/build.rs @@ -0,0 +1,3 @@ +fn main() { + uniffi::generate_scaffolding("src/devolutions_crypto.udl").unwrap(); +} diff --git a/uniffi/uniffi-lib/src/devolutions_crypto.udl b/uniffi/uniffi-lib/src/devolutions_crypto.udl new file mode 100644 index 000000000..e6cc519b6 --- /dev/null +++ b/uniffi/uniffi-lib/src/devolutions_crypto.udl @@ -0,0 +1,28 @@ +enum CiphertextVersion { + "Latest", + "V1", + "V2", +}; + +[Error] +enum DevolutionsCryptoError { + "InvalidLength", + "InvalidKeyLength", + "InvalidOutputLength", + "InvalidSignature", + "InvalidMac", + "InvalidDataType", + "UnknownType", + "UnknownSubtype", + "UnknownVersion", + "InvalidData", + "NullPointer", + "CryptoError", + "RandomError", + "IoError", + "NotEnoughShares", + "InconsistentVersion", +}; + +namespace devolutions_crypto { +}; \ No newline at end of file diff --git a/uniffi/uniffi-lib/src/lib.rs b/uniffi/uniffi-lib/src/lib.rs index cae5848f3..bf5a071bf 100644 --- a/uniffi/uniffi-lib/src/lib.rs +++ b/uniffi/uniffi-lib/src/lib.rs @@ -1,9 +1,59 @@ -use devolutions_crypto::utils::generate_key; +use devolutions_crypto::CiphertextVersion; + +use devolutions_crypto::Error as DevolutionsCryptoError; + +#[uniffi::export] +pub fn generate_key(length: Option) -> Vec { + devolutions_crypto::utils::generate_key(length.unwrap_or(32) as usize) +} + +#[uniffi::export] +pub fn encrypt( + data: &[u8], + key: &[u8], + version: Option, +) -> Result, DevolutionsCryptoError> { + Ok(devolutions_crypto::ciphertext::encrypt( + data, + key, + version.unwrap_or(CiphertextVersion::Latest), + )? + .into()) +} + +#[uniffi::export] +pub fn encrypt_with_aad( + data: &[u8], + key: &[u8], + aad: &[u8], + version: Option, +) -> Result, DevolutionsCryptoError> { + Ok(devolutions_crypto::ciphertext::encrypt_with_aad( + data, + key, + aad, + version.unwrap_or(CiphertextVersion::Latest), + )? + .into()) +} + +#[uniffi::export] +pub fn decrypt( + data: &[u8], + key: &[u8], +) -> Result, DevolutionsCryptoError> { + let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; + data.decrypt(key) +} #[uniffi::export] -fn hello() -> Vec { - println!("Generating Key in Rust!"); - generate_key(32) +fn decrypt_with_aad( + data: &[u8], + key: &[u8], + aad: &[u8], +) -> Result, DevolutionsCryptoError> { + let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; + data.decrypt_with_aad(key, aad) } -uniffi::setup_scaffolding!(); +uniffi::include_scaffolding!("devolutions_crypto"); From 22952ca5000430a15223e691d87e4e2a99a16e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Thu, 26 Sep 2024 17:21:03 -0400 Subject: [PATCH 15/43] [Uniffi] bind most functions --- Cargo.lock | 101 +++++++++++++++--- Cargo.toml | 8 +- src/argon2parameters.rs | 26 ++++- src/lib.rs | 4 + .../Cargo.toml | 2 +- .../build.rs | 0 .../src/ciphertext.rs | 83 ++++++++++++++ .../src/devolutions_crypto.udl | 80 ++++++++++++++ uniffi/devolutions-crypto-uniffi/src/key.rs | 30 ++++++ uniffi/devolutions-crypto-uniffi/src/lib.rs | 31 ++++++ .../src/password_hash.rs | 22 ++++ .../src/secret_sharing.rs | 27 +++++ .../src/signature.rs | 17 +++ .../src/signing_key.rs | 22 ++++ uniffi/devolutions-crypto-uniffi/src/utils.rs | 28 +++++ uniffi/uniffi-lib/src/devolutions_crypto.udl | 28 ----- uniffi/uniffi-lib/src/lib.rs | 59 ---------- 17 files changed, 461 insertions(+), 107 deletions(-) rename uniffi/{uniffi-lib => devolutions-crypto-uniffi}/Cargo.toml (88%) rename uniffi/{uniffi-lib => devolutions-crypto-uniffi}/build.rs (100%) create mode 100644 uniffi/devolutions-crypto-uniffi/src/ciphertext.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl create mode 100644 uniffi/devolutions-crypto-uniffi/src/key.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/lib.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/password_hash.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/signature.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/signing_key.rs create mode 100644 uniffi/devolutions-crypto-uniffi/src/utils.rs delete mode 100644 uniffi/uniffi-lib/src/devolutions_crypto.udl delete mode 100644 uniffi/uniffi-lib/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 3aa6a6c95..ebfcc79c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,6 +467,41 @@ dependencies = [ "syn 2.0.72", ] +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.72", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.72", +] + [[package]] name = "der" version = "0.7.9" @@ -488,6 +523,37 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_builder" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +dependencies = [ + "derive_builder_core", + "syn 2.0.72", +] + [[package]] name = "devolutions-crypto" version = "0.9.1" @@ -501,6 +567,7 @@ dependencies = [ "cbc", "cfg-if", "chacha20poly1305", + "derive_builder", "ed25519-dalek", "getrandom", "hmac", @@ -516,7 +583,6 @@ dependencies = [ "strum", "subtle", "thiserror", - "uniffi", "wasm-bindgen", "wasm-bindgen-test", "x25519-dalek", @@ -560,6 +626,14 @@ dependencies = [ "zeroize", ] +[[package]] +name = "devolutions-crypto-uniffi" +version = "0.9.1" +dependencies = [ + "devolutions-crypto", + "uniffi", +] + [[package]] name = "digest" version = "0.10.7" @@ -609,12 +683,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] -<<<<<<< HEAD +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] name = "foldhash" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" -======= + +[[package]] name = "fs-err" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -622,7 +702,6 @@ checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ "autocfg", ] ->>>>>>> d4b0a2d (initial commit) [[package]] name = "generic-array" @@ -702,6 +781,12 @@ dependencies = [ "digest", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "indexmap" version = "2.2.6" @@ -1418,14 +1503,6 @@ dependencies = [ "uniffi", ] -[[package]] -name = "uniffi-lib" -version = "0.9.1" -dependencies = [ - "devolutions-crypto", - "uniffi", -] - [[package]] name = "uniffi_bindgen" version = "0.28.0" diff --git a/Cargo.toml b/Cargo.toml index 168752d0d..eb10f6d95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ members = [ "fuzz", "python", "uniffi/uniffi-bindgen" -, "uniffi/uniffi-lib"] +, "uniffi/devolutions-crypto-uniffi"] [workspace.dependencies] uniffi = "0.28" @@ -46,6 +46,8 @@ subtle = "2" zeroize = { version = "1.8" } rand = "0.8" rand_core = { version = "0.6" } +thiserror = "1.0.64" +derive_builder = "0.20.1" ed25519-dalek = { version = "2", features = [ "rand_core" ] } x25519-dalek = { version = "2", features = [ "static_secrets" ] } @@ -54,8 +56,6 @@ x25519-dalek = { version = "2", features = [ "static_secrets" ] } # Version is pinned because newer version requires lifetime annotations # that isn't compatible with the header trait arbitrary = { version = "0.4.7", features = ["derive"], optional = true } -uniffi = { workspace = true, optional = true } -thiserror = "1.0.64" [target.'cfg(target_arch="wasm32")'.dependencies] rust-argon2 = { version = "1.0", default-features = false } @@ -84,5 +84,3 @@ fuzz = ["arbitrary", "blahaj/fuzzing"] fuzz = ["arbitrary", "sharks/fuzzing"] >>>>>>> d4b0a2d (initial commit) wbindgen = ["wasm-bindgen", "serde-wasm-bindgen", "js-sys"] -uniffi = ["dep:uniffi"] - diff --git a/src/argon2parameters.rs b/src/argon2parameters.rs index 4e937c4ae..8f9eeca5b 100644 --- a/src/argon2parameters.rs +++ b/src/argon2parameters.rs @@ -1,11 +1,11 @@ use std::{ - convert::TryFrom, - io::{Cursor, Read}, + convert::TryFrom, io::{Cursor, Read} }; use argon2::{Config, ThreadMode, Variant, Version}; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use rand_core::{OsRng, RngCore}; +use derive_builder::Builder; #[cfg(feature = "wbindgen")] use wasm_bindgen::prelude::*; @@ -24,29 +24,51 @@ use super::Result; /// so two calls to `default()` will not generate the same structure. #[cfg_attr(feature = "wbindgen", wasm_bindgen(inspectable))] #[derive(Clone)] +#[derive(Builder)] +#[builder(build_fn(error = "Error"))] pub struct Argon2Parameters { /// Length of the desired hash. Should be 32 in most case. + #[builder(default="32")] pub length: u32, /// Number of parallel jobs to run. Only use if always computed in a multithreaded environment. + #[builder(default="1")] pub lanes: u32, /// Memory used by the algorithm in KiB. Higher is better. + #[builder(default="4096")] pub memory: u32, /// Number of iterations(time cost). Higher is better. + #[builder(default="2")] pub iterations: u32, /// The variant to use. You should almost always use Argon2Id. + #[builder(default="Variant::Argon2id")] variant: Variant, /// The version of Argon2 to use. Use the latest. + #[builder(default="Version::Version13")] version: Version, /// Version of this structure in DevolutionsCrypto. + #[builder(default="1")] dc_version: u32, /// Authenticated but not secret data. + #[builder(default)] associated_data: Vec, /// Secret key to sign the hash. Note that this is not serialized. + #[builder(default)] secret_key: Vec, /// A 16-bytes salt to use that is generated automatically. Should not be accessed directly. + #[builder(default = r#"{ + let mut salt = vec![0u8; 16]; + OsRng.fill_bytes(salt.as_mut_slice()); + salt + }"#)] salt: Vec, } +impl Argon2ParametersBuilder { + pub fn new() -> Self { + Default::default() + } +} + impl Argon2Parameters { pub fn get_salt_as_slice(&self) -> &[u8] { self.salt.as_slice() diff --git a/src/lib.rs b/src/lib.rs index d0bcf29b0..c29a6f341 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -228,9 +228,13 @@ pub use enums::{ }; pub use argon2parameters::Argon2Parameters; +pub use argon2parameters::Argon2ParametersBuilder; pub use error::Error; pub type Result = std::result::Result; +pub const DEFAULT_KEY_SIZE: usize = 32; +pub const DEFAULT_PBKDF2_ITERATIONS: u32 = 10000; + #[cfg(feature = "wbindgen")] pub mod wasm; diff --git a/uniffi/uniffi-lib/Cargo.toml b/uniffi/devolutions-crypto-uniffi/Cargo.toml similarity index 88% rename from uniffi/uniffi-lib/Cargo.toml rename to uniffi/devolutions-crypto-uniffi/Cargo.toml index a33db23a9..89f8fe20b 100644 --- a/uniffi/uniffi-lib/Cargo.toml +++ b/uniffi/devolutions-crypto-uniffi/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "uniffi-lib" +name = "devolutions-crypto-uniffi" edition = "2021" version.workspace = true diff --git a/uniffi/uniffi-lib/build.rs b/uniffi/devolutions-crypto-uniffi/build.rs similarity index 100% rename from uniffi/uniffi-lib/build.rs rename to uniffi/devolutions-crypto-uniffi/build.rs diff --git a/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs b/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs new file mode 100644 index 000000000..2de0e767c --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs @@ -0,0 +1,83 @@ +use crate::CiphertextVersion; +use crate::Result; + +#[uniffi::export] +pub fn encrypt(data: &[u8], key: &[u8], version: Option) -> Result> { + Ok(devolutions_crypto::ciphertext::encrypt(data, key, version.unwrap_or_default())?.into()) +} + +#[uniffi::export] +pub fn encrypt_with_aad( + data: &[u8], + key: &[u8], + aad: &[u8], + version: Option, +) -> Result> { + Ok(devolutions_crypto::ciphertext::encrypt_with_aad( + data, + key, + aad, + version.unwrap_or_default(), + )? + .into()) +} + +#[uniffi::export] +pub fn decrypt(data: &[u8], key: &[u8]) -> Result> { + let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; + data.decrypt(key) +} + +#[uniffi::export] +fn decrypt_with_aad(data: &[u8], key: &[u8], aad: &[u8]) -> Result> { + let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; + data.decrypt_with_aad(key, aad) +} + +#[uniffi::export] +pub fn encrypt_asymmetric( + data: &[u8], + key: &[u8], + version: Option, +) -> Result> { + let key = key.try_into()?; + Ok( + devolutions_crypto::ciphertext::encrypt_asymmetric( + data, + &key, + version.unwrap_or_default(), + )? + .into(), + ) +} + +#[uniffi::export] +pub fn encrypt_asymmetric_with_aad( + data: &[u8], + key: &[u8], + aad: &[u8], + version: Option, +) -> Result> { + let key = key.try_into()?; + Ok(devolutions_crypto::ciphertext::encrypt_asymmetric_with_aad( + data, + &key, + aad, + version.unwrap_or_default(), + )? + .into()) +} + +#[uniffi::export] +pub fn decrypt_asymmetric(data: &[u8], key: &[u8]) -> Result> { + let key = key.try_into()?; + let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; + data.decrypt_asymmetric(&key) +} + +#[uniffi::export] +fn decrypt_asymmetric_with_aad(data: &[u8], key: &[u8], aad: &[u8]) -> Result> { + let key = key.try_into()?; + let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; + data.decrypt_asymmetric_with_aad(&key, aad) +} diff --git a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl new file mode 100644 index 000000000..f58de02ab --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl @@ -0,0 +1,80 @@ +enum DataType { + "None", + "Key", + "Ciphertext", + "PasswordHash", + "Share", + "SigningKey", + "Signature", +}; + +enum CiphertextVersion { + "Latest", + "V1", + "V2", +}; + +enum PasswordHashVersion { + "Latest", + "V1", +}; + +enum KeyVersion { + "Latest", + "V1", +}; + +enum SigningKeyVersion { + "Latest", + "V1", +}; + +enum SecretSharingVersion { + "Latest", + "V1", +}; + +enum SignatureVersion { + "Latest", + "V1", +}; + +[Error] +enum DevolutionsCryptoError { + "InvalidLength", + "InvalidKeyLength", + "InvalidOutputLength", + "InvalidSignature", + "InvalidMac", + "InvalidDataType", + "UnknownType", + "UnknownSubtype", + "UnknownVersion", + "InvalidData", + "NullPointer", + "CryptoError", + "RandomError", + "IoError", + "NotEnoughShares", + "InconsistentVersion", +}; + +interface Argon2Parameters { + +}; + +interface Argon2ParametersBuilder { + constructor(); + Argon2ParametersBuilder length(u32 length); + Argon2ParametersBuilder lanes(u32 lanes); + Argon2ParametersBuilder memory(u32 memory); + Argon2ParametersBuilder iterations(u32 iterations); + Argon2ParametersBuilder associated_data(bytes associated_data); + Argon2ParametersBuilder secret_key(bytes secret_key); + Argon2ParametersBuilder salt(bytes salt); + + [Throws=DevolutionsCryptoError] + Argon2Parameters build(); +}; + +namespace devolutions_crypto {}; \ No newline at end of file diff --git a/uniffi/devolutions-crypto-uniffi/src/key.rs b/uniffi/devolutions-crypto-uniffi/src/key.rs new file mode 100644 index 000000000..1a867b8f2 --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/key.rs @@ -0,0 +1,30 @@ +use crate::KeyVersion; +use crate::Result; + +#[derive(uniffi::Object)] +pub struct KeyPair { + pub private_key: Vec, + pub public_key: Vec, +} + +impl From for KeyPair { + fn from(value: devolutions_crypto::key::KeyPair) -> Self { + Self { + private_key: value.private_key.into(), + public_key: value.public_key.into(), + } + } +} + +#[uniffi::export] +pub fn generate_keypair(version: Option) -> KeyPair { + devolutions_crypto::key::generate_keypair(version.unwrap_or_default()).into() +} + +#[uniffi::export] +pub fn mix_key_exchange(private_key: &[u8], public_key: &[u8]) -> Result> { + let private_key = private_key.try_into()?; + let public_key = public_key.try_into()?; + + devolutions_crypto::key::mix_key_exchange(&private_key, &public_key) +} diff --git a/uniffi/devolutions-crypto-uniffi/src/lib.rs b/uniffi/devolutions-crypto-uniffi/src/lib.rs new file mode 100644 index 000000000..9d7187908 --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/lib.rs @@ -0,0 +1,31 @@ +mod ciphertext; +mod key; +mod password_hash; +mod secret_sharing; +mod signature; +mod signing_key; +mod utils; + +pub use ciphertext::*; +pub use key::*; +pub use password_hash::*; +pub use secret_sharing::*; +pub use signature::*; +pub use signing_key::*; +pub use utils::*; + +pub use devolutions_crypto::CiphertextVersion; +pub use devolutions_crypto::DataType; +pub use devolutions_crypto::Error as DevolutionsCryptoError; +pub use devolutions_crypto::KeyVersion; +pub use devolutions_crypto::PasswordHashVersion; +pub use devolutions_crypto::SecretSharingVersion; +pub use devolutions_crypto::SignatureVersion; +pub use devolutions_crypto::SigningKeyVersion; + +pub use devolutions_crypto::Argon2Parameters; +pub use devolutions_crypto::Argon2ParametersBuilder; + +pub use devolutions_crypto::Result; + +uniffi::include_scaffolding!("devolutions_crypto"); diff --git a/uniffi/devolutions-crypto-uniffi/src/password_hash.rs b/uniffi/devolutions-crypto-uniffi/src/password_hash.rs new file mode 100644 index 000000000..c31c9da9b --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/password_hash.rs @@ -0,0 +1,22 @@ +use crate::PasswordHashVersion; +use crate::Result; + +#[uniffi::export] +pub fn hash_password( + password: &[u8], + iterations: Option, + version: Option, +) -> Vec { + devolutions_crypto::password_hash::hash_password( + password, + iterations.unwrap_or(devolutions_crypto::DEFAULT_PBKDF2_ITERATIONS), + version.unwrap_or_default(), + ) + .into() +} + +#[uniffi::export] +pub fn verify_password(password: &[u8], hash: &[u8]) -> Result { + let hash: devolutions_crypto::password_hash::PasswordHash = hash.try_into()?; + Ok(hash.verify_password(password)) +} diff --git a/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs b/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs new file mode 100644 index 000000000..ee77034fc --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs @@ -0,0 +1,27 @@ +use crate::Result; +use crate::SecretSharingVersion; + +#[uniffi::export] +pub fn generate_shared_key( + n_shares: u8, + threshold: u8, + length: Option, + version: Option, +) -> Result>> { + Ok(devolutions_crypto::secret_sharing::generate_shared_key( + n_shares, + threshold, + length.unwrap_or(devolutions_crypto::DEFAULT_KEY_SIZE as u64) as usize, + version.unwrap_or_default(), + )? + .into_iter() + .map(|s| s.into()) + .collect()) +} + +#[uniffi::export] +pub fn join_shares(shares: &[Vec]) -> Result> { + let shares: Result> = shares.iter().map(|s| s.as_slice().try_into()).collect(); + + devolutions_crypto::secret_sharing::join_shares(&shares?) +} diff --git a/uniffi/devolutions-crypto-uniffi/src/signature.rs b/uniffi/devolutions-crypto-uniffi/src/signature.rs new file mode 100644 index 000000000..d271d8043 --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/signature.rs @@ -0,0 +1,17 @@ +use crate::Result; +use crate::SignatureVersion; + +#[uniffi::export] +pub fn sign(data: &[u8], keypair: &[u8], version: Option) -> Result> { + let keypair = keypair.try_into()?; + + Ok(devolutions_crypto::signature::sign(data, &keypair, version.unwrap_or_default()).into()) +} + +#[uniffi::export] +pub fn verify_signature(data: &[u8], public_key: &[u8], signature: &[u8]) -> Result { + let signature: devolutions_crypto::signature::Signature = signature.try_into()?; + let public_key = public_key.try_into()?; + + Ok(signature.verify(data, &public_key)) +} diff --git a/uniffi/devolutions-crypto-uniffi/src/signing_key.rs b/uniffi/devolutions-crypto-uniffi/src/signing_key.rs new file mode 100644 index 000000000..fd705ec94 --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/signing_key.rs @@ -0,0 +1,22 @@ +use crate::SigningKeyVersion; + +#[derive(uniffi::Object)] +pub struct SigningKeyPair { + pub private_key: Vec, + pub public_key: Vec, +} + +impl From for SigningKeyPair { + fn from(value: devolutions_crypto::signing_key::SigningKeyPair) -> Self { + let public_key = value.get_public_key(); + Self { + private_key: value.into(), + public_key: public_key.into(), + } + } +} + +#[uniffi::export] +pub fn generate_signing_keypair(version: Option) -> SigningKeyPair { + devolutions_crypto::signing_key::generate_signing_keypair(version.unwrap_or_default()).into() +} diff --git a/uniffi/devolutions-crypto-uniffi/src/utils.rs b/uniffi/devolutions-crypto-uniffi/src/utils.rs new file mode 100644 index 000000000..8ab76519b --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/utils.rs @@ -0,0 +1,28 @@ +use crate::DataType; + +#[uniffi::export] +pub fn generate_key(length: Option) -> Vec { + devolutions_crypto::utils::generate_key( + length.unwrap_or(devolutions_crypto::DEFAULT_KEY_SIZE as u64) as usize, + ) +} + +#[uniffi::export] +pub fn derive_key_pbkdf2( + key: &[u8], + salt: Option>, + iterations: Option, + length: Option, +) -> Vec { + devolutions_crypto::utils::derive_key_pbkdf2( + key, + &salt.unwrap_or_default(), + iterations.unwrap_or(devolutions_crypto::DEFAULT_PBKDF2_ITERATIONS), + length.unwrap_or(devolutions_crypto::DEFAULT_KEY_SIZE as u64) as usize, + ) +} + +#[uniffi::export] +pub fn validate_header(data: &[u8], data_type: DataType) -> bool { + devolutions_crypto::utils::validate_header(data, data_type) +} diff --git a/uniffi/uniffi-lib/src/devolutions_crypto.udl b/uniffi/uniffi-lib/src/devolutions_crypto.udl deleted file mode 100644 index e6cc519b6..000000000 --- a/uniffi/uniffi-lib/src/devolutions_crypto.udl +++ /dev/null @@ -1,28 +0,0 @@ -enum CiphertextVersion { - "Latest", - "V1", - "V2", -}; - -[Error] -enum DevolutionsCryptoError { - "InvalidLength", - "InvalidKeyLength", - "InvalidOutputLength", - "InvalidSignature", - "InvalidMac", - "InvalidDataType", - "UnknownType", - "UnknownSubtype", - "UnknownVersion", - "InvalidData", - "NullPointer", - "CryptoError", - "RandomError", - "IoError", - "NotEnoughShares", - "InconsistentVersion", -}; - -namespace devolutions_crypto { -}; \ No newline at end of file diff --git a/uniffi/uniffi-lib/src/lib.rs b/uniffi/uniffi-lib/src/lib.rs deleted file mode 100644 index bf5a071bf..000000000 --- a/uniffi/uniffi-lib/src/lib.rs +++ /dev/null @@ -1,59 +0,0 @@ -use devolutions_crypto::CiphertextVersion; - -use devolutions_crypto::Error as DevolutionsCryptoError; - -#[uniffi::export] -pub fn generate_key(length: Option) -> Vec { - devolutions_crypto::utils::generate_key(length.unwrap_or(32) as usize) -} - -#[uniffi::export] -pub fn encrypt( - data: &[u8], - key: &[u8], - version: Option, -) -> Result, DevolutionsCryptoError> { - Ok(devolutions_crypto::ciphertext::encrypt( - data, - key, - version.unwrap_or(CiphertextVersion::Latest), - )? - .into()) -} - -#[uniffi::export] -pub fn encrypt_with_aad( - data: &[u8], - key: &[u8], - aad: &[u8], - version: Option, -) -> Result, DevolutionsCryptoError> { - Ok(devolutions_crypto::ciphertext::encrypt_with_aad( - data, - key, - aad, - version.unwrap_or(CiphertextVersion::Latest), - )? - .into()) -} - -#[uniffi::export] -pub fn decrypt( - data: &[u8], - key: &[u8], -) -> Result, DevolutionsCryptoError> { - let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; - data.decrypt(key) -} - -#[uniffi::export] -fn decrypt_with_aad( - data: &[u8], - key: &[u8], - aad: &[u8], -) -> Result, DevolutionsCryptoError> { - let data = devolutions_crypto::ciphertext::Ciphertext::try_from(data)?; - data.decrypt_with_aad(key, aad) -} - -uniffi::include_scaffolding!("devolutions_crypto"); From 54686f22089832df004cfff4c6169c9cf99595fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Thu, 10 Oct 2024 15:06:44 -0400 Subject: [PATCH 16/43] [Uniffi] Argon2ParametersBuilder --- Cargo.lock | 94 +++++-------------- Cargo.toml | 2 +- src/argon2parameters.rs | 63 ++++++++----- src/lib.rs | 3 + .../src/devolutions_crypto.udl | 35 ++++--- uniffi/devolutions-crypto-uniffi/src/lib.rs | 8 +- 6 files changed, 88 insertions(+), 117 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ebfcc79c8..8a8788448 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -467,41 +467,6 @@ dependencies = [ "syn 2.0.72", ] -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.72", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.72", -] - [[package]] name = "der" version = "0.7.9" @@ -523,37 +488,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_builder" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "derive_builder_macro" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" -dependencies = [ - "derive_builder_core", - "syn 2.0.72", -] - [[package]] name = "devolutions-crypto" version = "0.9.1" @@ -567,7 +501,6 @@ dependencies = [ "cbc", "cfg-if", "chacha20poly1305", - "derive_builder", "ed25519-dalek", "getrandom", "hmac", @@ -583,6 +516,7 @@ dependencies = [ "strum", "subtle", "thiserror", + "typed-builder", "wasm-bindgen", "wasm-bindgen-test", "x25519-dalek", @@ -781,12 +715,6 @@ dependencies = [ "digest", ] -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "indexmap" version = "2.2.6" @@ -1460,6 +1388,26 @@ dependencies = [ "winnow", ] +[[package]] +name = "typed-builder" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e14ed59dc8b7b26cacb2a92bad2e8b1f098806063898ab42a3bd121d7d45e75" +dependencies = [ + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + [[package]] name = "typenum" version = "1.17.0" diff --git a/Cargo.toml b/Cargo.toml index eb10f6d95..6acdf8a64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ zeroize = { version = "1.8" } rand = "0.8" rand_core = { version = "0.6" } thiserror = "1.0.64" -derive_builder = "0.20.1" +typed-builder = "0.20.0" ed25519-dalek = { version = "2", features = [ "rand_core" ] } x25519-dalek = { version = "2", features = [ "static_secrets" ] } diff --git a/src/argon2parameters.rs b/src/argon2parameters.rs index 8f9eeca5b..06717d97d 100644 --- a/src/argon2parameters.rs +++ b/src/argon2parameters.rs @@ -1,11 +1,11 @@ use std::{ - convert::TryFrom, io::{Cursor, Read} + convert::TryFrom, io::{Cursor, Read, Write} }; use argon2::{Config, ThreadMode, Variant, Version}; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use rand_core::{OsRng, RngCore}; -use derive_builder::Builder; +use typed_builder::TypedBuilder; #[cfg(feature = "wbindgen")] use wasm_bindgen::prelude::*; @@ -13,6 +13,26 @@ use wasm_bindgen::prelude::*; use super::Error; use super::Result; +pub mod defaults { + use argon2::Variant; + use argon2::Version; + use rand_core::{OsRng, RngCore}; + + pub const LENGTH: u32 = 32; + pub const LANES: u32 = 1; + pub const MEMORY: u32 = 4096; + pub const ITERATIONS: u32 = 2; + pub const VARIANT: Variant = Variant::Argon2id; + pub const VERSION: Version = Version::Version13; + pub const DC_VERSION: u32 = 1; + + pub fn salt() -> Vec { + let mut salt = vec![0u8; 16]; + OsRng.fill_bytes(salt.as_mut_slice()); + salt + } +} + /// Parameters used to derive the password into an Argon2 hash. /// It is used to derive a password into a keypair. /// You should use the default, although this may be tweakable by the user in some cases. @@ -24,29 +44,28 @@ use super::Result; /// so two calls to `default()` will not generate the same structure. #[cfg_attr(feature = "wbindgen", wasm_bindgen(inspectable))] #[derive(Clone)] -#[derive(Builder)] -#[builder(build_fn(error = "Error"))] +#[derive(TypedBuilder)] pub struct Argon2Parameters { /// Length of the desired hash. Should be 32 in most case. - #[builder(default="32")] + #[builder(default=defaults::LENGTH)] pub length: u32, /// Number of parallel jobs to run. Only use if always computed in a multithreaded environment. - #[builder(default="1")] + #[builder(default=defaults::LANES)] pub lanes: u32, /// Memory used by the algorithm in KiB. Higher is better. - #[builder(default="4096")] + #[builder(default=defaults::MEMORY)] pub memory: u32, /// Number of iterations(time cost). Higher is better. - #[builder(default="2")] + #[builder(default=defaults::ITERATIONS)] pub iterations: u32, /// The variant to use. You should almost always use Argon2Id. - #[builder(default="Variant::Argon2id")] + #[builder(default=defaults::VARIANT)] variant: Variant, /// The version of Argon2 to use. Use the latest. - #[builder(default="Version::Version13")] + #[builder(default=defaults::VERSION)] version: Version, /// Version of this structure in DevolutionsCrypto. - #[builder(default="1")] + #[builder(default=defaults::DC_VERSION)] dc_version: u32, /// Authenticated but not secret data. #[builder(default)] @@ -55,20 +74,10 @@ pub struct Argon2Parameters { #[builder(default)] secret_key: Vec, /// A 16-bytes salt to use that is generated automatically. Should not be accessed directly. - #[builder(default = r#"{ - let mut salt = vec![0u8; 16]; - OsRng.fill_bytes(salt.as_mut_slice()); - salt - }"#)] + #[builder(default = defaults::salt())] salt: Vec, } -impl Argon2ParametersBuilder { - pub fn new() -> Self { - Default::default() - } -} - impl Argon2Parameters { pub fn get_salt_as_slice(&self) -> &[u8] { self.salt.as_slice() @@ -100,8 +109,8 @@ impl Default for Argon2Parameters { } } -impl From for Vec { - fn from(mut params: Argon2Parameters) -> Self { +impl From<&Argon2Parameters> for Vec { + fn from(params: &Argon2Parameters) -> Self { // Data is encoded this way: // All the u32 data -> enums(as u8) -> Vectors(length as u32 + vec)) // Note that the secret key is not serialized. @@ -120,11 +129,13 @@ impl From for Vec { data.write_u32::(params.associated_data.len() as u32) .unwrap(); - data.append(&mut params.associated_data); + + data.write_all(¶ms.associated_data).unwrap(); data.write_u32::(params.salt.len() as u32) .unwrap(); - data.append(&mut params.salt); + + data.write_all(¶ms.salt).unwrap(); data } diff --git a/src/lib.rs b/src/lib.rs index c29a6f341..bec20b9e0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -229,6 +229,9 @@ pub use enums::{ pub use argon2parameters::Argon2Parameters; pub use argon2parameters::Argon2ParametersBuilder; +pub use argon2::Variant as Argon2Variant; +pub use argon2::Version as Argon2Version; +pub use argon2parameters::defaults as argon2parameters_defaults; pub use error::Error; pub type Result = std::result::Result; diff --git a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl index f58de02ab..d770b7fe4 100644 --- a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl +++ b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl @@ -39,6 +39,17 @@ enum SignatureVersion { "V1", }; +enum Argon2Version { + "Version10", + "Version13", +}; + +enum Argon2Variant { + "Argon2d", + "Argon2i", + "Argon2id", +}; + [Error] enum DevolutionsCryptoError { "InvalidLength", @@ -59,22 +70,18 @@ enum DevolutionsCryptoError { "InconsistentVersion", }; -interface Argon2Parameters { - -}; - interface Argon2ParametersBuilder { - constructor(); - Argon2ParametersBuilder length(u32 length); - Argon2ParametersBuilder lanes(u32 lanes); - Argon2ParametersBuilder memory(u32 memory); - Argon2ParametersBuilder iterations(u32 iterations); - Argon2ParametersBuilder associated_data(bytes associated_data); - Argon2ParametersBuilder secret_key(bytes secret_key); - Argon2ParametersBuilder salt(bytes salt); + constructor(); + [Self=ByArc] + Argon2ParametersBuilder length(u32 length); + [Self=ByArc] + Argon2Parameters build(); +}; - [Throws=DevolutionsCryptoError] - Argon2Parameters build(); +interface Argon2Parameters { + [Name=new_from_bytes, Throws=DevolutionsCryptoError] + constructor([ByRef] bytes data); + bytes get_bytes(); }; namespace devolutions_crypto {}; \ No newline at end of file diff --git a/uniffi/devolutions-crypto-uniffi/src/lib.rs b/uniffi/devolutions-crypto-uniffi/src/lib.rs index 9d7187908..efc6bc2b2 100644 --- a/uniffi/devolutions-crypto-uniffi/src/lib.rs +++ b/uniffi/devolutions-crypto-uniffi/src/lib.rs @@ -1,3 +1,4 @@ +mod argon2parameters; mod ciphertext; mod key; mod password_hash; @@ -6,6 +7,8 @@ mod signature; mod signing_key; mod utils; +pub use argon2parameters::Argon2Parameters; +pub use argon2parameters::Argon2ParametersBuilder; pub use ciphertext::*; pub use key::*; pub use password_hash::*; @@ -14,6 +17,8 @@ pub use signature::*; pub use signing_key::*; pub use utils::*; +pub use devolutions_crypto::Argon2Variant; +pub use devolutions_crypto::Argon2Version; pub use devolutions_crypto::CiphertextVersion; pub use devolutions_crypto::DataType; pub use devolutions_crypto::Error as DevolutionsCryptoError; @@ -23,9 +28,6 @@ pub use devolutions_crypto::SecretSharingVersion; pub use devolutions_crypto::SignatureVersion; pub use devolutions_crypto::SigningKeyVersion; -pub use devolutions_crypto::Argon2Parameters; -pub use devolutions_crypto::Argon2ParametersBuilder; - pub use devolutions_crypto::Result; uniffi::include_scaffolding!("devolutions_crypto"); From 604b50c5d29531cef00cb31bc1105eb9ae2926e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Fri, 11 Oct 2024 11:40:58 -0400 Subject: [PATCH 17/43] [Uniffi] Add base64 --- src/argon2parameters.rs | 6 +- src/lib.rs | 4 +- .../src/argon2parameters.rs | 141 ++++++++++++++++++ .../src/devolutions_crypto.udl | 20 ++- uniffi/devolutions-crypto-uniffi/src/utils.rs | 27 +++- uniffi/devolutions-crypto-uniffi/uniffi.toml | 2 + 6 files changed, 193 insertions(+), 7 deletions(-) create mode 100644 uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs create mode 100644 uniffi/devolutions-crypto-uniffi/uniffi.toml diff --git a/src/argon2parameters.rs b/src/argon2parameters.rs index 06717d97d..70c1b39c1 100644 --- a/src/argon2parameters.rs +++ b/src/argon2parameters.rs @@ -1,5 +1,6 @@ use std::{ - convert::TryFrom, io::{Cursor, Read, Write} + convert::TryFrom, + io::{Cursor, Read, Write}, }; use argon2::{Config, ThreadMode, Variant, Version}; @@ -43,8 +44,7 @@ pub mod defaults { /// Note that calling `default()` will also generate a new random salt, /// so two calls to `default()` will not generate the same structure. #[cfg_attr(feature = "wbindgen", wasm_bindgen(inspectable))] -#[derive(Clone)] -#[derive(TypedBuilder)] +#[derive(Clone, TypedBuilder)] pub struct Argon2Parameters { /// Length of the desired hash. Should be 32 in most case. #[builder(default=defaults::LENGTH)] diff --git a/src/lib.rs b/src/lib.rs index bec20b9e0..cda22c4bb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -227,11 +227,11 @@ pub use enums::{ SignatureVersion, SigningKeyVersion, }; -pub use argon2parameters::Argon2Parameters; -pub use argon2parameters::Argon2ParametersBuilder; pub use argon2::Variant as Argon2Variant; pub use argon2::Version as Argon2Version; pub use argon2parameters::defaults as argon2parameters_defaults; +pub use argon2parameters::Argon2Parameters; +pub use argon2parameters::Argon2ParametersBuilder; pub use error::Error; pub type Result = std::result::Result; diff --git a/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs b/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs new file mode 100644 index 000000000..a426b9f67 --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs @@ -0,0 +1,141 @@ +use std::sync::{Arc, Mutex}; + +use crate::Result; +use devolutions_crypto::argon2parameters_defaults; +use devolutions_crypto::{Argon2Variant, Argon2Version}; + +pub struct Argon2ParametersBuilder { + length: Mutex, + lanes: Mutex, + memory: Mutex, + iterations: Mutex, + variant: Mutex, + version: Mutex, + dc_version: Mutex, + associated_data: Mutex>, + secret_key: Mutex>, + salt: Mutex>, +} + +impl Clone for Argon2ParametersBuilder { + fn clone(&self) -> Self { + Self { + length: Mutex::new(self.length.lock().unwrap().clone()), + lanes: Mutex::new(self.lanes.lock().unwrap().clone()), + memory: Mutex::new(self.memory.lock().unwrap().clone()), + iterations: Mutex::new(self.iterations.lock().unwrap().clone()), + variant: Mutex::new(self.variant.lock().unwrap().clone()), + version: Mutex::new(self.version.lock().unwrap().clone()), + dc_version: Mutex::new(self.dc_version.lock().unwrap().clone()), + associated_data: Mutex::new(self.associated_data.lock().unwrap().clone()), + secret_key: Mutex::new(self.secret_key.lock().unwrap().clone()), + salt: Mutex::new(self.salt.lock().unwrap().clone()), + } + } +} + +pub struct Argon2Parameters(pub devolutions_crypto::Argon2Parameters); + +impl Argon2Parameters { + pub fn new_from_bytes(data: &[u8]) -> Result { + let data = data.try_into()?; + Ok(Self(data)) + } + + pub fn get_bytes(&self) -> Vec { + (&self.0).into() + } +} + +impl Argon2ParametersBuilder { + pub fn new() -> Self { + Default::default() + } + + pub fn length(self: Arc, value: u32) -> Arc { + *self.length.lock().unwrap() = value; + self + } + + pub fn lanes(self: Arc, value: u32) -> Arc { + *self.lanes.lock().unwrap() = value; + self + } + + pub fn memory(self: Arc, value: u32) -> Arc { + *self.memory.lock().unwrap() = value; + self + } + + pub fn iterations(self: Arc, value: u32) -> Arc { + *self.iterations.lock().unwrap() = value; + self + } + + pub fn variant(self: Arc, value: Argon2Variant) -> Arc { + *self.variant.lock().unwrap() = value; + self + } + + pub fn version(self: Arc, value: Argon2Version) -> Arc { + *self.version.lock().unwrap() = value; + self + } + + pub fn dc_version(self: Arc, value: u32) -> Arc { + *self.dc_version.lock().unwrap() = value; + self + } + + pub fn associated_data(self: Arc, value: Vec) -> Arc { + *self.associated_data.lock().unwrap() = value; + self + } + + pub fn secret_key(self: Arc, value: Vec) -> Arc { + *self.secret_key.lock().unwrap() = value; + self + } + + pub fn salt(self: Arc, value: Vec) -> Arc { + *self.salt.lock().unwrap() = value; + self + } + + pub fn build(self: Arc) -> Arc { + let builder = Arc::::unwrap_or_clone(self); + + Argon2Parameters( + devolutions_crypto::Argon2Parameters::builder() + .length(builder.length.into_inner().unwrap()) + .lanes(builder.lanes.into_inner().unwrap()) + .memory(builder.memory.into_inner().unwrap()) + .iterations(builder.iterations.into_inner().unwrap()) + .variant(builder.variant.into_inner().unwrap()) + .version(builder.version.into_inner().unwrap()) + .dc_version(builder.dc_version.into_inner().unwrap()) + .associated_data(builder.associated_data.into_inner().unwrap()) + .secret_key(builder.secret_key.into_inner().unwrap()) + .salt(builder.salt.into_inner().unwrap()) + .build(), + ) + .into() + } +} + +impl Default for Argon2ParametersBuilder { + fn default() -> Self { + Self { + length: Mutex::new(argon2parameters_defaults::LENGTH), + lanes: Mutex::new(argon2parameters_defaults::LANES), + memory: Mutex::new(argon2parameters_defaults::MEMORY), + iterations: Mutex::new(argon2parameters_defaults::ITERATIONS), + variant: Mutex::new(argon2parameters_defaults::VARIANT), + version: Mutex::new(argon2parameters_defaults::VERSION), + dc_version: Mutex::new(argon2parameters_defaults::DC_VERSION), + associated_data: Mutex::new(Default::default()), + secret_key: Mutex::new(Default::default()), + salt: Mutex::new(argon2parameters_defaults::salt()), + } + } +} diff --git a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl index d770b7fe4..afe88f9b7 100644 --- a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl +++ b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl @@ -73,7 +73,25 @@ enum DevolutionsCryptoError { interface Argon2ParametersBuilder { constructor(); [Self=ByArc] - Argon2ParametersBuilder length(u32 length); + Argon2ParametersBuilder length(u32 value); + [Self=ByArc] + Argon2ParametersBuilder lanes(u32 value); + [Self=ByArc] + Argon2ParametersBuilder memory(u32 value); + [Self=ByArc] + Argon2ParametersBuilder iterations(u32 value); + [Self=ByArc] + Argon2ParametersBuilder variant(Argon2Variant value); + [Self=ByArc] + Argon2ParametersBuilder version(Argon2Version value); + [Self=ByArc] + Argon2ParametersBuilder dc_version(u32 value); + [Self=ByArc] + Argon2ParametersBuilder associated_data(bytes value); + [Self=ByArc] + Argon2ParametersBuilder secret_key(bytes value); + [Self=ByArc] + Argon2ParametersBuilder salt(bytes value); [Self=ByArc] Argon2Parameters build(); }; diff --git a/uniffi/devolutions-crypto-uniffi/src/utils.rs b/uniffi/devolutions-crypto-uniffi/src/utils.rs index 8ab76519b..5fe370252 100644 --- a/uniffi/devolutions-crypto-uniffi/src/utils.rs +++ b/uniffi/devolutions-crypto-uniffi/src/utils.rs @@ -1,4 +1,4 @@ -use crate::DataType; +use crate::{Argon2Parameters, DataType, Result}; #[uniffi::export] pub fn generate_key(length: Option) -> Vec { @@ -22,7 +22,32 @@ pub fn derive_key_pbkdf2( ) } +#[uniffi::export] +pub fn derive_key_argon2(key: &[u8], parameters: &Argon2Parameters) -> Result> { + devolutions_crypto::utils::derive_key_argon2(key, ¶meters.0) +} + #[uniffi::export] pub fn validate_header(data: &[u8], data_type: DataType) -> bool { devolutions_crypto::utils::validate_header(data, data_type) } + +#[uniffi::export] +pub fn base64_encode(data: &[u8]) -> String { + devolutions_crypto::utils::base64_encode(data) +} + +#[uniffi::export] +pub fn base64_decode(data: &str) -> Result> { + devolutions_crypto::utils::base64_decode(data) +} + +#[uniffi::export] +pub fn base64_encode_url(data: &[u8]) -> String { + devolutions_crypto::utils::base64_encode_url(data) +} + +#[uniffi::export] +pub fn base64_decode_url(data: &str) -> Result> { + devolutions_crypto::utils::base64_decode_url(data) +} diff --git a/uniffi/devolutions-crypto-uniffi/uniffi.toml b/uniffi/devolutions-crypto-uniffi/uniffi.toml new file mode 100644 index 000000000..1bf24baee --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/uniffi.toml @@ -0,0 +1,2 @@ +[bindings.kotlin] +package_name = "org.devolutions.crypto" \ No newline at end of file From d815aaf78c6a6e3239812d3e462d68085d011f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Wed, 16 Oct 2024 17:26:54 -0400 Subject: [PATCH 18/43] [Uniffi] Macro for builder --- Cargo.lock | 55 ++++--- Cargo.toml | 6 +- uniffi/devolutions-crypto-uniffi/Cargo.toml | 1 + .../src/argon2parameters.rs | 143 +++-------------- .../uniffi-builder-macro/Cargo.toml | 12 ++ .../uniffi-builder-macro/src/lib.rs | 146 ++++++++++++++++++ 6 files changed, 217 insertions(+), 146 deletions(-) create mode 100644 uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/Cargo.toml create mode 100644 uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 8a8788448..6ca4c8888 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -128,7 +128,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -377,7 +377,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -464,7 +464,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -566,6 +566,7 @@ version = "0.9.1" dependencies = [ "devolutions-crypto", "uniffi", + "uniffi-builder-macro", ] [[package]] @@ -859,7 +860,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -963,9 +964,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -1017,7 +1018,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1030,14 +1031,14 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1152,7 +1153,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1203,7 +1204,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1296,7 +1297,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1318,9 +1319,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -1359,7 +1360,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1405,7 +1406,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1451,6 +1452,14 @@ dependencies = [ "uniffi", ] +[[package]] +name = "uniffi-builder-macro" +version = "0.1.0" +dependencies = [ + "quote", + "syn 2.0.79", +] + [[package]] name = "uniffi_bindgen" version = "0.28.0" @@ -1493,7 +1502,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" dependencies = [ "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1524,7 +1533,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.72", + "syn 2.0.79", "toml", "uniffi_meta", ] @@ -1622,7 +1631,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -1656,7 +1665,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1689,7 +1698,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] [[package]] @@ -1822,5 +1831,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.79", ] diff --git a/Cargo.toml b/Cargo.toml index 6acdf8a64..a44bef2df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,8 +5,10 @@ members = [ "ffi", "fuzz", "python", - "uniffi/uniffi-bindgen" -, "uniffi/devolutions-crypto-uniffi"] + "uniffi/uniffi-bindgen", + "uniffi/devolutions-crypto-uniffi", + "uniffi/devolutions-crypto-uniffi/uniffi-builder-macro", + ] [workspace.dependencies] uniffi = "0.28" diff --git a/uniffi/devolutions-crypto-uniffi/Cargo.toml b/uniffi/devolutions-crypto-uniffi/Cargo.toml index 89f8fe20b..ab404c42e 100644 --- a/uniffi/devolutions-crypto-uniffi/Cargo.toml +++ b/uniffi/devolutions-crypto-uniffi/Cargo.toml @@ -8,6 +8,7 @@ crate-type = ["cdylib", "staticlib"] [dependencies] devolutions-crypto = { path = "../../" } +uniffi-builder-macro = { path = "./uniffi-builder-macro" } uniffi = { workspace = true } [build-dependencies] diff --git a/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs b/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs index a426b9f67..d411db1f1 100644 --- a/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs +++ b/uniffi/devolutions-crypto-uniffi/src/argon2parameters.rs @@ -1,37 +1,27 @@ -use std::sync::{Arc, Mutex}; - use crate::Result; -use devolutions_crypto::argon2parameters_defaults; + use devolutions_crypto::{Argon2Variant, Argon2Version}; -pub struct Argon2ParametersBuilder { - length: Mutex, - lanes: Mutex, - memory: Mutex, - iterations: Mutex, - variant: Mutex, - version: Mutex, - dc_version: Mutex, - associated_data: Mutex>, - secret_key: Mutex>, - salt: Mutex>, -} +use uniffi_builder_macro::UniffiBuilder; -impl Clone for Argon2ParametersBuilder { - fn clone(&self) -> Self { - Self { - length: Mutex::new(self.length.lock().unwrap().clone()), - lanes: Mutex::new(self.lanes.lock().unwrap().clone()), - memory: Mutex::new(self.memory.lock().unwrap().clone()), - iterations: Mutex::new(self.iterations.lock().unwrap().clone()), - variant: Mutex::new(self.variant.lock().unwrap().clone()), - version: Mutex::new(self.version.lock().unwrap().clone()), - dc_version: Mutex::new(self.dc_version.lock().unwrap().clone()), - associated_data: Mutex::new(self.associated_data.lock().unwrap().clone()), - secret_key: Mutex::new(self.secret_key.lock().unwrap().clone()), - salt: Mutex::new(self.salt.lock().unwrap().clone()), - } - } +#[UniffiBuilder(Argon2Parameters, devolutions_crypto::argon2parameters_defaults)] +pub struct Argon2ParametersBuilder { + length: u32, + lanes: u32, + memory: u32, + iterations: u32, + variant: Argon2Variant, + version: Argon2Version, + dc_version: u32, + + #[builder_default = Default::default()] + associated_data: Vec, + + #[builder_default = Default::default()] + secret_key: Vec, + + #[builder_default = devolutions_crypto::argon2parameters_defaults::salt()] + salt: Vec, } pub struct Argon2Parameters(pub devolutions_crypto::Argon2Parameters); @@ -45,97 +35,8 @@ impl Argon2Parameters { pub fn get_bytes(&self) -> Vec { (&self.0).into() } -} - -impl Argon2ParametersBuilder { - pub fn new() -> Self { - Default::default() - } - - pub fn length(self: Arc, value: u32) -> Arc { - *self.length.lock().unwrap() = value; - self - } - - pub fn lanes(self: Arc, value: u32) -> Arc { - *self.lanes.lock().unwrap() = value; - self - } - - pub fn memory(self: Arc, value: u32) -> Arc { - *self.memory.lock().unwrap() = value; - self - } - - pub fn iterations(self: Arc, value: u32) -> Arc { - *self.iterations.lock().unwrap() = value; - self - } - - pub fn variant(self: Arc, value: Argon2Variant) -> Arc { - *self.variant.lock().unwrap() = value; - self - } - - pub fn version(self: Arc, value: Argon2Version) -> Arc { - *self.version.lock().unwrap() = value; - self - } - - pub fn dc_version(self: Arc, value: u32) -> Arc { - *self.dc_version.lock().unwrap() = value; - self - } - - pub fn associated_data(self: Arc, value: Vec) -> Arc { - *self.associated_data.lock().unwrap() = value; - self - } - - pub fn secret_key(self: Arc, value: Vec) -> Arc { - *self.secret_key.lock().unwrap() = value; - self - } - - pub fn salt(self: Arc, value: Vec) -> Arc { - *self.salt.lock().unwrap() = value; - self - } - - pub fn build(self: Arc) -> Arc { - let builder = Arc::::unwrap_or_clone(self); - - Argon2Parameters( - devolutions_crypto::Argon2Parameters::builder() - .length(builder.length.into_inner().unwrap()) - .lanes(builder.lanes.into_inner().unwrap()) - .memory(builder.memory.into_inner().unwrap()) - .iterations(builder.iterations.into_inner().unwrap()) - .variant(builder.variant.into_inner().unwrap()) - .version(builder.version.into_inner().unwrap()) - .dc_version(builder.dc_version.into_inner().unwrap()) - .associated_data(builder.associated_data.into_inner().unwrap()) - .secret_key(builder.secret_key.into_inner().unwrap()) - .salt(builder.salt.into_inner().unwrap()) - .build(), - ) - .into() - } -} -impl Default for Argon2ParametersBuilder { - fn default() -> Self { - Self { - length: Mutex::new(argon2parameters_defaults::LENGTH), - lanes: Mutex::new(argon2parameters_defaults::LANES), - memory: Mutex::new(argon2parameters_defaults::MEMORY), - iterations: Mutex::new(argon2parameters_defaults::ITERATIONS), - variant: Mutex::new(argon2parameters_defaults::VARIANT), - version: Mutex::new(argon2parameters_defaults::VERSION), - dc_version: Mutex::new(argon2parameters_defaults::DC_VERSION), - associated_data: Mutex::new(Default::default()), - secret_key: Mutex::new(Default::default()), - salt: Mutex::new(argon2parameters_defaults::salt()), - } + fn get_inner_builder() -> devolutions_crypto::Argon2ParametersBuilder { + devolutions_crypto::Argon2Parameters::builder() } } diff --git a/uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/Cargo.toml b/uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/Cargo.toml new file mode 100644 index 000000000..e291025db --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "uniffi-builder-macro" +version = "0.1.0" +edition = "2021" + +[lib] +path = "src/lib.rs" +proc-macro = true + +[dependencies] +quote = "1.0.37" +syn = { version = "2.0.79", features = ["full", "extra-traits"] } diff --git a/uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/src/lib.rs b/uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/src/lib.rs new file mode 100644 index 000000000..4a32cd5d2 --- /dev/null +++ b/uniffi/devolutions-crypto-uniffi/uniffi-builder-macro/src/lib.rs @@ -0,0 +1,146 @@ +use proc_macro::TokenStream; +use syn::spanned::Spanned; + +struct UniffiBuilderMacroInput { + output_struct: syn::Ident, + _comma: syn::Token![,], + defaults: syn::ExprPath, +} + +impl syn::parse::Parse for UniffiBuilderMacroInput { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + Ok(Self { + output_struct: input.parse()?, + _comma: input.parse()?, + defaults: input.parse()?, + }) + } +} + +#[proc_macro_attribute] +#[allow(non_snake_case)] +pub fn UniffiBuilder(args: TokenStream, tokens: TokenStream) -> TokenStream { + // Get the name of the struct to output to + let args: UniffiBuilderMacroInput = match syn::parse(args) { + Ok(args) => args, + Err(e) => return e.to_compile_error().into(), + }; + + let output_struct_name = args.output_struct; + let defaults_module = args.defaults; + + // Parse the struct + let mut tree: syn::ItemStruct = match syn::parse(tokens) { + Ok(t) => t, + Err(e) => return e.to_compile_error().into(), + }; + + // Get the name of the struct + let struct_name = tree.ident.clone(); + + // Get the field and type of each fields + let ((field_names, field_types), field_attributes): ( + (Vec, Vec), + Vec>, + ) = tree + .fields + .iter() + .map(|f| { + let attribute = f + .attrs + .iter() + .find(|a| a.path().is_ident("builder_default")); + let attribute: Option = attribute.cloned(); + ((f.ident.clone().unwrap(), f.ty.clone()), attribute) + }) + .collect(); + + // Strip the fields from the fields that have custom default + let (field_names_for_default, field_default): (Vec, Vec) = tree + .fields + .iter() + .zip(field_attributes.iter()) + .map(|(f, attr)| { + let ident = f.ident.clone().unwrap(); + + let default: syn::Expr = if let Some(attr) = attr { + if let syn::Meta::NameValue(attr) = attr.meta.clone() { + let val = attr.value; + syn::parse_quote! { std::sync::Mutex::new({#val}) } + } else { + syn::Expr::Verbatim( + syn::Error::new( + attr.span(), + "The format for the attribute should be #[builder_default = code()]", + ) + .to_compile_error(), + ) + } + } else { + // Get the uppercased name of the field to get the corresponding default + let uppercased_ident: syn::Ident = + syn::parse_str(&ident.to_string().to_uppercase()).unwrap(); + syn::parse_quote! { std::sync::Mutex::new(#defaults_module::#uppercased_ident) } + }; + + (ident, default) + }) + .collect(); + + // Add mutex to the types + tree.fields.iter_mut().for_each(|field| { + let original_type = field.ty.clone(); + + // Strip the default attributes + field + .attrs + .retain(|a| !a.path().is_ident("builder_default")); + + field.ty = syn::parse_quote! { std::sync::Mutex<#original_type> }; + }); + + quote::quote! { + #tree + + impl Clone for #struct_name { + fn clone(&self) -> Self { + Self { + #(#field_names: std::sync::Mutex::new(self.#field_names.lock().unwrap().clone()),)* + } + } + } + + impl Default for #struct_name { + fn default() -> Self { + Self { + #(#field_names_for_default: #field_default,)* + } + } + } + + impl #struct_name { + pub fn new() -> Self { + Default::default() + } + + #( + pub fn #field_names(self: std::sync::Arc, value: #field_types) -> std::sync::Arc { + *self.#field_names.lock().unwrap() = value; + self + } + )* + + pub fn build(self: std::sync::Arc) -> std::sync::Arc<#output_struct_name> { + let builder = std::sync::Arc::<#struct_name>::unwrap_or_clone(self); + + #output_struct_name( + #output_struct_name::get_inner_builder() + #(.#field_names(builder.#field_names.into_inner().unwrap()))* + .build(), + ) + .into() + } + } + } + .into() +} From 73544e8012c5bf47e4c62160ed7f6a39d11935e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Thu, 17 Oct 2024 16:27:57 -0400 Subject: [PATCH 19/43] [UniFFI] Basic kotlin package --- .../src/ciphertext.rs | 10 +- .../src/devolutions_crypto.udl | 8 +- uniffi/devolutions-crypto-uniffi/src/utils.rs | 8 +- wrappers/kotlin/.gitattributes | 12 + wrappers/kotlin/.gitignore | 5 + .../bindings/uniffi/uniffi_lib/uniffi_lib.kt | 964 ----- wrappers/kotlin/generate.bat | 9 +- wrappers/kotlin/gradle/libs.versions.toml | 17 + .../kotlin/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + wrappers/kotlin/gradlew | 252 ++ wrappers/kotlin/gradlew.bat | 94 + .../kotlin/jniLibs/arm64-v8a/libuniffi_lib.so | Bin 353168 -> 0 bytes .../jniLibs/armeabi-v7a/libuniffi_lib.so | Bin 223664 -> 0 bytes wrappers/kotlin/jniLibs/x86/libuniffi_lib.so | Bin 290612 -> 0 bytes .../kotlin/jniLibs/x86_64/libuniffi_lib.so | Bin 305520 -> 0 bytes wrappers/kotlin/lib/build.gradle.kts | 49 + .../devolutions/crypto/devolutions_crypto.kt | 3446 +++++++++++++++++ .../src/main/resources/win32-x86-64/.gitkeep | 0 .../org/devolutions/crypto/LibraryTest.kt | 15 + wrappers/kotlin/settings.gradle.kts | 14 + 21 files changed, 3931 insertions(+), 979 deletions(-) create mode 100644 wrappers/kotlin/.gitattributes create mode 100644 wrappers/kotlin/.gitignore delete mode 100644 wrappers/kotlin/bindings/uniffi/uniffi_lib/uniffi_lib.kt create mode 100644 wrappers/kotlin/gradle/libs.versions.toml create mode 100644 wrappers/kotlin/gradle/wrapper/gradle-wrapper.jar create mode 100644 wrappers/kotlin/gradle/wrapper/gradle-wrapper.properties create mode 100644 wrappers/kotlin/gradlew create mode 100644 wrappers/kotlin/gradlew.bat delete mode 100755 wrappers/kotlin/jniLibs/arm64-v8a/libuniffi_lib.so delete mode 100755 wrappers/kotlin/jniLibs/armeabi-v7a/libuniffi_lib.so delete mode 100755 wrappers/kotlin/jniLibs/x86/libuniffi_lib.so delete mode 100755 wrappers/kotlin/jniLibs/x86_64/libuniffi_lib.so create mode 100644 wrappers/kotlin/lib/build.gradle.kts create mode 100644 wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt create mode 100644 wrappers/kotlin/lib/src/main/resources/win32-x86-64/.gitkeep create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt create mode 100644 wrappers/kotlin/settings.gradle.kts diff --git a/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs b/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs index 2de0e767c..49a989454 100644 --- a/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs +++ b/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs @@ -1,23 +1,21 @@ use crate::CiphertextVersion; use crate::Result; -#[uniffi::export] -pub fn encrypt(data: &[u8], key: &[u8], version: Option) -> Result> { - Ok(devolutions_crypto::ciphertext::encrypt(data, key, version.unwrap_or_default())?.into()) +pub fn encrypt(data: &[u8], key: &[u8], version: CiphertextVersion) -> Result> { + Ok(devolutions_crypto::ciphertext::encrypt(data, key, version)?.into()) } -#[uniffi::export] pub fn encrypt_with_aad( data: &[u8], key: &[u8], aad: &[u8], - version: Option, + version: CiphertextVersion, ) -> Result> { Ok(devolutions_crypto::ciphertext::encrypt_with_aad( data, key, aad, - version.unwrap_or_default(), + version, )? .into()) } diff --git a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl index afe88f9b7..967a83644 100644 --- a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl +++ b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl @@ -102,4 +102,10 @@ interface Argon2Parameters { bytes get_bytes(); }; -namespace devolutions_crypto {}; \ No newline at end of file +namespace devolutions_crypto { + [Throws=DevolutionsCryptoError] + bytes encrypt([ByRef] bytes data, [ByRef] bytes key, optional CiphertextVersion version = "Latest"); + + [Throws=DevolutionsCryptoError] + bytes encrypt_with_aad([ByRef] bytes data, [ByRef] bytes key, [ByRef] bytes aad, optional CiphertextVersion version = "Latest"); +}; \ No newline at end of file diff --git a/uniffi/devolutions-crypto-uniffi/src/utils.rs b/uniffi/devolutions-crypto-uniffi/src/utils.rs index 5fe370252..bfad70e96 100644 --- a/uniffi/devolutions-crypto-uniffi/src/utils.rs +++ b/uniffi/devolutions-crypto-uniffi/src/utils.rs @@ -1,10 +1,8 @@ use crate::{Argon2Parameters, DataType, Result}; -#[uniffi::export] -pub fn generate_key(length: Option) -> Vec { - devolutions_crypto::utils::generate_key( - length.unwrap_or(devolutions_crypto::DEFAULT_KEY_SIZE as u64) as usize, - ) +#[uniffi::export(default(length = 32))] +pub fn generate_key(length: u64) -> Vec { + devolutions_crypto::utils::generate_key(length as usize) } #[uniffi::export] diff --git a/wrappers/kotlin/.gitattributes b/wrappers/kotlin/.gitattributes new file mode 100644 index 000000000..f91f64602 --- /dev/null +++ b/wrappers/kotlin/.gitattributes @@ -0,0 +1,12 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + +# Binary files should be left untouched +*.jar binary + diff --git a/wrappers/kotlin/.gitignore b/wrappers/kotlin/.gitignore new file mode 100644 index 000000000..1b6985c00 --- /dev/null +++ b/wrappers/kotlin/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/wrappers/kotlin/bindings/uniffi/uniffi_lib/uniffi_lib.kt b/wrappers/kotlin/bindings/uniffi/uniffi_lib/uniffi_lib.kt deleted file mode 100644 index c5dbddff2..000000000 --- a/wrappers/kotlin/bindings/uniffi/uniffi_lib/uniffi_lib.kt +++ /dev/null @@ -1,964 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! - -@file:Suppress("NAME_SHADOWING") - -package uniffi.uniffi_lib - -// Common helper code. -// -// Ideally this would live in a separate .kt file where it can be unittested etc -// in isolation, and perhaps even published as a re-useable package. -// -// However, it's important that the details of how this helper code works (e.g. the -// way that different builtin types are passed across the FFI) exactly match what's -// expected by the Rust code on the other side of the interface. In practice right -// now that means coming from the exact some version of `uniffi` that was used to -// compile the Rust component. The easiest way to ensure this is to bundle the Kotlin -// helpers directly inline like we're doing here. - -import com.sun.jna.Library -import com.sun.jna.IntegerType -import com.sun.jna.Native -import com.sun.jna.Pointer -import com.sun.jna.Structure -import com.sun.jna.Callback -import com.sun.jna.ptr.* -import java.nio.ByteBuffer -import java.nio.ByteOrder -import java.nio.CharBuffer -import java.nio.charset.CodingErrorAction -import java.util.concurrent.atomic.AtomicLong -import java.util.concurrent.ConcurrentHashMap - -// This is a helper for safely working with byte buffers returned from the Rust code. -// A rust-owned buffer is represented by its capacity, its current length, and a -// pointer to the underlying data. - -@Structure.FieldOrder("capacity", "len", "data") -open class RustBuffer : Structure() { - // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values. - // When dealing with these fields, make sure to call `toULong()`. - @JvmField var capacity: Long = 0 - @JvmField var len: Long = 0 - @JvmField var data: Pointer? = null - - class ByValue: RustBuffer(), Structure.ByValue - class ByReference: RustBuffer(), Structure.ByReference - - internal fun setValue(other: RustBuffer) { - capacity = other.capacity - len = other.len - data = other.data - } - - companion object { - internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status -> - // Note: need to convert the size to a `Long` value to make this work with JVM. - UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_alloc(size.toLong(), status) - }.also { - if(it.data == null) { - throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})") - } - } - - internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue { - var buf = RustBuffer.ByValue() - buf.capacity = capacity.toLong() - buf.len = len.toLong() - buf.data = data - return buf - } - - internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status -> - UniffiLib.INSTANCE.ffi_uniffi_lib_rustbuffer_free(buf, status) - } - } - - @Suppress("TooGenericExceptionThrown") - fun asByteBuffer() = - this.data?.getByteBuffer(0, this.len.toLong())?.also { - it.order(ByteOrder.BIG_ENDIAN) - } -} - -/** - * The equivalent of the `*mut RustBuffer` type. - * Required for callbacks taking in an out pointer. - * - * Size is the sum of all values in the struct. - */ -class RustBufferByReference : ByReference(16) { - /** - * Set the pointed-to `RustBuffer` to the given value. - */ - fun setValue(value: RustBuffer.ByValue) { - // NOTE: The offsets are as they are in the C-like struct. - val pointer = getPointer() - pointer.setLong(0, value.capacity) - pointer.setLong(8, value.len) - pointer.setPointer(16, value.data) - } - - /** - * Get a `RustBuffer.ByValue` from this reference. - */ - fun getValue(): RustBuffer.ByValue { - val pointer = getPointer() - val value = RustBuffer.ByValue() - value.writeField("capacity", pointer.getLong(0)) - value.writeField("len", pointer.getLong(8)) - value.writeField("data", pointer.getLong(16)) - - return value - } -} - -// This is a helper for safely passing byte references into the rust code. -// It's not actually used at the moment, because there aren't many things that you -// can take a direct pointer to in the JVM, and if we're going to copy something -// then we might as well copy it into a `RustBuffer`. But it's here for API -// completeness. - -@Structure.FieldOrder("len", "data") -open class ForeignBytes : Structure() { - @JvmField var len: Int = 0 - @JvmField var data: Pointer? = null - - class ByValue : ForeignBytes(), Structure.ByValue -} -// The FfiConverter interface handles converter types to and from the FFI -// -// All implementing objects should be public to support external types. When a -// type is external we need to import it's FfiConverter. -public interface FfiConverter { - // Convert an FFI type to a Kotlin type - fun lift(value: FfiType): KotlinType - - // Convert an Kotlin type to an FFI type - fun lower(value: KotlinType): FfiType - - // Read a Kotlin type from a `ByteBuffer` - fun read(buf: ByteBuffer): KotlinType - - // Calculate bytes to allocate when creating a `RustBuffer` - // - // This must return at least as many bytes as the write() function will - // write. It can return more bytes than needed, for example when writing - // Strings we can't know the exact bytes needed until we the UTF-8 - // encoding, so we pessimistically allocate the largest size possible (3 - // bytes per codepoint). Allocating extra bytes is not really a big deal - // because the `RustBuffer` is short-lived. - fun allocationSize(value: KotlinType): ULong - - // Write a Kotlin type to a `ByteBuffer` - fun write(value: KotlinType, buf: ByteBuffer) - - // Lower a value into a `RustBuffer` - // - // This method lowers a value into a `RustBuffer` rather than the normal - // FfiType. It's used by the callback interface code. Callback interface - // returns are always serialized into a `RustBuffer` regardless of their - // normal FFI type. - fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue { - val rbuf = RustBuffer.alloc(allocationSize(value)) - try { - val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also { - it.order(ByteOrder.BIG_ENDIAN) - } - write(value, bbuf) - rbuf.writeField("len", bbuf.position().toLong()) - return rbuf - } catch (e: Throwable) { - RustBuffer.free(rbuf) - throw e - } - } - - // Lift a value from a `RustBuffer`. - // - // This here mostly because of the symmetry with `lowerIntoRustBuffer()`. - // It's currently only used by the `FfiConverterRustBuffer` class below. - fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType { - val byteBuf = rbuf.asByteBuffer()!! - try { - val item = read(byteBuf) - if (byteBuf.hasRemaining()) { - throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!") - } - return item - } finally { - RustBuffer.free(rbuf) - } - } -} - -// FfiConverter that uses `RustBuffer` as the FfiType -public interface FfiConverterRustBuffer: FfiConverter { - override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value) - override fun lower(value: KotlinType) = lowerIntoRustBuffer(value) -} -// A handful of classes and functions to support the generated data structures. -// This would be a good candidate for isolating in its own ffi-support lib. - -internal const val UNIFFI_CALL_SUCCESS = 0.toByte() -internal const val UNIFFI_CALL_ERROR = 1.toByte() -internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte() - -@Structure.FieldOrder("code", "error_buf") -internal open class UniffiRustCallStatus : Structure() { - @JvmField var code: Byte = 0 - @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue() - - class ByValue: UniffiRustCallStatus(), Structure.ByValue - - fun isSuccess(): Boolean { - return code == UNIFFI_CALL_SUCCESS - } - - fun isError(): Boolean { - return code == UNIFFI_CALL_ERROR - } - - fun isPanic(): Boolean { - return code == UNIFFI_CALL_UNEXPECTED_ERROR - } - - companion object { - fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue { - val callStatus = UniffiRustCallStatus.ByValue() - callStatus.code = code - callStatus.error_buf = errorBuf - return callStatus - } - } -} - -class InternalException(message: String) : kotlin.Exception(message) - -// Each top-level error class has a companion object that can lift the error from the call status's rust buffer -interface UniffiRustCallStatusErrorHandler { - fun lift(error_buf: RustBuffer.ByValue): E; -} - -// Helpers for calling Rust -// In practice we usually need to be synchronized to call this safely, so it doesn't -// synchronize itself - -// Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err -private inline fun uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler, callback: (UniffiRustCallStatus) -> U): U { - var status = UniffiRustCallStatus() - val return_value = callback(status) - uniffiCheckCallStatus(errorHandler, status) - return return_value -} - -// Check UniffiRustCallStatus and throw an error if the call wasn't successful -private fun uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler, status: UniffiRustCallStatus) { - if (status.isSuccess()) { - return - } else if (status.isError()) { - throw errorHandler.lift(status.error_buf) - } else if (status.isPanic()) { - // when the rust code sees a panic, it tries to construct a rustbuffer - // with the message. but if that code panics, then it just sends back - // an empty buffer. - if (status.error_buf.len > 0) { - throw InternalException(FfiConverterString.lift(status.error_buf)) - } else { - throw InternalException("Rust panic") - } - } else { - throw InternalException("Unknown rust call status: $status.code") - } -} - -// UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR -object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler { - override fun lift(error_buf: RustBuffer.ByValue): InternalException { - RustBuffer.free(error_buf) - return InternalException("Unexpected CALL_ERROR") - } -} - -// Call a rust function that returns a plain value -private inline fun uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U { - return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback) -} - -internal inline fun uniffiTraitInterfaceCall( - callStatus: UniffiRustCallStatus, - makeCall: () -> T, - writeReturn: (T) -> Unit, -) { - try { - writeReturn(makeCall()) - } catch(e: kotlin.Exception) { - callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR - callStatus.error_buf = FfiConverterString.lower(e.toString()) - } -} - -internal inline fun uniffiTraitInterfaceCallWithError( - callStatus: UniffiRustCallStatus, - makeCall: () -> T, - writeReturn: (T) -> Unit, - lowerError: (E) -> RustBuffer.ByValue -) { - try { - writeReturn(makeCall()) - } catch(e: kotlin.Exception) { - if (e is E) { - callStatus.code = UNIFFI_CALL_ERROR - callStatus.error_buf = lowerError(e) - } else { - callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR - callStatus.error_buf = FfiConverterString.lower(e.toString()) - } - } -} -// Map handles to objects -// -// This is used pass an opaque 64-bit handle representing a foreign object to the Rust code. -internal class UniffiHandleMap { - private val map = ConcurrentHashMap() - private val counter = java.util.concurrent.atomic.AtomicLong(0) - - val size: Int - get() = map.size - - // Insert a new object into the handle map and get a handle for it - fun insert(obj: T): Long { - val handle = counter.getAndAdd(1) - map.put(handle, obj) - return handle - } - - // Get an object from the handle map - fun get(handle: Long): T { - return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle") - } - - // Remove an entry from the handlemap and get the Kotlin object back - fun remove(handle: Long): T { - return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle") - } -} - -// Contains loading, initialization code, -// and the FFI Function declarations in a com.sun.jna.Library. -@Synchronized -private fun findLibraryName(componentName: String): String { - val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride") - if (libOverride != null) { - return libOverride - } - return "uniffi_lib" -} - -private inline fun loadIndirect( - componentName: String -): Lib { - return Native.load(findLibraryName(componentName), Lib::class.java) -} - -// Define FFI callback types -internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback { - fun callback(`data`: Long,`pollResult`: Byte,) -} -internal interface UniffiForeignFutureFree : com.sun.jna.Callback { - fun callback(`handle`: Long,) -} -internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback { - fun callback(`handle`: Long,) -} -@Structure.FieldOrder("handle", "free") -internal open class UniffiForeignFuture( - @JvmField internal var `handle`: Long = 0.toLong(), - @JvmField internal var `free`: UniffiForeignFutureFree? = null, -) : Structure() { - class UniffiByValue( - `handle`: Long = 0.toLong(), - `free`: UniffiForeignFutureFree? = null, - ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFuture) { - `handle` = other.`handle` - `free` = other.`free` - } - -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU8( - @JvmField internal var `returnValue`: Byte = 0.toByte(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Byte = 0.toByte(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI8( - @JvmField internal var `returnValue`: Byte = 0.toByte(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Byte = 0.toByte(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU16( - @JvmField internal var `returnValue`: Short = 0.toShort(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Short = 0.toShort(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI16( - @JvmField internal var `returnValue`: Short = 0.toShort(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Short = 0.toShort(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU32( - @JvmField internal var `returnValue`: Int = 0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Int = 0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI32( - @JvmField internal var `returnValue`: Int = 0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Int = 0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU64( - @JvmField internal var `returnValue`: Long = 0.toLong(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Long = 0.toLong(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI64( - @JvmField internal var `returnValue`: Long = 0.toLong(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Long = 0.toLong(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructF32( - @JvmField internal var `returnValue`: Float = 0.0f, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Float = 0.0f, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructF64( - @JvmField internal var `returnValue`: Double = 0.0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Double = 0.0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructPointer( - @JvmField internal var `returnValue`: Pointer = Pointer.NULL, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Pointer = Pointer.NULL, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructRustBuffer( - @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,) -} -@Structure.FieldOrder("callStatus") -internal open class UniffiForeignFutureStructVoid( - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) { - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,) -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// A JNA Library to expose the extern-C FFI definitions. -// This is an implementation detail which will be called internally by the public API. - -internal interface UniffiLib : Library { - companion object { - internal val INSTANCE: UniffiLib by lazy { - loadIndirect(componentName = "uniffi_lib") - .also { lib: UniffiLib -> - uniffiCheckContractApiVersion(lib) - uniffiCheckApiChecksums(lib) - } - } - - } - - fun uniffi_uniffi_lib_fn_func_hello(uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun ffi_uniffi_lib_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_uniffi_lib_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i8(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_uniffi_lib_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Short - fun ffi_uniffi_lib_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i16(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Short - fun ffi_uniffi_lib_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Int - fun ffi_uniffi_lib_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Int - fun ffi_uniffi_lib_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_u64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_u64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Long - fun ffi_uniffi_lib_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_i64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_i64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Long - fun ffi_uniffi_lib_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_f32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_f32(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Float - fun ffi_uniffi_lib_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_f64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_f64(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Double - fun ffi_uniffi_lib_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_pointer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_pointer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun ffi_uniffi_lib_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_rust_buffer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_rust_buffer(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_uniffi_lib_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_cancel_void(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_free_void(`handle`: Long, - ): Unit - fun ffi_uniffi_lib_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun uniffi_uniffi_lib_checksum_func_hello( - ): Short - fun ffi_uniffi_lib_uniffi_contract_version( - ): Int - -} - -private fun uniffiCheckContractApiVersion(lib: UniffiLib) { - // Get the bindings contract version from our ComponentInterface - val bindings_contract_version = 26 - // Get the scaffolding contract version by calling the into the dylib - val scaffolding_contract_version = lib.ffi_uniffi_lib_uniffi_contract_version() - if (bindings_contract_version != scaffolding_contract_version) { - throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project") - } -} - -@Suppress("UNUSED_PARAMETER") -private fun uniffiCheckApiChecksums(lib: UniffiLib) { - if (lib.uniffi_uniffi_lib_checksum_func_hello() != 40685.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } -} - -// Async support - -// Public interface members begin here. - - -// Interface implemented by anything that can contain an object reference. -// -// Such types expose a `destroy()` method that must be called to cleanly -// dispose of the contained objects. Failure to call this method may result -// in memory leaks. -// -// The easiest way to ensure this method is called is to use the `.use` -// helper method to execute a block and destroy the object at the end. -interface Disposable { - fun destroy() - companion object { - fun destroy(vararg args: Any?) { - args.filterIsInstance() - .forEach(Disposable::destroy) - } - } -} - -inline fun T.use(block: (T) -> R) = - try { - block(this) - } finally { - try { - // N.B. our implementation is on the nullable type `Disposable?`. - this?.destroy() - } catch (e: Throwable) { - // swallow - } - } - -/** Used to instantiate an interface without an actual pointer, for fakes in tests, mostly. */ -object NoPointer - -public object FfiConverterString: FfiConverter { - // Note: we don't inherit from FfiConverterRustBuffer, because we use a - // special encoding when lowering/lifting. We can use `RustBuffer.len` to - // store our length and avoid writing it out to the buffer. - override fun lift(value: RustBuffer.ByValue): String { - try { - val byteArr = ByteArray(value.len.toInt()) - value.asByteBuffer()!!.get(byteArr) - return byteArr.toString(Charsets.UTF_8) - } finally { - RustBuffer.free(value) - } - } - - override fun read(buf: ByteBuffer): String { - val len = buf.getInt() - val byteArr = ByteArray(len) - buf.get(byteArr) - return byteArr.toString(Charsets.UTF_8) - } - - fun toUtf8(value: String): ByteBuffer { - // Make sure we don't have invalid UTF-16, check for lone surrogates. - return Charsets.UTF_8.newEncoder().run { - onMalformedInput(CodingErrorAction.REPORT) - encode(CharBuffer.wrap(value)) - } - } - - override fun lower(value: String): RustBuffer.ByValue { - val byteBuf = toUtf8(value) - // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us - // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`. - val rbuf = RustBuffer.alloc(byteBuf.limit().toULong()) - rbuf.asByteBuffer()!!.put(byteBuf) - return rbuf - } - - // We aren't sure exactly how many bytes our string will be once it's UTF-8 - // encoded. Allocate 3 bytes per UTF-16 code unit which will always be - // enough. - override fun allocationSize(value: String): ULong { - val sizeForLength = 4UL - val sizeForString = value.length.toULong() * 3UL - return sizeForLength + sizeForString - } - - override fun write(value: String, buf: ByteBuffer) { - val byteBuf = toUtf8(value) - buf.putInt(byteBuf.limit()) - buf.put(byteBuf) - } -} - -public object FfiConverterByteArray: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): ByteArray { - val len = buf.getInt() - val byteArr = ByteArray(len) - buf.get(byteArr) - return byteArr - } - override fun allocationSize(value: ByteArray): ULong { - return 4UL + value.size.toULong() - } - override fun write(value: ByteArray, buf: ByteBuffer) { - buf.putInt(value.size) - buf.put(value) - } -} fun `hello`(): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_uniffi_lib_fn_func_hello( - _status) -} - ) - } - - - diff --git a/wrappers/kotlin/generate.bat b/wrappers/kotlin/generate.bat index 99fd4a4e8..4dfdeb2bb 100644 --- a/wrappers/kotlin/generate.bat +++ b/wrappers/kotlin/generate.bat @@ -1,6 +1,9 @@ +cd "..\..\uniffi\devolutions-crypto-uniffi\" +cargo build --release -cargo run -p uniffi-bindgen generate --library "..\..\target\release\uniffi_lib.dll" --language kotlin -o output --no-format - - +cd "../uniffi-bindgen" +cargo run -p uniffi-bindgen generate --library "..\..\target\release\devolutions_crypto_uniffi.dll" --language kotlin -o ../../wrappers/kotlin/lib/src/main/kotlin --no-format +cd "../../" +copy ".\target\release\devolutions_crypto_uniffi.dll" ".\wrappers\kotlin\lib\win32-amd64\" diff --git a/wrappers/kotlin/gradle/libs.versions.toml b/wrappers/kotlin/gradle/libs.versions.toml new file mode 100644 index 000000000..43c157a91 --- /dev/null +++ b/wrappers/kotlin/gradle/libs.versions.toml @@ -0,0 +1,17 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format + +[versions] +commons-math3 = "3.6.1" +guava = "33.2.1-jre" +junit-jupiter-engine = "5.10.3" +jna = "5.12.0" + +[libraries] +commons-math3 = { module = "org.apache.commons:commons-math3", version.ref = "commons-math3" } +guava = { module = "com.google.guava:guava", version.ref = "guava" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter-engine" } +jna = { module = "net.java.dev.jna:jna", version.ref = "jna" } + +[plugins] +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version = "2.0.0" } diff --git a/wrappers/kotlin/gradle/wrapper/gradle-wrapper.jar b/wrappers/kotlin/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/wrappers/kotlin/gradle/wrapper/gradle-wrapper.properties b/wrappers/kotlin/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..df97d72b8 --- /dev/null +++ b/wrappers/kotlin/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/wrappers/kotlin/gradlew b/wrappers/kotlin/gradlew new file mode 100644 index 000000000..f5feea6d6 --- /dev/null +++ b/wrappers/kotlin/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/wrappers/kotlin/gradlew.bat b/wrappers/kotlin/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/wrappers/kotlin/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/wrappers/kotlin/jniLibs/arm64-v8a/libuniffi_lib.so b/wrappers/kotlin/jniLibs/arm64-v8a/libuniffi_lib.so deleted file mode 100755 index 1533d40070afbdd1e502706acd93b1e286bfe1c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353168 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
eH9L+w0kK^Y%OLz3&&Zzgqg{OPYE69XoRN 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%0A$a}+nFqEY`Mhjai%%IOmd8Tfx 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 diff --git a/wrappers/kotlin/jniLibs/x86/libuniffi_lib.so b/wrappers/kotlin/jniLibs/x86/libuniffi_lib.so deleted file mode 100755 index d9789af216a6938bd6a17017baf2ccceb90328b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290612 zcmeFa34Bw<`ae8#mYj2vH0hEq&=wAR!P1RVN^t?92#SaxE?2Y-O-dteQj?ZNuJ@Kj zL^e@Tk-C5)pdgDPZXl@0q9~}Kctt@)#l2V2i;Cp^&N-7NR8)TV-rxWKzVD~e;XC{C z%*->-JTqtd_tIg5DWxRx6NyM7u0nX8xK1*H3W-jvB#WezHpBuS78Wu6k$@Q%lbJ|* zSdHKAag;D)

iM|I?*3-Rgh1q5p}6-RWQXeqgIAndn{@=_0=W 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%0DMMW749Q^up>T$FD#&KXlL=pu@w~?{$A_3L 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¥fb~ziyGrRZh>*ceSPs*S;4}&oJ@kya&C_nF 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 A=l}o! diff --git a/wrappers/kotlin/lib/build.gradle.kts b/wrappers/kotlin/lib/build.gradle.kts new file mode 100644 index 000000000..76b63bfba --- /dev/null +++ b/wrappers/kotlin/lib/build.gradle.kts @@ -0,0 +1,49 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Kotlin library project to get you started. + * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.10.2/userguide/building_java_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the org.jetbrains.kotlin.jvm Plugin to add support for Kotlin. + alias(libs.plugins.kotlin.jvm) + + // Apply the java-library plugin for API and implementation separation. + `java-library` +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use the Kotlin JUnit 5 integration. + testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") + + // Use the JUnit 5 integration. + testImplementation(libs.junit.jupiter.engine) + + testRuntimeOnly("org.junit.platform:junit-platform-launcher") + + // This dependency is exported to consumers, that is to say found on their compile classpath. + api(libs.commons.math3) + + // This dependency is used internally, and not exposed to consumers on their own compile classpath. + implementation(libs.guava) + + implementation(libs.jna) +} + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +tasks.named("test") { + // Use JUnit Platform for unit tests. + useJUnitPlatform() +} diff --git a/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt b/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt new file mode 100644 index 000000000..2bbb1a3a3 --- /dev/null +++ b/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt @@ -0,0 +1,3446 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +@file:Suppress("NAME_SHADOWING") + +package org.devolutions.crypto + +// Common helper code. +// +// Ideally this would live in a separate .kt file where it can be unittested etc +// in isolation, and perhaps even published as a re-useable package. +// +// However, it's important that the details of how this helper code works (e.g. the +// way that different builtin types are passed across the FFI) exactly match what's +// expected by the Rust code on the other side of the interface. In practice right +// now that means coming from the exact some version of `uniffi` that was used to +// compile the Rust component. The easiest way to ensure this is to bundle the Kotlin +// helpers directly inline like we're doing here. + +import com.sun.jna.Library +import com.sun.jna.IntegerType +import com.sun.jna.Native +import com.sun.jna.Pointer +import com.sun.jna.Structure +import com.sun.jna.Callback +import com.sun.jna.ptr.* +import java.nio.ByteBuffer +import java.nio.ByteOrder +import java.nio.CharBuffer +import java.nio.charset.CodingErrorAction +import java.util.concurrent.atomic.AtomicLong +import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.atomic.AtomicBoolean + +// This is a helper for safely working with byte buffers returned from the Rust code. +// A rust-owned buffer is represented by its capacity, its current length, and a +// pointer to the underlying data. + +@Structure.FieldOrder("capacity", "len", "data") +open class RustBuffer : Structure() { + // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values. + // When dealing with these fields, make sure to call `toULong()`. + @JvmField var capacity: Long = 0 + @JvmField var len: Long = 0 + @JvmField var data: Pointer? = null + + class ByValue: RustBuffer(), Structure.ByValue + class ByReference: RustBuffer(), Structure.ByReference + + internal fun setValue(other: RustBuffer) { + capacity = other.capacity + len = other.len + data = other.data + } + + companion object { + internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status -> + // Note: need to convert the size to a `Long` value to make this work with JVM. + UniffiLib.INSTANCE.ffi_devolutions_crypto_uniffi_rustbuffer_alloc(size.toLong(), status) + }.also { + if(it.data == null) { + throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})") + } + } + + internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue { + var buf = RustBuffer.ByValue() + buf.capacity = capacity.toLong() + buf.len = len.toLong() + buf.data = data + return buf + } + + internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status -> + UniffiLib.INSTANCE.ffi_devolutions_crypto_uniffi_rustbuffer_free(buf, status) + } + } + + @Suppress("TooGenericExceptionThrown") + fun asByteBuffer() = + this.data?.getByteBuffer(0, this.len.toLong())?.also { + it.order(ByteOrder.BIG_ENDIAN) + } +} + +/** + * The equivalent of the `*mut RustBuffer` type. + * Required for callbacks taking in an out pointer. + * + * Size is the sum of all values in the struct. + */ +class RustBufferByReference : ByReference(16) { + /** + * Set the pointed-to `RustBuffer` to the given value. + */ + fun setValue(value: RustBuffer.ByValue) { + // NOTE: The offsets are as they are in the C-like struct. + val pointer = getPointer() + pointer.setLong(0, value.capacity) + pointer.setLong(8, value.len) + pointer.setPointer(16, value.data) + } + + /** + * Get a `RustBuffer.ByValue` from this reference. + */ + fun getValue(): RustBuffer.ByValue { + val pointer = getPointer() + val value = RustBuffer.ByValue() + value.writeField("capacity", pointer.getLong(0)) + value.writeField("len", pointer.getLong(8)) + value.writeField("data", pointer.getLong(16)) + + return value + } +} + +// This is a helper for safely passing byte references into the rust code. +// It's not actually used at the moment, because there aren't many things that you +// can take a direct pointer to in the JVM, and if we're going to copy something +// then we might as well copy it into a `RustBuffer`. But it's here for API +// completeness. + +@Structure.FieldOrder("len", "data") +open class ForeignBytes : Structure() { + @JvmField var len: Int = 0 + @JvmField var data: Pointer? = null + + class ByValue : ForeignBytes(), Structure.ByValue +} +// The FfiConverter interface handles converter types to and from the FFI +// +// All implementing objects should be public to support external types. When a +// type is external we need to import it's FfiConverter. +public interface FfiConverter { + // Convert an FFI type to a Kotlin type + fun lift(value: FfiType): KotlinType + + // Convert an Kotlin type to an FFI type + fun lower(value: KotlinType): FfiType + + // Read a Kotlin type from a `ByteBuffer` + fun read(buf: ByteBuffer): KotlinType + + // Calculate bytes to allocate when creating a `RustBuffer` + // + // This must return at least as many bytes as the write() function will + // write. It can return more bytes than needed, for example when writing + // Strings we can't know the exact bytes needed until we the UTF-8 + // encoding, so we pessimistically allocate the largest size possible (3 + // bytes per codepoint). Allocating extra bytes is not really a big deal + // because the `RustBuffer` is short-lived. + fun allocationSize(value: KotlinType): ULong + + // Write a Kotlin type to a `ByteBuffer` + fun write(value: KotlinType, buf: ByteBuffer) + + // Lower a value into a `RustBuffer` + // + // This method lowers a value into a `RustBuffer` rather than the normal + // FfiType. It's used by the callback interface code. Callback interface + // returns are always serialized into a `RustBuffer` regardless of their + // normal FFI type. + fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue { + val rbuf = RustBuffer.alloc(allocationSize(value)) + try { + val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also { + it.order(ByteOrder.BIG_ENDIAN) + } + write(value, bbuf) + rbuf.writeField("len", bbuf.position().toLong()) + return rbuf + } catch (e: Throwable) { + RustBuffer.free(rbuf) + throw e + } + } + + // Lift a value from a `RustBuffer`. + // + // This here mostly because of the symmetry with `lowerIntoRustBuffer()`. + // It's currently only used by the `FfiConverterRustBuffer` class below. + fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType { + val byteBuf = rbuf.asByteBuffer()!! + try { + val item = read(byteBuf) + if (byteBuf.hasRemaining()) { + throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!") + } + return item + } finally { + RustBuffer.free(rbuf) + } + } +} + +// FfiConverter that uses `RustBuffer` as the FfiType +public interface FfiConverterRustBuffer: FfiConverter { + override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value) + override fun lower(value: KotlinType) = lowerIntoRustBuffer(value) +} +// A handful of classes and functions to support the generated data structures. +// This would be a good candidate for isolating in its own ffi-support lib. + +internal const val UNIFFI_CALL_SUCCESS = 0.toByte() +internal const val UNIFFI_CALL_ERROR = 1.toByte() +internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte() + +@Structure.FieldOrder("code", "error_buf") +internal open class UniffiRustCallStatus : Structure() { + @JvmField var code: Byte = 0 + @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue() + + class ByValue: UniffiRustCallStatus(), Structure.ByValue + + fun isSuccess(): Boolean { + return code == UNIFFI_CALL_SUCCESS + } + + fun isError(): Boolean { + return code == UNIFFI_CALL_ERROR + } + + fun isPanic(): Boolean { + return code == UNIFFI_CALL_UNEXPECTED_ERROR + } + + companion object { + fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue { + val callStatus = UniffiRustCallStatus.ByValue() + callStatus.code = code + callStatus.error_buf = errorBuf + return callStatus + } + } +} + +class InternalException(message: String) : kotlin.Exception(message) + +// Each top-level error class has a companion object that can lift the error from the call status's rust buffer +interface UniffiRustCallStatusErrorHandler { + fun lift(error_buf: RustBuffer.ByValue): E; +} + +// Helpers for calling Rust +// In practice we usually need to be synchronized to call this safely, so it doesn't +// synchronize itself + +// Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err +private inline fun uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler, callback: (UniffiRustCallStatus) -> U): U { + var status = UniffiRustCallStatus() + val return_value = callback(status) + uniffiCheckCallStatus(errorHandler, status) + return return_value +} + +// Check UniffiRustCallStatus and throw an error if the call wasn't successful +private fun uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler, status: UniffiRustCallStatus) { + if (status.isSuccess()) { + return + } else if (status.isError()) { + throw errorHandler.lift(status.error_buf) + } else if (status.isPanic()) { + // when the rust code sees a panic, it tries to construct a rustbuffer + // with the message. but if that code panics, then it just sends back + // an empty buffer. + if (status.error_buf.len > 0) { + throw InternalException(FfiConverterString.lift(status.error_buf)) + } else { + throw InternalException("Rust panic") + } + } else { + throw InternalException("Unknown rust call status: $status.code") + } +} + +// UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR +object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler { + override fun lift(error_buf: RustBuffer.ByValue): InternalException { + RustBuffer.free(error_buf) + return InternalException("Unexpected CALL_ERROR") + } +} + +// Call a rust function that returns a plain value +private inline fun uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U { + return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback) +} + +internal inline fun uniffiTraitInterfaceCall( + callStatus: UniffiRustCallStatus, + makeCall: () -> T, + writeReturn: (T) -> Unit, +) { + try { + writeReturn(makeCall()) + } catch(e: kotlin.Exception) { + callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR + callStatus.error_buf = FfiConverterString.lower(e.toString()) + } +} + +internal inline fun uniffiTraitInterfaceCallWithError( + callStatus: UniffiRustCallStatus, + makeCall: () -> T, + writeReturn: (T) -> Unit, + lowerError: (E) -> RustBuffer.ByValue +) { + try { + writeReturn(makeCall()) + } catch(e: kotlin.Exception) { + if (e is E) { + callStatus.code = UNIFFI_CALL_ERROR + callStatus.error_buf = lowerError(e) + } else { + callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR + callStatus.error_buf = FfiConverterString.lower(e.toString()) + } + } +} +// Map handles to objects +// +// This is used pass an opaque 64-bit handle representing a foreign object to the Rust code. +internal class UniffiHandleMap { + private val map = ConcurrentHashMap() + private val counter = java.util.concurrent.atomic.AtomicLong(0) + + val size: Int + get() = map.size + + // Insert a new object into the handle map and get a handle for it + fun insert(obj: T): Long { + val handle = counter.getAndAdd(1) + map.put(handle, obj) + return handle + } + + // Get an object from the handle map + fun get(handle: Long): T { + return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle") + } + + // Remove an entry from the handlemap and get the Kotlin object back + fun remove(handle: Long): T { + return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle") + } +} + +// Contains loading, initialization code, +// and the FFI Function declarations in a com.sun.jna.Library. +@Synchronized +private fun findLibraryName(componentName: String): String { + val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride") + if (libOverride != null) { + return libOverride + } + return "devolutions_crypto_uniffi" +} + +private inline fun loadIndirect( + componentName: String +): Lib { + return Native.load(findLibraryName(componentName), Lib::class.java) +} + +// Define FFI callback types +internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback { + fun callback(`data`: Long,`pollResult`: Byte,) +} +internal interface UniffiForeignFutureFree : com.sun.jna.Callback { + fun callback(`handle`: Long,) +} +internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback { + fun callback(`handle`: Long,) +} +@Structure.FieldOrder("handle", "free") +internal open class UniffiForeignFuture( + @JvmField internal var `handle`: Long = 0.toLong(), + @JvmField internal var `free`: UniffiForeignFutureFree? = null, +) : Structure() { + class UniffiByValue( + `handle`: Long = 0.toLong(), + `free`: UniffiForeignFutureFree? = null, + ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFuture) { + `handle` = other.`handle` + `free` = other.`free` + } + +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU8( + @JvmField internal var `returnValue`: Byte = 0.toByte(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Byte = 0.toByte(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI8( + @JvmField internal var `returnValue`: Byte = 0.toByte(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Byte = 0.toByte(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU16( + @JvmField internal var `returnValue`: Short = 0.toShort(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Short = 0.toShort(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI16( + @JvmField internal var `returnValue`: Short = 0.toShort(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Short = 0.toShort(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU32( + @JvmField internal var `returnValue`: Int = 0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Int = 0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI32( + @JvmField internal var `returnValue`: Int = 0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Int = 0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructU64( + @JvmField internal var `returnValue`: Long = 0.toLong(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Long = 0.toLong(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructI64( + @JvmField internal var `returnValue`: Long = 0.toLong(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Long = 0.toLong(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructF32( + @JvmField internal var `returnValue`: Float = 0.0f, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Float = 0.0f, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructF64( + @JvmField internal var `returnValue`: Double = 0.0, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Double = 0.0, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructPointer( + @JvmField internal var `returnValue`: Pointer = Pointer.NULL, + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: Pointer = Pointer.NULL, + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,) +} +@Structure.FieldOrder("returnValue", "callStatus") +internal open class UniffiForeignFutureStructRustBuffer( + @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) { + `returnValue` = other.`returnValue` + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,) +} +@Structure.FieldOrder("callStatus") +internal open class UniffiForeignFutureStructVoid( + @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), +) : Structure() { + class UniffiByValue( + `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), + ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue + + internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) { + `callStatus` = other.`callStatus` + } + +} +internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { + fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,) +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// A JNA Library to expose the extern-C FFI definitions. +// This is an implementation detail which will be called internally by the public API. + +internal interface UniffiLib : Library { + companion object { + internal val INSTANCE: UniffiLib by lazy { + loadIndirect(componentName = "devolutions_crypto") + .also { lib: UniffiLib -> + uniffiCheckContractApiVersion(lib) + uniffiCheckApiChecksums(lib) + } + } + + // The Cleaner for the whole library + internal val CLEANER: UniffiCleaner by lazy { + UniffiCleaner.create() + } + } + + fun uniffi_devolutions_crypto_uniffi_fn_clone_argon2parameters(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_free_argon2parameters(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parameters_new_from_bytes(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parameters_get_bytes(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_clone_argon2parametersbuilder(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_free_argon2parametersbuilder(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parametersbuilder_new(uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_associated_data(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_build(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_dc_version(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_iterations(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_lanes(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_length(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_memory(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_salt(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_secret_key(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_variant(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_version(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_clone_keypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_free_keypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_base64_decode(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_base64_decode_url(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_base64_encode(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_base64_encode_url(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_argon2(`key`: RustBuffer.ByValue,`parameters`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2(`key`: RustBuffer.ByValue,`salt`: RustBuffer.ByValue,`iterations`: RustBuffer.ByValue,`length`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_key(`length`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key(`nShares`: Byte,`threshold`: Byte,`length`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_func_hash_password(`password`: RustBuffer.ByValue,`iterations`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_join_shares(`shares`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_mix_key_exchange(`privateKey`: RustBuffer.ByValue,`publicKey`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_sign(`data`: RustBuffer.ByValue,`keypair`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_validate_header(`data`: RustBuffer.ByValue,`dataType`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun uniffi_devolutions_crypto_uniffi_fn_func_verify_password(`password`: RustBuffer.ByValue,`hash`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun uniffi_devolutions_crypto_uniffi_fn_func_verify_signature(`data`: RustBuffer.ByValue,`publicKey`: RustBuffer.ByValue,`signature`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_devolutions_crypto_uniffi_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_devolutions_crypto_uniffi_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_devolutions_crypto_uniffi_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun ffi_devolutions_crypto_uniffi_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_devolutions_crypto_uniffi_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u8(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_u8(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_devolutions_crypto_uniffi_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i8(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_i8(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Byte + fun ffi_devolutions_crypto_uniffi_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u16(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_u16(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Short + fun ffi_devolutions_crypto_uniffi_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i16(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_i16(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Short + fun ffi_devolutions_crypto_uniffi_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u32(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_u32(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Int + fun ffi_devolutions_crypto_uniffi_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i32(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_i32(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Int + fun ffi_devolutions_crypto_uniffi_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u64(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_u64(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Long + fun ffi_devolutions_crypto_uniffi_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i64(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_i64(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Long + fun ffi_devolutions_crypto_uniffi_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_f32(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_f32(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Float + fun ffi_devolutions_crypto_uniffi_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_f64(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_f64(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Double + fun ffi_devolutions_crypto_uniffi_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_pointer(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_pointer(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun ffi_devolutions_crypto_uniffi_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_rust_buffer(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_rust_buffer(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun ffi_devolutions_crypto_uniffi_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_cancel_void(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_free_void(`handle`: Long, + ): Unit + fun ffi_devolutions_crypto_uniffi_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, + ): Unit + fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode_url( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric_with_aad( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_with_aad( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_argon2( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_key( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_hash_password( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_join_shares( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_mix_key_exchange( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_sign( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_validate_header( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_verify_password( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_verify_signature( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parameters_get_bytes( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_associated_data( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_build( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_dc_version( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_iterations( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_lanes( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_length( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_memory( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_salt( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_secret_key( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_variant( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_version( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parameters_new_from_bytes( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parametersbuilder_new( + ): Short + fun ffi_devolutions_crypto_uniffi_uniffi_contract_version( + ): Int + +} + +private fun uniffiCheckContractApiVersion(lib: UniffiLib) { + // Get the bindings contract version from our ComponentInterface + val bindings_contract_version = 26 + // Get the scaffolding contract version by calling the into the dylib + val scaffolding_contract_version = lib.ffi_devolutions_crypto_uniffi_uniffi_contract_version() + if (bindings_contract_version != scaffolding_contract_version) { + throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project") + } +} + +@Suppress("UNUSED_PARAMETER") +private fun uniffiCheckApiChecksums(lib: UniffiLib) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt() != 21235.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad() != 56466.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode() != 64610.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url() != 15029.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode() != 61134.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode_url() != 31513.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt() != 41817.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric() != 47124.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric_with_aad() != 9987.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_with_aad() != 59734.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_argon2() != 60451.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2() != 27537.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric() != 44426.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad() != 37507.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_key() != 46119.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair() != 3523.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key() != 38176.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair() != 3830.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_hash_password() != 4426.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_join_shares() != 64867.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_mix_key_exchange() != 52615.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_sign() != 6663.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_validate_header() != 50316.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_verify_password() != 39819.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_verify_signature() != 35870.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parameters_get_bytes() != 51334.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_associated_data() != 20223.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_build() != 6812.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_dc_version() != 40712.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_iterations() != 28254.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_lanes() != 3637.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_length() != 791.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_memory() != 14913.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_salt() != 59352.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_secret_key() != 38451.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_variant() != 50137.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_version() != 39743.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parameters_new_from_bytes() != 48784.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parametersbuilder_new() != 58740.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } +} + +// Async support + +// Public interface members begin here. + + +// Interface implemented by anything that can contain an object reference. +// +// Such types expose a `destroy()` method that must be called to cleanly +// dispose of the contained objects. Failure to call this method may result +// in memory leaks. +// +// The easiest way to ensure this method is called is to use the `.use` +// helper method to execute a block and destroy the object at the end. +interface Disposable { + fun destroy() + companion object { + fun destroy(vararg args: Any?) { + args.filterIsInstance() + .forEach(Disposable::destroy) + } + } +} + +inline fun T.use(block: (T) -> R) = + try { + block(this) + } finally { + try { + // N.B. our implementation is on the nullable type `Disposable?`. + this?.destroy() + } catch (e: Throwable) { + // swallow + } + } + +/** Used to instantiate an interface without an actual pointer, for fakes in tests, mostly. */ +object NoPointer + +public object FfiConverterUByte: FfiConverter { + override fun lift(value: Byte): UByte { + return value.toUByte() + } + + override fun read(buf: ByteBuffer): UByte { + return lift(buf.get()) + } + + override fun lower(value: UByte): Byte { + return value.toByte() + } + + override fun allocationSize(value: UByte) = 1UL + + override fun write(value: UByte, buf: ByteBuffer) { + buf.put(value.toByte()) + } +} + +public object FfiConverterUInt: FfiConverter { + override fun lift(value: Int): UInt { + return value.toUInt() + } + + override fun read(buf: ByteBuffer): UInt { + return lift(buf.getInt()) + } + + override fun lower(value: UInt): Int { + return value.toInt() + } + + override fun allocationSize(value: UInt) = 4UL + + override fun write(value: UInt, buf: ByteBuffer) { + buf.putInt(value.toInt()) + } +} + +public object FfiConverterULong: FfiConverter { + override fun lift(value: Long): ULong { + return value.toULong() + } + + override fun read(buf: ByteBuffer): ULong { + return lift(buf.getLong()) + } + + override fun lower(value: ULong): Long { + return value.toLong() + } + + override fun allocationSize(value: ULong) = 8UL + + override fun write(value: ULong, buf: ByteBuffer) { + buf.putLong(value.toLong()) + } +} + +public object FfiConverterBoolean: FfiConverter { + override fun lift(value: Byte): Boolean { + return value.toInt() != 0 + } + + override fun read(buf: ByteBuffer): Boolean { + return lift(buf.get()) + } + + override fun lower(value: Boolean): Byte { + return if (value) 1.toByte() else 0.toByte() + } + + override fun allocationSize(value: Boolean) = 1UL + + override fun write(value: Boolean, buf: ByteBuffer) { + buf.put(lower(value)) + } +} + +public object FfiConverterString: FfiConverter { + // Note: we don't inherit from FfiConverterRustBuffer, because we use a + // special encoding when lowering/lifting. We can use `RustBuffer.len` to + // store our length and avoid writing it out to the buffer. + override fun lift(value: RustBuffer.ByValue): String { + try { + val byteArr = ByteArray(value.len.toInt()) + value.asByteBuffer()!!.get(byteArr) + return byteArr.toString(Charsets.UTF_8) + } finally { + RustBuffer.free(value) + } + } + + override fun read(buf: ByteBuffer): String { + val len = buf.getInt() + val byteArr = ByteArray(len) + buf.get(byteArr) + return byteArr.toString(Charsets.UTF_8) + } + + fun toUtf8(value: String): ByteBuffer { + // Make sure we don't have invalid UTF-16, check for lone surrogates. + return Charsets.UTF_8.newEncoder().run { + onMalformedInput(CodingErrorAction.REPORT) + encode(CharBuffer.wrap(value)) + } + } + + override fun lower(value: String): RustBuffer.ByValue { + val byteBuf = toUtf8(value) + // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us + // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`. + val rbuf = RustBuffer.alloc(byteBuf.limit().toULong()) + rbuf.asByteBuffer()!!.put(byteBuf) + return rbuf + } + + // We aren't sure exactly how many bytes our string will be once it's UTF-8 + // encoded. Allocate 3 bytes per UTF-16 code unit which will always be + // enough. + override fun allocationSize(value: String): ULong { + val sizeForLength = 4UL + val sizeForString = value.length.toULong() * 3UL + return sizeForLength + sizeForString + } + + override fun write(value: String, buf: ByteBuffer) { + val byteBuf = toUtf8(value) + buf.putInt(byteBuf.limit()) + buf.put(byteBuf) + } +} + +public object FfiConverterByteArray: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): ByteArray { + val len = buf.getInt() + val byteArr = ByteArray(len) + buf.get(byteArr) + return byteArr + } + override fun allocationSize(value: ByteArray): ULong { + return 4UL + value.size.toULong() + } + override fun write(value: ByteArray, buf: ByteBuffer) { + buf.putInt(value.size) + buf.put(value) + } +} + + +// This template implements a class for working with a Rust struct via a Pointer/Arc +// to the live Rust struct on the other side of the FFI. +// +// Each instance implements core operations for working with the Rust `Arc` and the +// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. +// +// There's some subtlety here, because we have to be careful not to operate on a Rust +// struct after it has been dropped, and because we must expose a public API for freeing +// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: +// +// * Each instance holds an opaque pointer to the underlying Rust struct. +// Method calls need to read this pointer from the object's state and pass it in to +// the Rust FFI. +// +// * When an instance is no longer needed, its pointer should be passed to a +// special destructor function provided by the Rust FFI, which will drop the +// underlying Rust struct. +// +// * Given an instance, calling code is expected to call the special +// `destroy` method in order to free it after use, either by calling it explicitly +// or by using a higher-level helper like the `use` method. Failing to do so risks +// leaking the underlying Rust struct. +// +// * We can't assume that calling code will do the right thing, and must be prepared +// to handle Kotlin method calls executing concurrently with or even after a call to +// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. +// +// * We must never allow Rust code to operate on the underlying Rust struct after +// the destructor has been called, and must never call the destructor more than once. +// Doing so may trigger memory unsafety. +// +// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` +// is implemented to call the destructor when the Kotlin object becomes unreachable. +// This is done in a background thread. This is not a panacea, and client code should be aware that +// 1. the thread may starve if some there are objects that have poorly performing +// `drop` methods or do significant work in their `drop` methods. +// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, +// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). +// +// If we try to implement this with mutual exclusion on access to the pointer, there is the +// possibility of a race between a method call and a concurrent call to `destroy`: +// +// * Thread A starts a method call, reads the value of the pointer, but is interrupted +// before it can pass the pointer over the FFI to Rust. +// * Thread B calls `destroy` and frees the underlying Rust struct. +// * Thread A resumes, passing the already-read pointer value to Rust and triggering +// a use-after-free. +// +// One possible solution would be to use a `ReadWriteLock`, with each method call taking +// a read lock (and thus allowed to run concurrently) and the special `destroy` method +// taking a write lock (and thus blocking on live method calls). However, we aim not to +// generate methods with any hidden blocking semantics, and a `destroy` method that might +// block if called incorrectly seems to meet that bar. +// +// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track +// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` +// has been called. These are updated according to the following rules: +// +// * The initial value of the counter is 1, indicating a live object with no in-flight calls. +// The initial value for the flag is false. +// +// * At the start of each method call, we atomically check the counter. +// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. +// If it is nonzero them we atomically increment it by 1 and proceed with the method call. +// +// * At the end of each method call, we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// * When `destroy` is called, we atomically flip the flag from false to true. +// If the flag was already true we silently fail. +// Otherwise we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, +// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. +// +// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been +// called *and* all in-flight method calls have completed, avoiding violating any of the expectations +// of the underlying Rust code. +// +// This makes a cleaner a better alternative to _not_ calling `destroy()` as +// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` +// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner +// thread may be starved, and the app will leak memory. +// +// In this case, `destroy`ing manually may be a better solution. +// +// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects +// with Rust peers are reclaimed: +// +// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: +// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: +// 3. The memory is reclaimed when the process terminates. +// +// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 +// + + +// The cleaner interface for Object finalization code to run. +// This is the entry point to any implementation that we're using. +// +// The cleaner registers objects and returns cleanables, so now we are +// defining a `UniffiCleaner` with a `UniffiClenaer.Cleanable` to abstract the +// different implmentations available at compile time. +interface UniffiCleaner { + interface Cleanable { + fun clean() + } + + fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable + + companion object +} + +// The fallback Jna cleaner, which is available for both Android, and the JVM. +private class UniffiJnaCleaner : UniffiCleaner { + private val cleaner = com.sun.jna.internal.Cleaner.getCleaner() + + override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable = + UniffiJnaCleanable(cleaner.register(value, cleanUpTask)) +} + +private class UniffiJnaCleanable( + private val cleanable: com.sun.jna.internal.Cleaner.Cleanable, +) : UniffiCleaner.Cleanable { + override fun clean() = cleanable.clean() +} + +// We decide at uniffi binding generation time whether we were +// using Android or not. +// There are further runtime checks to chose the correct implementation +// of the cleaner. +private fun UniffiCleaner.Companion.create(): UniffiCleaner = + try { + // For safety's sake: if the library hasn't been run in android_cleaner = true + // mode, but is being run on Android, then we still need to think about + // Android API versions. + // So we check if java.lang.ref.Cleaner is there, and use that… + java.lang.Class.forName("java.lang.ref.Cleaner") + JavaLangRefCleaner() + } catch (e: ClassNotFoundException) { + // … otherwise, fallback to the JNA cleaner. + UniffiJnaCleaner() + } + +private class JavaLangRefCleaner : UniffiCleaner { + val cleaner = java.lang.ref.Cleaner.create() + + override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable = + JavaLangRefCleanable(cleaner.register(value, cleanUpTask)) +} + +private class JavaLangRefCleanable( + val cleanable: java.lang.ref.Cleaner.Cleanable +) : UniffiCleaner.Cleanable { + override fun clean() = cleanable.clean() +} +public interface Argon2ParametersInterface { + + fun `getBytes`(): kotlin.ByteArray + + companion object +} + +open class Argon2Parameters: Disposable, AutoCloseable, Argon2ParametersInterface { + + constructor(pointer: Pointer) { + this.pointer = pointer + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + /** + * This constructor can be used to instantiate a fake object. Only used for tests. Any + * attempt to actually use an object constructed this way will fail as there is no + * connected Rust object. + */ + @Suppress("UNUSED_PARAMETER") + constructor(noPointer: NoPointer) { + this.pointer = null + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + protected val pointer: Pointer? + protected val cleanable: UniffiCleaner.Cleanable + + private val wasDestroyed = AtomicBoolean(false) + private val callCounter = AtomicLong(1) + + override fun destroy() { + // Only allow a single call to this method. + // TODO: maybe we should log a warning if called more than once? + if (this.wasDestroyed.compareAndSet(false, true)) { + // This decrement always matches the initial count of 1 given at creation time. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + @Synchronized + override fun close() { + this.destroy() + } + + internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { + // Check and increment the call counter, to keep the object alive. + // This needs a compare-and-set retry loop in case of concurrent updates. + do { + val c = this.callCounter.get() + if (c == 0L) { + throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") + } + if (c == Long.MAX_VALUE) { + throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") + } + } while (! this.callCounter.compareAndSet(c, c + 1L)) + // Now we can safely do the method call without the pointer being freed concurrently. + try { + return block(this.uniffiClonePointer()) + } finally { + // This decrement always matches the increment we performed above. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + // Use a static inner class instead of a closure so as not to accidentally + // capture `this` as part of the cleanable's action. + private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { + override fun run() { + pointer?.let { ptr -> + uniffiRustCall { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_argon2parameters(ptr, status) + } + } + } + } + + fun uniffiClonePointer(): Pointer { + return uniffiRustCall() { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_argon2parameters(pointer!!, status) + } + } + + override fun `getBytes`(): kotlin.ByteArray { + return FfiConverterByteArray.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parameters_get_bytes( + it, _status) +} + } + ) + } + + + + + + companion object { + + @Throws(DevolutionsCryptoException::class) fun `newFromBytes`(`data`: kotlin.ByteArray): Argon2Parameters { + return FfiConverterTypeArgon2Parameters.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parameters_new_from_bytes( + FfiConverterByteArray.lower(`data`),_status) +} + ) + } + + + + } + +} + +public object FfiConverterTypeArgon2Parameters: FfiConverter { + + override fun lower(value: Argon2Parameters): Pointer { + return value.uniffiClonePointer() + } + + override fun lift(value: Pointer): Argon2Parameters { + return Argon2Parameters(value) + } + + override fun read(buf: ByteBuffer): Argon2Parameters { + // The Rust code always writes pointers as 8 bytes, and will + // fail to compile if they don't fit. + return lift(Pointer(buf.getLong())) + } + + override fun allocationSize(value: Argon2Parameters) = 8UL + + override fun write(value: Argon2Parameters, buf: ByteBuffer) { + // The Rust code always expects pointers written as 8 bytes, + // and will fail to compile if they don't fit. + buf.putLong(Pointer.nativeValue(lower(value))) + } +} + + +// This template implements a class for working with a Rust struct via a Pointer/Arc +// to the live Rust struct on the other side of the FFI. +// +// Each instance implements core operations for working with the Rust `Arc` and the +// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. +// +// There's some subtlety here, because we have to be careful not to operate on a Rust +// struct after it has been dropped, and because we must expose a public API for freeing +// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: +// +// * Each instance holds an opaque pointer to the underlying Rust struct. +// Method calls need to read this pointer from the object's state and pass it in to +// the Rust FFI. +// +// * When an instance is no longer needed, its pointer should be passed to a +// special destructor function provided by the Rust FFI, which will drop the +// underlying Rust struct. +// +// * Given an instance, calling code is expected to call the special +// `destroy` method in order to free it after use, either by calling it explicitly +// or by using a higher-level helper like the `use` method. Failing to do so risks +// leaking the underlying Rust struct. +// +// * We can't assume that calling code will do the right thing, and must be prepared +// to handle Kotlin method calls executing concurrently with or even after a call to +// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. +// +// * We must never allow Rust code to operate on the underlying Rust struct after +// the destructor has been called, and must never call the destructor more than once. +// Doing so may trigger memory unsafety. +// +// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` +// is implemented to call the destructor when the Kotlin object becomes unreachable. +// This is done in a background thread. This is not a panacea, and client code should be aware that +// 1. the thread may starve if some there are objects that have poorly performing +// `drop` methods or do significant work in their `drop` methods. +// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, +// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). +// +// If we try to implement this with mutual exclusion on access to the pointer, there is the +// possibility of a race between a method call and a concurrent call to `destroy`: +// +// * Thread A starts a method call, reads the value of the pointer, but is interrupted +// before it can pass the pointer over the FFI to Rust. +// * Thread B calls `destroy` and frees the underlying Rust struct. +// * Thread A resumes, passing the already-read pointer value to Rust and triggering +// a use-after-free. +// +// One possible solution would be to use a `ReadWriteLock`, with each method call taking +// a read lock (and thus allowed to run concurrently) and the special `destroy` method +// taking a write lock (and thus blocking on live method calls). However, we aim not to +// generate methods with any hidden blocking semantics, and a `destroy` method that might +// block if called incorrectly seems to meet that bar. +// +// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track +// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` +// has been called. These are updated according to the following rules: +// +// * The initial value of the counter is 1, indicating a live object with no in-flight calls. +// The initial value for the flag is false. +// +// * At the start of each method call, we atomically check the counter. +// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. +// If it is nonzero them we atomically increment it by 1 and proceed with the method call. +// +// * At the end of each method call, we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// * When `destroy` is called, we atomically flip the flag from false to true. +// If the flag was already true we silently fail. +// Otherwise we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, +// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. +// +// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been +// called *and* all in-flight method calls have completed, avoiding violating any of the expectations +// of the underlying Rust code. +// +// This makes a cleaner a better alternative to _not_ calling `destroy()` as +// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` +// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner +// thread may be starved, and the app will leak memory. +// +// In this case, `destroy`ing manually may be a better solution. +// +// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects +// with Rust peers are reclaimed: +// +// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: +// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: +// 3. The memory is reclaimed when the process terminates. +// +// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 +// + + +public interface Argon2ParametersBuilderInterface { + + fun `associatedData`(`value`: kotlin.ByteArray): Argon2ParametersBuilder + + fun `build`(): Argon2Parameters + + fun `dcVersion`(`value`: kotlin.UInt): Argon2ParametersBuilder + + fun `iterations`(`value`: kotlin.UInt): Argon2ParametersBuilder + + fun `lanes`(`value`: kotlin.UInt): Argon2ParametersBuilder + + fun `length`(`value`: kotlin.UInt): Argon2ParametersBuilder + + fun `memory`(`value`: kotlin.UInt): Argon2ParametersBuilder + + fun `salt`(`value`: kotlin.ByteArray): Argon2ParametersBuilder + + fun `secretKey`(`value`: kotlin.ByteArray): Argon2ParametersBuilder + + fun `variant`(`value`: Argon2Variant): Argon2ParametersBuilder + + fun `version`(`value`: Argon2Version): Argon2ParametersBuilder + + companion object +} + +open class Argon2ParametersBuilder: Disposable, AutoCloseable, Argon2ParametersBuilderInterface { + + constructor(pointer: Pointer) { + this.pointer = pointer + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + /** + * This constructor can be used to instantiate a fake object. Only used for tests. Any + * attempt to actually use an object constructed this way will fail as there is no + * connected Rust object. + */ + @Suppress("UNUSED_PARAMETER") + constructor(noPointer: NoPointer) { + this.pointer = null + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + constructor() : + this( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parametersbuilder_new( + _status) +} + ) + + protected val pointer: Pointer? + protected val cleanable: UniffiCleaner.Cleanable + + private val wasDestroyed = AtomicBoolean(false) + private val callCounter = AtomicLong(1) + + override fun destroy() { + // Only allow a single call to this method. + // TODO: maybe we should log a warning if called more than once? + if (this.wasDestroyed.compareAndSet(false, true)) { + // This decrement always matches the initial count of 1 given at creation time. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + @Synchronized + override fun close() { + this.destroy() + } + + internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { + // Check and increment the call counter, to keep the object alive. + // This needs a compare-and-set retry loop in case of concurrent updates. + do { + val c = this.callCounter.get() + if (c == 0L) { + throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") + } + if (c == Long.MAX_VALUE) { + throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") + } + } while (! this.callCounter.compareAndSet(c, c + 1L)) + // Now we can safely do the method call without the pointer being freed concurrently. + try { + return block(this.uniffiClonePointer()) + } finally { + // This decrement always matches the increment we performed above. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + // Use a static inner class instead of a closure so as not to accidentally + // capture `this` as part of the cleanable's action. + private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { + override fun run() { + pointer?.let { ptr -> + uniffiRustCall { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_argon2parametersbuilder(ptr, status) + } + } + } + } + + fun uniffiClonePointer(): Pointer { + return uniffiRustCall() { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_argon2parametersbuilder(pointer!!, status) + } + } + + override fun `associatedData`(`value`: kotlin.ByteArray): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_associated_data( + it, FfiConverterByteArray.lower(`value`),_status) +} + } + ) + } + + + override fun `build`(): Argon2Parameters { + return FfiConverterTypeArgon2Parameters.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_build( + it, _status) +} + } + ) + } + + + override fun `dcVersion`(`value`: kotlin.UInt): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_dc_version( + it, FfiConverterUInt.lower(`value`),_status) +} + } + ) + } + + + override fun `iterations`(`value`: kotlin.UInt): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_iterations( + it, FfiConverterUInt.lower(`value`),_status) +} + } + ) + } + + + override fun `lanes`(`value`: kotlin.UInt): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_lanes( + it, FfiConverterUInt.lower(`value`),_status) +} + } + ) + } + + + override fun `length`(`value`: kotlin.UInt): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_length( + it, FfiConverterUInt.lower(`value`),_status) +} + } + ) + } + + + override fun `memory`(`value`: kotlin.UInt): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_memory( + it, FfiConverterUInt.lower(`value`),_status) +} + } + ) + } + + + override fun `salt`(`value`: kotlin.ByteArray): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_salt( + it, FfiConverterByteArray.lower(`value`),_status) +} + } + ) + } + + + override fun `secretKey`(`value`: kotlin.ByteArray): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_secret_key( + it, FfiConverterByteArray.lower(`value`),_status) +} + } + ) + } + + + override fun `variant`(`value`: Argon2Variant): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_variant( + it, FfiConverterTypeArgon2Variant.lower(`value`),_status) +} + } + ) + } + + + override fun `version`(`value`: Argon2Version): Argon2ParametersBuilder { + return FfiConverterTypeArgon2ParametersBuilder.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_version( + it, FfiConverterTypeArgon2Version.lower(`value`),_status) +} + } + ) + } + + + + + + + companion object + +} + +public object FfiConverterTypeArgon2ParametersBuilder: FfiConverter { + + override fun lower(value: Argon2ParametersBuilder): Pointer { + return value.uniffiClonePointer() + } + + override fun lift(value: Pointer): Argon2ParametersBuilder { + return Argon2ParametersBuilder(value) + } + + override fun read(buf: ByteBuffer): Argon2ParametersBuilder { + // The Rust code always writes pointers as 8 bytes, and will + // fail to compile if they don't fit. + return lift(Pointer(buf.getLong())) + } + + override fun allocationSize(value: Argon2ParametersBuilder) = 8UL + + override fun write(value: Argon2ParametersBuilder, buf: ByteBuffer) { + // The Rust code always expects pointers written as 8 bytes, + // and will fail to compile if they don't fit. + buf.putLong(Pointer.nativeValue(lower(value))) + } +} + + +// This template implements a class for working with a Rust struct via a Pointer/Arc +// to the live Rust struct on the other side of the FFI. +// +// Each instance implements core operations for working with the Rust `Arc` and the +// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. +// +// There's some subtlety here, because we have to be careful not to operate on a Rust +// struct after it has been dropped, and because we must expose a public API for freeing +// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: +// +// * Each instance holds an opaque pointer to the underlying Rust struct. +// Method calls need to read this pointer from the object's state and pass it in to +// the Rust FFI. +// +// * When an instance is no longer needed, its pointer should be passed to a +// special destructor function provided by the Rust FFI, which will drop the +// underlying Rust struct. +// +// * Given an instance, calling code is expected to call the special +// `destroy` method in order to free it after use, either by calling it explicitly +// or by using a higher-level helper like the `use` method. Failing to do so risks +// leaking the underlying Rust struct. +// +// * We can't assume that calling code will do the right thing, and must be prepared +// to handle Kotlin method calls executing concurrently with or even after a call to +// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. +// +// * We must never allow Rust code to operate on the underlying Rust struct after +// the destructor has been called, and must never call the destructor more than once. +// Doing so may trigger memory unsafety. +// +// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` +// is implemented to call the destructor when the Kotlin object becomes unreachable. +// This is done in a background thread. This is not a panacea, and client code should be aware that +// 1. the thread may starve if some there are objects that have poorly performing +// `drop` methods or do significant work in their `drop` methods. +// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, +// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). +// +// If we try to implement this with mutual exclusion on access to the pointer, there is the +// possibility of a race between a method call and a concurrent call to `destroy`: +// +// * Thread A starts a method call, reads the value of the pointer, but is interrupted +// before it can pass the pointer over the FFI to Rust. +// * Thread B calls `destroy` and frees the underlying Rust struct. +// * Thread A resumes, passing the already-read pointer value to Rust and triggering +// a use-after-free. +// +// One possible solution would be to use a `ReadWriteLock`, with each method call taking +// a read lock (and thus allowed to run concurrently) and the special `destroy` method +// taking a write lock (and thus blocking on live method calls). However, we aim not to +// generate methods with any hidden blocking semantics, and a `destroy` method that might +// block if called incorrectly seems to meet that bar. +// +// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track +// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` +// has been called. These are updated according to the following rules: +// +// * The initial value of the counter is 1, indicating a live object with no in-flight calls. +// The initial value for the flag is false. +// +// * At the start of each method call, we atomically check the counter. +// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. +// If it is nonzero them we atomically increment it by 1 and proceed with the method call. +// +// * At the end of each method call, we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// * When `destroy` is called, we atomically flip the flag from false to true. +// If the flag was already true we silently fail. +// Otherwise we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, +// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. +// +// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been +// called *and* all in-flight method calls have completed, avoiding violating any of the expectations +// of the underlying Rust code. +// +// This makes a cleaner a better alternative to _not_ calling `destroy()` as +// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` +// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner +// thread may be starved, and the app will leak memory. +// +// In this case, `destroy`ing manually may be a better solution. +// +// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects +// with Rust peers are reclaimed: +// +// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: +// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: +// 3. The memory is reclaimed when the process terminates. +// +// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 +// + + +public interface KeyPairInterface { + + companion object +} + +open class KeyPair: Disposable, AutoCloseable, KeyPairInterface { + + constructor(pointer: Pointer) { + this.pointer = pointer + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + /** + * This constructor can be used to instantiate a fake object. Only used for tests. Any + * attempt to actually use an object constructed this way will fail as there is no + * connected Rust object. + */ + @Suppress("UNUSED_PARAMETER") + constructor(noPointer: NoPointer) { + this.pointer = null + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + protected val pointer: Pointer? + protected val cleanable: UniffiCleaner.Cleanable + + private val wasDestroyed = AtomicBoolean(false) + private val callCounter = AtomicLong(1) + + override fun destroy() { + // Only allow a single call to this method. + // TODO: maybe we should log a warning if called more than once? + if (this.wasDestroyed.compareAndSet(false, true)) { + // This decrement always matches the initial count of 1 given at creation time. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + @Synchronized + override fun close() { + this.destroy() + } + + internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { + // Check and increment the call counter, to keep the object alive. + // This needs a compare-and-set retry loop in case of concurrent updates. + do { + val c = this.callCounter.get() + if (c == 0L) { + throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") + } + if (c == Long.MAX_VALUE) { + throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") + } + } while (! this.callCounter.compareAndSet(c, c + 1L)) + // Now we can safely do the method call without the pointer being freed concurrently. + try { + return block(this.uniffiClonePointer()) + } finally { + // This decrement always matches the increment we performed above. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + // Use a static inner class instead of a closure so as not to accidentally + // capture `this` as part of the cleanable's action. + private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { + override fun run() { + pointer?.let { ptr -> + uniffiRustCall { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_keypair(ptr, status) + } + } + } + } + + fun uniffiClonePointer(): Pointer { + return uniffiRustCall() { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_keypair(pointer!!, status) + } + } + + + + + + companion object + +} + +public object FfiConverterTypeKeyPair: FfiConverter { + + override fun lower(value: KeyPair): Pointer { + return value.uniffiClonePointer() + } + + override fun lift(value: Pointer): KeyPair { + return KeyPair(value) + } + + override fun read(buf: ByteBuffer): KeyPair { + // The Rust code always writes pointers as 8 bytes, and will + // fail to compile if they don't fit. + return lift(Pointer(buf.getLong())) + } + + override fun allocationSize(value: KeyPair) = 8UL + + override fun write(value: KeyPair, buf: ByteBuffer) { + // The Rust code always expects pointers written as 8 bytes, + // and will fail to compile if they don't fit. + buf.putLong(Pointer.nativeValue(lower(value))) + } +} + + +// This template implements a class for working with a Rust struct via a Pointer/Arc +// to the live Rust struct on the other side of the FFI. +// +// Each instance implements core operations for working with the Rust `Arc` and the +// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. +// +// There's some subtlety here, because we have to be careful not to operate on a Rust +// struct after it has been dropped, and because we must expose a public API for freeing +// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: +// +// * Each instance holds an opaque pointer to the underlying Rust struct. +// Method calls need to read this pointer from the object's state and pass it in to +// the Rust FFI. +// +// * When an instance is no longer needed, its pointer should be passed to a +// special destructor function provided by the Rust FFI, which will drop the +// underlying Rust struct. +// +// * Given an instance, calling code is expected to call the special +// `destroy` method in order to free it after use, either by calling it explicitly +// or by using a higher-level helper like the `use` method. Failing to do so risks +// leaking the underlying Rust struct. +// +// * We can't assume that calling code will do the right thing, and must be prepared +// to handle Kotlin method calls executing concurrently with or even after a call to +// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. +// +// * We must never allow Rust code to operate on the underlying Rust struct after +// the destructor has been called, and must never call the destructor more than once. +// Doing so may trigger memory unsafety. +// +// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` +// is implemented to call the destructor when the Kotlin object becomes unreachable. +// This is done in a background thread. This is not a panacea, and client code should be aware that +// 1. the thread may starve if some there are objects that have poorly performing +// `drop` methods or do significant work in their `drop` methods. +// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, +// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). +// +// If we try to implement this with mutual exclusion on access to the pointer, there is the +// possibility of a race between a method call and a concurrent call to `destroy`: +// +// * Thread A starts a method call, reads the value of the pointer, but is interrupted +// before it can pass the pointer over the FFI to Rust. +// * Thread B calls `destroy` and frees the underlying Rust struct. +// * Thread A resumes, passing the already-read pointer value to Rust and triggering +// a use-after-free. +// +// One possible solution would be to use a `ReadWriteLock`, with each method call taking +// a read lock (and thus allowed to run concurrently) and the special `destroy` method +// taking a write lock (and thus blocking on live method calls). However, we aim not to +// generate methods with any hidden blocking semantics, and a `destroy` method that might +// block if called incorrectly seems to meet that bar. +// +// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track +// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` +// has been called. These are updated according to the following rules: +// +// * The initial value of the counter is 1, indicating a live object with no in-flight calls. +// The initial value for the flag is false. +// +// * At the start of each method call, we atomically check the counter. +// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. +// If it is nonzero them we atomically increment it by 1 and proceed with the method call. +// +// * At the end of each method call, we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// * When `destroy` is called, we atomically flip the flag from false to true. +// If the flag was already true we silently fail. +// Otherwise we atomically decrement and check the counter. +// If it has reached zero then we destroy the underlying Rust struct. +// +// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, +// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. +// +// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been +// called *and* all in-flight method calls have completed, avoiding violating any of the expectations +// of the underlying Rust code. +// +// This makes a cleaner a better alternative to _not_ calling `destroy()` as +// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` +// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner +// thread may be starved, and the app will leak memory. +// +// In this case, `destroy`ing manually may be a better solution. +// +// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects +// with Rust peers are reclaimed: +// +// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: +// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: +// 3. The memory is reclaimed when the process terminates. +// +// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 +// + + +public interface SigningKeyPairInterface { + + companion object +} + +open class SigningKeyPair: Disposable, AutoCloseable, SigningKeyPairInterface { + + constructor(pointer: Pointer) { + this.pointer = pointer + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + /** + * This constructor can be used to instantiate a fake object. Only used for tests. Any + * attempt to actually use an object constructed this way will fail as there is no + * connected Rust object. + */ + @Suppress("UNUSED_PARAMETER") + constructor(noPointer: NoPointer) { + this.pointer = null + this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) + } + + protected val pointer: Pointer? + protected val cleanable: UniffiCleaner.Cleanable + + private val wasDestroyed = AtomicBoolean(false) + private val callCounter = AtomicLong(1) + + override fun destroy() { + // Only allow a single call to this method. + // TODO: maybe we should log a warning if called more than once? + if (this.wasDestroyed.compareAndSet(false, true)) { + // This decrement always matches the initial count of 1 given at creation time. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + @Synchronized + override fun close() { + this.destroy() + } + + internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { + // Check and increment the call counter, to keep the object alive. + // This needs a compare-and-set retry loop in case of concurrent updates. + do { + val c = this.callCounter.get() + if (c == 0L) { + throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") + } + if (c == Long.MAX_VALUE) { + throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") + } + } while (! this.callCounter.compareAndSet(c, c + 1L)) + // Now we can safely do the method call without the pointer being freed concurrently. + try { + return block(this.uniffiClonePointer()) + } finally { + // This decrement always matches the increment we performed above. + if (this.callCounter.decrementAndGet() == 0L) { + cleanable.clean() + } + } + } + + // Use a static inner class instead of a closure so as not to accidentally + // capture `this` as part of the cleanable's action. + private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { + override fun run() { + pointer?.let { ptr -> + uniffiRustCall { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(ptr, status) + } + } + } + } + + fun uniffiClonePointer(): Pointer { + return uniffiRustCall() { status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(pointer!!, status) + } + } + + + + + + companion object + +} + +public object FfiConverterTypeSigningKeyPair: FfiConverter { + + override fun lower(value: SigningKeyPair): Pointer { + return value.uniffiClonePointer() + } + + override fun lift(value: Pointer): SigningKeyPair { + return SigningKeyPair(value) + } + + override fun read(buf: ByteBuffer): SigningKeyPair { + // The Rust code always writes pointers as 8 bytes, and will + // fail to compile if they don't fit. + return lift(Pointer(buf.getLong())) + } + + override fun allocationSize(value: SigningKeyPair) = 8UL + + override fun write(value: SigningKeyPair, buf: ByteBuffer) { + // The Rust code always expects pointers written as 8 bytes, + // and will fail to compile if they don't fit. + buf.putLong(Pointer.nativeValue(lower(value))) + } +} + + + + +enum class Argon2Variant { + + ARGON2D, + ARGON2I, + ARGON2ID; + companion object +} + + +public object FfiConverterTypeArgon2Variant: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + Argon2Variant.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: Argon2Variant) = 4UL + + override fun write(value: Argon2Variant, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class Argon2Version { + + VERSION10, + VERSION13; + companion object +} + + +public object FfiConverterTypeArgon2Version: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + Argon2Version.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: Argon2Version) = 4UL + + override fun write(value: Argon2Version, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class CiphertextVersion { + + LATEST, + V1, + V2; + companion object +} + + +public object FfiConverterTypeCiphertextVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + CiphertextVersion.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: CiphertextVersion) = 4UL + + override fun write(value: CiphertextVersion, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class DataType { + + NONE, + KEY, + CIPHERTEXT, + PASSWORD_HASH, + SHARE, + SIGNING_KEY, + SIGNATURE; + companion object +} + + +public object FfiConverterTypeDataType: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + DataType.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: DataType) = 4UL + + override fun write(value: DataType, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + + +sealed class DevolutionsCryptoException(message: String): kotlin.Exception(message) { + + class InvalidLength(message: String) : DevolutionsCryptoException(message) + + class InvalidKeyLength(message: String) : DevolutionsCryptoException(message) + + class InvalidOutputLength(message: String) : DevolutionsCryptoException(message) + + class InvalidSignature(message: String) : DevolutionsCryptoException(message) + + class InvalidMac(message: String) : DevolutionsCryptoException(message) + + class InvalidDataType(message: String) : DevolutionsCryptoException(message) + + class UnknownType(message: String) : DevolutionsCryptoException(message) + + class UnknownSubtype(message: String) : DevolutionsCryptoException(message) + + class UnknownVersion(message: String) : DevolutionsCryptoException(message) + + class InvalidData(message: String) : DevolutionsCryptoException(message) + + class NullPointer(message: String) : DevolutionsCryptoException(message) + + class CryptoException(message: String) : DevolutionsCryptoException(message) + + class RandomException(message: String) : DevolutionsCryptoException(message) + + class IoException(message: String) : DevolutionsCryptoException(message) + + class NotEnoughShares(message: String) : DevolutionsCryptoException(message) + + class InconsistentVersion(message: String) : DevolutionsCryptoException(message) + + + companion object ErrorHandler : UniffiRustCallStatusErrorHandler { + override fun lift(error_buf: RustBuffer.ByValue): DevolutionsCryptoException = FfiConverterTypeDevolutionsCryptoError.lift(error_buf) + } +} + +public object FfiConverterTypeDevolutionsCryptoError : FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): DevolutionsCryptoException { + + return when(buf.getInt()) { + 1 -> DevolutionsCryptoException.InvalidLength(FfiConverterString.read(buf)) + 2 -> DevolutionsCryptoException.InvalidKeyLength(FfiConverterString.read(buf)) + 3 -> DevolutionsCryptoException.InvalidOutputLength(FfiConverterString.read(buf)) + 4 -> DevolutionsCryptoException.InvalidSignature(FfiConverterString.read(buf)) + 5 -> DevolutionsCryptoException.InvalidMac(FfiConverterString.read(buf)) + 6 -> DevolutionsCryptoException.InvalidDataType(FfiConverterString.read(buf)) + 7 -> DevolutionsCryptoException.UnknownType(FfiConverterString.read(buf)) + 8 -> DevolutionsCryptoException.UnknownSubtype(FfiConverterString.read(buf)) + 9 -> DevolutionsCryptoException.UnknownVersion(FfiConverterString.read(buf)) + 10 -> DevolutionsCryptoException.InvalidData(FfiConverterString.read(buf)) + 11 -> DevolutionsCryptoException.NullPointer(FfiConverterString.read(buf)) + 12 -> DevolutionsCryptoException.CryptoException(FfiConverterString.read(buf)) + 13 -> DevolutionsCryptoException.RandomException(FfiConverterString.read(buf)) + 14 -> DevolutionsCryptoException.IoException(FfiConverterString.read(buf)) + 15 -> DevolutionsCryptoException.NotEnoughShares(FfiConverterString.read(buf)) + 16 -> DevolutionsCryptoException.InconsistentVersion(FfiConverterString.read(buf)) + else -> throw RuntimeException("invalid error enum value, something is very wrong!!") + } + + } + + override fun allocationSize(value: DevolutionsCryptoException): ULong { + return 4UL + } + + override fun write(value: DevolutionsCryptoException, buf: ByteBuffer) { + when(value) { + is DevolutionsCryptoException.InvalidLength -> { + buf.putInt(1) + Unit + } + is DevolutionsCryptoException.InvalidKeyLength -> { + buf.putInt(2) + Unit + } + is DevolutionsCryptoException.InvalidOutputLength -> { + buf.putInt(3) + Unit + } + is DevolutionsCryptoException.InvalidSignature -> { + buf.putInt(4) + Unit + } + is DevolutionsCryptoException.InvalidMac -> { + buf.putInt(5) + Unit + } + is DevolutionsCryptoException.InvalidDataType -> { + buf.putInt(6) + Unit + } + is DevolutionsCryptoException.UnknownType -> { + buf.putInt(7) + Unit + } + is DevolutionsCryptoException.UnknownSubtype -> { + buf.putInt(8) + Unit + } + is DevolutionsCryptoException.UnknownVersion -> { + buf.putInt(9) + Unit + } + is DevolutionsCryptoException.InvalidData -> { + buf.putInt(10) + Unit + } + is DevolutionsCryptoException.NullPointer -> { + buf.putInt(11) + Unit + } + is DevolutionsCryptoException.CryptoException -> { + buf.putInt(12) + Unit + } + is DevolutionsCryptoException.RandomException -> { + buf.putInt(13) + Unit + } + is DevolutionsCryptoException.IoException -> { + buf.putInt(14) + Unit + } + is DevolutionsCryptoException.NotEnoughShares -> { + buf.putInt(15) + Unit + } + is DevolutionsCryptoException.InconsistentVersion -> { + buf.putInt(16) + Unit + } + }.let { /* this makes the `when` an expression, which ensures it is exhaustive */ } + } + +} + + + + +enum class KeyVersion { + + LATEST, + V1; + companion object +} + + +public object FfiConverterTypeKeyVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + KeyVersion.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: KeyVersion) = 4UL + + override fun write(value: KeyVersion, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class PasswordHashVersion { + + LATEST, + V1; + companion object +} + + +public object FfiConverterTypePasswordHashVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + PasswordHashVersion.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: PasswordHashVersion) = 4UL + + override fun write(value: PasswordHashVersion, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class SecretSharingVersion { + + LATEST, + V1; + companion object +} + + +public object FfiConverterTypeSecretSharingVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + SecretSharingVersion.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: SecretSharingVersion) = 4UL + + override fun write(value: SecretSharingVersion, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class SignatureVersion { + + LATEST, + V1; + companion object +} + + +public object FfiConverterTypeSignatureVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + SignatureVersion.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: SignatureVersion) = 4UL + + override fun write(value: SignatureVersion, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +enum class SigningKeyVersion { + + LATEST, + V1; + companion object +} + + +public object FfiConverterTypeSigningKeyVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer) = try { + SigningKeyVersion.values()[buf.getInt() - 1] + } catch (e: IndexOutOfBoundsException) { + throw RuntimeException("invalid enum value, something is very wrong!!", e) + } + + override fun allocationSize(value: SigningKeyVersion) = 4UL + + override fun write(value: SigningKeyVersion, buf: ByteBuffer) { + buf.putInt(value.ordinal + 1) + } +} + + + + + + +public object FfiConverterOptionalUInt: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): kotlin.UInt? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterUInt.read(buf) + } + + override fun allocationSize(value: kotlin.UInt?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterUInt.allocationSize(value) + } + } + + override fun write(value: kotlin.UInt?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterUInt.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalULong: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): kotlin.ULong? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterULong.read(buf) + } + + override fun allocationSize(value: kotlin.ULong?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterULong.allocationSize(value) + } + } + + override fun write(value: kotlin.ULong?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterULong.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalByteArray: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): kotlin.ByteArray? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterByteArray.read(buf) + } + + override fun allocationSize(value: kotlin.ByteArray?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterByteArray.allocationSize(value) + } + } + + override fun write(value: kotlin.ByteArray?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterByteArray.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalTypeCiphertextVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): CiphertextVersion? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterTypeCiphertextVersion.read(buf) + } + + override fun allocationSize(value: CiphertextVersion?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterTypeCiphertextVersion.allocationSize(value) + } + } + + override fun write(value: CiphertextVersion?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterTypeCiphertextVersion.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalTypeKeyVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): KeyVersion? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterTypeKeyVersion.read(buf) + } + + override fun allocationSize(value: KeyVersion?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterTypeKeyVersion.allocationSize(value) + } + } + + override fun write(value: KeyVersion?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterTypeKeyVersion.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalTypePasswordHashVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): PasswordHashVersion? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterTypePasswordHashVersion.read(buf) + } + + override fun allocationSize(value: PasswordHashVersion?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterTypePasswordHashVersion.allocationSize(value) + } + } + + override fun write(value: PasswordHashVersion?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterTypePasswordHashVersion.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalTypeSecretSharingVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): SecretSharingVersion? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterTypeSecretSharingVersion.read(buf) + } + + override fun allocationSize(value: SecretSharingVersion?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterTypeSecretSharingVersion.allocationSize(value) + } + } + + override fun write(value: SecretSharingVersion?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterTypeSecretSharingVersion.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalTypeSignatureVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): SignatureVersion? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterTypeSignatureVersion.read(buf) + } + + override fun allocationSize(value: SignatureVersion?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterTypeSignatureVersion.allocationSize(value) + } + } + + override fun write(value: SignatureVersion?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterTypeSignatureVersion.write(value, buf) + } + } +} + + + + +public object FfiConverterOptionalTypeSigningKeyVersion: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): SigningKeyVersion? { + if (buf.get().toInt() == 0) { + return null + } + return FfiConverterTypeSigningKeyVersion.read(buf) + } + + override fun allocationSize(value: SigningKeyVersion?): ULong { + if (value == null) { + return 1UL + } else { + return 1UL + FfiConverterTypeSigningKeyVersion.allocationSize(value) + } + } + + override fun write(value: SigningKeyVersion?, buf: ByteBuffer) { + if (value == null) { + buf.put(0) + } else { + buf.put(1) + FfiConverterTypeSigningKeyVersion.write(value, buf) + } + } +} + + + + +public object FfiConverterSequenceByteArray: FfiConverterRustBuffer> { + override fun read(buf: ByteBuffer): List { + val len = buf.getInt() + return List(len) { + FfiConverterByteArray.read(buf) + } + } + + override fun allocationSize(value: List): ULong { + val sizeForLength = 4UL + val sizeForItems = value.map { FfiConverterByteArray.allocationSize(it) }.sum() + return sizeForLength + sizeForItems + } + + override fun write(value: List, buf: ByteBuffer) { + buf.putInt(value.size) + value.iterator().forEach { + FfiConverterByteArray.write(it, buf) + } + } +} + @Throws(DevolutionsCryptoException::class) fun `encrypt`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `encryptWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_with_aad( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `base64Decode`(`data`: kotlin.String): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_decode( + FfiConverterString.lower(`data`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `base64DecodeUrl`(`data`: kotlin.String): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_decode_url( + FfiConverterString.lower(`data`),_status) +} + ) + } + + fun `base64Encode`(`data`: kotlin.ByteArray): kotlin.String { + return FfiConverterString.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_encode( + FfiConverterByteArray.lower(`data`),_status) +} + ) + } + + fun `base64EncodeUrl`(`data`: kotlin.ByteArray): kotlin.String { + return FfiConverterString.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_encode_url( + FfiConverterByteArray.lower(`data`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `decrypt`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `decryptAsymmetric`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `decryptAsymmetricWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric_with_aad( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `decryptWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt_with_aad( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `deriveKeyArgon2`(`key`: kotlin.ByteArray, `parameters`: Argon2Parameters): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_derive_key_argon2( + FfiConverterByteArray.lower(`key`),FfiConverterTypeArgon2Parameters.lower(`parameters`),_status) +} + ) + } + + fun `deriveKeyPbkdf2`(`key`: kotlin.ByteArray, `salt`: kotlin.ByteArray?, `iterations`: kotlin.UInt?, `length`: kotlin.ULong?): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2( + FfiConverterByteArray.lower(`key`),FfiConverterOptionalByteArray.lower(`salt`),FfiConverterOptionalUInt.lower(`iterations`),FfiConverterOptionalULong.lower(`length`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetric`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `version`: CiphertextVersion?): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterOptionalTypeCiphertextVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetricWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion?): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),FfiConverterOptionalTypeCiphertextVersion.lower(`version`),_status) +} + ) + } + + fun `generateKey`(`length`: kotlin.ULong = 32uL): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_key( + FfiConverterULong.lower(`length`),_status) +} + ) + } + + fun `generateKeypair`(`version`: KeyVersion?): KeyPair { + return FfiConverterTypeKeyPair.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair( + FfiConverterOptionalTypeKeyVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `generateSharedKey`(`nShares`: kotlin.UByte, `threshold`: kotlin.UByte, `length`: kotlin.ULong?, `version`: SecretSharingVersion?): List { + return FfiConverterSequenceByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key( + FfiConverterUByte.lower(`nShares`),FfiConverterUByte.lower(`threshold`),FfiConverterOptionalULong.lower(`length`),FfiConverterOptionalTypeSecretSharingVersion.lower(`version`),_status) +} + ) + } + + fun `generateSigningKeypair`(`version`: SigningKeyVersion?): SigningKeyPair { + return FfiConverterTypeSigningKeyPair.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair( + FfiConverterOptionalTypeSigningKeyVersion.lower(`version`),_status) +} + ) + } + + fun `hashPassword`(`password`: kotlin.ByteArray, `iterations`: kotlin.UInt?, `version`: PasswordHashVersion?): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_hash_password( + FfiConverterByteArray.lower(`password`),FfiConverterOptionalUInt.lower(`iterations`),FfiConverterOptionalTypePasswordHashVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `joinShares`(`shares`: List): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_join_shares( + FfiConverterSequenceByteArray.lower(`shares`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `mixKeyExchange`(`privateKey`: kotlin.ByteArray, `publicKey`: kotlin.ByteArray): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_mix_key_exchange( + FfiConverterByteArray.lower(`privateKey`),FfiConverterByteArray.lower(`publicKey`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `sign`(`data`: kotlin.ByteArray, `keypair`: kotlin.ByteArray, `version`: SignatureVersion?): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_sign( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`keypair`),FfiConverterOptionalTypeSignatureVersion.lower(`version`),_status) +} + ) + } + + fun `validateHeader`(`data`: kotlin.ByteArray, `dataType`: DataType): kotlin.Boolean { + return FfiConverterBoolean.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_validate_header( + FfiConverterByteArray.lower(`data`),FfiConverterTypeDataType.lower(`dataType`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `verifyPassword`(`password`: kotlin.ByteArray, `hash`: kotlin.ByteArray): kotlin.Boolean { + return FfiConverterBoolean.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_verify_password( + FfiConverterByteArray.lower(`password`),FfiConverterByteArray.lower(`hash`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `verifySignature`(`data`: kotlin.ByteArray, `publicKey`: kotlin.ByteArray, `signature`: kotlin.ByteArray): kotlin.Boolean { + return FfiConverterBoolean.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_verify_signature( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`publicKey`),FfiConverterByteArray.lower(`signature`),_status) +} + ) + } + + + diff --git a/wrappers/kotlin/lib/src/main/resources/win32-x86-64/.gitkeep b/wrappers/kotlin/lib/src/main/resources/win32-x86-64/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt new file mode 100644 index 000000000..299b8d9af --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt @@ -0,0 +1,15 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.example + +import kotlin.test.Test +import kotlin.test.assertTrue + +import org.devolutions.crypto.generateKey + +class LibraryTest { + @Test fun someLibraryMethodReturnsTrue() { + generateKey() + } +} diff --git a/wrappers/kotlin/settings.gradle.kts b/wrappers/kotlin/settings.gradle.kts new file mode 100644 index 000000000..4b77915cf --- /dev/null +++ b/wrappers/kotlin/settings.gradle.kts @@ -0,0 +1,14 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.10.2/userguide/multi_project_builds.html in the Gradle documentation. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" +} + +rootProject.name = "org.devolutions.crypto" +include("lib") From d332583aecf58362449e88bf32b321220b229e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Mon, 21 Oct 2024 13:32:25 -0400 Subject: [PATCH 20/43] [UniFFI] Fix optional parameters --- .../src/ciphertext.rs | 38 ++++------------ .../src/devolutions_crypto.udl | 36 ++++++++++++++++ uniffi/devolutions-crypto-uniffi/src/key.rs | 6 +-- uniffi/devolutions-crypto-uniffi/src/lib.rs | 3 +- .../src/password_hash.rs | 9 ++-- .../src/secret_sharing.rs | 9 ++-- .../src/signature.rs | 5 +-- .../src/signing_key.rs | 43 +++++++++++++------ uniffi/devolutions-crypto-uniffi/src/utils.rs | 16 ++++--- 9 files changed, 97 insertions(+), 68 deletions(-) diff --git a/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs b/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs index 49a989454..8ed09fc46 100644 --- a/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs +++ b/uniffi/devolutions-crypto-uniffi/src/ciphertext.rs @@ -11,13 +11,7 @@ pub fn encrypt_with_aad( aad: &[u8], version: CiphertextVersion, ) -> Result> { - Ok(devolutions_crypto::ciphertext::encrypt_with_aad( - data, - key, - aad, - version, - )? - .into()) + Ok(devolutions_crypto::ciphertext::encrypt_with_aad(data, key, aad, version)?.into()) } #[uniffi::export] @@ -32,38 +26,22 @@ fn decrypt_with_aad(data: &[u8], key: &[u8], aad: &[u8]) -> Result> { data.decrypt_with_aad(key, aad) } -#[uniffi::export] -pub fn encrypt_asymmetric( - data: &[u8], - key: &[u8], - version: Option, -) -> Result> { +pub fn encrypt_asymmetric(data: &[u8], key: &[u8], version: CiphertextVersion) -> Result> { let key = key.try_into()?; - Ok( - devolutions_crypto::ciphertext::encrypt_asymmetric( - data, - &key, - version.unwrap_or_default(), - )? - .into(), - ) + Ok(devolutions_crypto::ciphertext::encrypt_asymmetric(data, &key, version)?.into()) } -#[uniffi::export] pub fn encrypt_asymmetric_with_aad( data: &[u8], key: &[u8], aad: &[u8], - version: Option, + version: CiphertextVersion, ) -> Result> { let key = key.try_into()?; - Ok(devolutions_crypto::ciphertext::encrypt_asymmetric_with_aad( - data, - &key, - aad, - version.unwrap_or_default(), - )? - .into()) + Ok( + devolutions_crypto::ciphertext::encrypt_asymmetric_with_aad(data, &key, aad, version)? + .into(), + ) } #[uniffi::export] diff --git a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl index 967a83644..81a785044 100644 --- a/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl +++ b/uniffi/devolutions-crypto-uniffi/src/devolutions_crypto.udl @@ -102,10 +102,46 @@ interface Argon2Parameters { bytes get_bytes(); }; +dictionary KeyPair { + bytes public_key; + bytes private_key; +}; + +interface SigningKeyPair { + [Name=new_from_bytes, Throws=DevolutionsCryptoError] + constructor([ByRef] bytes data); + bytes get_public_key(); + bytes get_private_key(); +}; + namespace devolutions_crypto { + // Ciphertext [Throws=DevolutionsCryptoError] bytes encrypt([ByRef] bytes data, [ByRef] bytes key, optional CiphertextVersion version = "Latest"); [Throws=DevolutionsCryptoError] bytes encrypt_with_aad([ByRef] bytes data, [ByRef] bytes key, [ByRef] bytes aad, optional CiphertextVersion version = "Latest"); + + [Throws=DevolutionsCryptoError] + bytes encrypt_asymmetric([ByRef] bytes data, [ByRef] bytes key, optional CiphertextVersion version = "Latest"); + + [Throws=DevolutionsCryptoError] + bytes encrypt_asymmetric_with_aad([ByRef] bytes data, [ByRef] bytes key, [ByRef] bytes aad, optional CiphertextVersion version = "Latest"); + + // Keys + KeyPair generate_keypair(optional KeyVersion version = "Latest"); + + // Password Hash + bytes hash_password([ByRef] bytes password, optional u32 iterations = 10000, optional PasswordHashVersion version = "Latest"); + + // Secret Sharing + [Throws=DevolutionsCryptoError] + sequence generate_shared_key(u8 n_shares, u8 threshold, optional u32 length = 32, optional SecretSharingVersion version = "Latest"); + + // Signature + [Throws=DevolutionsCryptoError] + bytes sign([ByRef] bytes data, [ByRef] bytes keypair, optional SignatureVersion version = "Latest"); + + // Signing Key + SigningKeyPair generate_signing_keypair(optional SigningKeyVersion version = "Latest"); }; \ No newline at end of file diff --git a/uniffi/devolutions-crypto-uniffi/src/key.rs b/uniffi/devolutions-crypto-uniffi/src/key.rs index 1a867b8f2..59eed6243 100644 --- a/uniffi/devolutions-crypto-uniffi/src/key.rs +++ b/uniffi/devolutions-crypto-uniffi/src/key.rs @@ -1,7 +1,6 @@ use crate::KeyVersion; use crate::Result; -#[derive(uniffi::Object)] pub struct KeyPair { pub private_key: Vec, pub public_key: Vec, @@ -16,9 +15,8 @@ impl From for KeyPair { } } -#[uniffi::export] -pub fn generate_keypair(version: Option) -> KeyPair { - devolutions_crypto::key::generate_keypair(version.unwrap_or_default()).into() +pub fn generate_keypair(version: KeyVersion) -> KeyPair { + devolutions_crypto::key::generate_keypair(version).into() } #[uniffi::export] diff --git a/uniffi/devolutions-crypto-uniffi/src/lib.rs b/uniffi/devolutions-crypto-uniffi/src/lib.rs index efc6bc2b2..55c644d85 100644 --- a/uniffi/devolutions-crypto-uniffi/src/lib.rs +++ b/uniffi/devolutions-crypto-uniffi/src/lib.rs @@ -7,8 +7,7 @@ mod signature; mod signing_key; mod utils; -pub use argon2parameters::Argon2Parameters; -pub use argon2parameters::Argon2ParametersBuilder; +pub use argon2parameters::*; pub use ciphertext::*; pub use key::*; pub use password_hash::*; diff --git a/uniffi/devolutions-crypto-uniffi/src/password_hash.rs b/uniffi/devolutions-crypto-uniffi/src/password_hash.rs index c31c9da9b..6b506ba73 100644 --- a/uniffi/devolutions-crypto-uniffi/src/password_hash.rs +++ b/uniffi/devolutions-crypto-uniffi/src/password_hash.rs @@ -1,16 +1,15 @@ use crate::PasswordHashVersion; use crate::Result; -#[uniffi::export] pub fn hash_password( password: &[u8], - iterations: Option, - version: Option, + iterations: u32, + version: PasswordHashVersion, ) -> Vec { devolutions_crypto::password_hash::hash_password( password, - iterations.unwrap_or(devolutions_crypto::DEFAULT_PBKDF2_ITERATIONS), - version.unwrap_or_default(), + iterations, + version, ) .into() } diff --git a/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs b/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs index ee77034fc..89e6ea58c 100644 --- a/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs +++ b/uniffi/devolutions-crypto-uniffi/src/secret_sharing.rs @@ -1,18 +1,17 @@ use crate::Result; use crate::SecretSharingVersion; -#[uniffi::export] pub fn generate_shared_key( n_shares: u8, threshold: u8, - length: Option, - version: Option, + length: u32, + version: SecretSharingVersion, ) -> Result>> { Ok(devolutions_crypto::secret_sharing::generate_shared_key( n_shares, threshold, - length.unwrap_or(devolutions_crypto::DEFAULT_KEY_SIZE as u64) as usize, - version.unwrap_or_default(), + length as usize, + version, )? .into_iter() .map(|s| s.into()) diff --git a/uniffi/devolutions-crypto-uniffi/src/signature.rs b/uniffi/devolutions-crypto-uniffi/src/signature.rs index d271d8043..c7ad08216 100644 --- a/uniffi/devolutions-crypto-uniffi/src/signature.rs +++ b/uniffi/devolutions-crypto-uniffi/src/signature.rs @@ -1,11 +1,10 @@ use crate::Result; use crate::SignatureVersion; -#[uniffi::export] -pub fn sign(data: &[u8], keypair: &[u8], version: Option) -> Result> { +pub fn sign(data: &[u8], keypair: &[u8], version: SignatureVersion) -> Result> { let keypair = keypair.try_into()?; - Ok(devolutions_crypto::signature::sign(data, &keypair, version.unwrap_or_default()).into()) + Ok(devolutions_crypto::signature::sign(data, &keypair, version).into()) } #[uniffi::export] diff --git a/uniffi/devolutions-crypto-uniffi/src/signing_key.rs b/uniffi/devolutions-crypto-uniffi/src/signing_key.rs index fd705ec94..ac9fccf44 100644 --- a/uniffi/devolutions-crypto-uniffi/src/signing_key.rs +++ b/uniffi/devolutions-crypto-uniffi/src/signing_key.rs @@ -1,22 +1,41 @@ +use std::sync::Arc; + use crate::SigningKeyVersion; +use crate::Result; +use crate::DevolutionsCryptoError; + +pub struct SigningKeyPair(devolutions_crypto::signing_key::SigningKeyPair); -#[derive(uniffi::Object)] -pub struct SigningKeyPair { - pub private_key: Vec, - pub public_key: Vec, +impl SigningKeyPair { + pub fn new_from_bytes(data: &[u8]) -> Result { + data.try_into() + } } impl From for SigningKeyPair { fn from(value: devolutions_crypto::signing_key::SigningKeyPair) -> Self { - let public_key = value.get_public_key(); - Self { - private_key: value.into(), - public_key: public_key.into(), - } + Self(value) + } +} + +impl TryFrom<&[u8]> for SigningKeyPair { + type Error = DevolutionsCryptoError; + + fn try_from(value: &[u8]) -> Result { + Ok(Self(value.try_into()?)) + } +} + +impl SigningKeyPair { + pub fn get_public_key(&self) -> Vec { + self.0.get_public_key().into() + } + + pub fn get_private_key(&self) -> Vec { + self.0.clone().into() } } -#[uniffi::export] -pub fn generate_signing_keypair(version: Option) -> SigningKeyPair { - devolutions_crypto::signing_key::generate_signing_keypair(version.unwrap_or_default()).into() +pub fn generate_signing_keypair(version: SigningKeyVersion) -> Arc { + Arc::new(devolutions_crypto::signing_key::generate_signing_keypair(version).into()) } diff --git a/uniffi/devolutions-crypto-uniffi/src/utils.rs b/uniffi/devolutions-crypto-uniffi/src/utils.rs index bfad70e96..c97d71da6 100644 --- a/uniffi/devolutions-crypto-uniffi/src/utils.rs +++ b/uniffi/devolutions-crypto-uniffi/src/utils.rs @@ -1,27 +1,29 @@ +use std::sync::Arc; + use crate::{Argon2Parameters, DataType, Result}; #[uniffi::export(default(length = 32))] -pub fn generate_key(length: u64) -> Vec { +pub fn generate_key(length: u32) -> Vec { devolutions_crypto::utils::generate_key(length as usize) } -#[uniffi::export] +#[uniffi::export(default(iterations = 10000, length = 32))] pub fn derive_key_pbkdf2( key: &[u8], salt: Option>, - iterations: Option, - length: Option, + iterations: u32, + length: u32, ) -> Vec { devolutions_crypto::utils::derive_key_pbkdf2( key, &salt.unwrap_or_default(), - iterations.unwrap_or(devolutions_crypto::DEFAULT_PBKDF2_ITERATIONS), - length.unwrap_or(devolutions_crypto::DEFAULT_KEY_SIZE as u64) as usize, + iterations, + length as usize, ) } #[uniffi::export] -pub fn derive_key_argon2(key: &[u8], parameters: &Argon2Parameters) -> Result> { +pub fn derive_key_argon2(key: &[u8], parameters: &Arc) -> Result> { devolutions_crypto::utils::derive_key_argon2(key, ¶meters.0) } From 153a7d3167cf3c2a067a7f6a7cfe7fede2b64e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Wed, 23 Oct 2024 10:24:06 -0400 Subject: [PATCH 21/43] [UniFFI] Kotlin tests --- wrappers/kotlin/generate.bat | 2 +- .../devolutions/crypto/devolutions_crypto.kt | 812 +++++------------- .../org/devolutions/crypto/AsymmetricTest.kt | 93 ++ .../org/devolutions/crypto/ConformityTest.kt | 130 +++ .../org/devolutions/crypto/HashingTest.kt | 26 + .../org/devolutions/crypto/LibraryTest.kt | 15 - .../devolutions/crypto/SecretSharingTest.kt | 63 ++ .../org/devolutions/crypto/SignatureTest.kt | 29 + .../org/devolutions/crypto/SymmetricTest.kt | 51 ++ .../org/devolutions/crypto/TestUtils.kt | 24 + .../org/devolutions/crypto/UtilsTest.kt | 187 ++++ 11 files changed, 820 insertions(+), 612 deletions(-) create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/AsymmetricTest.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/ConformityTest.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/HashingTest.kt delete mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SecretSharingTest.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SignatureTest.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SymmetricTest.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/TestUtils.kt create mode 100644 wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/UtilsTest.kt diff --git a/wrappers/kotlin/generate.bat b/wrappers/kotlin/generate.bat index 4dfdeb2bb..118df3124 100644 --- a/wrappers/kotlin/generate.bat +++ b/wrappers/kotlin/generate.bat @@ -6,4 +6,4 @@ cargo run -p uniffi-bindgen generate --library "..\..\target\release\devolutions cd "../../" -copy ".\target\release\devolutions_crypto_uniffi.dll" ".\wrappers\kotlin\lib\win32-amd64\" +copy ".\target\release\devolutions_crypto_uniffi.dll" ".\wrappers\kotlin\lib\src\main\resources\win32-x86-64\" diff --git a/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt b/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt index 2bbb1a3a3..b3af60f78 100644 --- a/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt +++ b/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt @@ -772,6 +772,10 @@ internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { + + + + @@ -832,18 +836,34 @@ internal interface UniffiLib : Library { ): Pointer fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_version(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_clone_keypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_free_keypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Unit fun uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, ): Pointer fun uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, ): Unit + fun uniffi_devolutions_crypto_uniffi_fn_constructor_signingkeypair_new_from_bytes(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_private_key(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_public_key(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key(`nShares`: Byte,`threshold`: Byte,`length`: Int,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): Pointer + fun uniffi_devolutions_crypto_uniffi_fn_func_hash_password(`password`: RustBuffer.ByValue,`iterations`: Int,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue + fun uniffi_devolutions_crypto_uniffi_fn_func_sign(`data`: RustBuffer.ByValue,`keypair`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_base64_decode(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_base64_decode_url(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, @@ -862,28 +882,14 @@ internal interface UniffiLib : Library { ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_argon2(`key`: RustBuffer.ByValue,`parameters`: Pointer,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2(`key`: RustBuffer.ByValue,`salt`: RustBuffer.ByValue,`iterations`: RustBuffer.ByValue,`length`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_key(`length`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key(`nShares`: Byte,`threshold`: Byte,`length`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2(`key`: RustBuffer.ByValue,`salt`: RustBuffer.ByValue,`iterations`: Int,`length`: Int,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_func_hash_password(`password`: RustBuffer.ByValue,`iterations`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, + fun uniffi_devolutions_crypto_uniffi_fn_func_generate_key(`length`: Int,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_join_shares(`shares`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_mix_key_exchange(`privateKey`: RustBuffer.ByValue,`publicKey`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_sign(`data`: RustBuffer.ByValue,`keypair`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue fun uniffi_devolutions_crypto_uniffi_fn_func_validate_header(`data`: RustBuffer.ByValue,`dataType`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, ): Byte fun uniffi_devolutions_crypto_uniffi_fn_func_verify_password(`password`: RustBuffer.ByValue,`hash`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, @@ -1004,8 +1010,22 @@ internal interface UniffiLib : Library { ): Unit fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt( ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad( + ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad( ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_hash_password( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_func_sign( + ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode( ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url( @@ -1026,26 +1046,12 @@ internal interface UniffiLib : Library { ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2( ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad( - ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_key( ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_hash_password( - ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_join_shares( ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_mix_key_exchange( ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_sign( - ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_validate_header( ): Short fun uniffi_devolutions_crypto_uniffi_checksum_func_verify_password( @@ -1076,10 +1082,16 @@ internal interface UniffiLib : Library { ): Short fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_version( ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_private_key( + ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_public_key( + ): Short fun uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parameters_new_from_bytes( ): Short fun uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parametersbuilder_new( ): Short + fun uniffi_devolutions_crypto_uniffi_checksum_constructor_signingkeypair_new_from_bytes( + ): Short fun ffi_devolutions_crypto_uniffi_uniffi_contract_version( ): Int @@ -1100,58 +1112,61 @@ private fun uniffiCheckApiChecksums(lib: UniffiLib) { if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt() != 21235.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad() != 56466.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric() != 16258.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode() != 64610.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad() != 34280.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url() != 15029.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad() != 56466.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode() != 61134.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair() != 13437.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode_url() != 31513.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key() != 9340.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt() != 41817.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair() != 33572.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric() != 47124.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_hash_password() != 62085.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric_with_aad() != 9987.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_sign() != 54825.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_with_aad() != 59734.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode() != 64610.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_argon2() != 60451.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url() != 15029.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode() != 61134.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2() != 27537.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode_url() != 31513.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric() != 44426.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt() != 41817.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad() != 37507.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric() != 47124.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_key() != 46119.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric_with_aad() != 9987.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair() != 3523.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_with_aad() != 59734.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key() != 38176.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_argon2() != 60451.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair() != 3830.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2() != 12853.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_hash_password() != 4426.toShort()) { + if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_key() != 42956.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_join_shares() != 64867.toShort()) { @@ -1160,9 +1175,6 @@ private fun uniffiCheckApiChecksums(lib: UniffiLib) { if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_mix_key_exchange() != 52615.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_sign() != 6663.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_validate_header() != 50316.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } @@ -1208,12 +1220,21 @@ private fun uniffiCheckApiChecksums(lib: UniffiLib) { if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_version() != 39743.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_private_key() != 10265.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_public_key() != 47363.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parameters_new_from_bytes() != 48784.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parametersbuilder_new() != 58740.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } + if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_signingkeypair_new_from_bytes() != 42998.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } } // Async support @@ -1294,26 +1315,6 @@ public object FfiConverterUInt: FfiConverter { } } -public object FfiConverterULong: FfiConverter { - override fun lift(value: Long): ULong { - return value.toULong() - } - - override fun read(buf: ByteBuffer): ULong { - return lift(buf.getLong()) - } - - override fun lower(value: ULong): Long { - return value.toLong() - } - - override fun allocationSize(value: ULong) = 8UL - - override fun write(value: ULong, buf: ByteBuffer) { - buf.putLong(value.toLong()) - } -} - public object FfiConverterBoolean: FfiConverter { override fun lift(value: Byte): Boolean { return value.toInt() != 0 @@ -2185,12 +2186,16 @@ public object FfiConverterTypeArgon2ParametersBuilder: FfiConverter uniffiRustCall { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_keypair(ptr, status) + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(ptr, status) } } } @@ -2267,37 +2272,73 @@ open class KeyPair: Disposable, AutoCloseable, KeyPairInterface { fun uniffiClonePointer(): Pointer { return uniffiRustCall() { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_keypair(pointer!!, status) + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(pointer!!, status) } } + override fun `getPrivateKey`(): kotlin.ByteArray { + return FfiConverterByteArray.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_private_key( + it, _status) +} + } + ) + } + override fun `getPublicKey`(): kotlin.ByteArray { + return FfiConverterByteArray.lift( + callWithPointer { + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_public_key( + it, _status) +} + } + ) + } + - companion object + + + companion object { + + @Throws(DevolutionsCryptoException::class) fun `newFromBytes`(`data`: kotlin.ByteArray): SigningKeyPair { + return FfiConverterTypeSigningKeyPair.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_constructor_signingkeypair_new_from_bytes( + FfiConverterByteArray.lower(`data`),_status) +} + ) + } + + + + } } -public object FfiConverterTypeKeyPair: FfiConverter { +public object FfiConverterTypeSigningKeyPair: FfiConverter { - override fun lower(value: KeyPair): Pointer { + override fun lower(value: SigningKeyPair): Pointer { return value.uniffiClonePointer() } - override fun lift(value: Pointer): KeyPair { - return KeyPair(value) + override fun lift(value: Pointer): SigningKeyPair { + return SigningKeyPair(value) } - override fun read(buf: ByteBuffer): KeyPair { + override fun read(buf: ByteBuffer): SigningKeyPair { // The Rust code always writes pointers as 8 bytes, and will // fail to compile if they don't fit. return lift(Pointer(buf.getLong())) } - override fun allocationSize(value: KeyPair) = 8UL + override fun allocationSize(value: SigningKeyPair) = 8UL - override fun write(value: KeyPair, buf: ByteBuffer) { + override fun write(value: SigningKeyPair, buf: ByteBuffer) { // The Rust code always expects pointers written as 8 bytes, // and will fail to compile if they don't fit. buf.putLong(Pointer.nativeValue(lower(value))) @@ -2305,220 +2346,31 @@ public object FfiConverterTypeKeyPair: FfiConverter { } -// This template implements a class for working with a Rust struct via a Pointer/Arc -// to the live Rust struct on the other side of the FFI. -// -// Each instance implements core operations for working with the Rust `Arc` and the -// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. -// -// There's some subtlety here, because we have to be careful not to operate on a Rust -// struct after it has been dropped, and because we must expose a public API for freeing -// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: -// -// * Each instance holds an opaque pointer to the underlying Rust struct. -// Method calls need to read this pointer from the object's state and pass it in to -// the Rust FFI. -// -// * When an instance is no longer needed, its pointer should be passed to a -// special destructor function provided by the Rust FFI, which will drop the -// underlying Rust struct. -// -// * Given an instance, calling code is expected to call the special -// `destroy` method in order to free it after use, either by calling it explicitly -// or by using a higher-level helper like the `use` method. Failing to do so risks -// leaking the underlying Rust struct. -// -// * We can't assume that calling code will do the right thing, and must be prepared -// to handle Kotlin method calls executing concurrently with or even after a call to -// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. -// -// * We must never allow Rust code to operate on the underlying Rust struct after -// the destructor has been called, and must never call the destructor more than once. -// Doing so may trigger memory unsafety. -// -// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` -// is implemented to call the destructor when the Kotlin object becomes unreachable. -// This is done in a background thread. This is not a panacea, and client code should be aware that -// 1. the thread may starve if some there are objects that have poorly performing -// `drop` methods or do significant work in their `drop` methods. -// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, -// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). -// -// If we try to implement this with mutual exclusion on access to the pointer, there is the -// possibility of a race between a method call and a concurrent call to `destroy`: -// -// * Thread A starts a method call, reads the value of the pointer, but is interrupted -// before it can pass the pointer over the FFI to Rust. -// * Thread B calls `destroy` and frees the underlying Rust struct. -// * Thread A resumes, passing the already-read pointer value to Rust and triggering -// a use-after-free. -// -// One possible solution would be to use a `ReadWriteLock`, with each method call taking -// a read lock (and thus allowed to run concurrently) and the special `destroy` method -// taking a write lock (and thus blocking on live method calls). However, we aim not to -// generate methods with any hidden blocking semantics, and a `destroy` method that might -// block if called incorrectly seems to meet that bar. -// -// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track -// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` -// has been called. These are updated according to the following rules: -// -// * The initial value of the counter is 1, indicating a live object with no in-flight calls. -// The initial value for the flag is false. -// -// * At the start of each method call, we atomically check the counter. -// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. -// If it is nonzero them we atomically increment it by 1 and proceed with the method call. -// -// * At the end of each method call, we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// * When `destroy` is called, we atomically flip the flag from false to true. -// If the flag was already true we silently fail. -// Otherwise we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, -// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. -// -// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been -// called *and* all in-flight method calls have completed, avoiding violating any of the expectations -// of the underlying Rust code. -// -// This makes a cleaner a better alternative to _not_ calling `destroy()` as -// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` -// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner -// thread may be starved, and the app will leak memory. -// -// In this case, `destroy`ing manually may be a better solution. -// -// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects -// with Rust peers are reclaimed: -// -// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: -// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: -// 3. The memory is reclaimed when the process terminates. -// -// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 -// - -public interface SigningKeyPairInterface { +data class KeyPair ( + var `publicKey`: kotlin.ByteArray, + var `privateKey`: kotlin.ByteArray +) { companion object } -open class SigningKeyPair: Disposable, AutoCloseable, SigningKeyPairInterface { - - constructor(pointer: Pointer) { - this.pointer = pointer - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) +public object FfiConverterTypeKeyPair: FfiConverterRustBuffer { + override fun read(buf: ByteBuffer): KeyPair { + return KeyPair( + FfiConverterByteArray.read(buf), + FfiConverterByteArray.read(buf), + ) } - /** - * This constructor can be used to instantiate a fake object. Only used for tests. Any - * attempt to actually use an object constructed this way will fail as there is no - * connected Rust object. - */ - @Suppress("UNUSED_PARAMETER") - constructor(noPointer: NoPointer) { - this.pointer = null - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - - protected val pointer: Pointer? - protected val cleanable: UniffiCleaner.Cleanable - - private val wasDestroyed = AtomicBoolean(false) - private val callCounter = AtomicLong(1) - - override fun destroy() { - // Only allow a single call to this method. - // TODO: maybe we should log a warning if called more than once? - if (this.wasDestroyed.compareAndSet(false, true)) { - // This decrement always matches the initial count of 1 given at creation time. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - @Synchronized - override fun close() { - this.destroy() - } - - internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { - // Check and increment the call counter, to keep the object alive. - // This needs a compare-and-set retry loop in case of concurrent updates. - do { - val c = this.callCounter.get() - if (c == 0L) { - throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") - } - if (c == Long.MAX_VALUE) { - throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") - } - } while (! this.callCounter.compareAndSet(c, c + 1L)) - // Now we can safely do the method call without the pointer being freed concurrently. - try { - return block(this.uniffiClonePointer()) - } finally { - // This decrement always matches the increment we performed above. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - // Use a static inner class instead of a closure so as not to accidentally - // capture `this` as part of the cleanable's action. - private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { - override fun run() { - pointer?.let { ptr -> - uniffiRustCall { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(ptr, status) - } - } - } - } - - fun uniffiClonePointer(): Pointer { - return uniffiRustCall() { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(pointer!!, status) - } - } - - - - - - companion object - -} - -public object FfiConverterTypeSigningKeyPair: FfiConverter { - - override fun lower(value: SigningKeyPair): Pointer { - return value.uniffiClonePointer() - } - - override fun lift(value: Pointer): SigningKeyPair { - return SigningKeyPair(value) - } - - override fun read(buf: ByteBuffer): SigningKeyPair { - // The Rust code always writes pointers as 8 bytes, and will - // fail to compile if they don't fit. - return lift(Pointer(buf.getLong())) - } - - override fun allocationSize(value: SigningKeyPair) = 8UL + override fun allocationSize(value: KeyPair) = ( + FfiConverterByteArray.allocationSize(value.`publicKey`) + + FfiConverterByteArray.allocationSize(value.`privateKey`) + ) - override fun write(value: SigningKeyPair, buf: ByteBuffer) { - // The Rust code always expects pointers written as 8 bytes, - // and will fail to compile if they don't fit. - buf.putLong(Pointer.nativeValue(lower(value))) + override fun write(value: KeyPair, buf: ByteBuffer) { + FfiConverterByteArray.write(value.`publicKey`, buf) + FfiConverterByteArray.write(value.`privateKey`, buf) } } @@ -2919,64 +2771,6 @@ public object FfiConverterTypeSigningKeyVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): kotlin.UInt? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterUInt.read(buf) - } - - override fun allocationSize(value: kotlin.UInt?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterUInt.allocationSize(value) - } - } - - override fun write(value: kotlin.UInt?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterUInt.write(value, buf) - } - } -} - - - - -public object FfiConverterOptionalULong: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): kotlin.ULong? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterULong.read(buf) - } - - override fun allocationSize(value: kotlin.ULong?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterULong.allocationSize(value) - } - } - - override fun write(value: kotlin.ULong?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterULong.write(value, buf) - } - } -} - - - - public object FfiConverterOptionalByteArray: FfiConverterRustBuffer { override fun read(buf: ByteBuffer): kotlin.ByteArray? { if (buf.get().toInt() == 0) { @@ -3006,180 +2800,6 @@ public object FfiConverterOptionalByteArray: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): CiphertextVersion? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterTypeCiphertextVersion.read(buf) - } - - override fun allocationSize(value: CiphertextVersion?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterTypeCiphertextVersion.allocationSize(value) - } - } - - override fun write(value: CiphertextVersion?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterTypeCiphertextVersion.write(value, buf) - } - } -} - - - - -public object FfiConverterOptionalTypeKeyVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): KeyVersion? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterTypeKeyVersion.read(buf) - } - - override fun allocationSize(value: KeyVersion?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterTypeKeyVersion.allocationSize(value) - } - } - - override fun write(value: KeyVersion?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterTypeKeyVersion.write(value, buf) - } - } -} - - - - -public object FfiConverterOptionalTypePasswordHashVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): PasswordHashVersion? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterTypePasswordHashVersion.read(buf) - } - - override fun allocationSize(value: PasswordHashVersion?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterTypePasswordHashVersion.allocationSize(value) - } - } - - override fun write(value: PasswordHashVersion?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterTypePasswordHashVersion.write(value, buf) - } - } -} - - - - -public object FfiConverterOptionalTypeSecretSharingVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): SecretSharingVersion? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterTypeSecretSharingVersion.read(buf) - } - - override fun allocationSize(value: SecretSharingVersion?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterTypeSecretSharingVersion.allocationSize(value) - } - } - - override fun write(value: SecretSharingVersion?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterTypeSecretSharingVersion.write(value, buf) - } - } -} - - - - -public object FfiConverterOptionalTypeSignatureVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): SignatureVersion? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterTypeSignatureVersion.read(buf) - } - - override fun allocationSize(value: SignatureVersion?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterTypeSignatureVersion.allocationSize(value) - } - } - - override fun write(value: SignatureVersion?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterTypeSignatureVersion.write(value, buf) - } - } -} - - - - -public object FfiConverterOptionalTypeSigningKeyVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): SigningKeyVersion? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterTypeSigningKeyVersion.read(buf) - } - - override fun allocationSize(value: SigningKeyVersion?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterTypeSigningKeyVersion.allocationSize(value) - } - } - - override fun write(value: SigningKeyVersion?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterTypeSigningKeyVersion.write(value, buf) - } - } -} - - - - public object FfiConverterSequenceByteArray: FfiConverterRustBuffer> { override fun read(buf: ByteBuffer): List { val len = buf.getInt() @@ -3211,6 +2831,26 @@ public object FfiConverterSequenceByteArray: FfiConverterRustBuffer + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetricWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) +} + ) + } + + @Throws(DevolutionsCryptoException::class) fun `encryptWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { return FfiConverterByteArray.lift( uniffiRustCallWithError(DevolutionsCryptoException) { _status -> @@ -3220,6 +2860,53 @@ public object FfiConverterSequenceByteArray: FfiConverterRustBuffer + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair( + FfiConverterTypeKeyVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `generateSharedKey`(`nShares`: kotlin.UByte, `threshold`: kotlin.UByte, `length`: kotlin.UInt = 32u, `version`: SecretSharingVersion = SecretSharingVersion.LATEST): List { + return FfiConverterSequenceByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key( + FfiConverterUByte.lower(`nShares`),FfiConverterUByte.lower(`threshold`),FfiConverterUInt.lower(`length`),FfiConverterTypeSecretSharingVersion.lower(`version`),_status) +} + ) + } + + fun `generateSigningKeypair`(`version`: SigningKeyVersion = SigningKeyVersion.LATEST): SigningKeyPair { + return FfiConverterTypeSigningKeyPair.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair( + FfiConverterTypeSigningKeyVersion.lower(`version`),_status) +} + ) + } + + fun `hashPassword`(`password`: kotlin.ByteArray, `iterations`: kotlin.UInt = 10000u, `version`: PasswordHashVersion = PasswordHashVersion.LATEST): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCall() { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_hash_password( + FfiConverterByteArray.lower(`password`),FfiConverterUInt.lower(`iterations`),FfiConverterTypePasswordHashVersion.lower(`version`),_status) +} + ) + } + + + @Throws(DevolutionsCryptoException::class) fun `sign`(`data`: kotlin.ByteArray, `keypair`: kotlin.ByteArray, `version`: SignatureVersion = SignatureVersion.LATEST): kotlin.ByteArray { + return FfiConverterByteArray.lift( + uniffiRustCallWithError(DevolutionsCryptoException) { _status -> + UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_sign( + FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`keypair`),FfiConverterTypeSignatureVersion.lower(`version`),_status) +} + ) + } + @Throws(DevolutionsCryptoException::class) fun `base64Decode`(`data`: kotlin.String): kotlin.ByteArray { return FfiConverterByteArray.lift( @@ -3308,77 +2995,20 @@ public object FfiConverterSequenceByteArray: FfiConverterRustBuffer UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2( - FfiConverterByteArray.lower(`key`),FfiConverterOptionalByteArray.lower(`salt`),FfiConverterOptionalUInt.lower(`iterations`),FfiConverterOptionalULong.lower(`length`),_status) + FfiConverterByteArray.lower(`key`),FfiConverterOptionalByteArray.lower(`salt`),FfiConverterUInt.lower(`iterations`),FfiConverterUInt.lower(`length`),_status) } ) } - - @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetric`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `version`: CiphertextVersion?): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterOptionalTypeCiphertextVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetricWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion?): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),FfiConverterOptionalTypeCiphertextVersion.lower(`version`),_status) -} - ) - } - - fun `generateKey`(`length`: kotlin.ULong = 32uL): kotlin.ByteArray { + fun `generateKey`(`length`: kotlin.UInt = 32u): kotlin.ByteArray { return FfiConverterByteArray.lift( uniffiRustCall() { _status -> UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_key( - FfiConverterULong.lower(`length`),_status) -} - ) - } - - fun `generateKeypair`(`version`: KeyVersion?): KeyPair { - return FfiConverterTypeKeyPair.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair( - FfiConverterOptionalTypeKeyVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `generateSharedKey`(`nShares`: kotlin.UByte, `threshold`: kotlin.UByte, `length`: kotlin.ULong?, `version`: SecretSharingVersion?): List { - return FfiConverterSequenceByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key( - FfiConverterUByte.lower(`nShares`),FfiConverterUByte.lower(`threshold`),FfiConverterOptionalULong.lower(`length`),FfiConverterOptionalTypeSecretSharingVersion.lower(`version`),_status) -} - ) - } - - fun `generateSigningKeypair`(`version`: SigningKeyVersion?): SigningKeyPair { - return FfiConverterTypeSigningKeyPair.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair( - FfiConverterOptionalTypeSigningKeyVersion.lower(`version`),_status) -} - ) - } - - fun `hashPassword`(`password`: kotlin.ByteArray, `iterations`: kotlin.UInt?, `version`: PasswordHashVersion?): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_hash_password( - FfiConverterByteArray.lower(`password`),FfiConverterOptionalUInt.lower(`iterations`),FfiConverterOptionalTypePasswordHashVersion.lower(`version`),_status) + FfiConverterUInt.lower(`length`),_status) } ) } @@ -3403,16 +3033,6 @@ public object FfiConverterSequenceByteArray: FfiConverterRustBuffer - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_sign( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`keypair`),FfiConverterOptionalTypeSignatureVersion.lower(`version`),_status) -} - ) - } - fun `validateHeader`(`data`: kotlin.ByteArray, `dataType`: DataType): kotlin.Boolean { return FfiConverterBoolean.lift( uniffiRustCall() { _status -> diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/AsymmetricTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/AsymmetricTest.kt new file mode 100644 index 000000000..e49b216cf --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/AsymmetricTest.kt @@ -0,0 +1,93 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import kotlin.test.Test +import kotlin.test.assertContentEquals +import kotlin.test.assertEquals +import kotlin.test.assertFailsWith + +class AsymmetricTest { + @Test + fun generateKeypairTest() { + val keypair = generateKeypair() + + assert(!keypair.publicKey.isEmpty()) + assert(!keypair.privateKey.isEmpty()) + + assert(!keypair.privateKey.contentEquals(keypair.publicKey)) + } + + @Test + fun encryptDecryptAsymmetricTest() { + val data = "This is some test data".toByteArray(Charsets.UTF_8) + val keypair = generateKeypair() + + val encrypted = encryptAsymmetric(data, keypair.publicKey) + val decrypted = decryptAsymmetric(encrypted, keypair.privateKey) + + assert(!data.asList().isSubArray(encrypted.asList())) + assertContentEquals(data, decrypted) + } + + @Test + fun encryptDecryptAsymmetricWithAadTest() { + val data = "This is some test data".toByteArray(Charsets.UTF_8) + val aad = "This is some public data".toByteArray(Charsets.UTF_8) + + val keypair = generateKeypair() + + val encrypted = encryptAsymmetricWithAad(data, keypair.publicKey, aad) + val decrypted = decryptAsymmetricWithAad(encrypted, keypair.privateKey, aad) + + assert(!data.asList().isSubArray(encrypted.asList())) + assertContentEquals(data, decrypted) + } + + @Test + fun encryptDecryptAsymmetricWithWrongAadTest() { + val data = "This is some test data".toByteArray(Charsets.UTF_8) + val aad = "This is some public data".toByteArray(Charsets.UTF_8) + val wrongAad = "this is some public data".toByteArray(Charsets.UTF_8) + + val keypair = generateKeypair() + + val encrypted = encryptAsymmetricWithAad(data, keypair.publicKey, aad) + + assertFailsWith { + decryptAsymmetricWithAad(encrypted, keypair.privateKey, wrongAad) + } + } + + @Test + fun mixKeyExchangeTest() { + val bobKeypair = generateKeypair() + val aliceKeypair = generateKeypair() + + val bobShared = mixKeyExchange(bobKeypair.privateKey, aliceKeypair.publicKey) + val aliceShared = mixKeyExchange(aliceKeypair.privateKey, bobKeypair.publicKey) + + assertEquals(bobShared.size, 32) + assert(!bobShared.contentEquals(ByteArray(32) { 0 })) + assertContentEquals(bobShared, aliceShared) + } + + @Test + fun mixKeyExchangeNotEqualsTest() { + val bobKeypair = generateKeypair() + val aliceKeypair = generateKeypair() + val eveKeypair = generateKeypair() + + val bobAliceShared = mixKeyExchange(bobKeypair.privateKey, aliceKeypair.publicKey) + val aliceBobShared = mixKeyExchange(aliceKeypair.privateKey, bobKeypair.publicKey) + + val eveBobShared = mixKeyExchange(eveKeypair.privateKey, bobKeypair.publicKey) + val eveAliceShared = mixKeyExchange(eveKeypair.privateKey, aliceKeypair.publicKey) + + assert(!eveBobShared.contentEquals(bobAliceShared)) + assert(!eveBobShared.contentEquals(aliceBobShared)) + assert(!eveAliceShared.contentEquals(bobAliceShared)) + assert(!eveAliceShared.contentEquals(aliceBobShared)) + } +} \ No newline at end of file diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/ConformityTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/ConformityTest.kt new file mode 100644 index 000000000..daa424aab --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/ConformityTest.kt @@ -0,0 +1,130 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import kotlin.test.Test +import kotlin.test.assertContentEquals +import kotlin.test.assertFalse + +class ConformityTest { + @Test + fun deriveKeyPbkdf2Test() { + val derivedKey = deriveKeyPbkdf2("testpassword".toByteArray(), null) + val derivedKeyWithIterations = deriveKeyPbkdf2("testPa\$\$".toByteArray(), null, iterations = 100u) + val derivedKeyWithSalt = deriveKeyPbkdf2( + "testPa\$\$".toByteArray(), + base64Decode("tdTt5wgeqQYLvkiXKkFirqy2hMbzadBtL+jekVeNCRA="), + iterations = 100u + ) + + val expected = base64Decode("ImfGCyv6PwMYaJShGxR4MfVrjuUrsI0CSarJgOApwf8=") + val expectedWithIterations = base64Decode("ev/GiJLvOgIkkWrnIrHSi2fdZE5qJBIrW+DLeMLIXK4=") + val expectedWithSalt = base64Decode("ZaYRZeQiIPJ+Jl511AgHZjv4/HbCFq4eUP9yNa3gowI=") + + assertContentEquals(expected, derivedKey) + assertContentEquals(expectedWithIterations, derivedKeyWithIterations) + assertContentEquals(expectedWithSalt, derivedKeyWithSalt) + } + + @Test + fun deriveKeyArgon2Test() { + val password = "password".toByteArray() + val parameters = + Argon2Parameters.newFromBytes(base64Decode("AQAAACAAAAABAAAAIAAAAAEAAAACEwAAAAAQAAAAimFBkm3f8+f+YfLRnF5OoQ==")) + val result = deriveKeyArgon2(password, parameters) + + val expected = base64Decode("AcEN6Cb1Om6tomZScAM725qiXMzaxaHlj3iMiT/Ukq0=") + + assertContentEquals(expected, result) + } + + @Test + fun symmetricDecryptV1Test() { + val key = base64Decode("ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + val ciphertext = + base64Decode("DQwCAAAAAQCK1twEut+TeJfFbTWCRgHjyS6bOPOZUEQAeBtSFFRl2jHggM/34n68zIZWGbsZHkufVzU6mTN5N2Dx9bTplrycv5eNVevT4P9FdVHJ751D+A==") + + val result = decrypt(ciphertext, key) + + val expected = "test Ciph3rtext~".toByteArray() + + assertContentEquals(expected, result) + } + + @Test + fun symmetricDecryptWithAadV1Test() { + val key = base64Decode("ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + val ciphertext = + base64Decode("DQwCAAEAAQCeKfbTqYjfVCEPEiAJjiypBstPmZz0AnpliZKoR+WXTKdj2f/4ops0++dDBVZ+XdyE1KfqxViWVc9djy/HSCcPR4nDehtNI69heGCIFudXfQ==") + val aad = "this is some public data".toByteArray() + + val result = decryptWithAad(ciphertext, key, aad) + + val expected = "test Ciph3rtext~".toByteArray() + + assertContentEquals(expected, result) + } + + @Test + fun symmetricDecryptV2Test() { + val key = base64Decode("ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + val ciphertext = + base64Decode("DQwCAAAAAgAA0iPpI4IEzcrWAQiy6tqDqLbRYduGvlMC32mVH7tpIN2CXDUu5QHF91I7pMrmjt/61pm5CeR/IcU=") + + val result = decrypt(ciphertext, key) + + val expected = "test Ciph3rtext~2".toByteArray() + + assertContentEquals(expected, result) + } + + @Test + fun symmetricDecryptWithAadV2Test() { + val key = base64Decode("ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + val ciphertext = + base64Decode("DQwCAAEAAgA9bh989dao0Pvaz1NpJTI5m7M4br2qVjZtFwXXoXZOlkCjtqU/uif4pbNCcpEodzeP4YG1QvfKVQ==") + val aad = "this is some public data".toByteArray() + + val result = decryptWithAad(ciphertext, key, aad) + + val expected = "test Ciph3rtext~".toByteArray() + + assertContentEquals(expected, result) + } + + @Test + fun asymmetricDecryptWithAadV2Test() { + val privateKey = base64Decode("DQwBAAEAAQC9qf9UY1ovL/48ALGHL9SLVpVozbdjYsw0EPerUl3zYA==") + val ciphertext = + base64Decode("DQwCAAIAAgB1u62xYeyppWf83QdWwbwGUt5QuiAFZr+hIiFEvMRbXiNCE3RMBNbmgQkLr/vME0BeQa+uUTXZARvJcyNXHyAE4tSdw6o/psU/kw/Z/FbsPw==") + val aad = "this is some public data".toByteArray() + + val result = decryptAsymmetricWithAad(ciphertext, privateKey, aad) + + val expected = "testdata".toByteArray() + + assertContentEquals(expected, result) + } + + @Test + fun passwordHashingV1Test() { + val hash1 = + base64Decode("DQwDAAAAAQAQJwAAXCzLFoyeZhFSDYBAPiIWhCk04aoP/lalOoCl7D+skIY/i+3WT7dn6L8WvnfEq6flCd7i+IcKb3GEK4rCpzhDlw==") + val hash2 = + base64Decode("DQwDAAAAAQAKAAAAmH1BBckBJYDD0xfiwkAk1xwKgw8a57YQT0Igm+Faa9LFamTeEJgqn/qHc2R/8XEyK2iLPkVy+IErdGLLtLKJ2g==") + + assert(verifyPassword("password1".toByteArray(), hash1)) + assert(verifyPassword("password1".toByteArray(), hash2)) + } + + @Test + fun signatureV1Test() { + val publicKey = base64Decode("DQwFAAIAAQDeEvwlEigK5AXoTorhmlKP6+mbiUU2rYrVQ25JQ5xang==") + val signature = + base64Decode("DQwGAAAAAQD82uRk4sFC8vEni6pDNw/vOdN1IEDg9cAVfprWJZ/JBls9Gi61cUt5u6uBJtseNGZFT7qKLvp4NUZrAOL8FH0K") + + assert(verifySignature("this is a test".toByteArray(), publicKey, signature)) + assertFalse(verifySignature("this is wrong".toByteArray(), publicKey, signature)) + } +} \ No newline at end of file diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/HashingTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/HashingTest.kt new file mode 100644 index 000000000..ad8653807 --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/HashingTest.kt @@ -0,0 +1,26 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import kotlin.test.Test + +class HashingTest { + @Test + fun passwordHashTest() { + val password = "password".toByteArray(Charsets.UTF_8) + val hash = hashPassword(password, 10u) + + assert(verifyPassword(password, hash)) + } + + @Test + fun wrongPasswordTest() { + val password = "password".toByteArray(Charsets.UTF_8) + val hash = hashPassword(password, 10u) + + assert(!verifyPassword("pa\$\$word".toByteArray(), hash)) + assert(!verifyPassword("Password".toByteArray(), hash)) + assert(!verifyPassword("password1".toByteArray(), hash)) + } +} \ No newline at end of file diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt deleted file mode 100644 index 299b8d9af..000000000 --- a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/LibraryTest.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example - -import kotlin.test.Test -import kotlin.test.assertTrue - -import org.devolutions.crypto.generateKey - -class LibraryTest { - @Test fun someLibraryMethodReturnsTrue() { - generateKey() - } -} diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SecretSharingTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SecretSharingTest.kt new file mode 100644 index 000000000..003c81be9 --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SecretSharingTest.kt @@ -0,0 +1,63 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import org.junit.jupiter.api.assertThrows +import kotlin.test.Test +import kotlin.test.assertContentEquals +import kotlin.test.assertEquals + +class SecretSharingTest { + @Test + fun sharedSecretDefaultTest() { + val shares = generateSharedKey(5u, 3u) + + val shareGroup1 = shares.slice(0..2) + val shareGroup2 = shares.slice(1..3) + val shareGroup3 = shares.slice(2..4) + + val key1 = joinShares(shareGroup1) + val key2 = joinShares(shareGroup2) + val key3 = joinShares(shareGroup3) + + assertEquals(32, key1.size) + assert(!key1.contentEquals(ByteArray(32) { 0 })) + assertContentEquals(key1, key2) + assertContentEquals(key1, key3) + } + + @Test + fun sharedSecretLargerTest() { + val shares = generateSharedKey(5u, 3u, 41u) + + val shareGroup1 = shares.slice(0..2) + val shareGroup2 = shares.slice(1..3) + val shareGroup3 = shares.slice(2..4) + + val key1 = joinShares(shareGroup1) + val key2 = joinShares(shareGroup2) + val key3 = joinShares(shareGroup3) + + assertEquals(41, key1.size) + assert(!key1.contentEquals(ByteArray(41) { 0 })) + assertContentEquals(key1, key2) + assertContentEquals(key1, key3) + } + + @Test + fun sharedSecretWrongParamsTest() { + assertThrows { + generateSharedKey(3u, 5u) + } + } + + @Test + fun sharedSecrectNotEnoughShare() { + val shares = generateSharedKey(5u, 3u) + val sharesGroup = shares.slice(0..1) + assertThrows { + joinShares(sharesGroup) + } + } +} \ No newline at end of file diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SignatureTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SignatureTest.kt new file mode 100644 index 000000000..d64519cf2 --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SignatureTest.kt @@ -0,0 +1,29 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import kotlin.test.Test + +class SignatureTest { + @Test + fun signatureTest() { + val data = "this is a test".toByteArray() + val keypair = generateSigningKeypair() + + val signature = sign(data, keypair.getPrivateKey()) + + assert(verifySignature(data, keypair.getPublicKey(), signature)) + } + + @Test + fun wrongSignatureTest() { + val data = "this is test data".toByteArray() + val wrongData = "this is wrong data".toByteArray() + val keypair = generateSigningKeypair() + + val signature = sign(data, keypair.getPrivateKey()) + + assert(!verifySignature(wrongData, keypair.getPublicKey(), signature)) + } +} \ No newline at end of file diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SymmetricTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SymmetricTest.kt new file mode 100644 index 000000000..8c38d60ce --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/SymmetricTest.kt @@ -0,0 +1,51 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import kotlin.test.Test +import kotlin.test.assertContentEquals +import kotlin.test.assertFailsWith + +class SymmetricTest { + @Test + fun encryptDecryptTest() { + val data = "This is some test data".toByteArray(Charsets.UTF_8) + val key = generateKey() + + val encrypted = encrypt(data, key) + val decrypted = decrypt(encrypted, key) + + assert(!data.asList().isSubArray(encrypted.asList())) + assertContentEquals(data, decrypted) + } + + @Test + fun encryptDecryptWithAadTest() { + val data = "This is some test data".toByteArray(Charsets.UTF_8) + val aad = "This is some public data".toByteArray(Charsets.UTF_8) + + val key = generateKey() + + val encrypted = encryptWithAad(data, key, aad) + val decrypted = decryptWithAad(encrypted, key, aad) + + assert(!data.asList().isSubArray(encrypted.asList())) + assertContentEquals(data, decrypted) + } + + @Test + fun encryptDecryptWithWrongAadTest() { + val data = "This is some test data".toByteArray(Charsets.UTF_8) + val aad = "This is some public data".toByteArray(Charsets.UTF_8) + val wrongAad = "this is some public data".toByteArray(Charsets.UTF_8) + + val key = generateKey() + + val encrypted = encryptWithAad(data, key, aad) + + assertFailsWith { + decryptWithAad(encrypted, key, wrongAad) + } + } +} \ No newline at end of file diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/TestUtils.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/TestUtils.kt new file mode 100644 index 000000000..9ebeaf990 --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/TestUtils.kt @@ -0,0 +1,24 @@ +package org.devolutions.crypto + +// Code is ported from this post: +// https://www.geeksforgeeks.org/check-whether-an-array-is-subarray-of-another-array/ +fun List.isSubArray(data: List): Boolean { + var i = 0 + var j = 0 + + while (i < data.size && j < this.size) { + if (data[i] == this[j]) { + i += 1; + j += 1; + + if (j == this.size) { + return true + } + } else { + i = i - j + 1 + j = 0 + } + } + + return false +} diff --git a/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/UtilsTest.kt b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/UtilsTest.kt new file mode 100644 index 000000000..c545844f7 --- /dev/null +++ b/wrappers/kotlin/lib/src/test/kotlin/org/devolutions/crypto/UtilsTest.kt @@ -0,0 +1,187 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.devolutions.crypto + +import kotlin.test.Test +import kotlin.test.assertContentEquals +import kotlin.test.assertEquals + +class UtilsTest { + @Test + fun generateKeyDefaultTest() { + val key = generateKey() + + assertEquals(32, key.size) + assert(!key.contentEquals(ByteArray(32) { 0 })) + } + + @Test + fun generateKeyLongerTest() { + val key = generateKey(41u) + + assertEquals(41, key.size) + assert(!key.contentEquals(ByteArray(41) { 0 })) + } + + @Test + fun generateKeyActuallyRandomTest() { + val key1 = generateKey() + val key2 = generateKey() + + assert(!key1.contentEquals(key2)) + } + + @Test + fun deriveKeyPbkdfDefaultTest() { + val password = "password".toByteArray() + + val result = deriveKeyPbkdf2(password, null, 10u) + assertEquals(32, result.size) + assert(!result.contentEquals(ByteArray(32) { 0 })) + } + + @Test + fun deriveKeyPbkdfLargerTest() { + val password = "password".toByteArray() + + val result = deriveKeyPbkdf2(password, null, 10u, 41u) + assertEquals(41, result.size) + assert(!result.contentEquals(ByteArray(41) { 0 })) + } + + @Test + fun deriveKeyPbkdfDeterministicTest() { + val password = "password".toByteArray() + + val result1 = deriveKeyPbkdf2(password, null, 10u) + val result2 = deriveKeyPbkdf2(password, null, 10u) + + assertEquals(32, result1.size) + assert(!result1.contentEquals(ByteArray(32) { 0 })) + assertContentEquals(result1, result2) + } + + @Test + fun deriveKeyPbkdfDifferentTest() { + val password = "password".toByteArray() + val salt = "thisisasalt".toByteArray() + val iterations = 10u + + val result = deriveKeyPbkdf2(password, salt, iterations) + val differentPass = deriveKeyPbkdf2("pa\$\$word".toByteArray(), salt, iterations) + val differentSalt = deriveKeyPbkdf2(password, "this1sasalt".toByteArray(), iterations) + val differentIterations = deriveKeyPbkdf2(password, salt, 11u) + + assert(!result.contentEquals(differentPass)) + assert(!result.contentEquals(differentSalt)) + assert(!result.contentEquals(differentIterations)) + } + + @Test + fun deriveKeyArgon2Test() { + val parameters = Argon2ParametersBuilder().build() + val password = "password".toByteArray() + + val result = deriveKeyArgon2(password, parameters) + + assertEquals(32, result.size) + assert(!result.contentEquals(ByteArray(32) { 0 })) + } + + @Test + fun validateHeaderValidTest() { + val validCiphertext = base64Decode("DQwCAAAAAQA=") + val validPasswordHash = base64Decode("DQwDAAAAAQA=") + val validShare = base64Decode("DQwEAAAAAQA=") + val validPrivateKey = base64Decode("DQwBAAEAAQA=") + val validPublicKey = base64Decode("DQwBAAEAAQA=") + + assert(validateHeader(validCiphertext, DataType.CIPHERTEXT)) + assert(validateHeader(validPasswordHash, DataType.PASSWORD_HASH)) + assert(validateHeader(validShare, DataType.SHARE)) + assert(validateHeader(validPublicKey, DataType.KEY)) + assert(validateHeader(validPrivateKey, DataType.KEY)) + } + + @Test + fun validateHeaderInvalidTest() { + val validCiphertext = base64Decode("DQwCAAAAAQA=") + + assert(!validateHeader(validCiphertext, DataType.PASSWORD_HASH)) + + val invalidSignature = base64Decode("DAwBAAEAAQA=") + val invalidType = base64Decode("DQwIAAEAAQA=") + val invalidSubtype = base64Decode("DQwBAAgAAQA=") + val invalidVersion = base64Decode("DQwBAAEACAA=") + + assert(!validateHeader(invalidSignature, DataType.KEY)) + assert(!validateHeader(invalidType, DataType.KEY)) + assert(!validateHeader(invalidSubtype, DataType.KEY)) + assert(!validateHeader(invalidVersion, DataType.KEY)) + + val notLongEnough = base64Decode("DQwBAAEAAQ==") + + assert(!validateHeader(notLongEnough, DataType.KEY)) + } + + @Test + fun base64EncodeTest() { + val input = byteArrayOf(0x41, 0x42, 0x43, 0x44, 0x45) + val expected = "QUJDREU=" + val result = base64Encode(input) + + assertEquals(expected, result) + } + + @Test + fun base64DecodeTest() { + val input = "QUJDREU=" + val expected = byteArrayOf(0x41, 0x42, 0x43, 0x44, 0x45) + val result = base64Decode(input) + + assertContentEquals(expected, result) + } + + @Test + fun base64UrlEncodeTest() { + val input1 = "Ab6/".toByteArray() + val expected1 = "QWI2Lw" + val result1 = base64EncodeUrl(input1) + + assertEquals(expected1, result1) + + val input2 = "Ab6/75".toByteArray() + val expected2 = "QWI2Lzc1" + val result2 = base64EncodeUrl(input2) + + assertEquals(expected2, result2) + + val input3 = byteArrayOf(0xff.toByte(), 0xff.toByte(), 0xfe.toByte(), 0xff.toByte()) + val expected3 = "___-_w" + val result3 = base64EncodeUrl(input3) + + assertEquals(expected3, result3) + } + + @Test + fun base64UrlDecodeTest() { + val input1 = "QWI2Lw" + val expected1 = "Ab6/".toByteArray() + val result1 = base64DecodeUrl(input1) + + assertContentEquals(expected1, result1) + + val input2 = "QWI2Lzc1" + val expected2 = "Ab6/75".toByteArray() + val result2 = base64DecodeUrl(input2) + + assertContentEquals(expected2, result2) + + val input3 = "___-_w" + val expected3 = byteArrayOf(0xff.toByte(), 0xff.toByte(), 0xfe.toByte(), 0xff.toByte()) + val result3 = base64DecodeUrl(input3) + + assertContentEquals(expected3, result3) + } +} \ No newline at end of file From ebe3eb134fea67ec489738ab9c9cdf4689a72a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Wed, 23 Oct 2024 16:13:29 -0400 Subject: [PATCH 22/43] [Uniffi] Kotlin android makefile --- .cargo/config | 5 - wrappers/kotlin/.gitignore | 2 + wrappers/kotlin/Makefile | 71 + .../devolutions/crypto/devolutions_crypto.kt | 3066 ----------------- wrappers/kotlin/setup.sh | 5 +- 5 files changed, 75 insertions(+), 3074 deletions(-) delete mode 100644 .cargo/config create mode 100644 wrappers/kotlin/Makefile delete mode 100644 wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt diff --git a/.cargo/config b/.cargo/config deleted file mode 100644 index 91039e46e..000000000 --- a/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -[target.'cfg(windows)'] -rustflags = ["-Ctarget-feature=+crt-static"] - -[target.aarch64-unknown-linux-gnu] -linker = "aarch64-linux-gnu-gcc" diff --git a/wrappers/kotlin/.gitignore b/wrappers/kotlin/.gitignore index 1b6985c00..0863556a1 100644 --- a/wrappers/kotlin/.gitignore +++ b/wrappers/kotlin/.gitignore @@ -3,3 +3,5 @@ # Ignore Gradle build output directory build + +lib/src/main/resources/* diff --git a/wrappers/kotlin/Makefile b/wrappers/kotlin/Makefile new file mode 100644 index 000000000..282ac745c --- /dev/null +++ b/wrappers/kotlin/Makefile @@ -0,0 +1,71 @@ +ROOT = ../.. + +LIB_NAME = devolutions_crypto_uniffi +LIB_NAME_DASHES = devolutions-crypto-uniffi + +DEBUG_DIR = $(ROOT)/target/debug +DEBUG_DLL = $(DEBUG_DIR)/lib$(LIB_NAME).so + +KOTLIN_WRAPPER = ./lib/src/main/kotlin +KOTLIN_WRAPPER_FILE = $(KOTLIN_WRAPPER)/org/devolutions/crypto/devolutions_crypto.kt + +UNIFFI_PATH = $(ROOT)/uniffi +UNIFFI_BINDGEN = $(UNIFFI_PATH)/uniffi-bindgen +DC_UNIFFI = $(UNIFFI_PATH)/$(LIB_NAME_DASHES) +DC_UNIFFI_SOURCES = $(wildcard $(ROOT)/src/*) $(ROOT)/Cargo.toml $(wildcard $(DC_UNIFFI)/src/*) $(DC_UNIFFI)/Cargo.toml +UNIFFI_BINDGEN_EXE = $(DEBUG_DIR)/uniffi-bindgen + +RUST_ARCHS = aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android +ANDROID_ARCHS = android-arm64-v8a android-armeabi-v7a android-x86 android-x86-64 + +KT_DEBUG_PATH = ./lib/src/main/resources/linux-x86-64/lib$(LIB_NAME).so +KT_RELEASE_PATH = $(foreach var,$(ANDROID_ARCHS),./lib/src/main/resources/$(var)/lib$(LIB_NAME).so) + +.PHONY: android clean + +all: $(KOTLIN_WRAPPER_FILE) $(KT_DEBUG_PATH) + +android: $(KOTLIN_WRAPPER_FILE) $(KT_RELEASE_PATH) + +# Build the library in debug +$(DEBUG_DLL): $(DC_UNIFFI_SOURCES) + cargo build -p "$(LIB_NAME_DASHES)" + +# Build the release android libraries +$(ROOT)/target/%/release/lib$(LIB_NAME).so: $(DC_UNIFFI_SOURCES) + cargo build --release --target=$* -p "$(LIB_NAME_DASHES)" + +# Copy the libraries to KT directory +# TODO: Can we loop this? +$(KT_DEBUG_PATH): $(DEBUG_DLL) + mkdir -p $(@D) + cp $< $@ + +./lib/src/main/resources/android-arm64-v8a/lib$(LIB_NAME).so: $(ROOT)/target/aarch64-linux-android/release/lib$(LIB_NAME).so + mkdir -p $(@D) + cp $< $@ + +./lib/src/main/resources/android-armeabi-v7a/lib$(LIB_NAME).so: $(ROOT)/target/armv7-linux-androideabi/release/lib$(LIB_NAME).so + mkdir -p $(@D) + cp $< $@ + +./lib/src/main/resources/android-x86/lib$(LIB_NAME).so: $(ROOT)/target/i686-linux-android/release/lib$(LIB_NAME).so + mkdir -p $(@D) + cp $< $@ + +./lib/src/main/resources/android-x86-64/lib$(LIB_NAME).so: $(ROOT)/target/x86_64-linux-android/release/lib$(LIB_NAME).so + mkdir -p $(@D) + cp $< $@ + +# Build uniffi-bindgen +$(UNIFFI_BINDGEN_EXE): $(wildcard $(UNIFFI_BINDGEN)/src/*) $(UNIFFI_BINDGEN)/Cargo.toml + cargo build -p "uniffi-bindgen" + +# Generate the wrapper file +$(KOTLIN_WRAPPER_FILE): $(DEBUG_DLL) $(UNIFFI_BINDGEN_EXE) + $(UNIFFI_BINDGEN_EXE) generate --library "$(DEBUG_DLL)" --language kotlin -o $(KOTLIN_WRAPPER) + +clean: + cargo clean + rm $(KOTLIN_WRAPPER_FILE) + rm $(KT_RELEASE_PATH) diff --git a/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt b/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt deleted file mode 100644 index b3af60f78..000000000 --- a/wrappers/kotlin/lib/src/main/kotlin/org/devolutions/crypto/devolutions_crypto.kt +++ /dev/null @@ -1,3066 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! - -@file:Suppress("NAME_SHADOWING") - -package org.devolutions.crypto - -// Common helper code. -// -// Ideally this would live in a separate .kt file where it can be unittested etc -// in isolation, and perhaps even published as a re-useable package. -// -// However, it's important that the details of how this helper code works (e.g. the -// way that different builtin types are passed across the FFI) exactly match what's -// expected by the Rust code on the other side of the interface. In practice right -// now that means coming from the exact some version of `uniffi` that was used to -// compile the Rust component. The easiest way to ensure this is to bundle the Kotlin -// helpers directly inline like we're doing here. - -import com.sun.jna.Library -import com.sun.jna.IntegerType -import com.sun.jna.Native -import com.sun.jna.Pointer -import com.sun.jna.Structure -import com.sun.jna.Callback -import com.sun.jna.ptr.* -import java.nio.ByteBuffer -import java.nio.ByteOrder -import java.nio.CharBuffer -import java.nio.charset.CodingErrorAction -import java.util.concurrent.atomic.AtomicLong -import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.atomic.AtomicBoolean - -// This is a helper for safely working with byte buffers returned from the Rust code. -// A rust-owned buffer is represented by its capacity, its current length, and a -// pointer to the underlying data. - -@Structure.FieldOrder("capacity", "len", "data") -open class RustBuffer : Structure() { - // Note: `capacity` and `len` are actually `ULong` values, but JVM only supports signed values. - // When dealing with these fields, make sure to call `toULong()`. - @JvmField var capacity: Long = 0 - @JvmField var len: Long = 0 - @JvmField var data: Pointer? = null - - class ByValue: RustBuffer(), Structure.ByValue - class ByReference: RustBuffer(), Structure.ByReference - - internal fun setValue(other: RustBuffer) { - capacity = other.capacity - len = other.len - data = other.data - } - - companion object { - internal fun alloc(size: ULong = 0UL) = uniffiRustCall() { status -> - // Note: need to convert the size to a `Long` value to make this work with JVM. - UniffiLib.INSTANCE.ffi_devolutions_crypto_uniffi_rustbuffer_alloc(size.toLong(), status) - }.also { - if(it.data == null) { - throw RuntimeException("RustBuffer.alloc() returned null data pointer (size=${size})") - } - } - - internal fun create(capacity: ULong, len: ULong, data: Pointer?): RustBuffer.ByValue { - var buf = RustBuffer.ByValue() - buf.capacity = capacity.toLong() - buf.len = len.toLong() - buf.data = data - return buf - } - - internal fun free(buf: RustBuffer.ByValue) = uniffiRustCall() { status -> - UniffiLib.INSTANCE.ffi_devolutions_crypto_uniffi_rustbuffer_free(buf, status) - } - } - - @Suppress("TooGenericExceptionThrown") - fun asByteBuffer() = - this.data?.getByteBuffer(0, this.len.toLong())?.also { - it.order(ByteOrder.BIG_ENDIAN) - } -} - -/** - * The equivalent of the `*mut RustBuffer` type. - * Required for callbacks taking in an out pointer. - * - * Size is the sum of all values in the struct. - */ -class RustBufferByReference : ByReference(16) { - /** - * Set the pointed-to `RustBuffer` to the given value. - */ - fun setValue(value: RustBuffer.ByValue) { - // NOTE: The offsets are as they are in the C-like struct. - val pointer = getPointer() - pointer.setLong(0, value.capacity) - pointer.setLong(8, value.len) - pointer.setPointer(16, value.data) - } - - /** - * Get a `RustBuffer.ByValue` from this reference. - */ - fun getValue(): RustBuffer.ByValue { - val pointer = getPointer() - val value = RustBuffer.ByValue() - value.writeField("capacity", pointer.getLong(0)) - value.writeField("len", pointer.getLong(8)) - value.writeField("data", pointer.getLong(16)) - - return value - } -} - -// This is a helper for safely passing byte references into the rust code. -// It's not actually used at the moment, because there aren't many things that you -// can take a direct pointer to in the JVM, and if we're going to copy something -// then we might as well copy it into a `RustBuffer`. But it's here for API -// completeness. - -@Structure.FieldOrder("len", "data") -open class ForeignBytes : Structure() { - @JvmField var len: Int = 0 - @JvmField var data: Pointer? = null - - class ByValue : ForeignBytes(), Structure.ByValue -} -// The FfiConverter interface handles converter types to and from the FFI -// -// All implementing objects should be public to support external types. When a -// type is external we need to import it's FfiConverter. -public interface FfiConverter { - // Convert an FFI type to a Kotlin type - fun lift(value: FfiType): KotlinType - - // Convert an Kotlin type to an FFI type - fun lower(value: KotlinType): FfiType - - // Read a Kotlin type from a `ByteBuffer` - fun read(buf: ByteBuffer): KotlinType - - // Calculate bytes to allocate when creating a `RustBuffer` - // - // This must return at least as many bytes as the write() function will - // write. It can return more bytes than needed, for example when writing - // Strings we can't know the exact bytes needed until we the UTF-8 - // encoding, so we pessimistically allocate the largest size possible (3 - // bytes per codepoint). Allocating extra bytes is not really a big deal - // because the `RustBuffer` is short-lived. - fun allocationSize(value: KotlinType): ULong - - // Write a Kotlin type to a `ByteBuffer` - fun write(value: KotlinType, buf: ByteBuffer) - - // Lower a value into a `RustBuffer` - // - // This method lowers a value into a `RustBuffer` rather than the normal - // FfiType. It's used by the callback interface code. Callback interface - // returns are always serialized into a `RustBuffer` regardless of their - // normal FFI type. - fun lowerIntoRustBuffer(value: KotlinType): RustBuffer.ByValue { - val rbuf = RustBuffer.alloc(allocationSize(value)) - try { - val bbuf = rbuf.data!!.getByteBuffer(0, rbuf.capacity).also { - it.order(ByteOrder.BIG_ENDIAN) - } - write(value, bbuf) - rbuf.writeField("len", bbuf.position().toLong()) - return rbuf - } catch (e: Throwable) { - RustBuffer.free(rbuf) - throw e - } - } - - // Lift a value from a `RustBuffer`. - // - // This here mostly because of the symmetry with `lowerIntoRustBuffer()`. - // It's currently only used by the `FfiConverterRustBuffer` class below. - fun liftFromRustBuffer(rbuf: RustBuffer.ByValue): KotlinType { - val byteBuf = rbuf.asByteBuffer()!! - try { - val item = read(byteBuf) - if (byteBuf.hasRemaining()) { - throw RuntimeException("junk remaining in buffer after lifting, something is very wrong!!") - } - return item - } finally { - RustBuffer.free(rbuf) - } - } -} - -// FfiConverter that uses `RustBuffer` as the FfiType -public interface FfiConverterRustBuffer: FfiConverter { - override fun lift(value: RustBuffer.ByValue) = liftFromRustBuffer(value) - override fun lower(value: KotlinType) = lowerIntoRustBuffer(value) -} -// A handful of classes and functions to support the generated data structures. -// This would be a good candidate for isolating in its own ffi-support lib. - -internal const val UNIFFI_CALL_SUCCESS = 0.toByte() -internal const val UNIFFI_CALL_ERROR = 1.toByte() -internal const val UNIFFI_CALL_UNEXPECTED_ERROR = 2.toByte() - -@Structure.FieldOrder("code", "error_buf") -internal open class UniffiRustCallStatus : Structure() { - @JvmField var code: Byte = 0 - @JvmField var error_buf: RustBuffer.ByValue = RustBuffer.ByValue() - - class ByValue: UniffiRustCallStatus(), Structure.ByValue - - fun isSuccess(): Boolean { - return code == UNIFFI_CALL_SUCCESS - } - - fun isError(): Boolean { - return code == UNIFFI_CALL_ERROR - } - - fun isPanic(): Boolean { - return code == UNIFFI_CALL_UNEXPECTED_ERROR - } - - companion object { - fun create(code: Byte, errorBuf: RustBuffer.ByValue): UniffiRustCallStatus.ByValue { - val callStatus = UniffiRustCallStatus.ByValue() - callStatus.code = code - callStatus.error_buf = errorBuf - return callStatus - } - } -} - -class InternalException(message: String) : kotlin.Exception(message) - -// Each top-level error class has a companion object that can lift the error from the call status's rust buffer -interface UniffiRustCallStatusErrorHandler { - fun lift(error_buf: RustBuffer.ByValue): E; -} - -// Helpers for calling Rust -// In practice we usually need to be synchronized to call this safely, so it doesn't -// synchronize itself - -// Call a rust function that returns a Result<>. Pass in the Error class companion that corresponds to the Err -private inline fun uniffiRustCallWithError(errorHandler: UniffiRustCallStatusErrorHandler, callback: (UniffiRustCallStatus) -> U): U { - var status = UniffiRustCallStatus() - val return_value = callback(status) - uniffiCheckCallStatus(errorHandler, status) - return return_value -} - -// Check UniffiRustCallStatus and throw an error if the call wasn't successful -private fun uniffiCheckCallStatus(errorHandler: UniffiRustCallStatusErrorHandler, status: UniffiRustCallStatus) { - if (status.isSuccess()) { - return - } else if (status.isError()) { - throw errorHandler.lift(status.error_buf) - } else if (status.isPanic()) { - // when the rust code sees a panic, it tries to construct a rustbuffer - // with the message. but if that code panics, then it just sends back - // an empty buffer. - if (status.error_buf.len > 0) { - throw InternalException(FfiConverterString.lift(status.error_buf)) - } else { - throw InternalException("Rust panic") - } - } else { - throw InternalException("Unknown rust call status: $status.code") - } -} - -// UniffiRustCallStatusErrorHandler implementation for times when we don't expect a CALL_ERROR -object UniffiNullRustCallStatusErrorHandler: UniffiRustCallStatusErrorHandler { - override fun lift(error_buf: RustBuffer.ByValue): InternalException { - RustBuffer.free(error_buf) - return InternalException("Unexpected CALL_ERROR") - } -} - -// Call a rust function that returns a plain value -private inline fun uniffiRustCall(callback: (UniffiRustCallStatus) -> U): U { - return uniffiRustCallWithError(UniffiNullRustCallStatusErrorHandler, callback) -} - -internal inline fun uniffiTraitInterfaceCall( - callStatus: UniffiRustCallStatus, - makeCall: () -> T, - writeReturn: (T) -> Unit, -) { - try { - writeReturn(makeCall()) - } catch(e: kotlin.Exception) { - callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR - callStatus.error_buf = FfiConverterString.lower(e.toString()) - } -} - -internal inline fun uniffiTraitInterfaceCallWithError( - callStatus: UniffiRustCallStatus, - makeCall: () -> T, - writeReturn: (T) -> Unit, - lowerError: (E) -> RustBuffer.ByValue -) { - try { - writeReturn(makeCall()) - } catch(e: kotlin.Exception) { - if (e is E) { - callStatus.code = UNIFFI_CALL_ERROR - callStatus.error_buf = lowerError(e) - } else { - callStatus.code = UNIFFI_CALL_UNEXPECTED_ERROR - callStatus.error_buf = FfiConverterString.lower(e.toString()) - } - } -} -// Map handles to objects -// -// This is used pass an opaque 64-bit handle representing a foreign object to the Rust code. -internal class UniffiHandleMap { - private val map = ConcurrentHashMap() - private val counter = java.util.concurrent.atomic.AtomicLong(0) - - val size: Int - get() = map.size - - // Insert a new object into the handle map and get a handle for it - fun insert(obj: T): Long { - val handle = counter.getAndAdd(1) - map.put(handle, obj) - return handle - } - - // Get an object from the handle map - fun get(handle: Long): T { - return map.get(handle) ?: throw InternalException("UniffiHandleMap.get: Invalid handle") - } - - // Remove an entry from the handlemap and get the Kotlin object back - fun remove(handle: Long): T { - return map.remove(handle) ?: throw InternalException("UniffiHandleMap: Invalid handle") - } -} - -// Contains loading, initialization code, -// and the FFI Function declarations in a com.sun.jna.Library. -@Synchronized -private fun findLibraryName(componentName: String): String { - val libOverride = System.getProperty("uniffi.component.$componentName.libraryOverride") - if (libOverride != null) { - return libOverride - } - return "devolutions_crypto_uniffi" -} - -private inline fun loadIndirect( - componentName: String -): Lib { - return Native.load(findLibraryName(componentName), Lib::class.java) -} - -// Define FFI callback types -internal interface UniffiRustFutureContinuationCallback : com.sun.jna.Callback { - fun callback(`data`: Long,`pollResult`: Byte,) -} -internal interface UniffiForeignFutureFree : com.sun.jna.Callback { - fun callback(`handle`: Long,) -} -internal interface UniffiCallbackInterfaceFree : com.sun.jna.Callback { - fun callback(`handle`: Long,) -} -@Structure.FieldOrder("handle", "free") -internal open class UniffiForeignFuture( - @JvmField internal var `handle`: Long = 0.toLong(), - @JvmField internal var `free`: UniffiForeignFutureFree? = null, -) : Structure() { - class UniffiByValue( - `handle`: Long = 0.toLong(), - `free`: UniffiForeignFutureFree? = null, - ): UniffiForeignFuture(`handle`,`free`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFuture) { - `handle` = other.`handle` - `free` = other.`free` - } - -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU8( - @JvmField internal var `returnValue`: Byte = 0.toByte(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Byte = 0.toByte(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU8(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU8) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU8 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU8.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI8( - @JvmField internal var `returnValue`: Byte = 0.toByte(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Byte = 0.toByte(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI8(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI8) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI8 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI8.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU16( - @JvmField internal var `returnValue`: Short = 0.toShort(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Short = 0.toShort(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU16(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU16) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU16 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU16.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI16( - @JvmField internal var `returnValue`: Short = 0.toShort(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Short = 0.toShort(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI16(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI16) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI16 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI16.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU32( - @JvmField internal var `returnValue`: Int = 0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Int = 0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI32( - @JvmField internal var `returnValue`: Int = 0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Int = 0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructU64( - @JvmField internal var `returnValue`: Long = 0.toLong(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Long = 0.toLong(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructU64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructU64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteU64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructU64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructI64( - @JvmField internal var `returnValue`: Long = 0.toLong(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Long = 0.toLong(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructI64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructI64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteI64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructI64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructF32( - @JvmField internal var `returnValue`: Float = 0.0f, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Float = 0.0f, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructF32(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructF32) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteF32 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF32.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructF64( - @JvmField internal var `returnValue`: Double = 0.0, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Double = 0.0, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructF64(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructF64) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteF64 : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructF64.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructPointer( - @JvmField internal var `returnValue`: Pointer = Pointer.NULL, - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: Pointer = Pointer.NULL, - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructPointer(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructPointer) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompletePointer : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructPointer.UniffiByValue,) -} -@Structure.FieldOrder("returnValue", "callStatus") -internal open class UniffiForeignFutureStructRustBuffer( - @JvmField internal var `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `returnValue`: RustBuffer.ByValue = RustBuffer.ByValue(), - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructRustBuffer(`returnValue`,`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructRustBuffer) { - `returnValue` = other.`returnValue` - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteRustBuffer : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructRustBuffer.UniffiByValue,) -} -@Structure.FieldOrder("callStatus") -internal open class UniffiForeignFutureStructVoid( - @JvmField internal var `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), -) : Structure() { - class UniffiByValue( - `callStatus`: UniffiRustCallStatus.ByValue = UniffiRustCallStatus.ByValue(), - ): UniffiForeignFutureStructVoid(`callStatus`,), Structure.ByValue - - internal fun uniffiSetValue(other: UniffiForeignFutureStructVoid) { - `callStatus` = other.`callStatus` - } - -} -internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback { - fun callback(`callbackData`: Long,`result`: UniffiForeignFutureStructVoid.UniffiByValue,) -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// A JNA Library to expose the extern-C FFI definitions. -// This is an implementation detail which will be called internally by the public API. - -internal interface UniffiLib : Library { - companion object { - internal val INSTANCE: UniffiLib by lazy { - loadIndirect(componentName = "devolutions_crypto") - .also { lib: UniffiLib -> - uniffiCheckContractApiVersion(lib) - uniffiCheckApiChecksums(lib) - } - } - - // The Cleaner for the whole library - internal val CLEANER: UniffiCleaner by lazy { - UniffiCleaner.create() - } - } - - fun uniffi_devolutions_crypto_uniffi_fn_clone_argon2parameters(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_free_argon2parameters(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parameters_new_from_bytes(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parameters_get_bytes(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_clone_argon2parametersbuilder(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_free_argon2parametersbuilder(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parametersbuilder_new(uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_associated_data(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_build(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_dc_version(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_iterations(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_lanes(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_length(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_memory(`ptr`: Pointer,`value`: Int,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_salt(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_secret_key(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_variant(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_version(`ptr`: Pointer,`value`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun uniffi_devolutions_crypto_uniffi_fn_constructor_signingkeypair_new_from_bytes(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_private_key(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_public_key(`ptr`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_encrypt_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key(`nShares`: Byte,`threshold`: Byte,`length`: Int,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair(`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun uniffi_devolutions_crypto_uniffi_fn_func_hash_password(`password`: RustBuffer.ByValue,`iterations`: Int,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_sign(`data`: RustBuffer.ByValue,`keypair`: RustBuffer.ByValue,`version`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_base64_decode(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_base64_decode_url(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_base64_encode(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_base64_encode_url(`data`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_decrypt_with_aad(`data`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,`aad`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_argon2(`key`: RustBuffer.ByValue,`parameters`: Pointer,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2(`key`: RustBuffer.ByValue,`salt`: RustBuffer.ByValue,`iterations`: Int,`length`: Int,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_generate_key(`length`: Int,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_join_shares(`shares`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_mix_key_exchange(`privateKey`: RustBuffer.ByValue,`publicKey`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun uniffi_devolutions_crypto_uniffi_fn_func_validate_header(`data`: RustBuffer.ByValue,`dataType`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun uniffi_devolutions_crypto_uniffi_fn_func_verify_password(`password`: RustBuffer.ByValue,`hash`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun uniffi_devolutions_crypto_uniffi_fn_func_verify_signature(`data`: RustBuffer.ByValue,`publicKey`: RustBuffer.ByValue,`signature`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_devolutions_crypto_uniffi_rustbuffer_alloc(`size`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_devolutions_crypto_uniffi_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_devolutions_crypto_uniffi_rustbuffer_free(`buf`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun ffi_devolutions_crypto_uniffi_rustbuffer_reserve(`buf`: RustBuffer.ByValue,`additional`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_devolutions_crypto_uniffi_rust_future_poll_u8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u8(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_u8(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_u8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_devolutions_crypto_uniffi_rust_future_poll_i8(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i8(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_i8(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_i8(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Byte - fun ffi_devolutions_crypto_uniffi_rust_future_poll_u16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u16(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_u16(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_u16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Short - fun ffi_devolutions_crypto_uniffi_rust_future_poll_i16(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i16(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_i16(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_i16(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Short - fun ffi_devolutions_crypto_uniffi_rust_future_poll_u32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u32(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_u32(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_u32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Int - fun ffi_devolutions_crypto_uniffi_rust_future_poll_i32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i32(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_i32(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_i32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Int - fun ffi_devolutions_crypto_uniffi_rust_future_poll_u64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_u64(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_u64(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_u64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Long - fun ffi_devolutions_crypto_uniffi_rust_future_poll_i64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_i64(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_i64(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_i64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Long - fun ffi_devolutions_crypto_uniffi_rust_future_poll_f32(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_f32(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_f32(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_f32(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Float - fun ffi_devolutions_crypto_uniffi_rust_future_poll_f64(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_f64(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_f64(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_f64(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Double - fun ffi_devolutions_crypto_uniffi_rust_future_poll_pointer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_pointer(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_pointer(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_pointer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Pointer - fun ffi_devolutions_crypto_uniffi_rust_future_poll_rust_buffer(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_rust_buffer(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_rust_buffer(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_rust_buffer(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): RustBuffer.ByValue - fun ffi_devolutions_crypto_uniffi_rust_future_poll_void(`handle`: Long,`callback`: UniffiRustFutureContinuationCallback,`callbackData`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_cancel_void(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_free_void(`handle`: Long, - ): Unit - fun ffi_devolutions_crypto_uniffi_rust_future_complete_void(`handle`: Long,uniffi_out_err: UniffiRustCallStatus, - ): Unit - fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_hash_password( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_sign( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode_url( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric_with_aad( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_with_aad( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_argon2( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_generate_key( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_join_shares( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_mix_key_exchange( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_validate_header( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_verify_password( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_func_verify_signature( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parameters_get_bytes( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_associated_data( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_build( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_dc_version( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_iterations( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_lanes( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_length( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_memory( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_salt( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_secret_key( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_variant( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_version( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_private_key( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_public_key( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parameters_new_from_bytes( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parametersbuilder_new( - ): Short - fun uniffi_devolutions_crypto_uniffi_checksum_constructor_signingkeypair_new_from_bytes( - ): Short - fun ffi_devolutions_crypto_uniffi_uniffi_contract_version( - ): Int - -} - -private fun uniffiCheckContractApiVersion(lib: UniffiLib) { - // Get the bindings contract version from our ComponentInterface - val bindings_contract_version = 26 - // Get the scaffolding contract version by calling the into the dylib - val scaffolding_contract_version = lib.ffi_devolutions_crypto_uniffi_uniffi_contract_version() - if (bindings_contract_version != scaffolding_contract_version) { - throw RuntimeException("UniFFI contract version mismatch: try cleaning and rebuilding your project") - } -} - -@Suppress("UNUSED_PARAMETER") -private fun uniffiCheckApiChecksums(lib: UniffiLib) { - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt() != 21235.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric() != 16258.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_asymmetric_with_aad() != 34280.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_encrypt_with_aad() != 56466.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_keypair() != 13437.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_shared_key() != 9340.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_signing_keypair() != 33572.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_hash_password() != 62085.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_sign() != 54825.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode() != 64610.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_decode_url() != 15029.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode() != 61134.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_base64_encode_url() != 31513.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt() != 41817.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric() != 47124.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_asymmetric_with_aad() != 9987.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_decrypt_with_aad() != 59734.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_argon2() != 60451.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_derive_key_pbkdf2() != 12853.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_generate_key() != 42956.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_join_shares() != 64867.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_mix_key_exchange() != 52615.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_validate_header() != 50316.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_verify_password() != 39819.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_func_verify_signature() != 35870.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parameters_get_bytes() != 51334.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_associated_data() != 20223.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_build() != 6812.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_dc_version() != 40712.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_iterations() != 28254.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_lanes() != 3637.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_length() != 791.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_memory() != 14913.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_salt() != 59352.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_secret_key() != 38451.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_variant() != 50137.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_argon2parametersbuilder_version() != 39743.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_private_key() != 10265.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_method_signingkeypair_get_public_key() != 47363.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parameters_new_from_bytes() != 48784.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_argon2parametersbuilder_new() != 58740.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } - if (lib.uniffi_devolutions_crypto_uniffi_checksum_constructor_signingkeypair_new_from_bytes() != 42998.toShort()) { - throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } -} - -// Async support - -// Public interface members begin here. - - -// Interface implemented by anything that can contain an object reference. -// -// Such types expose a `destroy()` method that must be called to cleanly -// dispose of the contained objects. Failure to call this method may result -// in memory leaks. -// -// The easiest way to ensure this method is called is to use the `.use` -// helper method to execute a block and destroy the object at the end. -interface Disposable { - fun destroy() - companion object { - fun destroy(vararg args: Any?) { - args.filterIsInstance() - .forEach(Disposable::destroy) - } - } -} - -inline fun T.use(block: (T) -> R) = - try { - block(this) - } finally { - try { - // N.B. our implementation is on the nullable type `Disposable?`. - this?.destroy() - } catch (e: Throwable) { - // swallow - } - } - -/** Used to instantiate an interface without an actual pointer, for fakes in tests, mostly. */ -object NoPointer - -public object FfiConverterUByte: FfiConverter { - override fun lift(value: Byte): UByte { - return value.toUByte() - } - - override fun read(buf: ByteBuffer): UByte { - return lift(buf.get()) - } - - override fun lower(value: UByte): Byte { - return value.toByte() - } - - override fun allocationSize(value: UByte) = 1UL - - override fun write(value: UByte, buf: ByteBuffer) { - buf.put(value.toByte()) - } -} - -public object FfiConverterUInt: FfiConverter { - override fun lift(value: Int): UInt { - return value.toUInt() - } - - override fun read(buf: ByteBuffer): UInt { - return lift(buf.getInt()) - } - - override fun lower(value: UInt): Int { - return value.toInt() - } - - override fun allocationSize(value: UInt) = 4UL - - override fun write(value: UInt, buf: ByteBuffer) { - buf.putInt(value.toInt()) - } -} - -public object FfiConverterBoolean: FfiConverter { - override fun lift(value: Byte): Boolean { - return value.toInt() != 0 - } - - override fun read(buf: ByteBuffer): Boolean { - return lift(buf.get()) - } - - override fun lower(value: Boolean): Byte { - return if (value) 1.toByte() else 0.toByte() - } - - override fun allocationSize(value: Boolean) = 1UL - - override fun write(value: Boolean, buf: ByteBuffer) { - buf.put(lower(value)) - } -} - -public object FfiConverterString: FfiConverter { - // Note: we don't inherit from FfiConverterRustBuffer, because we use a - // special encoding when lowering/lifting. We can use `RustBuffer.len` to - // store our length and avoid writing it out to the buffer. - override fun lift(value: RustBuffer.ByValue): String { - try { - val byteArr = ByteArray(value.len.toInt()) - value.asByteBuffer()!!.get(byteArr) - return byteArr.toString(Charsets.UTF_8) - } finally { - RustBuffer.free(value) - } - } - - override fun read(buf: ByteBuffer): String { - val len = buf.getInt() - val byteArr = ByteArray(len) - buf.get(byteArr) - return byteArr.toString(Charsets.UTF_8) - } - - fun toUtf8(value: String): ByteBuffer { - // Make sure we don't have invalid UTF-16, check for lone surrogates. - return Charsets.UTF_8.newEncoder().run { - onMalformedInput(CodingErrorAction.REPORT) - encode(CharBuffer.wrap(value)) - } - } - - override fun lower(value: String): RustBuffer.ByValue { - val byteBuf = toUtf8(value) - // Ideally we'd pass these bytes to `ffi_bytebuffer_from_bytes`, but doing so would require us - // to copy them into a JNA `Memory`. So we might as well directly copy them into a `RustBuffer`. - val rbuf = RustBuffer.alloc(byteBuf.limit().toULong()) - rbuf.asByteBuffer()!!.put(byteBuf) - return rbuf - } - - // We aren't sure exactly how many bytes our string will be once it's UTF-8 - // encoded. Allocate 3 bytes per UTF-16 code unit which will always be - // enough. - override fun allocationSize(value: String): ULong { - val sizeForLength = 4UL - val sizeForString = value.length.toULong() * 3UL - return sizeForLength + sizeForString - } - - override fun write(value: String, buf: ByteBuffer) { - val byteBuf = toUtf8(value) - buf.putInt(byteBuf.limit()) - buf.put(byteBuf) - } -} - -public object FfiConverterByteArray: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): ByteArray { - val len = buf.getInt() - val byteArr = ByteArray(len) - buf.get(byteArr) - return byteArr - } - override fun allocationSize(value: ByteArray): ULong { - return 4UL + value.size.toULong() - } - override fun write(value: ByteArray, buf: ByteBuffer) { - buf.putInt(value.size) - buf.put(value) - } -} - - -// This template implements a class for working with a Rust struct via a Pointer/Arc -// to the live Rust struct on the other side of the FFI. -// -// Each instance implements core operations for working with the Rust `Arc` and the -// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. -// -// There's some subtlety here, because we have to be careful not to operate on a Rust -// struct after it has been dropped, and because we must expose a public API for freeing -// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: -// -// * Each instance holds an opaque pointer to the underlying Rust struct. -// Method calls need to read this pointer from the object's state and pass it in to -// the Rust FFI. -// -// * When an instance is no longer needed, its pointer should be passed to a -// special destructor function provided by the Rust FFI, which will drop the -// underlying Rust struct. -// -// * Given an instance, calling code is expected to call the special -// `destroy` method in order to free it after use, either by calling it explicitly -// or by using a higher-level helper like the `use` method. Failing to do so risks -// leaking the underlying Rust struct. -// -// * We can't assume that calling code will do the right thing, and must be prepared -// to handle Kotlin method calls executing concurrently with or even after a call to -// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. -// -// * We must never allow Rust code to operate on the underlying Rust struct after -// the destructor has been called, and must never call the destructor more than once. -// Doing so may trigger memory unsafety. -// -// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` -// is implemented to call the destructor when the Kotlin object becomes unreachable. -// This is done in a background thread. This is not a panacea, and client code should be aware that -// 1. the thread may starve if some there are objects that have poorly performing -// `drop` methods or do significant work in their `drop` methods. -// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, -// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). -// -// If we try to implement this with mutual exclusion on access to the pointer, there is the -// possibility of a race between a method call and a concurrent call to `destroy`: -// -// * Thread A starts a method call, reads the value of the pointer, but is interrupted -// before it can pass the pointer over the FFI to Rust. -// * Thread B calls `destroy` and frees the underlying Rust struct. -// * Thread A resumes, passing the already-read pointer value to Rust and triggering -// a use-after-free. -// -// One possible solution would be to use a `ReadWriteLock`, with each method call taking -// a read lock (and thus allowed to run concurrently) and the special `destroy` method -// taking a write lock (and thus blocking on live method calls). However, we aim not to -// generate methods with any hidden blocking semantics, and a `destroy` method that might -// block if called incorrectly seems to meet that bar. -// -// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track -// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` -// has been called. These are updated according to the following rules: -// -// * The initial value of the counter is 1, indicating a live object with no in-flight calls. -// The initial value for the flag is false. -// -// * At the start of each method call, we atomically check the counter. -// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. -// If it is nonzero them we atomically increment it by 1 and proceed with the method call. -// -// * At the end of each method call, we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// * When `destroy` is called, we atomically flip the flag from false to true. -// If the flag was already true we silently fail. -// Otherwise we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, -// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. -// -// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been -// called *and* all in-flight method calls have completed, avoiding violating any of the expectations -// of the underlying Rust code. -// -// This makes a cleaner a better alternative to _not_ calling `destroy()` as -// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` -// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner -// thread may be starved, and the app will leak memory. -// -// In this case, `destroy`ing manually may be a better solution. -// -// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects -// with Rust peers are reclaimed: -// -// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: -// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: -// 3. The memory is reclaimed when the process terminates. -// -// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 -// - - -// The cleaner interface for Object finalization code to run. -// This is the entry point to any implementation that we're using. -// -// The cleaner registers objects and returns cleanables, so now we are -// defining a `UniffiCleaner` with a `UniffiClenaer.Cleanable` to abstract the -// different implmentations available at compile time. -interface UniffiCleaner { - interface Cleanable { - fun clean() - } - - fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable - - companion object -} - -// The fallback Jna cleaner, which is available for both Android, and the JVM. -private class UniffiJnaCleaner : UniffiCleaner { - private val cleaner = com.sun.jna.internal.Cleaner.getCleaner() - - override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable = - UniffiJnaCleanable(cleaner.register(value, cleanUpTask)) -} - -private class UniffiJnaCleanable( - private val cleanable: com.sun.jna.internal.Cleaner.Cleanable, -) : UniffiCleaner.Cleanable { - override fun clean() = cleanable.clean() -} - -// We decide at uniffi binding generation time whether we were -// using Android or not. -// There are further runtime checks to chose the correct implementation -// of the cleaner. -private fun UniffiCleaner.Companion.create(): UniffiCleaner = - try { - // For safety's sake: if the library hasn't been run in android_cleaner = true - // mode, but is being run on Android, then we still need to think about - // Android API versions. - // So we check if java.lang.ref.Cleaner is there, and use that… - java.lang.Class.forName("java.lang.ref.Cleaner") - JavaLangRefCleaner() - } catch (e: ClassNotFoundException) { - // … otherwise, fallback to the JNA cleaner. - UniffiJnaCleaner() - } - -private class JavaLangRefCleaner : UniffiCleaner { - val cleaner = java.lang.ref.Cleaner.create() - - override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable = - JavaLangRefCleanable(cleaner.register(value, cleanUpTask)) -} - -private class JavaLangRefCleanable( - val cleanable: java.lang.ref.Cleaner.Cleanable -) : UniffiCleaner.Cleanable { - override fun clean() = cleanable.clean() -} -public interface Argon2ParametersInterface { - - fun `getBytes`(): kotlin.ByteArray - - companion object -} - -open class Argon2Parameters: Disposable, AutoCloseable, Argon2ParametersInterface { - - constructor(pointer: Pointer) { - this.pointer = pointer - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - - /** - * This constructor can be used to instantiate a fake object. Only used for tests. Any - * attempt to actually use an object constructed this way will fail as there is no - * connected Rust object. - */ - @Suppress("UNUSED_PARAMETER") - constructor(noPointer: NoPointer) { - this.pointer = null - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - - protected val pointer: Pointer? - protected val cleanable: UniffiCleaner.Cleanable - - private val wasDestroyed = AtomicBoolean(false) - private val callCounter = AtomicLong(1) - - override fun destroy() { - // Only allow a single call to this method. - // TODO: maybe we should log a warning if called more than once? - if (this.wasDestroyed.compareAndSet(false, true)) { - // This decrement always matches the initial count of 1 given at creation time. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - @Synchronized - override fun close() { - this.destroy() - } - - internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { - // Check and increment the call counter, to keep the object alive. - // This needs a compare-and-set retry loop in case of concurrent updates. - do { - val c = this.callCounter.get() - if (c == 0L) { - throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") - } - if (c == Long.MAX_VALUE) { - throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") - } - } while (! this.callCounter.compareAndSet(c, c + 1L)) - // Now we can safely do the method call without the pointer being freed concurrently. - try { - return block(this.uniffiClonePointer()) - } finally { - // This decrement always matches the increment we performed above. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - // Use a static inner class instead of a closure so as not to accidentally - // capture `this` as part of the cleanable's action. - private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { - override fun run() { - pointer?.let { ptr -> - uniffiRustCall { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_argon2parameters(ptr, status) - } - } - } - } - - fun uniffiClonePointer(): Pointer { - return uniffiRustCall() { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_argon2parameters(pointer!!, status) - } - } - - override fun `getBytes`(): kotlin.ByteArray { - return FfiConverterByteArray.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parameters_get_bytes( - it, _status) -} - } - ) - } - - - - - - companion object { - - @Throws(DevolutionsCryptoException::class) fun `newFromBytes`(`data`: kotlin.ByteArray): Argon2Parameters { - return FfiConverterTypeArgon2Parameters.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parameters_new_from_bytes( - FfiConverterByteArray.lower(`data`),_status) -} - ) - } - - - - } - -} - -public object FfiConverterTypeArgon2Parameters: FfiConverter { - - override fun lower(value: Argon2Parameters): Pointer { - return value.uniffiClonePointer() - } - - override fun lift(value: Pointer): Argon2Parameters { - return Argon2Parameters(value) - } - - override fun read(buf: ByteBuffer): Argon2Parameters { - // The Rust code always writes pointers as 8 bytes, and will - // fail to compile if they don't fit. - return lift(Pointer(buf.getLong())) - } - - override fun allocationSize(value: Argon2Parameters) = 8UL - - override fun write(value: Argon2Parameters, buf: ByteBuffer) { - // The Rust code always expects pointers written as 8 bytes, - // and will fail to compile if they don't fit. - buf.putLong(Pointer.nativeValue(lower(value))) - } -} - - -// This template implements a class for working with a Rust struct via a Pointer/Arc -// to the live Rust struct on the other side of the FFI. -// -// Each instance implements core operations for working with the Rust `Arc` and the -// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. -// -// There's some subtlety here, because we have to be careful not to operate on a Rust -// struct after it has been dropped, and because we must expose a public API for freeing -// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: -// -// * Each instance holds an opaque pointer to the underlying Rust struct. -// Method calls need to read this pointer from the object's state and pass it in to -// the Rust FFI. -// -// * When an instance is no longer needed, its pointer should be passed to a -// special destructor function provided by the Rust FFI, which will drop the -// underlying Rust struct. -// -// * Given an instance, calling code is expected to call the special -// `destroy` method in order to free it after use, either by calling it explicitly -// or by using a higher-level helper like the `use` method. Failing to do so risks -// leaking the underlying Rust struct. -// -// * We can't assume that calling code will do the right thing, and must be prepared -// to handle Kotlin method calls executing concurrently with or even after a call to -// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. -// -// * We must never allow Rust code to operate on the underlying Rust struct after -// the destructor has been called, and must never call the destructor more than once. -// Doing so may trigger memory unsafety. -// -// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` -// is implemented to call the destructor when the Kotlin object becomes unreachable. -// This is done in a background thread. This is not a panacea, and client code should be aware that -// 1. the thread may starve if some there are objects that have poorly performing -// `drop` methods or do significant work in their `drop` methods. -// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, -// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). -// -// If we try to implement this with mutual exclusion on access to the pointer, there is the -// possibility of a race between a method call and a concurrent call to `destroy`: -// -// * Thread A starts a method call, reads the value of the pointer, but is interrupted -// before it can pass the pointer over the FFI to Rust. -// * Thread B calls `destroy` and frees the underlying Rust struct. -// * Thread A resumes, passing the already-read pointer value to Rust and triggering -// a use-after-free. -// -// One possible solution would be to use a `ReadWriteLock`, with each method call taking -// a read lock (and thus allowed to run concurrently) and the special `destroy` method -// taking a write lock (and thus blocking on live method calls). However, we aim not to -// generate methods with any hidden blocking semantics, and a `destroy` method that might -// block if called incorrectly seems to meet that bar. -// -// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track -// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` -// has been called. These are updated according to the following rules: -// -// * The initial value of the counter is 1, indicating a live object with no in-flight calls. -// The initial value for the flag is false. -// -// * At the start of each method call, we atomically check the counter. -// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. -// If it is nonzero them we atomically increment it by 1 and proceed with the method call. -// -// * At the end of each method call, we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// * When `destroy` is called, we atomically flip the flag from false to true. -// If the flag was already true we silently fail. -// Otherwise we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, -// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. -// -// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been -// called *and* all in-flight method calls have completed, avoiding violating any of the expectations -// of the underlying Rust code. -// -// This makes a cleaner a better alternative to _not_ calling `destroy()` as -// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` -// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner -// thread may be starved, and the app will leak memory. -// -// In this case, `destroy`ing manually may be a better solution. -// -// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects -// with Rust peers are reclaimed: -// -// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: -// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: -// 3. The memory is reclaimed when the process terminates. -// -// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 -// - - -public interface Argon2ParametersBuilderInterface { - - fun `associatedData`(`value`: kotlin.ByteArray): Argon2ParametersBuilder - - fun `build`(): Argon2Parameters - - fun `dcVersion`(`value`: kotlin.UInt): Argon2ParametersBuilder - - fun `iterations`(`value`: kotlin.UInt): Argon2ParametersBuilder - - fun `lanes`(`value`: kotlin.UInt): Argon2ParametersBuilder - - fun `length`(`value`: kotlin.UInt): Argon2ParametersBuilder - - fun `memory`(`value`: kotlin.UInt): Argon2ParametersBuilder - - fun `salt`(`value`: kotlin.ByteArray): Argon2ParametersBuilder - - fun `secretKey`(`value`: kotlin.ByteArray): Argon2ParametersBuilder - - fun `variant`(`value`: Argon2Variant): Argon2ParametersBuilder - - fun `version`(`value`: Argon2Version): Argon2ParametersBuilder - - companion object -} - -open class Argon2ParametersBuilder: Disposable, AutoCloseable, Argon2ParametersBuilderInterface { - - constructor(pointer: Pointer) { - this.pointer = pointer - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - - /** - * This constructor can be used to instantiate a fake object. Only used for tests. Any - * attempt to actually use an object constructed this way will fail as there is no - * connected Rust object. - */ - @Suppress("UNUSED_PARAMETER") - constructor(noPointer: NoPointer) { - this.pointer = null - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - constructor() : - this( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_constructor_argon2parametersbuilder_new( - _status) -} - ) - - protected val pointer: Pointer? - protected val cleanable: UniffiCleaner.Cleanable - - private val wasDestroyed = AtomicBoolean(false) - private val callCounter = AtomicLong(1) - - override fun destroy() { - // Only allow a single call to this method. - // TODO: maybe we should log a warning if called more than once? - if (this.wasDestroyed.compareAndSet(false, true)) { - // This decrement always matches the initial count of 1 given at creation time. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - @Synchronized - override fun close() { - this.destroy() - } - - internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { - // Check and increment the call counter, to keep the object alive. - // This needs a compare-and-set retry loop in case of concurrent updates. - do { - val c = this.callCounter.get() - if (c == 0L) { - throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") - } - if (c == Long.MAX_VALUE) { - throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") - } - } while (! this.callCounter.compareAndSet(c, c + 1L)) - // Now we can safely do the method call without the pointer being freed concurrently. - try { - return block(this.uniffiClonePointer()) - } finally { - // This decrement always matches the increment we performed above. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - // Use a static inner class instead of a closure so as not to accidentally - // capture `this` as part of the cleanable's action. - private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { - override fun run() { - pointer?.let { ptr -> - uniffiRustCall { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_argon2parametersbuilder(ptr, status) - } - } - } - } - - fun uniffiClonePointer(): Pointer { - return uniffiRustCall() { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_argon2parametersbuilder(pointer!!, status) - } - } - - override fun `associatedData`(`value`: kotlin.ByteArray): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_associated_data( - it, FfiConverterByteArray.lower(`value`),_status) -} - } - ) - } - - - override fun `build`(): Argon2Parameters { - return FfiConverterTypeArgon2Parameters.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_build( - it, _status) -} - } - ) - } - - - override fun `dcVersion`(`value`: kotlin.UInt): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_dc_version( - it, FfiConverterUInt.lower(`value`),_status) -} - } - ) - } - - - override fun `iterations`(`value`: kotlin.UInt): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_iterations( - it, FfiConverterUInt.lower(`value`),_status) -} - } - ) - } - - - override fun `lanes`(`value`: kotlin.UInt): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_lanes( - it, FfiConverterUInt.lower(`value`),_status) -} - } - ) - } - - - override fun `length`(`value`: kotlin.UInt): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_length( - it, FfiConverterUInt.lower(`value`),_status) -} - } - ) - } - - - override fun `memory`(`value`: kotlin.UInt): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_memory( - it, FfiConverterUInt.lower(`value`),_status) -} - } - ) - } - - - override fun `salt`(`value`: kotlin.ByteArray): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_salt( - it, FfiConverterByteArray.lower(`value`),_status) -} - } - ) - } - - - override fun `secretKey`(`value`: kotlin.ByteArray): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_secret_key( - it, FfiConverterByteArray.lower(`value`),_status) -} - } - ) - } - - - override fun `variant`(`value`: Argon2Variant): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_variant( - it, FfiConverterTypeArgon2Variant.lower(`value`),_status) -} - } - ) - } - - - override fun `version`(`value`: Argon2Version): Argon2ParametersBuilder { - return FfiConverterTypeArgon2ParametersBuilder.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_argon2parametersbuilder_version( - it, FfiConverterTypeArgon2Version.lower(`value`),_status) -} - } - ) - } - - - - - - - companion object - -} - -public object FfiConverterTypeArgon2ParametersBuilder: FfiConverter { - - override fun lower(value: Argon2ParametersBuilder): Pointer { - return value.uniffiClonePointer() - } - - override fun lift(value: Pointer): Argon2ParametersBuilder { - return Argon2ParametersBuilder(value) - } - - override fun read(buf: ByteBuffer): Argon2ParametersBuilder { - // The Rust code always writes pointers as 8 bytes, and will - // fail to compile if they don't fit. - return lift(Pointer(buf.getLong())) - } - - override fun allocationSize(value: Argon2ParametersBuilder) = 8UL - - override fun write(value: Argon2ParametersBuilder, buf: ByteBuffer) { - // The Rust code always expects pointers written as 8 bytes, - // and will fail to compile if they don't fit. - buf.putLong(Pointer.nativeValue(lower(value))) - } -} - - -// This template implements a class for working with a Rust struct via a Pointer/Arc -// to the live Rust struct on the other side of the FFI. -// -// Each instance implements core operations for working with the Rust `Arc` and the -// Kotlin Pointer to work with the live Rust struct on the other side of the FFI. -// -// There's some subtlety here, because we have to be careful not to operate on a Rust -// struct after it has been dropped, and because we must expose a public API for freeing -// theq Kotlin wrapper object in lieu of reliable finalizers. The core requirements are: -// -// * Each instance holds an opaque pointer to the underlying Rust struct. -// Method calls need to read this pointer from the object's state and pass it in to -// the Rust FFI. -// -// * When an instance is no longer needed, its pointer should be passed to a -// special destructor function provided by the Rust FFI, which will drop the -// underlying Rust struct. -// -// * Given an instance, calling code is expected to call the special -// `destroy` method in order to free it after use, either by calling it explicitly -// or by using a higher-level helper like the `use` method. Failing to do so risks -// leaking the underlying Rust struct. -// -// * We can't assume that calling code will do the right thing, and must be prepared -// to handle Kotlin method calls executing concurrently with or even after a call to -// `destroy`, and to handle multiple (possibly concurrent!) calls to `destroy`. -// -// * We must never allow Rust code to operate on the underlying Rust struct after -// the destructor has been called, and must never call the destructor more than once. -// Doing so may trigger memory unsafety. -// -// * To mitigate many of the risks of leaking memory and use-after-free unsafety, a `Cleaner` -// is implemented to call the destructor when the Kotlin object becomes unreachable. -// This is done in a background thread. This is not a panacea, and client code should be aware that -// 1. the thread may starve if some there are objects that have poorly performing -// `drop` methods or do significant work in their `drop` methods. -// 2. the thread is shared across the whole library. This can be tuned by using `android_cleaner = true`, -// or `android = true` in the [`kotlin` section of the `uniffi.toml` file](https://mozilla.github.io/uniffi-rs/kotlin/configuration.html). -// -// If we try to implement this with mutual exclusion on access to the pointer, there is the -// possibility of a race between a method call and a concurrent call to `destroy`: -// -// * Thread A starts a method call, reads the value of the pointer, but is interrupted -// before it can pass the pointer over the FFI to Rust. -// * Thread B calls `destroy` and frees the underlying Rust struct. -// * Thread A resumes, passing the already-read pointer value to Rust and triggering -// a use-after-free. -// -// One possible solution would be to use a `ReadWriteLock`, with each method call taking -// a read lock (and thus allowed to run concurrently) and the special `destroy` method -// taking a write lock (and thus blocking on live method calls). However, we aim not to -// generate methods with any hidden blocking semantics, and a `destroy` method that might -// block if called incorrectly seems to meet that bar. -// -// So, we achieve our goals by giving each instance an associated `AtomicLong` counter to track -// the number of in-flight method calls, and an `AtomicBoolean` flag to indicate whether `destroy` -// has been called. These are updated according to the following rules: -// -// * The initial value of the counter is 1, indicating a live object with no in-flight calls. -// The initial value for the flag is false. -// -// * At the start of each method call, we atomically check the counter. -// If it is 0 then the underlying Rust struct has already been destroyed and the call is aborted. -// If it is nonzero them we atomically increment it by 1 and proceed with the method call. -// -// * At the end of each method call, we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// * When `destroy` is called, we atomically flip the flag from false to true. -// If the flag was already true we silently fail. -// Otherwise we atomically decrement and check the counter. -// If it has reached zero then we destroy the underlying Rust struct. -// -// Astute readers may observe that this all sounds very similar to the way that Rust's `Arc` works, -// and indeed it is, with the addition of a flag to guard against multiple calls to `destroy`. -// -// The overall effect is that the underlying Rust struct is destroyed only when `destroy` has been -// called *and* all in-flight method calls have completed, avoiding violating any of the expectations -// of the underlying Rust code. -// -// This makes a cleaner a better alternative to _not_ calling `destroy()` as -// and when the object is finished with, but the abstraction is not perfect: if the Rust object's `drop` -// method is slow, and/or there are many objects to cleanup, and it's on a low end Android device, then the cleaner -// thread may be starved, and the app will leak memory. -// -// In this case, `destroy`ing manually may be a better solution. -// -// The cleaner can live side by side with the manual calling of `destroy`. In the order of responsiveness, uniffi objects -// with Rust peers are reclaimed: -// -// 1. By calling the `destroy` method of the object, which calls `rustObject.free()`. If that doesn't happen: -// 2. When the object becomes unreachable, AND the Cleaner thread gets to call `rustObject.free()`. If the thread is starved then: -// 3. The memory is reclaimed when the process terminates. -// -// [1] https://stackoverflow.com/questions/24376768/can-java-finalize-an-object-when-it-is-still-in-scope/24380219 -// - - -public interface SigningKeyPairInterface { - - fun `getPrivateKey`(): kotlin.ByteArray - - fun `getPublicKey`(): kotlin.ByteArray - - companion object -} - -open class SigningKeyPair: Disposable, AutoCloseable, SigningKeyPairInterface { - - constructor(pointer: Pointer) { - this.pointer = pointer - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - - /** - * This constructor can be used to instantiate a fake object. Only used for tests. Any - * attempt to actually use an object constructed this way will fail as there is no - * connected Rust object. - */ - @Suppress("UNUSED_PARAMETER") - constructor(noPointer: NoPointer) { - this.pointer = null - this.cleanable = UniffiLib.CLEANER.register(this, UniffiCleanAction(pointer)) - } - - protected val pointer: Pointer? - protected val cleanable: UniffiCleaner.Cleanable - - private val wasDestroyed = AtomicBoolean(false) - private val callCounter = AtomicLong(1) - - override fun destroy() { - // Only allow a single call to this method. - // TODO: maybe we should log a warning if called more than once? - if (this.wasDestroyed.compareAndSet(false, true)) { - // This decrement always matches the initial count of 1 given at creation time. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - @Synchronized - override fun close() { - this.destroy() - } - - internal inline fun callWithPointer(block: (ptr: Pointer) -> R): R { - // Check and increment the call counter, to keep the object alive. - // This needs a compare-and-set retry loop in case of concurrent updates. - do { - val c = this.callCounter.get() - if (c == 0L) { - throw IllegalStateException("${this.javaClass.simpleName} object has already been destroyed") - } - if (c == Long.MAX_VALUE) { - throw IllegalStateException("${this.javaClass.simpleName} call counter would overflow") - } - } while (! this.callCounter.compareAndSet(c, c + 1L)) - // Now we can safely do the method call without the pointer being freed concurrently. - try { - return block(this.uniffiClonePointer()) - } finally { - // This decrement always matches the increment we performed above. - if (this.callCounter.decrementAndGet() == 0L) { - cleanable.clean() - } - } - } - - // Use a static inner class instead of a closure so as not to accidentally - // capture `this` as part of the cleanable's action. - private class UniffiCleanAction(private val pointer: Pointer?) : Runnable { - override fun run() { - pointer?.let { ptr -> - uniffiRustCall { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_free_signingkeypair(ptr, status) - } - } - } - } - - fun uniffiClonePointer(): Pointer { - return uniffiRustCall() { status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_clone_signingkeypair(pointer!!, status) - } - } - - override fun `getPrivateKey`(): kotlin.ByteArray { - return FfiConverterByteArray.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_private_key( - it, _status) -} - } - ) - } - - - override fun `getPublicKey`(): kotlin.ByteArray { - return FfiConverterByteArray.lift( - callWithPointer { - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_method_signingkeypair_get_public_key( - it, _status) -} - } - ) - } - - - - - - companion object { - - @Throws(DevolutionsCryptoException::class) fun `newFromBytes`(`data`: kotlin.ByteArray): SigningKeyPair { - return FfiConverterTypeSigningKeyPair.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_constructor_signingkeypair_new_from_bytes( - FfiConverterByteArray.lower(`data`),_status) -} - ) - } - - - - } - -} - -public object FfiConverterTypeSigningKeyPair: FfiConverter { - - override fun lower(value: SigningKeyPair): Pointer { - return value.uniffiClonePointer() - } - - override fun lift(value: Pointer): SigningKeyPair { - return SigningKeyPair(value) - } - - override fun read(buf: ByteBuffer): SigningKeyPair { - // The Rust code always writes pointers as 8 bytes, and will - // fail to compile if they don't fit. - return lift(Pointer(buf.getLong())) - } - - override fun allocationSize(value: SigningKeyPair) = 8UL - - override fun write(value: SigningKeyPair, buf: ByteBuffer) { - // The Rust code always expects pointers written as 8 bytes, - // and will fail to compile if they don't fit. - buf.putLong(Pointer.nativeValue(lower(value))) - } -} - - - -data class KeyPair ( - var `publicKey`: kotlin.ByteArray, - var `privateKey`: kotlin.ByteArray -) { - - companion object -} - -public object FfiConverterTypeKeyPair: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): KeyPair { - return KeyPair( - FfiConverterByteArray.read(buf), - FfiConverterByteArray.read(buf), - ) - } - - override fun allocationSize(value: KeyPair) = ( - FfiConverterByteArray.allocationSize(value.`publicKey`) + - FfiConverterByteArray.allocationSize(value.`privateKey`) - ) - - override fun write(value: KeyPair, buf: ByteBuffer) { - FfiConverterByteArray.write(value.`publicKey`, buf) - FfiConverterByteArray.write(value.`privateKey`, buf) - } -} - - - - -enum class Argon2Variant { - - ARGON2D, - ARGON2I, - ARGON2ID; - companion object -} - - -public object FfiConverterTypeArgon2Variant: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - Argon2Variant.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: Argon2Variant) = 4UL - - override fun write(value: Argon2Variant, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class Argon2Version { - - VERSION10, - VERSION13; - companion object -} - - -public object FfiConverterTypeArgon2Version: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - Argon2Version.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: Argon2Version) = 4UL - - override fun write(value: Argon2Version, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class CiphertextVersion { - - LATEST, - V1, - V2; - companion object -} - - -public object FfiConverterTypeCiphertextVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - CiphertextVersion.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: CiphertextVersion) = 4UL - - override fun write(value: CiphertextVersion, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class DataType { - - NONE, - KEY, - CIPHERTEXT, - PASSWORD_HASH, - SHARE, - SIGNING_KEY, - SIGNATURE; - companion object -} - - -public object FfiConverterTypeDataType: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - DataType.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: DataType) = 4UL - - override fun write(value: DataType, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - - -sealed class DevolutionsCryptoException(message: String): kotlin.Exception(message) { - - class InvalidLength(message: String) : DevolutionsCryptoException(message) - - class InvalidKeyLength(message: String) : DevolutionsCryptoException(message) - - class InvalidOutputLength(message: String) : DevolutionsCryptoException(message) - - class InvalidSignature(message: String) : DevolutionsCryptoException(message) - - class InvalidMac(message: String) : DevolutionsCryptoException(message) - - class InvalidDataType(message: String) : DevolutionsCryptoException(message) - - class UnknownType(message: String) : DevolutionsCryptoException(message) - - class UnknownSubtype(message: String) : DevolutionsCryptoException(message) - - class UnknownVersion(message: String) : DevolutionsCryptoException(message) - - class InvalidData(message: String) : DevolutionsCryptoException(message) - - class NullPointer(message: String) : DevolutionsCryptoException(message) - - class CryptoException(message: String) : DevolutionsCryptoException(message) - - class RandomException(message: String) : DevolutionsCryptoException(message) - - class IoException(message: String) : DevolutionsCryptoException(message) - - class NotEnoughShares(message: String) : DevolutionsCryptoException(message) - - class InconsistentVersion(message: String) : DevolutionsCryptoException(message) - - - companion object ErrorHandler : UniffiRustCallStatusErrorHandler { - override fun lift(error_buf: RustBuffer.ByValue): DevolutionsCryptoException = FfiConverterTypeDevolutionsCryptoError.lift(error_buf) - } -} - -public object FfiConverterTypeDevolutionsCryptoError : FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): DevolutionsCryptoException { - - return when(buf.getInt()) { - 1 -> DevolutionsCryptoException.InvalidLength(FfiConverterString.read(buf)) - 2 -> DevolutionsCryptoException.InvalidKeyLength(FfiConverterString.read(buf)) - 3 -> DevolutionsCryptoException.InvalidOutputLength(FfiConverterString.read(buf)) - 4 -> DevolutionsCryptoException.InvalidSignature(FfiConverterString.read(buf)) - 5 -> DevolutionsCryptoException.InvalidMac(FfiConverterString.read(buf)) - 6 -> DevolutionsCryptoException.InvalidDataType(FfiConverterString.read(buf)) - 7 -> DevolutionsCryptoException.UnknownType(FfiConverterString.read(buf)) - 8 -> DevolutionsCryptoException.UnknownSubtype(FfiConverterString.read(buf)) - 9 -> DevolutionsCryptoException.UnknownVersion(FfiConverterString.read(buf)) - 10 -> DevolutionsCryptoException.InvalidData(FfiConverterString.read(buf)) - 11 -> DevolutionsCryptoException.NullPointer(FfiConverterString.read(buf)) - 12 -> DevolutionsCryptoException.CryptoException(FfiConverterString.read(buf)) - 13 -> DevolutionsCryptoException.RandomException(FfiConverterString.read(buf)) - 14 -> DevolutionsCryptoException.IoException(FfiConverterString.read(buf)) - 15 -> DevolutionsCryptoException.NotEnoughShares(FfiConverterString.read(buf)) - 16 -> DevolutionsCryptoException.InconsistentVersion(FfiConverterString.read(buf)) - else -> throw RuntimeException("invalid error enum value, something is very wrong!!") - } - - } - - override fun allocationSize(value: DevolutionsCryptoException): ULong { - return 4UL - } - - override fun write(value: DevolutionsCryptoException, buf: ByteBuffer) { - when(value) { - is DevolutionsCryptoException.InvalidLength -> { - buf.putInt(1) - Unit - } - is DevolutionsCryptoException.InvalidKeyLength -> { - buf.putInt(2) - Unit - } - is DevolutionsCryptoException.InvalidOutputLength -> { - buf.putInt(3) - Unit - } - is DevolutionsCryptoException.InvalidSignature -> { - buf.putInt(4) - Unit - } - is DevolutionsCryptoException.InvalidMac -> { - buf.putInt(5) - Unit - } - is DevolutionsCryptoException.InvalidDataType -> { - buf.putInt(6) - Unit - } - is DevolutionsCryptoException.UnknownType -> { - buf.putInt(7) - Unit - } - is DevolutionsCryptoException.UnknownSubtype -> { - buf.putInt(8) - Unit - } - is DevolutionsCryptoException.UnknownVersion -> { - buf.putInt(9) - Unit - } - is DevolutionsCryptoException.InvalidData -> { - buf.putInt(10) - Unit - } - is DevolutionsCryptoException.NullPointer -> { - buf.putInt(11) - Unit - } - is DevolutionsCryptoException.CryptoException -> { - buf.putInt(12) - Unit - } - is DevolutionsCryptoException.RandomException -> { - buf.putInt(13) - Unit - } - is DevolutionsCryptoException.IoException -> { - buf.putInt(14) - Unit - } - is DevolutionsCryptoException.NotEnoughShares -> { - buf.putInt(15) - Unit - } - is DevolutionsCryptoException.InconsistentVersion -> { - buf.putInt(16) - Unit - } - }.let { /* this makes the `when` an expression, which ensures it is exhaustive */ } - } - -} - - - - -enum class KeyVersion { - - LATEST, - V1; - companion object -} - - -public object FfiConverterTypeKeyVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - KeyVersion.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: KeyVersion) = 4UL - - override fun write(value: KeyVersion, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class PasswordHashVersion { - - LATEST, - V1; - companion object -} - - -public object FfiConverterTypePasswordHashVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - PasswordHashVersion.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: PasswordHashVersion) = 4UL - - override fun write(value: PasswordHashVersion, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class SecretSharingVersion { - - LATEST, - V1; - companion object -} - - -public object FfiConverterTypeSecretSharingVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - SecretSharingVersion.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: SecretSharingVersion) = 4UL - - override fun write(value: SecretSharingVersion, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class SignatureVersion { - - LATEST, - V1; - companion object -} - - -public object FfiConverterTypeSignatureVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - SignatureVersion.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: SignatureVersion) = 4UL - - override fun write(value: SignatureVersion, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -enum class SigningKeyVersion { - - LATEST, - V1; - companion object -} - - -public object FfiConverterTypeSigningKeyVersion: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer) = try { - SigningKeyVersion.values()[buf.getInt() - 1] - } catch (e: IndexOutOfBoundsException) { - throw RuntimeException("invalid enum value, something is very wrong!!", e) - } - - override fun allocationSize(value: SigningKeyVersion) = 4UL - - override fun write(value: SigningKeyVersion, buf: ByteBuffer) { - buf.putInt(value.ordinal + 1) - } -} - - - - - - -public object FfiConverterOptionalByteArray: FfiConverterRustBuffer { - override fun read(buf: ByteBuffer): kotlin.ByteArray? { - if (buf.get().toInt() == 0) { - return null - } - return FfiConverterByteArray.read(buf) - } - - override fun allocationSize(value: kotlin.ByteArray?): ULong { - if (value == null) { - return 1UL - } else { - return 1UL + FfiConverterByteArray.allocationSize(value) - } - } - - override fun write(value: kotlin.ByteArray?, buf: ByteBuffer) { - if (value == null) { - buf.put(0) - } else { - buf.put(1) - FfiConverterByteArray.write(value, buf) - } - } -} - - - - -public object FfiConverterSequenceByteArray: FfiConverterRustBuffer> { - override fun read(buf: ByteBuffer): List { - val len = buf.getInt() - return List(len) { - FfiConverterByteArray.read(buf) - } - } - - override fun allocationSize(value: List): ULong { - val sizeForLength = 4UL - val sizeForItems = value.map { FfiConverterByteArray.allocationSize(it) }.sum() - return sizeForLength + sizeForItems - } - - override fun write(value: List, buf: ByteBuffer) { - buf.putInt(value.size) - value.iterator().forEach { - FfiConverterByteArray.write(it, buf) - } - } -} - @Throws(DevolutionsCryptoException::class) fun `encrypt`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetric`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `encryptAsymmetricWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_asymmetric_with_aad( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `encryptWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray, `version`: CiphertextVersion = CiphertextVersion.LATEST): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_encrypt_with_aad( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),FfiConverterTypeCiphertextVersion.lower(`version`),_status) -} - ) - } - - fun `generateKeypair`(`version`: KeyVersion = KeyVersion.LATEST): KeyPair { - return FfiConverterTypeKeyPair.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_keypair( - FfiConverterTypeKeyVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `generateSharedKey`(`nShares`: kotlin.UByte, `threshold`: kotlin.UByte, `length`: kotlin.UInt = 32u, `version`: SecretSharingVersion = SecretSharingVersion.LATEST): List { - return FfiConverterSequenceByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_shared_key( - FfiConverterUByte.lower(`nShares`),FfiConverterUByte.lower(`threshold`),FfiConverterUInt.lower(`length`),FfiConverterTypeSecretSharingVersion.lower(`version`),_status) -} - ) - } - - fun `generateSigningKeypair`(`version`: SigningKeyVersion = SigningKeyVersion.LATEST): SigningKeyPair { - return FfiConverterTypeSigningKeyPair.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_signing_keypair( - FfiConverterTypeSigningKeyVersion.lower(`version`),_status) -} - ) - } - - fun `hashPassword`(`password`: kotlin.ByteArray, `iterations`: kotlin.UInt = 10000u, `version`: PasswordHashVersion = PasswordHashVersion.LATEST): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_hash_password( - FfiConverterByteArray.lower(`password`),FfiConverterUInt.lower(`iterations`),FfiConverterTypePasswordHashVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `sign`(`data`: kotlin.ByteArray, `keypair`: kotlin.ByteArray, `version`: SignatureVersion = SignatureVersion.LATEST): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_sign( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`keypair`),FfiConverterTypeSignatureVersion.lower(`version`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `base64Decode`(`data`: kotlin.String): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_decode( - FfiConverterString.lower(`data`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `base64DecodeUrl`(`data`: kotlin.String): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_decode_url( - FfiConverterString.lower(`data`),_status) -} - ) - } - - fun `base64Encode`(`data`: kotlin.ByteArray): kotlin.String { - return FfiConverterString.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_encode( - FfiConverterByteArray.lower(`data`),_status) -} - ) - } - - fun `base64EncodeUrl`(`data`: kotlin.ByteArray): kotlin.String { - return FfiConverterString.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_base64_encode_url( - FfiConverterByteArray.lower(`data`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `decrypt`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `decryptAsymmetric`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `decryptAsymmetricWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt_asymmetric_with_aad( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `decryptWithAad`(`data`: kotlin.ByteArray, `key`: kotlin.ByteArray, `aad`: kotlin.ByteArray): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_decrypt_with_aad( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`key`),FfiConverterByteArray.lower(`aad`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `deriveKeyArgon2`(`key`: kotlin.ByteArray, `parameters`: Argon2Parameters): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_derive_key_argon2( - FfiConverterByteArray.lower(`key`),FfiConverterTypeArgon2Parameters.lower(`parameters`),_status) -} - ) - } - - fun `deriveKeyPbkdf2`(`key`: kotlin.ByteArray, `salt`: kotlin.ByteArray?, `iterations`: kotlin.UInt = 10000u, `length`: kotlin.UInt = 32u): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_derive_key_pbkdf2( - FfiConverterByteArray.lower(`key`),FfiConverterOptionalByteArray.lower(`salt`),FfiConverterUInt.lower(`iterations`),FfiConverterUInt.lower(`length`),_status) -} - ) - } - - fun `generateKey`(`length`: kotlin.UInt = 32u): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_generate_key( - FfiConverterUInt.lower(`length`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `joinShares`(`shares`: List): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_join_shares( - FfiConverterSequenceByteArray.lower(`shares`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `mixKeyExchange`(`privateKey`: kotlin.ByteArray, `publicKey`: kotlin.ByteArray): kotlin.ByteArray { - return FfiConverterByteArray.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_mix_key_exchange( - FfiConverterByteArray.lower(`privateKey`),FfiConverterByteArray.lower(`publicKey`),_status) -} - ) - } - - fun `validateHeader`(`data`: kotlin.ByteArray, `dataType`: DataType): kotlin.Boolean { - return FfiConverterBoolean.lift( - uniffiRustCall() { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_validate_header( - FfiConverterByteArray.lower(`data`),FfiConverterTypeDataType.lower(`dataType`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `verifyPassword`(`password`: kotlin.ByteArray, `hash`: kotlin.ByteArray): kotlin.Boolean { - return FfiConverterBoolean.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_verify_password( - FfiConverterByteArray.lower(`password`),FfiConverterByteArray.lower(`hash`),_status) -} - ) - } - - - @Throws(DevolutionsCryptoException::class) fun `verifySignature`(`data`: kotlin.ByteArray, `publicKey`: kotlin.ByteArray, `signature`: kotlin.ByteArray): kotlin.Boolean { - return FfiConverterBoolean.lift( - uniffiRustCallWithError(DevolutionsCryptoException) { _status -> - UniffiLib.INSTANCE.uniffi_devolutions_crypto_uniffi_fn_func_verify_signature( - FfiConverterByteArray.lower(`data`),FfiConverterByteArray.lower(`publicKey`),FfiConverterByteArray.lower(`signature`),_status) -} - ) - } - - - diff --git a/wrappers/kotlin/setup.sh b/wrappers/kotlin/setup.sh index 4a91d0b23..d1ba383d8 100644 --- a/wrappers/kotlin/setup.sh +++ b/wrappers/kotlin/setup.sh @@ -2,8 +2,7 @@ apt install build-essential unzip openjdk-18-jre-headless rm -rf /usr/local/lib/android -mkdir /usr/local/lib/android -mkdir /usr/local/lib/android/sdk +mkdir -p /usr/local/lib/android/sdk ANDROID_ROOT="/usr/local/lib/android" ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk" @@ -38,4 +37,4 @@ echo "[target.aarch64-linux-android] ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar\" linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang\"" >> "/home/$SUDO_USER/.cargo/config" -ln -sfn $ANDROID_SDK_ROOT/ndk/25.2.9519653 $ANDROID_NDK \ No newline at end of file +ln -sfn $ANDROID_SDK_ROOT/ndk/25.2.9519653 $ANDROID_NDK From f94965a163055772c70289cf0f7d21804f2b9eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Dugr=C3=A9?= Date: Wed, 23 Oct 2024 16:24:59 -0400 Subject: [PATCH 23/43] [Uniffi] Kotlin makefile clean force delete --- wrappers/kotlin/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wrappers/kotlin/Makefile b/wrappers/kotlin/Makefile index 282ac745c..8ff4e7593 100644 --- a/wrappers/kotlin/Makefile +++ b/wrappers/kotlin/Makefile @@ -67,5 +67,6 @@ $(KOTLIN_WRAPPER_FILE): $(DEBUG_DLL) $(UNIFFI_BINDGEN_EXE) clean: cargo clean - rm $(KOTLIN_WRAPPER_FILE) - rm $(KT_RELEASE_PATH) + rm -f $(KOTLIN_WRAPPER_FILE) + rm -f $(KT_RELEASE_PATH) + rm -f $(KT_DEBUG_PATH) From 80eac87399c7a78237dcc0f0056c2267d9a3e8ea Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Wed, 13 Nov 2024 14:00:15 -0500 Subject: [PATCH 24/43] swift update package name --- .gitignore | 1 + wrappers/swift/generate.bat | 11 ----------- wrappers/swift/generate.sh | 4 ++-- 3 files changed, 3 insertions(+), 13 deletions(-) delete mode 100644 wrappers/swift/generate.bat diff --git a/.gitignore b/.gitignore index cf5623ab0..678b9d47a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ packages .vs *.nupkg *.user +.build wrappers/swift/bindings/* wrappers/swift/output/* wrappers/csharp/nuget/dotnet/package/* diff --git a/wrappers/swift/generate.bat b/wrappers/swift/generate.bat deleted file mode 100644 index fd593db9c..000000000 --- a/wrappers/swift/generate.bat +++ /dev/null @@ -1,11 +0,0 @@ -rmdir /s /q .\output - -cargo run -p uniffi-bindgen generate --library "..\..\target\release\uniffi_lib.dll" --language swift -o output --no-format - -ren ..\..\target\release\libuniffi_lib.dll.a uniffi_lib.lib - -cd output - -swiftc -module-name uniffi_lib -emit-library -o uniffi_lib.dll -emit-module -emit-module-path ./lib_output/uniffi_lib.swiftmodule -parse-as-library -L ../../../target/release/ -luniffi_lib -Xcc -fmodule-map-file="C:\dev\git\devolutions-crypto\wrappers\swift\output\uniffi_libFFI.modulemap" uniffi_lib.swift - - diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh index 3ccd8d800..2dc42ba8f 100644 --- a/wrappers/swift/generate.sh +++ b/wrappers/swift/generate.sh @@ -3,8 +3,8 @@ XCFRAMEWORK_FOLDER="./output/DevolutionsCrypto.xcframework" -LIBNAME="uniffi_lib" -LIBNAMEBUILD="uniffi-lib" +LIBNAME="devolutions_crypto_uniffi" +LIBNAMEBUILD="devolutions-crypto-uniffi" rm -rf bindings rm -rf output From aa648d0dc9cda054ebd9d6b25d891e30d02988d4 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Wed, 13 Nov 2024 14:05:29 -0500 Subject: [PATCH 25/43] clippy --- src/argon2parameters.rs | 2 +- .../devolutions-crypto-uniffi/src/password_hash.rs | 13 ++----------- uniffi/devolutions-crypto-uniffi/src/signing_key.rs | 4 ++-- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/argon2parameters.rs b/src/argon2parameters.rs index 70c1b39c1..6a5a54143 100644 --- a/src/argon2parameters.rs +++ b/src/argon2parameters.rs @@ -228,7 +228,7 @@ fn test_argon2() { // Computes the first hash let hash1 = config.compute(b"Password1").unwrap(); - let config_vec: Vec = config.into(); + let config_vec: Vec = (&config).into(); assert_ne!(config_vec.len(), 0); diff --git a/uniffi/devolutions-crypto-uniffi/src/password_hash.rs b/uniffi/devolutions-crypto-uniffi/src/password_hash.rs index 6b506ba73..66cdc40ef 100644 --- a/uniffi/devolutions-crypto-uniffi/src/password_hash.rs +++ b/uniffi/devolutions-crypto-uniffi/src/password_hash.rs @@ -1,17 +1,8 @@ use crate::PasswordHashVersion; use crate::Result; -pub fn hash_password( - password: &[u8], - iterations: u32, - version: PasswordHashVersion, -) -> Vec { - devolutions_crypto::password_hash::hash_password( - password, - iterations, - version, - ) - .into() +pub fn hash_password(password: &[u8], iterations: u32, version: PasswordHashVersion) -> Vec { + devolutions_crypto::password_hash::hash_password(password, iterations, version).into() } #[uniffi::export] diff --git a/uniffi/devolutions-crypto-uniffi/src/signing_key.rs b/uniffi/devolutions-crypto-uniffi/src/signing_key.rs index ac9fccf44..05a698ec8 100644 --- a/uniffi/devolutions-crypto-uniffi/src/signing_key.rs +++ b/uniffi/devolutions-crypto-uniffi/src/signing_key.rs @@ -1,8 +1,8 @@ use std::sync::Arc; -use crate::SigningKeyVersion; -use crate::Result; use crate::DevolutionsCryptoError; +use crate::Result; +use crate::SigningKeyVersion; pub struct SigningKeyPair(devolutions_crypto::signing_key::SigningKeyPair); From 6df36d939f041d2f88f1bcdd60519d51599d02b2 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Wed, 13 Nov 2024 14:19:47 -0500 Subject: [PATCH 26/43] clippy ffi --- ffi/src/lib.rs | 58 ++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/ffi/src/lib.rs b/ffi/src/lib.rs index 98051d2a7..5157231b8 100644 --- a/ffi/src/lib.rs +++ b/ffi/src/lib.rs @@ -621,6 +621,8 @@ pub unsafe extern "C" fn GenerateSigningKeyPair( /// * `public` - Pointer to the buffer to write the public key to. /// * `public_length` - Length of the buffer to write the public key to. /// You can get the value by calling `GetSigningPublicKeySize()` beforehand. +/// # Safety +/// This method is made to be called by C, so it is therefore unsafe. The caller should make sure it passes the right pointers and sizes. #[no_mangle] pub unsafe extern "C" fn GetSigningPublicKey( keypair: *const u8, @@ -900,7 +902,7 @@ pub unsafe extern "C" fn DeriveKeyArgon2( Err(e) => return e.error_code(), }; - let native_result = match utils::derive_key_argon2(&key, &argon2_parameters) { + let native_result = match utils::derive_key_argon2(key, &argon2_parameters) { Ok(x) => Zeroizing::new(x), Err(e) => return e.error_code(), }; @@ -948,8 +950,8 @@ pub unsafe extern "C" fn DeriveKeyPbkdf2( let result = slice::from_raw_parts_mut(result, result_length); let native_result = Zeroizing::new(utils::derive_key_pbkdf2( - &key, - &salt, + key, + salt, niterations, result_length, )); @@ -1042,7 +1044,7 @@ pub unsafe extern "C" fn GetDefaultArgon2Parameters( ) -> i64 { let argon2_parameters = slice::from_raw_parts_mut(argon2_parameters, argon2_parameters_length); - let argon2_parameters_raw: Vec = Argon2Parameters::default().into(); + let argon2_parameters_raw: Vec = (&Argon2Parameters::default()).into(); argon2_parameters.copy_from_slice(&argon2_parameters_raw); 0 } @@ -1088,9 +1090,9 @@ pub unsafe extern "C" fn Decode( }; let input = std::str::from_utf8_unchecked(slice::from_raw_parts(input, input_length)); - let mut output = slice::from_raw_parts_mut(output, output_length); + let output = slice::from_raw_parts_mut(output, output_length); - match general_purpose::STANDARD.decode_slice_unchecked(&input, &mut output) { + match general_purpose::STANDARD.decode_slice_unchecked(input, output) { Ok(res) => res as i64, Err(_e) => -1, } @@ -1118,9 +1120,9 @@ pub unsafe extern "C" fn Encode( }; let input = slice::from_raw_parts(input, input_length); - let mut output = slice::from_raw_parts_mut(output, output_length); + let output = slice::from_raw_parts_mut(output, output_length); - match general_purpose::STANDARD.encode_slice(&input, &mut output) { + match general_purpose::STANDARD.encode_slice(input, output) { Ok(res) => res as i64, Err(_err) => -1, } @@ -1148,9 +1150,9 @@ pub unsafe extern "C" fn DecodeUrl( }; let input = std::str::from_utf8_unchecked(slice::from_raw_parts(input, input_length)); - let mut output = slice::from_raw_parts_mut(output, output_length); + let output = slice::from_raw_parts_mut(output, output_length); - match general_purpose::URL_SAFE_NO_PAD.decode_slice_unchecked(&input, &mut output) { + match general_purpose::URL_SAFE_NO_PAD.decode_slice_unchecked(input, output) { Ok(res) => res as i64, Err(_e) => -1, } @@ -1178,9 +1180,9 @@ pub unsafe extern "C" fn EncodeUrl( }; let input = slice::from_raw_parts(input, input_length); - let mut output = slice::from_raw_parts_mut(output, output_length); + let output = slice::from_raw_parts_mut(output, output_length); - match general_purpose::URL_SAFE_NO_PAD.encode_slice(&input, &mut output) { + match general_purpose::URL_SAFE_NO_PAD.encode_slice(input, output) { Ok(res) => res as i64, Err(_err) => -1, } @@ -1241,7 +1243,7 @@ pub unsafe extern "C" fn Version(output: *mut u8, output_length: usize) -> i64 { }; let output = slice::from_raw_parts_mut(output, output_length); - output.copy_from_slice(&VERSION.as_bytes()); + output.copy_from_slice(VERSION.as_bytes()); output.len() as i64 } @@ -1254,18 +1256,22 @@ fn test_encrypt_length() { let one_full_block = b"0123456789abcdef"; let multiple_blocks = b"0123456789abcdefghijkl"; - let length_zero_enc: Vec = encrypt(length_zero, key, CiphertextVersion::Latest) - .unwrap() - .into(); - let length_one_block_enc: Vec = encrypt(length_one_block, key, CiphertextVersion::Latest) - .unwrap() - .into(); - let one_full_block_enc: Vec = encrypt(one_full_block, key, CiphertextVersion::Latest) - .unwrap() - .into(); - let multiple_blocks_enc: Vec = encrypt(multiple_blocks, key, CiphertextVersion::Latest) - .unwrap() - .into(); + let length_zero_enc: Vec = + devolutions_crypto::ciphertext::encrypt(length_zero, key, CiphertextVersion::Latest) + .unwrap() + .into(); + let length_one_block_enc: Vec = + devolutions_crypto::ciphertext::encrypt(length_one_block, key, CiphertextVersion::Latest) + .unwrap() + .into(); + let one_full_block_enc: Vec = + devolutions_crypto::ciphertext::encrypt(one_full_block, key, CiphertextVersion::Latest) + .unwrap() + .into(); + let multiple_blocks_enc: Vec = + devolutions_crypto::ciphertext::encrypt(multiple_blocks, key, CiphertextVersion::Latest) + .unwrap() + .into(); assert_eq!( length_zero_enc.len() as i64, @@ -1347,7 +1353,7 @@ fn test_get_default_argon2parameters() { let _params = Argon2Parameters::try_from(argon2_parameters).unwrap(); - let defaults: Vec = Argon2Parameters::default().into(); + let defaults: Vec = (&Argon2Parameters::default()).into(); let received: Vec = argon2_parameters.to_vec(); // The -16 is to remove the salt, since it is random From 55cf15cedf9803e6f96887f31e01abe505de4b92 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 09:39:49 -0500 Subject: [PATCH 27/43] fix swift tests --- .../swift/DevolutionsCryptoSwift/.gitignore | 1 + .../DevolutionsCryptoSwift.swift | 477 ------------------ .../DevolutionsCryptoSwiftTests.swift | 2 +- wrappers/swift/generate.sh | 8 +- 4 files changed, 6 insertions(+), 482 deletions(-) delete mode 100644 wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift diff --git a/wrappers/swift/DevolutionsCryptoSwift/.gitignore b/wrappers/swift/DevolutionsCryptoSwift/.gitignore index 0023a5340..b32bf62a8 100644 --- a/wrappers/swift/DevolutionsCryptoSwift/.gitignore +++ b/wrappers/swift/DevolutionsCryptoSwift/.gitignore @@ -6,3 +6,4 @@ DerivedData/ .swiftpm/configuration/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc +Sources/DevolutionsCryptoSwift/ \ No newline at end of file diff --git a/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift b/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift deleted file mode 100644 index 095ade639..000000000 --- a/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift +++ /dev/null @@ -1,477 +0,0 @@ -// This file was autogenerated by some hot garbage in the `uniffi` crate. -// Trust me, you don't want to mess with it! - -// swiftlint:disable all -import Foundation - -// Depending on the consumer's build setup, the low-level FFI code -// might be in a separate module, or it might be compiled inline into -// this module. This is a bit of light hackery to work with both. -#if canImport(uniffi_libFFI) -import uniffi_libFFI -#endif - -fileprivate extension RustBuffer { - // Allocate a new buffer, copying the contents of a `UInt8` array. - init(bytes: [UInt8]) { - let rbuf = bytes.withUnsafeBufferPointer { ptr in - RustBuffer.from(ptr) - } - self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data) - } - - static func empty() -> RustBuffer { - RustBuffer(capacity: 0, len:0, data: nil) - } - - static func from(_ ptr: UnsafeBufferPointer) -> RustBuffer { - try! rustCall { ffi_uniffi_lib_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } - } - - // Frees the buffer in place. - // The buffer must not be used after this is called. - func deallocate() { - try! rustCall { ffi_uniffi_lib_rustbuffer_free(self, $0) } - } -} - -fileprivate extension ForeignBytes { - init(bufferPointer: UnsafeBufferPointer) { - self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress) - } -} - -// For every type used in the interface, we provide helper methods for conveniently -// lifting and lowering that type from C-compatible data, and for reading and writing -// values of that type in a buffer. - -// Helper classes/extensions that don't change. -// Someday, this will be in a library of its own. - -fileprivate extension Data { - init(rustBuffer: RustBuffer) { - // TODO: This copies the buffer. Can we read directly from a - // Rust buffer? - self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len)) - } -} - -// Define reader functionality. Normally this would be defined in a class or -// struct, but we use standalone functions instead in order to make external -// types work. -// -// With external types, one swift source file needs to be able to call the read -// method on another source file's FfiConverter, but then what visibility -// should Reader have? -// - If Reader is fileprivate, then this means the read() must also -// be fileprivate, which doesn't work with external types. -// - If Reader is internal/public, we'll get compile errors since both source -// files will try define the same type. -// -// Instead, the read() method and these helper functions input a tuple of data - -fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) { - (data: data, offset: 0) -} - -// Reads an integer at the current offset, in big-endian order, and advances -// the offset on success. Throws if reading the integer would move the -// offset past the end of the buffer. -fileprivate func readInt(_ reader: inout (data: Data, offset: Data.Index)) throws -> T { - let range = reader.offset...size - guard reader.data.count >= range.upperBound else { - throw UniffiInternalError.bufferOverflow - } - if T.self == UInt8.self { - let value = reader.data[reader.offset] - reader.offset += 1 - return value as! T - } - var value: T = 0 - let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)}) - reader.offset = range.upperBound - return value.bigEndian -} - -// Reads an arbitrary number of bytes, to be used to read -// raw bytes, this is useful when lifting strings -fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array { - let range = reader.offset..<(reader.offset+count) - guard reader.data.count >= range.upperBound else { - throw UniffiInternalError.bufferOverflow - } - var value = [UInt8](repeating: 0, count: count) - value.withUnsafeMutableBufferPointer({ buffer in - reader.data.copyBytes(to: buffer, from: range) - }) - reader.offset = range.upperBound - return value -} - -// Reads a float at the current offset. -fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float { - return Float(bitPattern: try readInt(&reader)) -} - -// Reads a float at the current offset. -fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double { - return Double(bitPattern: try readInt(&reader)) -} - -// Indicates if the offset has reached the end of the buffer. -fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool { - return reader.offset < reader.data.count -} - -// Define writer functionality. Normally this would be defined in a class or -// struct, but we use standalone functions instead in order to make external -// types work. See the above discussion on Readers for details. - -fileprivate func createWriter() -> [UInt8] { - return [] -} - -fileprivate func writeBytes(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 { - writer.append(contentsOf: byteArr) -} - -// Writes an integer in big-endian order. -// -// Warning: make sure what you are trying to write -// is in the correct type! -fileprivate func writeInt(_ writer: inout [UInt8], _ value: T) { - var value = value.bigEndian - withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) } -} - -fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) { - writeInt(&writer, value.bitPattern) -} - -fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) { - writeInt(&writer, value.bitPattern) -} - -// Protocol for types that transfer other types across the FFI. This is -// analogous to the Rust trait of the same name. -fileprivate protocol FfiConverter { - associatedtype FfiType - associatedtype SwiftType - - static func lift(_ value: FfiType) throws -> SwiftType - static func lower(_ value: SwiftType) -> FfiType - static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType - static func write(_ value: SwiftType, into buf: inout [UInt8]) -} - -// Types conforming to `Primitive` pass themselves directly over the FFI. -fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { } - -extension FfiConverterPrimitive { - public static func lift(_ value: FfiType) throws -> SwiftType { - return value - } - - public static func lower(_ value: SwiftType) -> FfiType { - return value - } -} - -// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`. -// Used for complex types where it's hard to write a custom lift/lower. -fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {} - -extension FfiConverterRustBuffer { - public static func lift(_ buf: RustBuffer) throws -> SwiftType { - var reader = createReader(data: Data(rustBuffer: buf)) - let value = try read(from: &reader) - if hasRemaining(reader) { - throw UniffiInternalError.incompleteData - } - buf.deallocate() - return value - } - - public static func lower(_ value: SwiftType) -> RustBuffer { - var writer = createWriter() - write(value, into: &writer) - return RustBuffer(bytes: writer) - } -} -// An error type for FFI errors. These errors occur at the UniFFI level, not -// the library level. -fileprivate enum UniffiInternalError: LocalizedError { - case bufferOverflow - case incompleteData - case unexpectedOptionalTag - case unexpectedEnumCase - case unexpectedNullPointer - case unexpectedRustCallStatusCode - case unexpectedRustCallError - case unexpectedStaleHandle - case rustPanic(_ message: String) - - public var errorDescription: String? { - switch self { - case .bufferOverflow: return "Reading the requested value would read past the end of the buffer" - case .incompleteData: return "The buffer still has data after lifting its containing value" - case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1" - case .unexpectedEnumCase: return "Raw enum value doesn't match any cases" - case .unexpectedNullPointer: return "Raw pointer value was null" - case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code" - case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified" - case .unexpectedStaleHandle: return "The object in the handle map has been dropped already" - case let .rustPanic(message): return message - } - } -} - -fileprivate extension NSLock { - func withLock(f: () throws -> T) rethrows -> T { - self.lock() - defer { self.unlock() } - return try f() - } -} - -fileprivate let CALL_SUCCESS: Int8 = 0 -fileprivate let CALL_ERROR: Int8 = 1 -fileprivate let CALL_UNEXPECTED_ERROR: Int8 = 2 -fileprivate let CALL_CANCELLED: Int8 = 3 - -fileprivate extension RustCallStatus { - init() { - self.init( - code: CALL_SUCCESS, - errorBuf: RustBuffer.init( - capacity: 0, - len: 0, - data: nil - ) - ) - } -} - -private func rustCall(_ callback: (UnsafeMutablePointer) -> T) throws -> T { - let neverThrow: ((RustBuffer) throws -> Never)? = nil - return try makeRustCall(callback, errorHandler: neverThrow) -} - -private func rustCallWithError( - _ errorHandler: @escaping (RustBuffer) throws -> E, - _ callback: (UnsafeMutablePointer) -> T) throws -> T { - try makeRustCall(callback, errorHandler: errorHandler) -} - -private func makeRustCall( - _ callback: (UnsafeMutablePointer) -> T, - errorHandler: ((RustBuffer) throws -> E)? -) throws -> T { - uniffiEnsureInitialized() - var callStatus = RustCallStatus.init() - let returnedVal = callback(&callStatus) - try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler) - return returnedVal -} - -private func uniffiCheckCallStatus( - callStatus: RustCallStatus, - errorHandler: ((RustBuffer) throws -> E)? -) throws { - switch callStatus.code { - case CALL_SUCCESS: - return - - case CALL_ERROR: - if let errorHandler = errorHandler { - throw try errorHandler(callStatus.errorBuf) - } else { - callStatus.errorBuf.deallocate() - throw UniffiInternalError.unexpectedRustCallError - } - - case CALL_UNEXPECTED_ERROR: - // When the rust code sees a panic, it tries to construct a RustBuffer - // with the message. But if that code panics, then it just sends back - // an empty buffer. - if callStatus.errorBuf.len > 0 { - throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf)) - } else { - callStatus.errorBuf.deallocate() - throw UniffiInternalError.rustPanic("Rust panic") - } - - case CALL_CANCELLED: - fatalError("Cancellation not supported yet") - - default: - throw UniffiInternalError.unexpectedRustCallStatusCode - } -} - -private func uniffiTraitInterfaceCall( - callStatus: UnsafeMutablePointer, - makeCall: () throws -> T, - writeReturn: (T) -> () -) { - do { - try writeReturn(makeCall()) - } catch let error { - callStatus.pointee.code = CALL_UNEXPECTED_ERROR - callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) - } -} - -private func uniffiTraitInterfaceCallWithError( - callStatus: UnsafeMutablePointer, - makeCall: () throws -> T, - writeReturn: (T) -> (), - lowerError: (E) -> RustBuffer -) { - do { - try writeReturn(makeCall()) - } catch let error as E { - callStatus.pointee.code = CALL_ERROR - callStatus.pointee.errorBuf = lowerError(error) - } catch { - callStatus.pointee.code = CALL_UNEXPECTED_ERROR - callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error)) - } -} -fileprivate class UniffiHandleMap { - private var map: [UInt64: T] = [:] - private let lock = NSLock() - private var currentHandle: UInt64 = 1 - - func insert(obj: T) -> UInt64 { - lock.withLock { - let handle = currentHandle - currentHandle += 1 - map[handle] = obj - return handle - } - } - - func get(handle: UInt64) throws -> T { - try lock.withLock { - guard let obj = map[handle] else { - throw UniffiInternalError.unexpectedStaleHandle - } - return obj - } - } - - @discardableResult - func remove(handle: UInt64) throws -> T { - try lock.withLock { - guard let obj = map.removeValue(forKey: handle) else { - throw UniffiInternalError.unexpectedStaleHandle - } - return obj - } - } - - var count: Int { - get { - map.count - } - } -} - - -// Public interface members begin here. - - -fileprivate struct FfiConverterString: FfiConverter { - typealias SwiftType = String - typealias FfiType = RustBuffer - - public static func lift(_ value: RustBuffer) throws -> String { - defer { - value.deallocate() - } - if value.data == nil { - return String() - } - let bytes = UnsafeBufferPointer(start: value.data!, count: Int(value.len)) - return String(bytes: bytes, encoding: String.Encoding.utf8)! - } - - public static func lower(_ value: String) -> RustBuffer { - return value.utf8CString.withUnsafeBufferPointer { ptr in - // The swift string gives us int8_t, we want uint8_t. - ptr.withMemoryRebound(to: UInt8.self) { ptr in - // The swift string gives us a trailing null byte, we don't want it. - let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1)) - return RustBuffer.from(buf) - } - } - } - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String { - let len: Int32 = try readInt(&buf) - return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)! - } - - public static func write(_ value: String, into buf: inout [UInt8]) { - let len = Int32(value.utf8.count) - writeInt(&buf, len) - writeBytes(&buf, value.utf8) - } -} - -fileprivate struct FfiConverterData: FfiConverterRustBuffer { - typealias SwiftType = Data - - public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data { - let len: Int32 = try readInt(&buf) - return Data(try readBytes(&buf, count: Int(len))) - } - - public static func write(_ value: Data, into buf: inout [UInt8]) { - let len = Int32(value.count) - writeInt(&buf, len) - writeBytes(&buf, value) - } -} -public func hello() -> Data { - return try! FfiConverterData.lift(try! rustCall() { - uniffi_uniffi_lib_fn_func_hello($0 - ) -}) -} - -private enum InitializationResult { - case ok - case contractVersionMismatch - case apiChecksumMismatch -} -// Use a global variable to perform the versioning checks. Swift ensures that -// the code inside is only computed once. -private var initializationResult: InitializationResult = { - // Get the bindings contract version from our ComponentInterface - let bindings_contract_version = 26 - // Get the scaffolding contract version by calling the into the dylib - let scaffolding_contract_version = ffi_uniffi_lib_uniffi_contract_version() - if bindings_contract_version != scaffolding_contract_version { - return InitializationResult.contractVersionMismatch - } - if (uniffi_uniffi_lib_checksum_func_hello() != 40685) { - return InitializationResult.apiChecksumMismatch - } - - return InitializationResult.ok -}() - -private func uniffiEnsureInitialized() { - switch initializationResult { - case .ok: - break - case .contractVersionMismatch: - fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project") - case .apiChecksumMismatch: - fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project") - } -} - -// swiftlint:enable all \ No newline at end of file diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift index a183899eb..58155ef11 100644 --- a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift @@ -8,7 +8,7 @@ final class DevolutionsCryptoSwiftTests: XCTestCase { // Defining Test Cases and Test Methods // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods - let key = hello() + let key = generateKey() assert(key.count == 32) } diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh index 2dc42ba8f..f802b13cb 100644 --- a/wrappers/swift/generate.sh +++ b/wrappers/swift/generate.sh @@ -6,8 +6,8 @@ XCFRAMEWORK_FOLDER="./output/DevolutionsCrypto.xcframework" LIBNAME="devolutions_crypto_uniffi" LIBNAMEBUILD="devolutions-crypto-uniffi" -rm -rf bindings -rm -rf output +rm -rf ./bindings +rm -rf ./output cargo build -p "$LIBNAMEBUILD" @@ -30,7 +30,7 @@ cargo build --release --target=aarch64-apple-darwin -p "$LIBNAMEBUILD" cargo build --release --target=x86_64-apple-darwin -p "$LIBNAMEBUILD" -mv "./bindings/${LIBNAME}FFI.modulemap" ./bindings/module.modulemap +mv "./bindings/devolutions_cryptoFFI.modulemap" ./bindings/module.modulemap # combine the platforms @@ -61,7 +61,7 @@ ditto -c -k --sequesterRsrc --keepParent "$XCFRAMEWORK_FOLDER" "$XCFRAMEWORK_FOL swift package compute-checksum "$XCFRAMEWORK_FOLDER.zip" # Move swift file to package -cp "./bindings/$LIBNAME.swift" ./DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift +cp "./bindings/devolutions_crypto.swift" ./DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift # Tests cd ./DevolutionsCryptoSwift From 33b737722d253e46e0addc2089b0f46c621add46 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 09:43:53 -0500 Subject: [PATCH 28/43] add kotlin workflow --- .github/workflows/ci.yml | 10 ++++++++++ .github/workflows/tests/kotlin/action.yml | 14 ++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 .github/workflows/tests/kotlin/action.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e07733923..1d883cd37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -182,6 +182,16 @@ jobs: lfs: true - run: git lfs pull - uses: ./.github/workflows/tests/swift + +##### KOTLIN TESTS ##### + tests_kotlin: + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v4 + with: + lfs: true + - run: git lfs pull + - uses: ./.github/workflows/tests/kotlin #================================================= # Disabled for now, Android Emulator doesn't boot. - mmorrissette 2024-02-21 diff --git a/.github/workflows/tests/kotlin/action.yml b/.github/workflows/tests/kotlin/action.yml new file mode 100644 index 000000000..8842ad116 --- /dev/null +++ b/.github/workflows/tests/kotlin/action.yml @@ -0,0 +1,14 @@ +name: Test Kotlin Package +runs: + using: composite + steps: + - name: Run setup + working-directory: ./wrappers/kotlin + shell: bash + run: sh setup.sh + + - name: Run tests + working-directory: ./wrappers/kotlin + shell: bash + run: make + From d0068358d67d3007a239793fc39ca85e8c7159d6 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 10:07:14 -0500 Subject: [PATCH 29/43] fix folders --- wrappers/swift/DevolutionsCryptoSwift/.gitignore | 2 +- .../Sources/DevolutionsCryptoSwift/.gitkeep | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/.gitkeep diff --git a/wrappers/swift/DevolutionsCryptoSwift/.gitignore b/wrappers/swift/DevolutionsCryptoSwift/.gitignore index b32bf62a8..c6d7fb4a6 100644 --- a/wrappers/swift/DevolutionsCryptoSwift/.gitignore +++ b/wrappers/swift/DevolutionsCryptoSwift/.gitignore @@ -6,4 +6,4 @@ DerivedData/ .swiftpm/configuration/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc -Sources/DevolutionsCryptoSwift/ \ No newline at end of file +Sources/DevolutionsCryptoSwift/DevolutionsCryptoSwift.swift \ No newline at end of file diff --git a/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/.gitkeep b/wrappers/swift/DevolutionsCryptoSwift/Sources/DevolutionsCryptoSwift/.gitkeep new file mode 100644 index 000000000..e69de29bb From 9997152b550626f3c11150a40f07a2a90aa9eeac Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Fri, 15 Nov 2024 10:20:53 -0500 Subject: [PATCH 30/43] readd missing config --- .cargo/config.toml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 000000000..2a74c63a7 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,5 @@ +[target.'cfg(windows)'] +rustflags = ["-Ctarget-feature=+crt-static"] + +[target.aarch64-unknown-linux-gnu] +linker = "aarch64-linux-gnu-gcc" \ No newline at end of file From b5bbedb2addc1559d7fbf1713366c320119aee97 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 10:29:42 -0500 Subject: [PATCH 31/43] ci --- wrappers/kotlin/generate.bat | 9 --------- wrappers/kotlin/generate.sh | 36 ------------------------------------ 2 files changed, 45 deletions(-) delete mode 100644 wrappers/kotlin/generate.bat delete mode 100644 wrappers/kotlin/generate.sh diff --git a/wrappers/kotlin/generate.bat b/wrappers/kotlin/generate.bat deleted file mode 100644 index 118df3124..000000000 --- a/wrappers/kotlin/generate.bat +++ /dev/null @@ -1,9 +0,0 @@ -cd "..\..\uniffi\devolutions-crypto-uniffi\" -cargo build --release - -cd "../uniffi-bindgen" -cargo run -p uniffi-bindgen generate --library "..\..\target\release\devolutions_crypto_uniffi.dll" --language kotlin -o ../../wrappers/kotlin/lib/src/main/kotlin --no-format - -cd "../../" - -copy ".\target\release\devolutions_crypto_uniffi.dll" ".\wrappers\kotlin\lib\src\main\resources\win32-x86-64\" diff --git a/wrappers/kotlin/generate.sh b/wrappers/kotlin/generate.sh deleted file mode 100644 index 15f744a78..000000000 --- a/wrappers/kotlin/generate.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# please run setup.sh to setup all required tools - -rm -rf bindings -rm -rf output -rm -rf jniLibs - -LIBNAME="uniffi_lib" -LIBNAMEBUILD="uniffi-lib" - -rustup target add aarch64-linux-android -rustup target add armv7-linux-androideabi -rustup target add i686-linux-android -rustup target add x86_64-linux-android - -cargo build -p "$LIBNAMEBUILD" - -cargo run -p uniffi-bindgen generate --library "../../target/debug/lib$LIBNAME.so" --language kotlin -o bindings --no-format - -cargo build --release --target=aarch64-linux-android -p "$LIBNAMEBUILD" -cargo build --release --target=armv7-linux-androideabi -p "$LIBNAMEBUILD" -cargo build --release --target=i686-linux-android -p "$LIBNAMEBUILD" -cargo build --release --target=x86_64-linux-android -p "$LIBNAMEBUILD" - - -mkdir jniLibs - -mkdir -p jniLibs/arm64-v8a/ -cp "../../target/aarch64-linux-android/release/lib$LIBNAME.so" "jniLibs/arm64-v8a/lib$LIBNAME.so" -mkdir -p jniLibs/armeabi-v7a/ -cp "../../target/armv7-linux-androideabi/release/lib$LIBNAME.so" "jniLibs/armeabi-v7a/lib$LIBNAME.so" -mkdir -p jniLibs/x86/ -cp "../../target/i686-linux-android/release/lib$LIBNAME.so" "jniLibs/x86/lib$LIBNAME.so" -mkdir -p jniLibs/x86_64/ -cp "../../target/x86_64-linux-android/release/lib$LIBNAME.so" "jniLibs/x86_64/lib$LIBNAME.so" - From 3ec701280cb3d3eaf2139021294eaa08b3516e32 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 10:43:01 -0500 Subject: [PATCH 32/43] ci --- .github/workflows/ci.yml | 4 ++-- .github/workflows/kotlin/action.yml | 16 ++++++++++++++++ .github/workflows/tests/kotlin/action.yml | 6 ++++-- 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/kotlin/action.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d883cd37..7d636200e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -183,7 +183,7 @@ jobs: - run: git lfs pull - uses: ./.github/workflows/tests/swift -##### KOTLIN TESTS ##### +##### KOTLIN BUILD ##### tests_kotlin: runs-on: "ubuntu-latest" steps: @@ -191,7 +191,7 @@ jobs: with: lfs: true - run: git lfs pull - - uses: ./.github/workflows/tests/kotlin + - uses: ./.github/workflows/kotlin #================================================= # Disabled for now, Android Emulator doesn't boot. - mmorrissette 2024-02-21 diff --git a/.github/workflows/kotlin/action.yml b/.github/workflows/kotlin/action.yml new file mode 100644 index 000000000..28b6788b6 --- /dev/null +++ b/.github/workflows/kotlin/action.yml @@ -0,0 +1,16 @@ +name: Build Kotlin Package +runs: + using: composite + steps: + - name: Run setup + working-directory: ./wrappers/kotlin + shell: bash + run: sh setup.sh + + - name: Build + working-directory: ./wrappers/kotlin + shell: bash + run: make + + # TODO test and package into an artifact + diff --git a/.github/workflows/tests/kotlin/action.yml b/.github/workflows/tests/kotlin/action.yml index 8842ad116..28b6788b6 100644 --- a/.github/workflows/tests/kotlin/action.yml +++ b/.github/workflows/tests/kotlin/action.yml @@ -1,4 +1,4 @@ -name: Test Kotlin Package +name: Build Kotlin Package runs: using: composite steps: @@ -7,8 +7,10 @@ runs: shell: bash run: sh setup.sh - - name: Run tests + - name: Build working-directory: ./wrappers/kotlin shell: bash run: make + # TODO test and package into an artifact + From d71feea6ce1b7e0e2253536b27707f34a554dbf1 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 10:48:00 -0500 Subject: [PATCH 33/43] kotlin ci --- .github/workflows/ci.yml | 23 ++++++++++------------- .github/workflows/tests/kotlin/action.yml | 7 ++++++- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d636200e..bbbb40fc3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -184,7 +184,7 @@ jobs: - uses: ./.github/workflows/tests/swift ##### KOTLIN BUILD ##### - tests_kotlin: + build_kotlin: runs-on: "ubuntu-latest" steps: - uses: actions/checkout@v4 @@ -193,18 +193,15 @@ jobs: - run: git lfs pull - uses: ./.github/workflows/kotlin - #================================================= - # Disabled for now, Android Emulator doesn't boot. - mmorrissette 2024-02-21 - #================================================= - #tests_nuget_android: - # needs: [nugets_macos, setup_config] - # runs-on: "macos-12" - # steps: - # - uses: actions/checkout@v4 - # with: - # lfs: true - # - run: git lfs pull - # - uses: ./.github/workflows/tests/csharp/android + tests_nuget_android: + needs: [nugets_macos, setup_config] + runs-on: "macos-14" + steps: + - uses: actions/checkout@v4 + with: + lfs: true + - run: git lfs pull + - uses: ./.github/workflows/tests/csharp/android tests_ios_integration: needs: [tests_nuget_ios, setup_config] diff --git a/.github/workflows/tests/kotlin/action.yml b/.github/workflows/tests/kotlin/action.yml index 28b6788b6..f5b33b25c 100644 --- a/.github/workflows/tests/kotlin/action.yml +++ b/.github/workflows/tests/kotlin/action.yml @@ -7,10 +7,15 @@ runs: shell: bash run: sh setup.sh - - name: Build + - name: Build Wrapper working-directory: ./wrappers/kotlin shell: bash run: make + - name: Build Lib + working-directory: ./wrappers/kotlin + shell: bash + run: ./gradlew build + # TODO test and package into an artifact From 56081e894b843ffab5a1bb51e287273742c53494 Mon Sep 17 00:00:00 2001 From: mathieumorrissette Date: Fri, 15 Nov 2024 11:03:13 -0500 Subject: [PATCH 34/43] build kotlin --- .github/workflows/tests/kotlin/action.yml | 2 +- wrappers/kotlin/build.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 wrappers/kotlin/build.sh diff --git a/.github/workflows/tests/kotlin/action.yml b/.github/workflows/tests/kotlin/action.yml index f5b33b25c..ecc70b38e 100644 --- a/.github/workflows/tests/kotlin/action.yml +++ b/.github/workflows/tests/kotlin/action.yml @@ -15,7 +15,7 @@ runs: - name: Build Lib working-directory: ./wrappers/kotlin shell: bash - run: ./gradlew build + run: sh build.sh # TODO test and package into an artifact diff --git a/wrappers/kotlin/build.sh b/wrappers/kotlin/build.sh new file mode 100644 index 000000000..c2cf4311f --- /dev/null +++ b/wrappers/kotlin/build.sh @@ -0,0 +1,2 @@ +chmod +x gradlew +./gradlew build \ No newline at end of file From 4a85de11883bdd79002ba8daa48a4dfd202bfe6e Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Fri, 15 Nov 2024 11:32:21 -0500 Subject: [PATCH 35/43] setup ci --- wrappers/kotlin/build.sh | 1 + wrappers/kotlin/setup.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/wrappers/kotlin/build.sh b/wrappers/kotlin/build.sh index c2cf4311f..e71319d54 100644 --- a/wrappers/kotlin/build.sh +++ b/wrappers/kotlin/build.sh @@ -1,2 +1,3 @@ chmod +x gradlew +./gradlew test ./gradlew build \ No newline at end of file diff --git a/wrappers/kotlin/setup.sh b/wrappers/kotlin/setup.sh index d1ba383d8..3ca50c59a 100644 --- a/wrappers/kotlin/setup.sh +++ b/wrappers/kotlin/setup.sh @@ -38,3 +38,6 @@ echo "[target.aarch64-linux-android] linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang\"" >> "/home/$SUDO_USER/.cargo/config" ln -sfn $ANDROID_SDK_ROOT/ndk/25.2.9519653 $ANDROID_NDK + +# install kotlin +sudo snap install --classic kotlin \ No newline at end of file From b8179afa55e810bc7b7c4150e029be7fe42f28d0 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Fri, 15 Nov 2024 11:34:45 -0500 Subject: [PATCH 36/43] verbose tests --- wrappers/kotlin/lib/build.gradle.kts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/wrappers/kotlin/lib/build.gradle.kts b/wrappers/kotlin/lib/build.gradle.kts index 76b63bfba..85bbc11fd 100644 --- a/wrappers/kotlin/lib/build.gradle.kts +++ b/wrappers/kotlin/lib/build.gradle.kts @@ -46,4 +46,12 @@ java { tasks.named("test") { // Use JUnit Platform for unit tests. useJUnitPlatform() + + + // Configure test logging to display results in stdout + testLogging { + events("passed", "skipped", "failed") + exceptionFormat = org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL + showStandardStreams = true + } } From 57a1036f3cdb327b275a3adfca1bf77253475e85 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Fri, 15 Nov 2024 11:45:11 -0500 Subject: [PATCH 37/43] setup ci --- wrappers/kotlin/build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wrappers/kotlin/build.sh b/wrappers/kotlin/build.sh index e71319d54..70a0ab8e3 100644 --- a/wrappers/kotlin/build.sh +++ b/wrappers/kotlin/build.sh @@ -1,3 +1,6 @@ +make +make android + chmod +x gradlew ./gradlew test ./gradlew build \ No newline at end of file From 58a9d874a8515d788ff8e46bab05ce770cfef8b8 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Fri, 15 Nov 2024 11:50:29 -0500 Subject: [PATCH 38/43] setup ci --- .github/workflows/kotlin/action.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/kotlin/action.yml b/.github/workflows/kotlin/action.yml index 28b6788b6..f3165fd1f 100644 --- a/.github/workflows/kotlin/action.yml +++ b/.github/workflows/kotlin/action.yml @@ -10,7 +10,11 @@ runs: - name: Build working-directory: ./wrappers/kotlin shell: bash - run: make + run: sh build.sh - # TODO test and package into an artifact + - name: Kotlin Package + uses: actions/upload-artifact@v4 + with: + name: kotlin + path: ./wrappers/kotlin/lib/build From a25b184ab36a4da9abcef78e783f3f50943e5a53 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Fri, 15 Nov 2024 12:13:33 -0500 Subject: [PATCH 39/43] setup ci --- .github/workflows/ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bbbb40fc3..388f63c30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -193,15 +193,15 @@ jobs: - run: git lfs pull - uses: ./.github/workflows/kotlin - tests_nuget_android: - needs: [nugets_macos, setup_config] - runs-on: "macos-14" - steps: - - uses: actions/checkout@v4 - with: - lfs: true - - run: git lfs pull - - uses: ./.github/workflows/tests/csharp/android + #tests_nuget_android: + # needs: [nugets_macos, setup_config] + # runs-on: "macos-14" + # steps: + # - uses: actions/checkout@v4 + # with: + # lfs: true + # - run: git lfs pull + # - uses: ./.github/workflows/tests/csharp/android tests_ios_integration: needs: [tests_nuget_ios, setup_config] From 115268ec993e2ec31926e48d419bc0ca545d03a9 Mon Sep 17 00:00:00 2001 From: Philippe Dugre Date: Sun, 17 Nov 2024 18:56:50 -0500 Subject: [PATCH 40/43] Fix wasm build --- src/error.rs | 2 +- src/wasm.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/error.rs b/src/error.rs index 43f66c99d..aa8e34dcb 100644 --- a/src/error.rs +++ b/src/error.rs @@ -126,7 +126,7 @@ impl From for Error { #[cfg(feature = "wbindgen")] impl From for JsValue { fn from(error: Error) -> JsValue { - let js_error = js_sys::Error::new(&error.description()); + let js_error = js_sys::Error::new(&error.to_string()); js_error.set_name(error.into()); js_error.into() diff --git a/src/wasm.rs b/src/wasm.rs index f12ef0b63..d76e13ed5 100644 --- a/src/wasm.rs +++ b/src/wasm.rs @@ -82,7 +82,7 @@ impl Argon2Parameters { #[wasm_bindgen(getter)] pub fn bytes(&self) -> Vec { - self.clone().into() + self.into() } #[wasm_bindgen(js_name = "fromBytes")] From 231349a29a7bcf7dfdf3a4123938ca23dedcb9c7 Mon Sep 17 00:00:00 2001 From: pdugre Date: Thu, 21 Nov 2024 11:42:29 -0500 Subject: [PATCH 41/43] [Swift] Tests --- Cargo.lock | 392 ++++++++++-------- Cargo.toml | 4 - .../DevolutionsCryptoSwift/Package.swift | 42 +- .../AsymmetricTests.swift | 86 ++++ .../ConformityTests.swift | 130 ++++++ .../DevolutionsCryptoSwiftTests.swift | 15 - .../HashingTests.swift | 20 + .../SecretSharingTests.swift | 53 +++ .../SignatureTests.swift | 25 ++ .../SymmetricTests.swift | 42 ++ .../UtilsTests.swift | 152 +++++++ wrappers/swift/generate.sh | 0 12 files changed, 754 insertions(+), 207 deletions(-) create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/AsymmetricTests.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/ConformityTests.swift delete mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/HashingTests.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SecretSharingTests.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SignatureTests.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SymmetricTests.swift create mode 100644 wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/UtilsTests.swift mode change 100644 => 100755 wrappers/swift/generate.sh diff --git a/Cargo.lock b/Cargo.lock index 6ca4c8888..97e47fd6c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -31,9 +31,9 @@ checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -46,33 +46,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", "windows-sys", @@ -80,9 +80,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arbitrary" @@ -95,15 +95,15 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "askama" @@ -128,7 +128,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" @@ -207,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5106bf2680d585dc5f29711b8aa5dde353180b8e14af89b7f0424f760c84e7ce" dependencies = [ "arbitrary", - "hashbrown 0.15.1", + "hashbrown", "rand", ] @@ -254,15 +254,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] @@ -301,9 +301,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.6" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -348,9 +351,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.11" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -358,9 +361,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.11" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -370,27 +373,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.11" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console_error_panic_hook" @@ -410,15 +413,15 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6" dependencies = [ "libc", ] @@ -464,7 +467,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -617,12 +620,6 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "foldhash" version = "0.1.3" @@ -678,12 +675,6 @@ dependencies = [ "scroll", ] -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - [[package]] name = "hashbrown" version = "0.15.1" @@ -718,12 +709,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown", ] [[package]] @@ -750,24 +741,24 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.155" +version = "0.2.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" [[package]] name = "libfuzzer-sys" @@ -826,6 +817,16 @@ dependencies = [ "unicase", ] +[[package]] +name = "minicov" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b" +dependencies = [ + "cc", + "walkdir", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -844,30 +845,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -943,30 +944,33 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "307e3004becf10f5a6e0d59d20f3cd28231b0e0827a96cd3e0ce6d14bc1e4bb3" dependencies = [ "unicode-ident", ] @@ -1018,7 +1022,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -1031,7 +1035,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -1075,9 +1079,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags", ] @@ -1096,18 +1100,18 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -1124,6 +1128,15 @@ dependencies = [ "cipher", ] +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -1153,7 +1166,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -1178,9 +1191,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.204" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -1198,22 +1211,23 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1229,6 +1243,12 @@ dependencies = [ "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signature" version = "2.2.0" @@ -1297,7 +1317,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -1319,9 +1339,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -1330,9 +1350,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "textwrap" @@ -1345,22 +1365,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -1374,15 +1394,15 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "toml_datetime", @@ -1406,7 +1426,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] @@ -1417,27 +1437,25 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "uniffi" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31bff6daf87277a9014bcdefbc2842b0553392919d1096843c5aad899ca4588" +checksum = "4cb08c58c7ed7033150132febe696bef553f891b1ede57424b40d87a89e3c170" dependencies = [ "anyhow", "camino", + "cargo_metadata", "clap", "uniffi_bindgen", "uniffi_build", @@ -1457,14 +1475,14 @@ name = "uniffi-builder-macro" version = "0.1.0" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] name = "uniffi_bindgen" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96061d7e01b185aa405f7c9b134741ab3e50cc6796a47d6fd8ab9a5364b5feed" +checksum = "cade167af943e189a55020eda2c314681e223f1e42aca7c4e52614c2b627698f" dependencies = [ "anyhow", "askama", @@ -1480,15 +1498,14 @@ dependencies = [ "textwrap", "toml", "uniffi_meta", - "uniffi_testing", "uniffi_udl", ] [[package]] name = "uniffi_build" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6b86f9b221046af0c533eafe09ece04e2f1ded04ccdc9bba0ec09aec1c52bd" +checksum = "4c7cf32576e08104b7dc2a6a5d815f37616e66c6866c2a639fe16e6d2286b75b" dependencies = [ "anyhow", "camino", @@ -1497,23 +1514,22 @@ dependencies = [ [[package]] name = "uniffi_checksum_derive" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fcfa22f55829d3aaa7acfb1c5150224188fe0f27c59a8a3eddcaa24d1ffbe58" +checksum = "802d2051a700e3ec894c79f80d2705b69d85844dafbbe5d1a92776f8f48b563a" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] name = "uniffi_core" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3210d57d6ab6065ab47a2898dacdb7c606fd6a4156196831fa3bf82e34ac58a6" +checksum = "bc7687007d2546c454d8ae609b105daceb88175477dac280707ad6d95bcd6f1f" dependencies = [ "anyhow", "bytes", - "camino", "log", "once_cell", "paste", @@ -1522,9 +1538,9 @@ dependencies = [ [[package]] name = "uniffi_macros" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58691741080935437dc862122e68d7414432a11824ac1137868de46181a0bd2" +checksum = "12c65a5b12ec544ef136693af8759fb9d11aefce740fb76916721e876639033b" dependencies = [ "bincode", "camino", @@ -1533,16 +1549,16 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.79", + "syn 2.0.89", "toml", "uniffi_meta", ] [[package]] name = "uniffi_meta" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7663eacdbd9fbf4a88907ddcfe2e6fa85838eb6dc2418a7d91eebb3786f8e20b" +checksum = "4a74ed96c26882dac1ca9b93ca23c827e284bacbd7ec23c6f0b0372f747d59e4" dependencies = [ "anyhow", "bytes", @@ -1552,9 +1568,9 @@ dependencies = [ [[package]] name = "uniffi_testing" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f922465f7566f25f8fe766920205fdfa9a3fcdc209c6bfb7557f0b5bf45b04dd" +checksum = "6a6f984f0781f892cc864a62c3a5c60361b1ccbd68e538e6c9fbced5d82268ac" dependencies = [ "anyhow", "camino", @@ -1565,9 +1581,9 @@ dependencies = [ [[package]] name = "uniffi_udl" -version = "0.28.0" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef408229a3a407fafa4c36dc4f6ece78a6fb258ab28d2b64bddd49c8cb680f6" +checksum = "037820a4cfc4422db1eaa82f291a3863c92c7d1789dc513489c36223f9b4cdfc" dependencies = [ "anyhow", "textwrap", @@ -1600,9 +1616,19 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] name = "wasi" @@ -1612,34 +1638,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -1649,9 +1676,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1659,31 +1686,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-bindgen-test" -version = "0.3.42" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" +checksum = "d381749acb0943d357dcbd8f0b100640679883fcdeeef04def49daf8d33a5426" dependencies = [ "console_error_panic_hook", "js-sys", + "minicov", "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", @@ -1692,20 +1720,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.42" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" +checksum = "c97b2ef2c8d627381e51c071c2ab328eac606d3f69dd82bcbca20a9e389d95f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -1720,11 +1748,20 @@ dependencies = [ "nom", ] +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + [[package]] name = "windows-sys" -version = "0.52.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ "windows-targets", ] @@ -1795,9 +1832,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -1814,6 +1851,27 @@ dependencies = [ "zeroize", ] +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -1831,5 +1889,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.89", ] diff --git a/Cargo.toml b/Cargo.toml index a44bef2df..1067791b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,10 +79,6 @@ rust-argon2 = "1.0" wasm-bindgen-test = "0.3" [features] -<<<<<<< HEAD default = [] fuzz = ["arbitrary", "blahaj/fuzzing"] -======= -fuzz = ["arbitrary", "sharks/fuzzing"] ->>>>>>> d4b0a2d (initial commit) wbindgen = ["wasm-bindgen", "serde-wasm-bindgen", "js-sys"] diff --git a/wrappers/swift/DevolutionsCryptoSwift/Package.swift b/wrappers/swift/DevolutionsCryptoSwift/Package.swift index 391875a35..d4249f84f 100644 --- a/wrappers/swift/DevolutionsCryptoSwift/Package.swift +++ b/wrappers/swift/DevolutionsCryptoSwift/Package.swift @@ -4,25 +4,25 @@ import PackageDescription let package = Package( - name: "DevolutionsCryptoSwift", - products: [ - // Products define the executables and libraries a package produces, making them visible to other packages. - .library( - name: "DevolutionsCryptoSwift", - targets: ["DevolutionsCryptoSwift"]), - ], - targets: [ - // Targets are the basic building blocks of a package, defining a module or a test suite. - // Targets can depend on other targets in this package and products from dependencies. - .target( - name: "DevolutionsCryptoSwift", - dependencies: ["DevolutionsCryptoFramework"]), - .testTarget( - name: "DevolutionsCryptoSwiftTests", - dependencies: ["DevolutionsCryptoSwift"]), - .binaryTarget( - name: "DevolutionsCryptoFramework", - path: "../output/DevolutionsCrypto.xcframework" - ) - ] + name: "DevolutionsCryptoSwift", + products: [ + // Products define the executables and libraries a package produces, making them visible to other packages. + .library( + name: "DevolutionsCryptoSwift", + targets: ["DevolutionsCryptoSwift"]) + ], + targets: [ + // Targets are the basic building blocks of a package, defining a module or a test suite. + // Targets can depend on other targets in this package and products from dependencies. + .target( + name: "DevolutionsCryptoSwift", + dependencies: ["DevolutionsCryptoFramework"]), + .testTarget( + name: "DevolutionsCryptoSwiftTests", + dependencies: ["DevolutionsCryptoSwift"]), + .binaryTarget( + name: "DevolutionsCryptoFramework", + path: "../output/DevolutionsCrypto.xcframework" + ), + ] ) diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/AsymmetricTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/AsymmetricTests.swift new file mode 100644 index 000000000..b642eae2d --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/AsymmetricTests.swift @@ -0,0 +1,86 @@ +import DevolutionsCryptoSwift +import XCTest + +class AsymmetricTests: XCTestCase { + + func testGenerateKeypair() { + let keypair = generateKeypair() + + XCTAssertFalse(keypair.publicKey.isEmpty) + XCTAssertFalse(keypair.privateKey.isEmpty) + XCTAssertNotEqual(keypair.privateKey, keypair.publicKey) + } + + func testEncryptDecryptAsymmetric() throws { + let data = Data("This is some test data".utf8) + let keypair = generateKeypair() + + let encrypted = try encryptAsymmetric(data: data, key: keypair.publicKey) + let decrypted = try decryptAsymmetric(data: encrypted, key: keypair.privateKey) + + XCTAssertFalse(data.elementsEqual(encrypted)) + XCTAssertEqual(data, decrypted) + } + + func testEncryptDecryptAsymmetricWithAad() throws { + let data = Data("This is some test data".utf8) + let aad = Data("This is some public data".utf8) + let keypair = generateKeypair() + + let encrypted = try encryptAsymmetricWithAad(data: data, key: keypair.publicKey, aad: aad) + let decrypted = try decryptAsymmetricWithAad(data: encrypted, key: keypair.privateKey, aad: aad) + + XCTAssertFalse(data.elementsEqual(encrypted)) + XCTAssertEqual(data, decrypted) + } + + func testEncryptDecryptAsymmetricWithWrongAad() throws { + let data = Data("This is some test data".utf8) + let aad = Data("This is some public data".utf8) + let wrongAad = Data("this is some public data".utf8) + let keypair = generateKeypair() + + let encrypted = try encryptAsymmetricWithAad(data: data, key: keypair.publicKey, aad: aad) + + XCTAssertThrowsError( + try decryptAsymmetricWithAad(data: encrypted, key: keypair.privateKey, aad: wrongAad) + ) { error in + XCTAssertTrue(error is DevolutionsCryptoError) + } + } + + func testMixKeyExchange() throws { + let bobKeypair = generateKeypair() + let aliceKeypair = generateKeypair() + + let bobShared = try mixKeyExchange( + privateKey: bobKeypair.privateKey, publicKey: aliceKeypair.publicKey) + let aliceShared = try mixKeyExchange( + privateKey: aliceKeypair.privateKey, publicKey: bobKeypair.publicKey) + + XCTAssertEqual(bobShared.count, 32) + XCTAssertNotEqual(bobShared, Data(repeating: UInt8(0), count: 32)) + XCTAssertEqual(bobShared, aliceShared) + } + + func testMixKeyExchangeNotEquals() throws { + let bobKeypair = generateKeypair() + let aliceKeypair = generateKeypair() + let eveKeypair = generateKeypair() + + let bobAliceShared = try mixKeyExchange( + privateKey: bobKeypair.privateKey, publicKey: aliceKeypair.publicKey) + let aliceBobShared = try mixKeyExchange( + privateKey: aliceKeypair.privateKey, publicKey: bobKeypair.publicKey) + + let eveBobShared = try mixKeyExchange( + privateKey: eveKeypair.privateKey, publicKey: bobKeypair.publicKey) + let eveAliceShared = try mixKeyExchange( + privateKey: eveKeypair.privateKey, publicKey: aliceKeypair.publicKey) + + XCTAssertNotEqual(eveBobShared, bobAliceShared) + XCTAssertNotEqual(eveBobShared, aliceBobShared) + XCTAssertNotEqual(eveAliceShared, bobAliceShared) + XCTAssertNotEqual(eveAliceShared, aliceBobShared) + } +} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/ConformityTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/ConformityTests.swift new file mode 100644 index 000000000..0e64fa3dc --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/ConformityTests.swift @@ -0,0 +1,130 @@ +import DevolutionsCryptoSwift +import XCTest + +class ConformityTests: XCTestCase { + + func testDeriveKeyPbkdf2() throws { + let derivedKey = deriveKeyPbkdf2(key: Data("testpassword".utf8), salt: nil) + let derivedKeyWithIterations = deriveKeyPbkdf2( + key: Data("testPa$$".utf8), salt: nil, iterations: 100) + let derivedKeyWithSalt = deriveKeyPbkdf2( + key: Data("testPa$$".utf8), + salt: try base64Decode(data: "tdTt5wgeqQYLvkiXKkFirqy2hMbzadBtL+jekVeNCRA="), + iterations: 100 + ) + + let expected = try base64Decode(data: "ImfGCyv6PwMYaJShGxR4MfVrjuUrsI0CSarJgOApwf8=") + let expectedWithIterations = try base64Decode( + data: "ev/GiJLvOgIkkWrnIrHSi2fdZE5qJBIrW+DLeMLIXK4=") + let expectedWithSalt = try base64Decode(data: "ZaYRZeQiIPJ+Jl511AgHZjv4/HbCFq4eUP9yNa3gowI=") + + XCTAssertEqual(derivedKey, expected) + XCTAssertEqual(derivedKeyWithIterations, expectedWithIterations) + XCTAssertEqual(derivedKeyWithSalt, expectedWithSalt) + } + + func testDeriveKeyArgon2() throws { + let password = Data("password".utf8) + let parameters = try Argon2Parameters.newFromBytes( + data: try base64Decode( + data: "AQAAACAAAAABAAAAIAAAAAEAAAACEwAAAAAQAAAAimFBkm3f8+f+YfLRnF5OoQ==") + ) + let result = try deriveKeyArgon2(key: password, parameters: parameters) + + let expected = try base64Decode(data: "AcEN6Cb1Om6tomZScAM725qiXMzaxaHlj3iMiT/Ukq0=") + + XCTAssertEqual(result, expected) + } + + func testSymmetricDecryptV1() throws { + let key = try base64Decode(data: "ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + let ciphertext = try base64Decode( + data: + "DQwCAAAAAQCK1twEut+TeJfFbTWCRgHjyS6bOPOZUEQAeBtSFFRl2jHggM/34n68zIZWGbsZHkufVzU6mTN5N2Dx9bTplrycv5eNVevT4P9FdVHJ751D+A==" + ) + let result = try decrypt(data: ciphertext, key: key) + let expected = Data("test Ciph3rtext~".utf8) + + XCTAssertEqual(result, expected) + } + + func testSymmetricDecryptWithAadV1() throws { + let key = try base64Decode(data: "ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + let ciphertext = try base64Decode( + data: + "DQwCAAEAAQCeKfbTqYjfVCEPEiAJjiypBstPmZz0AnpliZKoR+WXTKdj2f/4ops0++dDBVZ+XdyE1KfqxViWVc9djy/HSCcPR4nDehtNI69heGCIFudXfQ==" + ) + let aad = Data("this is some public data".utf8) + let result = try decryptWithAad(data: ciphertext, key: key, aad: aad) + let expected = Data("test Ciph3rtext~".utf8) + + XCTAssertEqual(result, expected) + } + + func testSymmetricDecryptV2() throws { + let key = try base64Decode(data: "ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + let ciphertext = try base64Decode( + data: + "DQwCAAAAAgAA0iPpI4IEzcrWAQiy6tqDqLbRYduGvlMC32mVH7tpIN2CXDUu5QHF91I7pMrmjt/61pm5CeR/IcU=") + let result = try decrypt(data: ciphertext, key: key) + let expected = Data("test Ciph3rtext~2".utf8) + + XCTAssertEqual(result, expected) + } + + func testSymmetricDecryptWithAadV2() throws { + let key = try base64Decode(data: "ozJVEme4+5e/4NG3C+Rl26GQbGWAqGc0QPX8/1xvaFM=") + let ciphertext = try base64Decode( + data: + "DQwCAAEAAgA9bh989dao0Pvaz1NpJTI5m7M4br2qVjZtFwXXoXZOlkCjtqU/uif4pbNCcpEodzeP4YG1QvfKVQ==") + let aad = Data("this is some public data".utf8) + let result = try decryptWithAad(data: ciphertext, key: key, aad: aad) + let expected = Data("test Ciph3rtext~".utf8) + + XCTAssertEqual(result, expected) + } + + func testAsymmetricDecryptWithAadV2() throws { + let privateKey = try base64Decode( + data: "DQwBAAEAAQC9qf9UY1ovL/48ALGHL9SLVpVozbdjYsw0EPerUl3zYA==") + let ciphertext = try base64Decode( + data: + "DQwCAAIAAgB1u62xYeyppWf83QdWwbwGUt5QuiAFZr+hIiFEvMRbXiNCE3RMBNbmgQkLr/vME0BeQa+uUTXZARvJcyNXHyAE4tSdw6o/psU/kw/Z/FbsPw==" + ) + let aad = Data("this is some public data".utf8) + let result = try decryptAsymmetricWithAad(data: ciphertext, key: privateKey, aad: aad) + let expected = Data("testdata".utf8) + + XCTAssertEqual(result, expected) + } + + func testPasswordHashingV1() throws { + let hash1 = try base64Decode( + data: + "DQwDAAAAAQAQJwAAXCzLFoyeZhFSDYBAPiIWhCk04aoP/lalOoCl7D+skIY/i+3WT7dn6L8WvnfEq6flCd7i+IcKb3GEK4rCpzhDlw==" + ) + let hash2 = try base64Decode( + data: + "DQwDAAAAAQAKAAAAmH1BBckBJYDD0xfiwkAk1xwKgw8a57YQT0Igm+Faa9LFamTeEJgqn/qHc2R/8XEyK2iLPkVy+IErdGLLtLKJ2g==" + ) + + XCTAssertTrue(try verifyPassword(password: Data("password1".utf8), hash: hash1)) + XCTAssertTrue(try verifyPassword(password: Data("password1".utf8), hash: hash2)) + } + + func testSignatureV1() throws { + let publicKey = try base64Decode( + data: "DQwFAAIAAQDeEvwlEigK5AXoTorhmlKP6+mbiUU2rYrVQ25JQ5xang==") + let signature = try base64Decode( + data: + "DQwGAAAAAQD82uRk4sFC8vEni6pDNw/vOdN1IEDg9cAVfprWJZ/JBls9Gi61cUt5u6uBJtseNGZFT7qKLvp4NUZrAOL8FH0K" + ) + + XCTAssertTrue( + try verifySignature( + data: Data("this is a test".utf8), publicKey: publicKey, signature: signature)) + XCTAssertFalse( + try verifySignature( + data: Data("this is wrong".utf8), publicKey: publicKey, signature: signature)) + } +} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift deleted file mode 100644 index 58155ef11..000000000 --- a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/DevolutionsCryptoSwiftTests.swift +++ /dev/null @@ -1,15 +0,0 @@ -import XCTest -@testable import DevolutionsCryptoSwift - -final class DevolutionsCryptoSwiftTests: XCTestCase { - func testExample() throws { - // XCTest Documentation - // https://developer.apple.com/documentation/xctest - - // Defining Test Cases and Test Methods - // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods - let key = generateKey() - - assert(key.count == 32) - } -} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/HashingTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/HashingTests.swift new file mode 100644 index 000000000..36b86ffae --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/HashingTests.swift @@ -0,0 +1,20 @@ +import DevolutionsCryptoSwift +import XCTest + +class HashingTests: XCTestCase { + func testPasswordHash() throws { + let password = Data("password".utf8) + let hash = hashPassword(password: password, iterations: 10) + + XCTAssertTrue(try verifyPassword(password: password, hash: hash)) + } + + func testWrongPassword() throws { + let password = Data("password".utf8) + let hash = hashPassword(password: password, iterations: 10) + + XCTAssertFalse(try verifyPassword(password: Data("pa$$word".utf8), hash: hash)) + XCTAssertFalse(try verifyPassword(password: Data("Password".utf8), hash: hash)) + XCTAssertFalse(try verifyPassword(password: Data("password1".utf8), hash: hash)) + } +} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SecretSharingTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SecretSharingTests.swift new file mode 100644 index 000000000..47ed2f7f6 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SecretSharingTests.swift @@ -0,0 +1,53 @@ +import DevolutionsCryptoSwift +import XCTest + +class SecretSharingTests: XCTestCase { + func testSharedSecretDefault() throws { + let shares = try generateSharedKey(nShares: 5, threshold: 3) + + let shareGroup1 = Array(shares[0...2]) + let shareGroup2 = Array(shares[1...3]) + let shareGroup3 = Array(shares[2...4]) + + let key1 = try joinShares(shares: shareGroup1) + let key2 = try joinShares(shares: shareGroup2) + let key3 = try joinShares(shares: shareGroup3) + + XCTAssertEqual(key1.count, 32) + XCTAssertNotEqual(key1, Data(repeating: UInt8(0), count: 32)) + XCTAssertEqual(key1, key2) + XCTAssertEqual(key1, key3) + } + + func testSharedSecretLarger() throws { + let shares = try generateSharedKey(nShares: 5, threshold: 3, length: 41) + + let shareGroup1 = Array(shares[0...2]) + let shareGroup2 = Array(shares[1...3]) + let shareGroup3 = Array(shares[2...4]) + + let key1 = try joinShares(shares: shareGroup1) + let key2 = try joinShares(shares: shareGroup2) + let key3 = try joinShares(shares: shareGroup3) + + XCTAssertEqual(key1.count, 41) + XCTAssertNotEqual(key1, Data(repeating: UInt8(0), count: 41)) + XCTAssertEqual(key1, key2) + XCTAssertEqual(key1, key3) + } + + func testSharedSecretWrongParams() { + XCTAssertThrowsError(try generateSharedKey(nShares: 3, threshold: 5)) { error in + XCTAssertTrue(error is DevolutionsCryptoError) + } + } + + func testSharedSecretNotEnoughShares() { + let shares = try! generateSharedKey(nShares: 5, threshold: 3) + let sharesGroup = Array(shares[0...1]) + + XCTAssertThrowsError(try joinShares(shares: sharesGroup)) { error in + XCTAssertTrue(error is DevolutionsCryptoError) + } + } +} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SignatureTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SignatureTests.swift new file mode 100644 index 000000000..4d77dd488 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SignatureTests.swift @@ -0,0 +1,25 @@ +import DevolutionsCryptoSwift +import XCTest + +class SignatureTests: XCTestCase { + func testSignature() throws { + let data = Data("this is a test".utf8) + let keypair = generateSigningKeypair() + + let signature = try sign(data: data, keypair: keypair.getPrivateKey()) + + XCTAssertTrue( + try verifySignature(data: data, publicKey: keypair.getPublicKey(), signature: signature)) + } + + func testWrongSignature() throws { + let data = Data("this is test data".utf8) + let wrongData = Data("this is wrong data".utf8) + let keypair = generateSigningKeypair() + + let signature = try sign(data: data, keypair: keypair.getPrivateKey()) + + XCTAssertFalse( + try verifySignature(data: wrongData, publicKey: keypair.getPublicKey(), signature: signature)) + } +} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SymmetricTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SymmetricTests.swift new file mode 100644 index 000000000..742895f19 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/SymmetricTests.swift @@ -0,0 +1,42 @@ +import DevolutionsCryptoSwift +import XCTest + +class SymmetricTests: XCTestCase { + func testEncryptDecrypt() throws { + let data = Data("This is some test data".utf8) + let key = generateKey() + + let encrypted = try encrypt(data: data, key: key) + let decrypted = try decrypt(data: encrypted, key: key) + + XCTAssertFalse(data.elementsEqual(encrypted)) + XCTAssertEqual(data, decrypted) + } + + func testEncryptDecryptWithAad() throws { + let data = Data("This is some test data".utf8) + let aad = Data("This is some public data".utf8) + + let key = generateKey() + + let encrypted = try encryptWithAad(data: data, key: key, aad: aad) + let decrypted = try decryptWithAad(data: encrypted, key: key, aad: aad) + + XCTAssertFalse(data.elementsEqual(encrypted)) + XCTAssertEqual(data, decrypted) + } + + func testEncryptDecryptWithWrongAad() throws { + let data = Data("This is some test data".utf8) + let aad = Data("This is some public data".utf8) + let wrongAad = Data("this is some public data".utf8) + + let key = generateKey() + + let encrypted = try encryptWithAad(data: data, key: key, aad: aad) + + XCTAssertThrowsError(try decryptWithAad(data: encrypted, key: key, aad: wrongAad)) { error in + XCTAssertTrue(error is DevolutionsCryptoError) + } + } +} diff --git a/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/UtilsTests.swift b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/UtilsTests.swift new file mode 100644 index 000000000..a2cc86829 --- /dev/null +++ b/wrappers/swift/DevolutionsCryptoSwift/Tests/DevolutionsCryptoSwiftTests/UtilsTests.swift @@ -0,0 +1,152 @@ +import DevolutionsCryptoSwift +import XCTest + +class UtilsTests: XCTestCase { + func testGenerateKeyDefault() { + let key = generateKey() + XCTAssertEqual(key.count, 32) + XCTAssertNotEqual(key, Data(repeating: UInt8(0), count: 32)) + } + + func testGenerateKeyLonger() { + let key = generateKey(length: 41) + XCTAssertEqual(key.count, 41) + XCTAssertNotEqual(key, Data(repeating: UInt8(0), count: 41)) + } + + func testGenerateKeyActuallyRandom() { + let key1 = generateKey() + let key2 = generateKey() + XCTAssertNotEqual(key1, key2) + } + + func testDeriveKeyPbkdfDefault() { + let password = Data("password".utf8) + let result = deriveKeyPbkdf2(key: password, salt: nil, iterations: 10) + XCTAssertEqual(result.count, 32) + XCTAssertNotEqual(result, Data(repeating: UInt8(0), count: 32)) + } + + func testDeriveKeyPbkdfLarger() { + let password = Data("password".utf8) + let result = deriveKeyPbkdf2(key: password, salt: nil, iterations: 10, length: 41) + XCTAssertEqual(result.count, 41) + XCTAssertNotEqual(result, Data(repeating: UInt8(0), count: 41)) + } + + func testDeriveKeyPbkdfDeterministic() { + let password = Data("password".utf8) + let result1 = deriveKeyPbkdf2(key: password, salt: nil, iterations: 10) + let result2 = deriveKeyPbkdf2(key: password, salt: nil, iterations: 10) + + XCTAssertEqual(result1.count, 32) + XCTAssertNotEqual(result1, Data(repeating: UInt8(0), count: 32)) + XCTAssertEqual(result1, result2) + } + + func testDeriveKeyPbkdfDifferent() { + let password = Data("password".utf8) + let salt = Data("thisisasalt".utf8) + let iterations: UInt32 = 10 + + let result = deriveKeyPbkdf2(key: password, salt: salt, iterations: iterations) + let differentPass = deriveKeyPbkdf2( + key: Data("pa$$word".utf8), salt: salt, iterations: iterations) + let differentSalt = deriveKeyPbkdf2( + key: password, salt: Data("this1sasalt".utf8), iterations: iterations) + let differentIterations = deriveKeyPbkdf2(key: password, salt: salt, iterations: 11) + + XCTAssertNotEqual(result, differentPass) + XCTAssertNotEqual(result, differentSalt) + XCTAssertNotEqual(result, differentIterations) + } + + func testDeriveKeyArgon2() throws { + let parameters = Argon2ParametersBuilder().build() + let password = Data("password".utf8) + + let result = try deriveKeyArgon2(key: password, parameters: parameters) + XCTAssertEqual(result.count, 32) + XCTAssertNotEqual(result, Data(repeating: UInt8(0), count: 32)) + } + + func testValidateHeaderValid() throws { + let validCiphertext = try base64Decode(data: "DQwCAAAAAQA=") + let validPasswordHash = try base64Decode(data: "DQwDAAAAAQA=") + let validShare = try base64Decode(data: "DQwEAAAAAQA=") + let validPrivateKey = try base64Decode(data: "DQwBAAEAAQA=") + let validPublicKey = try base64Decode(data: "DQwBAAEAAQA=") + + XCTAssertTrue(validateHeader(data: validCiphertext, dataType: DataType.ciphertext)) + XCTAssertTrue(validateHeader(data: validPasswordHash, dataType: DataType.passwordHash)) + XCTAssertTrue(validateHeader(data: validShare, dataType: DataType.share)) + XCTAssertTrue(validateHeader(data: validPublicKey, dataType: DataType.key)) + XCTAssertTrue(validateHeader(data: validPrivateKey, dataType: DataType.key)) + } + + func testValidateHeaderInvalid() throws { + let validCiphertext = try base64Decode(data: "DQwCAAAAAQA=") + XCTAssertFalse(validateHeader(data: validCiphertext, dataType: DataType.passwordHash)) + + let invalidSignature = try base64Decode(data: "DAwBAAEAAQA=") + let invalidType = try base64Decode(data: "DQwIAAEAAQA=") + let invalidSubtype = try base64Decode(data: "DQwBAAgAAQA=") + let invalidVersion = try base64Decode(data: "DQwBAAEACAA=") + + XCTAssertFalse(validateHeader(data: invalidSignature, dataType: DataType.key)) + XCTAssertFalse(validateHeader(data: invalidType, dataType: DataType.key)) + XCTAssertFalse(validateHeader(data: invalidSubtype, dataType: DataType.key)) + XCTAssertFalse(validateHeader(data: invalidVersion, dataType: DataType.key)) + + let notLongEnough = try base64Decode(data: "DQwBAAEAAQ==") + XCTAssertFalse(validateHeader(data: notLongEnough, dataType: DataType.key)) + } + + func testBase64Encode() { + let input: Data = Data([0x41, 0x42, 0x43, 0x44, 0x45]) + let expected = "QUJDREU=" + let result = base64Encode(data: input) + XCTAssertEqual(result, expected) + } + + func testBase64Decode() throws { + let input = "QUJDREU=" + let expected: Data = Data([0x41, 0x42, 0x43, 0x44, 0x45]) + let result = try base64Decode(data: input) + XCTAssertEqual(result, expected) + } + + func testBase64UrlEncode() { + let input1 = Data("Ab6/".utf8) + let expected1 = "QWI2Lw" + let result1 = base64EncodeUrl(data: input1) + XCTAssertEqual(result1, expected1) + + let input2 = Data("Ab6/75".utf8) + let expected2 = "QWI2Lzc1" + let result2 = base64EncodeUrl(data: input2) + XCTAssertEqual(result2, expected2) + + let input3 = Data([0xff, 0xff, 0xfe, 0xff]) + let expected3 = "___-_w" + let result3 = base64EncodeUrl(data: input3) + XCTAssertEqual(result3, expected3) + } + + func testBase64UrlDecode() throws { + let input1 = "QWI2Lw" + let expected1 = Data("Ab6/".utf8) + let result1 = try base64DecodeUrl(data: input1) + XCTAssertEqual(result1, expected1) + + let input2 = "QWI2Lzc1" + let expected2 = Data("Ab6/75".utf8) + let result2 = try base64DecodeUrl(data: input2) + XCTAssertEqual(result2, expected2) + + let input3 = "___-_w" + let expected3 = Data([0xff, 0xff, 0xfe, 0xff]) + let result3 = try base64DecodeUrl(data: input3) + XCTAssertEqual(result3, expected3) + } +} diff --git a/wrappers/swift/generate.sh b/wrappers/swift/generate.sh old mode 100644 new mode 100755 From a04ffcd0f23329d3a0f7cbce7d15d1014aedbe3f Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Thu, 21 Nov 2024 13:08:14 -0500 Subject: [PATCH 42/43] Fix CI --- .github/workflows/kotlin/action.yml | 2 +- wrappers/kotlin/setup.sh | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/.github/workflows/kotlin/action.yml b/.github/workflows/kotlin/action.yml index f3165fd1f..c24d85240 100644 --- a/.github/workflows/kotlin/action.yml +++ b/.github/workflows/kotlin/action.yml @@ -5,7 +5,7 @@ runs: - name: Run setup working-directory: ./wrappers/kotlin shell: bash - run: sh setup.sh + run: sudo sh setup.sh - name: Build working-directory: ./wrappers/kotlin diff --git a/wrappers/kotlin/setup.sh b/wrappers/kotlin/setup.sh index 3ca50c59a..bbff0043a 100644 --- a/wrappers/kotlin/setup.sh +++ b/wrappers/kotlin/setup.sh @@ -1,5 +1,24 @@ # run as root +curl https://sh.rustup.rs -sSf | sh -s -- -y +echo "${HOME}/.cargo/bin" >> "$GITHUB_PATH" +export PATH="${HOME}/.cargo/bin:$PATH" +echo "RUSTUP_HOME=${HOME}/.rustup" >> "$GITHUB_ENV" +echo "CARGO_HOME=${HOME}/.cargo" >> "$GITHUB_ENV" + +rustup update + +rustup target add x86_64-unknown-linux-gnu +rustup target add i686-unknown-linux-gnu +rustup target add aarch64-unknown-linux-gnu + +rustup target add aarch64-linux-android +rustup target add armv7-linux-androideabi +rustup target add i686-linux-android +rustup target add x86_64-linux-android + apt install build-essential unzip openjdk-18-jre-headless +apt install nuget gcc-multilib software-properties-common +apt install -y gcc-aarch64-linux-gnu rm -rf /usr/local/lib/android mkdir -p /usr/local/lib/android/sdk @@ -8,8 +27,8 @@ ANDROID_ROOT="/usr/local/lib/android" ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk" cd /usr/local/lib/android/sdk -sudo wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -sudo unzip commandlinetools-linux-11076708_latest.zip +wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip +unzip commandlinetools-linux-11076708_latest.zip cp -r "${ANDROID_SDK_ROOT}/cmdline-tools/." "${ANDROID_SDK_ROOT}/cmdline-tools/latest/" @@ -40,4 +59,4 @@ echo "[target.aarch64-linux-android] ln -sfn $ANDROID_SDK_ROOT/ndk/25.2.9519653 $ANDROID_NDK # install kotlin -sudo snap install --classic kotlin \ No newline at end of file +snap install --classic kotlin \ No newline at end of file From 2811c32b0eb175470c52bea514975d76aba879b9 Mon Sep 17 00:00:00 2001 From: Mathieu Morrissette Date: Thu, 21 Nov 2024 13:48:02 -0500 Subject: [PATCH 43/43] Try fix --- .github/workflows/kotlin/action.yml | 64 +++++++++++++++++++++++++++-- wrappers/kotlin/build.sh | 6 --- wrappers/kotlin/setup.sh | 21 ---------- 3 files changed, 60 insertions(+), 31 deletions(-) delete mode 100644 wrappers/kotlin/build.sh diff --git a/.github/workflows/kotlin/action.yml b/.github/workflows/kotlin/action.yml index c24d85240..352b85139 100644 --- a/.github/workflows/kotlin/action.yml +++ b/.github/workflows/kotlin/action.yml @@ -2,15 +2,71 @@ name: Build Kotlin Package runs: using: composite steps: - - name: Run setup - working-directory: ./wrappers/kotlin + - name: Installing dependencies + shell: bash + run: | + sudo apt-get update + sudo apt-get install nuget gcc-multilib software-properties-common + sudo apt-get install -y gcc-aarch64-linux-gnu + + - name: Install rust + shell: bash + run: | + rustup update + + rustup target add x86_64-unknown-linux-gnu + rustup target add i686-unknown-linux-gnu + rustup target add aarch64-unknown-linux-gnu + + rustup target add aarch64-linux-android + rustup target add armv7-linux-androideabi + rustup target add i686-linux-android + rustup target add x86_64-linux-android + + - name: Installing Kotlin shell: bash - run: sudo sh setup.sh + run: sudo snap install --classic kotlin + + - name: Configure Android NDK + shell: bash + run: | + # Install NDK 25 + + ANDROID_ROOT="/usr/local/lib/android" + ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk" + SDKMANAGER="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" + echo "y" | $SDKMANAGER "ndk;25.2.9519653" + + export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk-bundle + + echo "[target.aarch64-linux-android] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang\" + [target.armv7-linux-androideabi] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi19-clang\" + [target.i686-linux-android] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android19-clang\" + [target.x86_64-linux-android] + ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar\" + linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang\"" >> ./.cargo/config - name: Build working-directory: ./wrappers/kotlin shell: bash - run: sh build.sh + run: | + export ANDROID_ROOT="/usr/local/lib/android" + export ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk" + export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk-bundle + ln -sfn $ANDROID_SDK_ROOT/ndk/25.2.9519653 $ANDROID_NDK + + make + make android + + chmod +x gradlew + ./gradlew test + ./gradlew build - name: Kotlin Package uses: actions/upload-artifact@v4 diff --git a/wrappers/kotlin/build.sh b/wrappers/kotlin/build.sh deleted file mode 100644 index 70a0ab8e3..000000000 --- a/wrappers/kotlin/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -make -make android - -chmod +x gradlew -./gradlew test -./gradlew build \ No newline at end of file diff --git a/wrappers/kotlin/setup.sh b/wrappers/kotlin/setup.sh index bbff0043a..55c3a218e 100644 --- a/wrappers/kotlin/setup.sh +++ b/wrappers/kotlin/setup.sh @@ -1,25 +1,4 @@ # run as root -curl https://sh.rustup.rs -sSf | sh -s -- -y -echo "${HOME}/.cargo/bin" >> "$GITHUB_PATH" -export PATH="${HOME}/.cargo/bin:$PATH" -echo "RUSTUP_HOME=${HOME}/.rustup" >> "$GITHUB_ENV" -echo "CARGO_HOME=${HOME}/.cargo" >> "$GITHUB_ENV" - -rustup update - -rustup target add x86_64-unknown-linux-gnu -rustup target add i686-unknown-linux-gnu -rustup target add aarch64-unknown-linux-gnu - -rustup target add aarch64-linux-android -rustup target add armv7-linux-androideabi -rustup target add i686-linux-android -rustup target add x86_64-linux-android - -apt install build-essential unzip openjdk-18-jre-headless -apt install nuget gcc-multilib software-properties-common -apt install -y gcc-aarch64-linux-gnu - rm -rf /usr/local/lib/android mkdir -p /usr/local/lib/android/sdk

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 R=D*{;|5^V@|I^*~{{c+zY0Cfr diff --git a/wrappers/kotlin/jniLibs/x86_64/libuniffi_lib.so b/wrappers/kotlin/jniLibs/x86_64/libuniffi_lib.so deleted file mode 100755 index 3182eade26ec80b8f854b7356e30e76b1b4a6ece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305520 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 R=D*{;|5^V@|I^*~{{c+zY0Cfr literal 0 HcmV?d00001 diff --git a/wrappers/kotlin/jniLibs/x86_64/libuniffi_lib.so b/wrappers/kotlin/jniLibs/x86_64/libuniffi_lib.so new file mode 100755 index 0000000000000000000000000000000000000000..3182eade26ec80b8f854b7356e30e76b1b4a6ece GIT binary patch literal 305520 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