From 3f801abdff0db617a9127ec28e16813f758e9290 Mon Sep 17 00:00:00 2001 From: Skipper Date: Fri, 1 May 2026 11:00:58 +0200 Subject: [PATCH] housekeeping(server): deps upgrade + diesel migration to AsyncFnOnce --- server/Cargo.lock | 432 ++++++++---------- server/Cargo.toml | 8 +- server/crates/arbiter-client/Cargo.toml | 2 +- server/crates/arbiter-server/Cargo.toml | 6 +- .../arbiter-server/src/actors/vault/mod.rs | 80 ++-- .../crates/arbiter-server/src/context/tls.rs | 36 +- server/crates/arbiter-server/src/evm/mod.rs | 116 +++-- .../arbiter-server/src/peers/client/auth.rs | 154 +++---- .../src/peers/operator/session/handlers.rs | 46 +- 9 files changed, 394 insertions(+), 486 deletions(-) diff --git a/server/Cargo.lock b/server/Cargo.lock index a85e1a3..e36c264 100644 --- a/server/Cargo.lock +++ b/server/Cargo.lock @@ -44,9 +44,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85805c194576017df6c11057504e1d60b36f3913f8e365945486931f6ee81e40" +checksum = "d8010fc7e9e8643ef4e758cdccf3eef26734594aedf88a9d5ed35e51837d42ef" dependencies = [ "alloy-consensus", "alloy-contract", @@ -78,9 +78,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dbe4e5e9107bf6854e7550b666ca654ff2027eabf8153913e2e31ac4b089779" +checksum = "e3d64da86c616b5092ea64eea648f311bbd58630a0b384c42d699175d6f9122b" dependencies = [ "alloy-eips", "alloy-primitives", @@ -100,14 +100,14 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "alloy-consensus-any" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fc7bbfb98cf5605a35aadf0ba43a7d9f1608d6f220d05e4fbd5144d3b0b625" +checksum = "8fd98696ca3617d3a9ba1a6f2011880cbfd5618228dab6400c9f8bca457859a8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -119,9 +119,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c16fa30b623e40a5b216da00f3b61870f5cbe863b59816ac1ecc2489515a40" +checksum = "de3df0aadc569a8b277808a7d0ad0e421180654ea36a3c59e9ed2bb968c9a1cd" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -136,7 +136,7 @@ dependencies = [ "futures", "futures-util", "serde_json", - "thiserror 2.0.18", + "thiserror", "tracing", ] @@ -179,7 +179,7 @@ dependencies = [ "alloy-rlp", "crc", "serde", - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -204,26 +204,27 @@ dependencies = [ "alloy-rlp", "borsh", "serde", - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "alloy-eip7928" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8222b1d88f9a6d03be84b0f5e76bb60cd83991b43ad8ab6477f0e4a7809b98d" +checksum = "ec6ae911a2fc304a7cb80a79fb7bed6d1474aed4e7c203df1f8ff538f64fc78d" dependencies = [ "alloy-primitives", "alloy-rlp", "borsh", + "once_cell", "serde", ] [[package]] name = "alloy-eips" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb4919fa34b268842f434bfafa9c09136ab7b1a87ce0dd40a61befa35b5408c" +checksum = "64c0456f5f7a4497e9342d20f528e30f5288ddfa0d6a012bd5044afee46cd8a0" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -244,9 +245,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e111e22c1a2133e9ebfd9051ea0eaf63559594d2f50d43cbc6762fbb95fc3c2" +checksum = "a71ff8b55d2b8aa05259f474cae7dea0e4991724dc18936b81cb23ec492a0c2a" dependencies = [ "alloy-eips", "alloy-primitives", @@ -271,24 +272,24 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b6af6f374c1eeef8ab8dc26232cd440db167322a4207a3debd3d1ee565ca47" +checksum = "19e352478b756bad5d7203148e4b461861282ea2ded3da406ba24868b52cd098" dependencies = [ "alloy-primitives", "alloy-sol-types", "http", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror", "tracing", ] [[package]] name = "alloy-network" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a3f5a7f3678b71d33fcc45b714fab8928dbc647d5aff2145e72032d5c849bb" +checksum = "ed08ae169869e08370ed121612e0d3dadac33d1a256e9f2465926b23f0bd7d95" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -307,14 +308,14 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "alloy-network-primitives" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb50dc1fb0e0b2c8748d5bee1aa7acdd18f9e036311bc93a71d97be624030317" +checksum = "02e6c7ad28afe348a9a9c5624b67ee5b3607b8de98d5816b3056ecdfa6fa2697" dependencies = [ "alloy-consensus", "alloy-eips", @@ -347,14 +348,14 @@ dependencies = [ "ruint", "rustc-hash", "serde", - "sha3 0.10.8", + "sha3 0.10.9", ] [[package]] name = "alloy-provider" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ba5468f78c8893be2d68a7f2fda61753336e5653f006af19781001b5f99e6c" +checksum = "93a7c17472b55482d4734154c2f5ed13f72e03f6752cebb927f6a2d8b52e646c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -382,7 +383,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", "url", @@ -413,9 +414,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222fd4efff0fb9a25184684742c44fe9fa9a16c4ab5bf97583e71c86598ef8f0" +checksum = "5beb5c2fe6b960c8e8b038e69fd502a90a2e930afa4770efb748b163b0767729" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -436,9 +437,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "974df1e56405c27cb8242381f45d8b212ba9df5006046ccf704764a2a4634366" +checksum = "4ee1257a278f6d293e05c5162c5940a1561b1aa85ded0028b464c81de37ebfa5" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -448,9 +449,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949c0f16a94ae33cdb1139b8dbf9e34d7f26ebfe97962e2a4d620b5f65f48fe4" +checksum = "6a234bfbdf7a76c3d13808f729af5321852de3dedcaa6fc6d5f54787aaf54c6a" dependencies = [ "alloy-consensus-any", "alloy-network-primitives", @@ -463,9 +464,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc280a41931bd419af86e9e859dd9726b73313aaa2e479b33c0e344f4b892ddb" +checksum = "56a282daf869eeb7383d3d5c2deb35b0b3fb45ecb329513af4090fc61245ee18" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -479,14 +480,14 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "alloy-serde" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4848831ff994c88b1c32b7df9c4c1c3eedea4b535bde5eb3c421ef0bdc5ac052" +checksum = "a0eada2558e921b39dfcead33c487364df9b31374f5733c1c9d2c891c4529933" dependencies = [ "alloy-primitives", "serde", @@ -495,9 +496,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b8ad9890b212e224291024b1aecfeef72127d27a2f6eebc5e347c40275c4bf" +checksum = "41eb29f7a8adcd8941fbb8e134022a133e6f8dfd345f2e3b7109599f8a7dca08" dependencies = [ "alloy-primitives", "async-trait", @@ -505,14 +506,14 @@ dependencies = [ "either", "elliptic-curve", "k256", - "thiserror 2.0.18", + "thiserror", ] [[package]] name = "alloy-signer-local" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c67d2372aada343130d41e249b59a3cef29b1678dcd3fd80f1c2c4d6b5318f2" +checksum = "bef839e7ce9b59aa60fa9a175e97986c6145c888d643b0f1fb0a3e7b8e56a2e2" dependencies = [ "alloy-consensus", "alloy-network", @@ -521,7 +522,7 @@ dependencies = [ "async-trait", "k256", "rand 0.8.6", - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -552,7 +553,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "sha3 0.10.8", + "sha3 0.10.9", "syn 2.0.117", "syn-solidity", ] @@ -599,9 +600,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b7b755e64ae6b5de0d762ed2c780e072167ea5e542076a559e00314352a0bf" +checksum = "3ac7a80c0bac3e44559d53d002e34c461dc2f23262b42cafec019bc70551abbe" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -612,7 +613,7 @@ dependencies = [ "parking_lot", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror", "tokio", "tower", "tracing", @@ -622,9 +623,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a29980e69119444ed26b75e7ee5bed2043870f904a64318297e55800db686564" +checksum = "eed3ed3300a998f88639ed619fdbbd88bd82865e00c6a8ecb796c99eb12358f6" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -648,15 +649,15 @@ dependencies = [ "nybbles", "serde", "smallvec", - "thiserror 2.0.18", + "thiserror", "tracing", ] [[package]] name = "alloy-tx-macros" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8228b9236479ff16b03041b64b86c2bd4e53da1caa45d59b5868cd1571131e" +checksum = "99fce0350197dcd4ba4e9a7dd43915d908c0eb0e7352755791709a705e1c76b6" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -690,7 +691,7 @@ dependencies = [ "chrono", "http", "rustls-webpki", - "thiserror 2.0.18", + "thiserror", "tokio", "tokio-stream", "tonic", @@ -706,7 +707,7 @@ dependencies = [ "memsafe", "ml-dsa", "rand 0.10.1", - "thiserror 2.0.18", + "thiserror", "x-wing", ] @@ -734,7 +735,7 @@ dependencies = [ "rcgen", "rstest", "rustls-pki-types", - "thiserror 2.0.18", + "thiserror", "tokio", "tokio-stream", "tonic", @@ -779,7 +780,7 @@ dependencies = [ "strum 0.28.0", "subtle", "test-log", - "thiserror 2.0.18", + "thiserror", "tokio", "tokio-stream", "tonic", @@ -1015,7 +1016,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 2.0.18", + "thiserror", "time", ] @@ -1374,9 +1375,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.60" +version = "1.2.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" dependencies = [ "find-msvc-tools", "jobserver", @@ -1384,12 +1385,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.4" @@ -1586,9 +1581,9 @@ dependencies = [ [[package]] name = "crc-catalog" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" [[package]] name = "crc32fast" @@ -1780,9 +1775,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "der" @@ -1864,9 +1859,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.3.7" +version = "2.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ae09a41a4b89f94ec1e053623da8340d996bc32c6517d325a9daad9b239358" +checksum = "9940fb8467a0a06312218ed384185cb8536aa10d8ec017d0ce7fad2c1bd882d5" dependencies = [ "chrono", "diesel_derives", @@ -1880,9 +1875,9 @@ dependencies = [ [[package]] name = "diesel-async" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95864e58597509106f1fddfe0600de7e589e1fddddd87f54eee0a49fd111bbc" +checksum = "9c20ddcc6737cecdaef3dfecb2796bdfe3002456521189d30be8e4c5a1bc821d" dependencies = [ "bb8", "diesel", @@ -1890,15 +1885,14 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "scoped-futures", "tokio", ] [[package]] name = "diesel_derives" -version = "2.3.7" +version = "2.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47618bf0fac06bb670c036e48404c26a865e6a71af4114dfd97dfe89936e404e" +checksum = "d1817b7f4279b947fc4cafddec12b0e5f8727141706561ce3ac94a60bddd1cf5" dependencies = [ "diesel_table_macro_syntax", "dsl_auto_type", @@ -1909,9 +1903,9 @@ dependencies = [ [[package]] name = "diesel_migrations" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745fd255645f0f1135f9ec55c7b00e0882192af9683ab4731e4bba3da82b8f9c" +checksum = "28d0f4a98124ba6d4ca75da535f65984badec16a003b6e2f94a01e31a79490b8" dependencies = [ "diesel", "migrations_internals", @@ -2544,9 +2538,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hybrid-array" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5" dependencies = [ "ctutils", "typenum", @@ -2757,9 +2751,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -2874,27 +2868,32 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys 0.3.1", + "jni-macros", + "jni-sys", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror", "walkdir", - "windows-sys 0.45.0", + "windows-link", ] [[package]] -name = "jni-sys" -version = "0.3.1" +name = "jni-macros" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" dependencies = [ - "jni-sys 0.4.1", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "simd_cesu8", + "syn 2.0.117", ] [[package]] @@ -2928,9 +2927,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf" dependencies = [ "cfg-if", "futures-util", @@ -2975,7 +2974,7 @@ dependencies = [ "futures", "glob", "kameo", - "thiserror 2.0.18", + "thiserror", "tokio", ] @@ -3059,9 +3058,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.185" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libm" @@ -3071,9 +3070,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libsqlite3-sys" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b4103cffefa72eb8428cb6b47d6627161e51c2739fc5e3b734584157bc642a" +checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1" dependencies = [ "pkg-config", "vcpkg", @@ -3250,15 +3249,15 @@ dependencies = [ [[package]] name = "ml-dsa" -version = "0.1.0-rc.8" +version = "0.1.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5b2bb0ad6fa2b40396775bd56f51345171490fef993f46f91a876ecdbdaea55" +checksum = "e3a596bd65985e2b343c3fd6cc4ade15cdd76da66b15936cfbce72ea661cdbb2" dependencies = [ "const-oid 0.10.2", "ctutils", "hybrid-array", "module-lattice", - "pkcs8 0.11.0-rc.11", + "pkcs8 0.11.0", "rand_core 0.10.1", "sha3 0.11.0", "signature 3.0.0-rc.10", @@ -3267,9 +3266,9 @@ dependencies = [ [[package]] name = "ml-kem" -version = "0.3.0-rc.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04437cb1a66c0b78740927b76cc61f218344b9f6ef3dd430e283274a718ef0e9" +checksum = "68c77d5ff6d755d09a0ef4d4d28c2b7e83658fe83e8c736d55e93d43e380d1cd" dependencies = [ "hybrid-array", "kem", @@ -3281,9 +3280,9 @@ dependencies = [ [[package]] name = "module-lattice" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164eb3faeaecbd14b0b2a917c1b4d0c035097a9c559b0bed85c2cdd032bc8faa" +checksum = "dc7c90d33a0dac244570c26461d761ffaeadb3bfc2b17cc625ae2185cafdffae" dependencies = [ "ctutils", "hybrid-array", @@ -3593,9 +3592,9 @@ dependencies = [ [[package]] name = "pkcs8" -version = "0.11.0-rc.11" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12922b6296c06eb741b02d7b5161e3aaa22864af38dfa025a1a3ba3f68c84577" +checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ "der 0.8.0", "spki 0.8.0", @@ -3846,7 +3845,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", "web-time", @@ -3868,7 +3867,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror", "tinyvec", "tracing", "web-time", @@ -4093,9 +4092,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" dependencies = [ "base64", "bytes", @@ -4181,7 +4180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8a1f2315036ef6b1fbacd1972e8ee7688030b0a2121edfc2a6550febd41574d" dependencies = [ "hashbrown 0.16.1", - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -4215,9 +4214,9 @@ dependencies = [ [[package]] name = "ruint" -version = "1.17.2" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" +checksum = "0298da754d1395046b0afdc2f20ee76d29a8ae310cd30ffa84ed42acba9cb12a" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -4307,9 +4306,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.38" +version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ "aws-lc-rs", "log", @@ -4334,9 +4333,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" dependencies = [ "web-time", "zeroize", @@ -4344,9 +4343,9 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ "core-foundation", "core-foundation-sys", @@ -4371,9 +4370,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.12" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", "ring", @@ -4441,15 +4440,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "scoped-futures" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b24aae2d0636530f359e9d5ef0c04669d11c5e756699b27a6a6d845d8329091" -dependencies = [ - "pin-project-lite", -] - [[package]] name = "scopeguard" version = "1.2.0" @@ -4656,9 +4646,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" dependencies = [ "digest 0.10.7", "keccak 0.1.6", @@ -4735,6 +4725,22 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version 0.4.1", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "slab" version = "0.4.12" @@ -4803,9 +4809,9 @@ dependencies = [ [[package]] name = "sqlite-wasm-rs" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4206ed3a67690b9c29b77d728f6acc3ce78f16bf846d83c94f76400320181b" +checksum = "1b2c760607300407ddeaee518acf28c795661b7108c75421303dbefb237d3a36" dependencies = [ "cc", "js-sys", @@ -4991,25 +4997,35 @@ dependencies = [ [[package]] name = "test-log" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d53ac171c92a39e4769491c4b4dde7022c60042254b5fc044ae409d34a24d4" +checksum = "2f46bf474f0a4afebf92f076d54fd5e63423d9438b8c278a3d2ccb0f47f7cdb3" dependencies = [ "test-log-macros", "tracing-subscriber", ] [[package]] -name = "test-log-macros" -version = "0.2.19" +name = "test-log-core" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be35209fd0781c5401458ab66e4f98accf63553e8fae7425503e92fdd319783b" +checksum = "37d4d41320b48bc4a211a9021678fcc0c99569b594ea31c93735b8e517102b4c" dependencies = [ "proc-macro2", "quote", "syn 2.0.117", ] +[[package]] +name = "test-log-macros" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9beb9249a81e430dffd42400a49019bcf548444f1968ff23080a625de0d4d320" +dependencies = [ + "syn 2.0.117", + "test-log-core", +] + [[package]] name = "textwrap" version = "0.16.2" @@ -5020,33 +5036,13 @@ dependencies = [ "unicode-width 0.2.2", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "thiserror-impl", ] [[package]] @@ -5238,7 +5234,7 @@ dependencies = [ "indexmap 2.14.0", "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow 1.0.1", + "winnow 1.0.2", ] [[package]] @@ -5247,7 +5243,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.1", + "winnow 1.0.2", ] [[package]] @@ -5439,9 +5435,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] name = "ucd-trie" @@ -5632,9 +5628,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1" dependencies = [ "cfg-if", "once_cell", @@ -5645,9 +5641,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.68" +version = "0.4.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" +checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084" dependencies = [ "js-sys", "wasm-bindgen", @@ -5655,9 +5651,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5665,9 +5661,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41" dependencies = [ "bumpalo", "proc-macro2", @@ -5678,9 +5674,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea" dependencies = [ "unicode-ident", ] @@ -5735,9 +5731,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.95" +version = "0.3.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" +checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602" dependencies = [ "js-sys", "wasm-bindgen", @@ -5852,15 +5848,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -5888,21 +5875,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -5936,12 +5908,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -5954,12 +5920,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -5972,12 +5932,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -6002,12 +5956,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -6020,12 +5968,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -6038,12 +5980,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -6056,12 +5992,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -6085,9 +6015,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" dependencies = [ "memchr", ] @@ -6252,7 +6182,7 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror 2.0.18", + "thiserror", "time", ] diff --git a/server/Cargo.toml b/server/Cargo.toml index fa9bf28..34ef2fe 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -6,7 +6,7 @@ resolver = "3" [workspace.dependencies] -alloy = "2.0.0" +alloy = "2.0.4" async-trait = "0.1.89" base64 = "0.22.1" chrono = { version = "0.4.44", features = ["serde"] } @@ -16,15 +16,15 @@ kameo = {git = "https://github.com/hdbg/kameo.git", rev = "805b417"} kameo_actors = {git = "https://github.com/hdbg/kameo.git", rev = "805b417"} hmac = "0.13.0" miette = { version = "7.6.0", features = ["fancy", "serde"] } -ml-dsa = { version = "0.1.0-rc.8", features = ["zeroize"] } +ml-dsa = { version = "0.1.0-rc.9", features = ["zeroize"] } mutants = "0.0.4" prost = "0.14.3" prost-types = { version = "0.14.3", features = ["chrono"] } rand = "0.10.1" rcgen = { version = "0.14.7", features = [ "aws_lc_rs", "pem", "x509-parser", "zeroize" ], default-features = false } rstest = "0.26.1" -rustls = { version = "0.23.38", features = ["aws-lc-rs", "logging", "prefer-post-quantum", "std"], default-features = false } -rustls-pki-types = "1.14.0" +rustls = { version = "0.23.40", features = ["aws-lc-rs", "logging", "prefer-post-quantum", "std"], default-features = false } +rustls-pki-types = "1.14.1" sha2 = "0.11" smlang = "0.8.0" thiserror = "2.0.18" diff --git a/server/crates/arbiter-client/Cargo.toml b/server/crates/arbiter-client/Cargo.toml index c85b49a..9b0e229 100644 --- a/server/crates/arbiter-client/Cargo.toml +++ b/server/crates/arbiter-client/Cargo.toml @@ -21,7 +21,7 @@ tokio.workspace = true tokio-stream.workspace = true thiserror.workspace = true http = "1.4.0" -rustls-webpki = { version = "0.103.12", features = ["aws-lc-rs"] } +rustls-webpki = { version = "0.103.13", features = ["aws-lc-rs"] } async-trait.workspace = true chrono.workspace = true diff --git a/server/crates/arbiter-server/Cargo.toml b/server/crates/arbiter-server/Cargo.toml index d3cdf02..7790bd6 100644 --- a/server/crates/arbiter-server/Cargo.toml +++ b/server/crates/arbiter-server/Cargo.toml @@ -9,8 +9,8 @@ license = "Apache-2.0" workspace = true [dependencies] -diesel = { version = "2.3.7", features = ["chrono", "returning_clauses_for_sqlite_3_35", "serde_json", "time", "uuid"] } -diesel-async = { version = "0.8.0", features = [ +diesel = { version = "2.3.9", features = ["chrono", "returning_clauses_for_sqlite_3_35", "serde_json", "time", "uuid"] } +diesel-async = { version = "0.9.0", features = [ "bb8", "migrations", "sqlite", @@ -27,7 +27,7 @@ tokio.workspace = true rustls.workspace = true smlang.workspace = true thiserror.workspace = true -diesel_migrations = { version = "2.3.1", features = ["sqlite"] } +diesel_migrations = { version = "2.3.2", features = ["sqlite"] } async-trait.workspace = true tokio-stream.workspace = true rand.workspace = true diff --git a/server/crates/arbiter-server/src/actors/vault/mod.rs b/server/crates/arbiter-server/src/actors/vault/mod.rs index e290dcf..cea0690 100644 --- a/server/crates/arbiter-server/src/actors/vault/mod.rs +++ b/server/crates/arbiter-server/src/actors/vault/mod.rs @@ -119,31 +119,29 @@ impl Vault { let mut conn = pool.get().await?; let nonce = conn - .exclusive_transaction(|conn| { - Box::pin(async move { - let current_nonce: Vec = schema::root_key_history::table - .filter(schema::root_key_history::id.eq(root_key_id)) - .select(schema::root_key_history::data_encryption_nonce) - .first(conn) - .await?; + .exclusive_transaction(async |conn| { + let current_nonce: Vec = schema::root_key_history::table + .filter(schema::root_key_history::id.eq(root_key_id)) + .select(schema::root_key_history::data_encryption_nonce) + .first(&mut *conn) + .await?; - let mut nonce = Nonce::try_from(current_nonce.as_slice()).map_err(|()| { - error!( - "Broken database: invalid nonce for root key history id={}", - root_key_id - ); - Error::BrokenDatabase - })?; - nonce.increment(); + let mut nonce = Nonce::try_from(current_nonce.as_slice()).map_err(|()| { + error!( + "Broken database: invalid nonce for root key history id={}", + root_key_id + ); + Error::BrokenDatabase + })?; + nonce.increment(); - update(schema::root_key_history::table) - .filter(schema::root_key_history::id.eq(root_key_id)) - .set(schema::root_key_history::data_encryption_nonce.eq(nonce.to_vec())) - .execute(conn) - .await?; + update(schema::root_key_history::table) + .filter(schema::root_key_history::id.eq(root_key_id)) + .set(schema::root_key_history::data_encryption_nonce.eq(nonce.to_vec())) + .execute(&mut *conn) + .await?; - Result::<_, Error>::Ok(nonce) - }) + Result::<_, Error>::Ok(nonce) }) .await?; @@ -185,28 +183,26 @@ impl Vault { let data_encryption_nonce_bytes = data_encryption_nonce.to_vec(); let root_key_history_id = conn - .transaction(|conn| { - Box::pin(async move { - let root_key_history_id: i32 = insert_into(schema::root_key_history::table) - .values(&models::NewRootKeyHistory { - ciphertext: root_key_ciphertext, - tag: v1::ROOT_KEY_TAG.to_vec(), - root_key_encryption_nonce: root_key_nonce.to_vec(), - data_encryption_nonce: data_encryption_nonce_bytes, - schema_version: 1, - salt: salt.to_vec(), - }) - .returning(schema::root_key_history::id) - .get_result(conn) - .await?; + .transaction(async |conn| { + let root_key_history_id: i32 = insert_into(schema::root_key_history::table) + .values(&models::NewRootKeyHistory { + ciphertext: root_key_ciphertext.clone(), + tag: v1::ROOT_KEY_TAG.to_vec(), + root_key_encryption_nonce: root_key_nonce.to_vec(), + data_encryption_nonce: data_encryption_nonce_bytes.clone(), + schema_version: 1, + salt: salt.to_vec(), + }) + .returning(schema::root_key_history::id) + .get_result(&mut *conn) + .await?; - update(schema::arbiter_settings::table) - .set(schema::arbiter_settings::root_key_id.eq(root_key_history_id)) - .execute(conn) - .await?; + update(schema::arbiter_settings::table) + .set(schema::arbiter_settings::root_key_id.eq(root_key_history_id)) + .execute(&mut *conn) + .await?; - Result::<_, diesel::result::Error>::Ok(root_key_history_id) - }) + Result::<_, diesel::result::Error>::Ok(root_key_history_id) }) .await?; diff --git a/server/crates/arbiter-server/src/context/tls.rs b/server/crates/arbiter-server/src/context/tls.rs index 259f80d..7765ee8 100644 --- a/server/crates/arbiter-server/src/context/tls.rs +++ b/server/crates/arbiter-server/src/context/tls.rs @@ -174,28 +174,26 @@ impl TlsManager { { let mut conn = db.get().await?; - conn.transaction(|conn| { - Box::pin(async { - let new_tls_history = NewTlsHistory { - cert: new_cert.cert.pem(), - cert_key: new_cert.cert_key.serialize_pem(), - ca_cert: encode_cert_to_pem(&ca.cert), - ca_key: ca.issuer.key().serialize_pem(), - }; + conn.transaction(async |conn| { + let new_tls_history = NewTlsHistory { + cert: new_cert.cert.pem(), + cert_key: new_cert.cert_key.serialize_pem(), + ca_cert: encode_cert_to_pem(&ca.cert), + ca_key: ca.issuer.key().serialize_pem(), + }; - let inserted_tls_history: i32 = diesel::insert_into(tls_history::table) - .values(&new_tls_history) - .returning(tls_history::id) - .get_result(conn) - .await?; + let inserted_tls_history: i32 = diesel::insert_into(tls_history::table) + .values(&new_tls_history) + .returning(tls_history::id) + .get_result(&mut *conn) + .await?; - diesel::update(arbiter_settings::table) - .set(arbiter_settings::tls_id.eq(inserted_tls_history)) - .execute(conn) - .await?; + diesel::update(arbiter_settings::table) + .set(arbiter_settings::tls_id.eq(inserted_tls_history)) + .execute(&mut *conn) + .await?; - Result::<_, diesel::result::Error>::Ok(()) - }) + Result::<_, diesel::result::Error>::Ok(()) }) .await?; } diff --git a/server/crates/arbiter-server/src/evm/mod.rs b/server/crates/arbiter-server/src/evm/mod.rs index 44c581d..20154ad 100644 --- a/server/crates/arbiter-server/src/evm/mod.rs +++ b/server/crates/arbiter-server/src/evm/mod.rs @@ -179,24 +179,22 @@ impl Engine { } if run_kind == RunKind::Execution { - conn.transaction(|conn| { - Box::pin(async move { - let log_id: i32 = insert_into(evm_transaction_log::table) - .values(&NewEvmTransactionLog { - grant_id: grant.common_settings_id, - wallet_access_id: context.target.id, - chain_id: context.chain.into(), - eth_value: utils::u256_to_bytes(context.value).to_vec(), - signed_at: Utc::now().into(), - }) - .returning(evm_transaction_log::id) - .get_result(conn) - .await?; + conn.transaction(async |conn| { + let log_id: i32 = insert_into(evm_transaction_log::table) + .values(&NewEvmTransactionLog { + grant_id: grant.common_settings_id, + wallet_access_id: context.target.id, + chain_id: context.chain.into(), + eth_value: utils::u256_to_bytes(context.value).to_vec(), + signed_at: Utc::now().into(), + }) + .returning(evm_transaction_log::id) + .get_result(&mut *conn) + .await?; - P::record_transaction(&context, meaning, log_id, &grant, conn).await?; + P::record_transaction(&context, meaning, log_id, &grant, &mut *conn).await?; - QueryResult::Ok(()) - }) + QueryResult::Ok(()) }) .await .map_err(DatabaseError::from)?; @@ -222,54 +220,52 @@ impl Engine { let vault = self.vault.clone(); let id = conn - .transaction(|conn| { - Box::pin(async move { - use schema::evm_basic_grant; + .transaction(async |conn| { + use schema::evm_basic_grant; - #[expect( - clippy::cast_possible_truncation, - clippy::cast_possible_wrap, - clippy::as_conversions, - reason = "fixme! #86" - )] - let basic_grant: EvmBasicGrant = insert_into(evm_basic_grant::table) - .values(&NewEvmBasicGrant { - chain_id: full_grant.shared.chain.into(), - wallet_access_id: full_grant.shared.wallet_access_id, - valid_from: full_grant.shared.valid_from.map(SqliteTimestamp), - valid_until: full_grant.shared.valid_until.map(SqliteTimestamp), - max_gas_fee_per_gas: full_grant - .shared - .max_gas_fee_per_gas - .map(|fee| utils::u256_to_bytes(fee).to_vec()), - max_priority_fee_per_gas: full_grant - .shared - .max_priority_fee_per_gas - .map(|fee| utils::u256_to_bytes(fee).to_vec()), - rate_limit_count: full_grant - .shared - .rate_limit - .as_ref() - .map(|rl| rl.count as i32), - rate_limit_window_secs: full_grant - .shared - .rate_limit - .as_ref() - .map(|rl| rl.window.num_seconds() as i32), - revoked_at: None, - }) - .returning(evm_basic_grant::all_columns) - .get_result(conn) - .await?; + #[expect( + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::as_conversions, + reason = "fixme! #86" + )] + let basic_grant: EvmBasicGrant = insert_into(evm_basic_grant::table) + .values(&NewEvmBasicGrant { + chain_id: full_grant.shared.chain.into(), + wallet_access_id: full_grant.shared.wallet_access_id, + valid_from: full_grant.shared.valid_from.map(SqliteTimestamp), + valid_until: full_grant.shared.valid_until.map(SqliteTimestamp), + max_gas_fee_per_gas: full_grant + .shared + .max_gas_fee_per_gas + .map(|fee| utils::u256_to_bytes(fee).to_vec()), + max_priority_fee_per_gas: full_grant + .shared + .max_priority_fee_per_gas + .map(|fee| utils::u256_to_bytes(fee).to_vec()), + rate_limit_count: full_grant + .shared + .rate_limit + .as_ref() + .map(|rl| rl.count as i32), + rate_limit_window_secs: full_grant + .shared + .rate_limit + .as_ref() + .map(|rl| rl.window.num_seconds() as i32), + revoked_at: None, + }) + .returning(evm_basic_grant::all_columns) + .get_result(&mut *conn) + .await?; - P::create_grant(&basic_grant, &full_grant.specific, conn).await?; + P::create_grant(&basic_grant, &full_grant.specific, &mut *conn).await?; - integrity::sign_entity(conn, &vault, &full_grant, basic_grant.id) - .await - .map_err(|_| diesel::result::Error::RollbackTransaction)?; + integrity::sign_entity(&mut *conn, &vault, &full_grant, basic_grant.id) + .await + .map_err(|_| diesel::result::Error::RollbackTransaction)?; - QueryResult::Ok(basic_grant.id) - }) + QueryResult::Ok(basic_grant.id) }) .await?; diff --git a/server/crates/arbiter-server/src/peers/client/auth.rs b/server/crates/arbiter-server/src/peers/client/auth.rs index 5e2b5b1..3742f97 100644 --- a/server/crates/arbiter-server/src/peers/client/auth.rs +++ b/server/crates/arbiter-server/src/peers/client/auth.rs @@ -171,46 +171,42 @@ async fn insert_client( Error::DatabasePoolUnavailable })?; - conn.exclusive_transaction(|conn| { - let vault = vault.clone(); - let pubkey = pubkey.clone(); - Box::pin(async move { - let metadata_id = insert_into(client_metadata::table) - .values(( - client_metadata::name.eq(&metadata.name), - client_metadata::description.eq(&metadata.description), - client_metadata::version.eq(&metadata.version), - )) - .returning(client_metadata::id) - .get_result::(conn) - .await?; + conn.exclusive_transaction(async |conn| { + let metadata_id = insert_into(client_metadata::table) + .values(( + client_metadata::name.eq(&metadata.name), + client_metadata::description.eq(&metadata.description), + client_metadata::version.eq(&metadata.version), + )) + .returning(client_metadata::id) + .get_result::(&mut *conn) + .await?; - let client_id = insert_into(program_client::table) - .values(( - program_client::public_key.eq(pubkey.to_bytes()), - program_client::metadata_id.eq(metadata_id), - )) - .on_conflict_do_nothing() - .returning(program_client::id) - .get_result::(conn) - .await?; + let client_id = insert_into(program_client::table) + .values(( + program_client::public_key.eq(pubkey.to_bytes()), + program_client::metadata_id.eq(metadata_id), + )) + .on_conflict_do_nothing() + .returning(program_client::id) + .get_result::(&mut *conn) + .await?; - integrity::sign_entity( - conn, - &vault, - &ClientCredentials { - pubkey: pubkey.clone(), - }, - client_id, - ) - .await - .map_err(|e| { - error!(error = ?e, "Failed to sign integrity tag for new client key"); - Error::DatabaseOperationFailed - })?; + integrity::sign_entity( + &mut *conn, + vault, + &ClientCredentials { + pubkey: pubkey.clone(), + }, + client_id, + ) + .await + .map_err(|e| { + error!(error = ?e, "Failed to sign integrity tag for new client key"); + Error::DatabaseOperationFailed + })?; - Ok(client_id) - }) + Ok(client_id) }) .await } @@ -229,55 +225,51 @@ async fn sync_client_metadata( Error::DatabasePoolUnavailable })?; - conn.exclusive_transaction(|conn| { - let metadata = metadata.clone(); - Box::pin(async move { - let (current_metadata_id, current): (i32, ProgramClientMetadata) = - program_client::table - .find(client_id) - .inner_join(client_metadata::table) - .select(( - program_client::metadata_id, - ProgramClientMetadata::as_select(), - )) - .first(conn) - .await?; + conn.exclusive_transaction(async |conn| { + let (current_metadata_id, current): (i32, ProgramClientMetadata) = program_client::table + .find(client_id) + .inner_join(client_metadata::table) + .select(( + program_client::metadata_id, + ProgramClientMetadata::as_select(), + )) + .first(&mut *conn) + .await?; - let unchanged = current.name == metadata.name - && current.description == metadata.description - && current.version == metadata.version; - if unchanged { - return Ok(()); - } + let unchanged = current.name == metadata.name + && current.description == metadata.description + && current.version == metadata.version; + if unchanged { + return Ok(()); + } - insert_into(client_metadata_history::table) - .values(( - client_metadata_history::metadata_id.eq(current_metadata_id), - client_metadata_history::client_id.eq(client_id), - )) - .execute(conn) - .await?; + insert_into(client_metadata_history::table) + .values(( + client_metadata_history::metadata_id.eq(current_metadata_id), + client_metadata_history::client_id.eq(client_id), + )) + .execute(&mut *conn) + .await?; - let metadata_id = insert_into(client_metadata::table) - .values(( - client_metadata::name.eq(&metadata.name), - client_metadata::description.eq(&metadata.description), - client_metadata::version.eq(&metadata.version), - )) - .returning(client_metadata::id) - .get_result::(conn) - .await?; + let metadata_id = insert_into(client_metadata::table) + .values(( + client_metadata::name.eq(&metadata.name), + client_metadata::description.eq(&metadata.description), + client_metadata::version.eq(&metadata.version), + )) + .returning(client_metadata::id) + .get_result::(&mut *conn) + .await?; - update(program_client::table.find(client_id)) - .set(( - program_client::metadata_id.eq(metadata_id), - program_client::updated_at.eq(now), - )) - .execute(conn) - .await?; + update(program_client::table.find(client_id)) + .set(( + program_client::metadata_id.eq(metadata_id), + program_client::updated_at.eq(now), + )) + .execute(&mut *conn) + .await?; - Ok::<(), diesel::result::Error>(()) - }) + Ok::<(), diesel::result::Error>(()) }) .await .map_err(|e| { diff --git a/server/crates/arbiter-server/src/peers/operator/session/handlers.rs b/server/crates/arbiter-server/src/peers/operator/session/handlers.rs index 86a422e..df20070 100644 --- a/server/crates/arbiter-server/src/peers/operator/session/handlers.rs +++ b/server/crates/arbiter-server/src/peers/operator/session/handlers.rs @@ -1,8 +1,8 @@ use super::{Error, OperatorSession}; use crate::{ actors::evm::{ - ClientSignTransaction, Generate, ListWallets, SignTransactionError as EvmSignError, - OperatorCreateGrant, OperatorListGrants, + ClientSignTransaction, Generate, ListWallets, OperatorCreateGrant, OperatorListGrants, + SignTransactionError as EvmSignError, }, actors::flow_coordinator::client_connect_approval::ClientApprovalAnswer, actors::vault::VaultState, @@ -169,20 +169,18 @@ impl OperatorSession { entries: Vec, ) -> Result<(), Error> { let mut conn = self.props.db.get().await?; - conn.transaction(|conn| { - Box::pin(async move { - use crate::db::schema::evm_wallet_access; + conn.transaction(async |conn| { + use crate::db::schema::evm_wallet_access; - for entry in entries { - diesel::insert_into(evm_wallet_access::table) - .values(&entry) - .on_conflict_do_nothing() - .execute(conn) - .await?; - } + for entry in entries { + diesel::insert_into(evm_wallet_access::table) + .values(&entry) + .on_conflict_do_nothing() + .execute(&mut *conn) + .await?; + } - Result::<_, Error>::Ok(()) - }) + Result::<_, Error>::Ok(()) }) .await?; Ok(()) @@ -194,18 +192,16 @@ impl OperatorSession { entries: Vec, ) -> Result<(), Error> { let mut conn = self.props.db.get().await?; - conn.transaction(|conn| { - Box::pin(async move { - use crate::db::schema::evm_wallet_access; - for entry in entries { - diesel::delete(evm_wallet_access::table) - .filter(evm_wallet_access::wallet_id.eq(entry)) - .execute(conn) - .await?; - } + conn.transaction(async |conn| { + use crate::db::schema::evm_wallet_access; + for entry in entries { + diesel::delete(evm_wallet_access::table) + .filter(evm_wallet_access::wallet_id.eq(entry)) + .execute(&mut *conn) + .await?; + } - Result::<_, Error>::Ok(()) - }) + Result::<_, Error>::Ok(()) }) .await?; Ok(()) -- 2.49.1