diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 9e44ca8c59..5a0263e422 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -20,10 +20,20 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "generic-array 0.14.7", ] +[[package]] +name = "aead" +version = "0.6.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac8202ab55fcbf46ca829833f347a82a2a4ce0596f0304ac322c2d100030cd56" +dependencies = [ + "crypto-common 0.2.0-rc.4", + "inout 0.2.0-rc.6", +] + [[package]] name = "aes" version = "0.8.4" @@ -31,7 +41,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", + "cpufeatures 0.2.17", +] + +[[package]] +name = "aes" +version = "0.9.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e713c57c2a2b19159e7be83b9194600d7e8eb3b7c2cd67e671adf47ce189a05" +dependencies = [ + "cfg-if", + "cipher 0.5.0-rc.1", "cpufeatures 0.2.17", ] @@ -41,11 +62,25 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.1", + "subtle", +] + +[[package]] +name = "aes-gcm" +version = "0.11.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686ba04dc80c816104c96cd7782b748f6ad58c5dd4ee619ff3258cf68e83d54" +dependencies = [ + "aead 0.6.0-rc.2", + "aes 0.9.0-rc.1", + "cipher 0.5.0-rc.1", + "ctr 0.10.0-rc.1", + "ghash 0.6.0-rc.2", "subtle", ] @@ -168,6 +203,12 @@ dependencies = [ "password-hash", ] +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + [[package]] name = "ascii-canvas" version = "4.0.0" @@ -216,7 +257,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -228,7 +269,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -240,7 +281,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -253,6 +294,36 @@ dependencies = [ "serde_json", ] +[[package]] +name = "async-dnssd" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d49ffe175ab45bbfd74b548313d9d7cdfff27161a94b007b52eeeb5f9aaa15e" +dependencies = [ + "bitflags 1.3.2", + "futures-channel", + "futures-core", + "futures-executor", + "futures-util", + "libc", + "log", + "pin-utils", + "pkg-config", + "tokio", + "winapi", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -272,7 +343,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -283,7 +354,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -345,6 +416,18 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base16ct" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b59d472eab27ade8d770dcb11da7201c11234bef9f82ce7aa517be028d462b" + +[[package]] +name = "base16ct" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" + [[package]] name = "base64" version = "0.21.7" @@ -380,8 +463,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2" dependencies = [ "blowfish", - "pbkdf2", - "sha2", + "pbkdf2 0.12.2", + "sha2 0.10.9", ] [[package]] @@ -410,7 +493,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn", + "syn 2.0.117", ] [[package]] @@ -430,7 +513,31 @@ dependencies = [ "regex", "rustc-hash 2.1.2", "shlex", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "binrw" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53195f985e88ab94d1cc87e80049dd2929fd39e4a772c5ae96a7e5c4aad3642" +dependencies = [ + "array-init", + "binrw_derive", + "bytemuck", +] + +[[package]] +name = "binrw_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5910da05ee556b789032c8ff5a61fb99239580aa3fd0bfaa8f4d094b2aee00ad" +dependencies = [ + "either", + "owo-colors", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -469,7 +576,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -481,6 +588,15 @@ dependencies = [ "generic-array 0.14.7", ] +[[package]] +name = "block-buffer" +version = "0.11.0-rc.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ef36a6fcdb072aa548f3da057640ec10859eb4e91ddf526ee648d50c76a949" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block-padding" version = "0.3.3" @@ -490,6 +606,15 @@ dependencies = [ "generic-array 0.14.7", ] +[[package]] +name = "block-padding" +version = "0.4.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e59c1aab3e6c5e56afe1b7e8650be9b5a791cb997bdea449194ae62e4bf8c73" +dependencies = [ + "hybrid-array", +] + [[package]] name = "blowfish" version = "0.9.1" @@ -497,7 +622,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" dependencies = [ "byteorder", - "cipher", + "cipher 0.4.4", ] [[package]] @@ -515,6 +640,12 @@ version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + [[package]] name = "byteorder" version = "1.5.0" @@ -588,7 +719,16 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" dependencies = [ - "cipher", + "cipher 0.4.4", +] + +[[package]] +name = "cbc" +version = "0.2.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dbf9e5b071e9de872e32b73f485e8f644ff47c7011d95476733e7482ee3e5c3" +dependencies = [ + "cipher 0.5.0-rc.1", ] [[package]] @@ -609,9 +749,21 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ae3c82e4355234767756212c570e29833699ab63e6ffd161887314cc5b43847" dependencies = [ - "aead", - "cipher", - "ctr", + "aead 0.5.2", + "cipher 0.4.4", + "ctr 0.9.2", + "subtle", +] + +[[package]] +name = "ccm" +version = "0.6.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a49680966b1cae2a239dd94d11bac423894ee4e00dacea1c50e8673e26a9829f" +dependencies = [ + "aead 0.6.0-rc.2", + "cipher 0.5.0-rc.1", + "ctr 0.10.0-rc.1", "subtle", ] @@ -649,7 +801,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", "cpufeatures 0.2.17", ] @@ -716,8 +868,19 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", - "inout", + "crypto-common 0.1.7", + "inout 0.1.4", +] + +[[package]] +name = "cipher" +version = "0.5.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e12a13eb01ded5d32ee9658d94f553a19e804204f2dc811df69ab4d9e0cb8c7" +dependencies = [ + "block-buffer 0.11.0-rc.5", + "crypto-common 0.2.0-rc.4", + "inout 0.2.0-rc.6", ] [[package]] @@ -762,7 +925,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -777,9 +940,20 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8543454e3c3f5126effff9cd44d562af4e31fb8ce1cc0d3dcd8f084515dbc1aa" dependencies = [ - "cipher", - "dbl", - "digest", + "cipher 0.4.4", + "dbl 0.3.2", + "digest 0.10.7", +] + +[[package]] +name = "cmac" +version = "0.8.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2fa99ca412f76b4656efeab943ef06f1ddd8036c31ca38f35188f173d0dc85e" +dependencies = [ + "cipher 0.5.0-rc.1", + "dbl 0.5.0", + "digest 0.11.0-rc.3", ] [[package]] @@ -859,6 +1033,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "core-foundation" version = "0.9.4" @@ -1032,6 +1212,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.7.0-rc.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4113edbc9f68c0a64d5b911f803eb245d04bb812680fd56776411f69c670f3e0" +dependencies = [ + "hybrid-array", + "num-traits", + "rand_core 0.9.5", + "serdect", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -1043,6 +1237,37 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6" +dependencies = [ + "hybrid-array", + "rand_core 0.9.5", +] + +[[package]] +name = "crypto-mac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" +dependencies = [ + "generic-array 0.14.7", + "subtle", +] + +[[package]] +name = "crypto-primes" +version = "0.7.0-pre.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f2523fbb68811c8710829417ad488086720a6349e337c38d12fa81e09e50bf" +dependencies = [ + "crypto-bigint 0.7.0-rc.8", + "libm", + "rand_core 0.9.5", +] + [[package]] name = "ctor" version = "0.6.3" @@ -1065,7 +1290,16 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher", + "cipher 0.4.4", +] + +[[package]] +name = "ctr" +version = "0.10.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e41d01c6f73b9330177f5cf782ae5b581b5f2c7840e298e0275ceee5001434" +dependencies = [ + "cipher 0.5.0-rc.1", ] [[package]] @@ -1077,8 +1311,24 @@ dependencies = [ "cfg-if", "cpufeatures 0.2.17", "curve25519-dalek-derive", - "digest", - "fiat-crypto", + "digest 0.10.7", + "fiat-crypto 0.2.9", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "5.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f9200d1d13637f15a6acb71e758f64624048d85b31a5fdbfd8eca1e2687d0b7" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "curve25519-dalek-derive", + "digest 0.11.0-rc.3", + "fiat-crypto 0.3.0", "rustc_version", "subtle", "zeroize", @@ -1092,7 +1342,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1116,7 +1366,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", ] [[package]] @@ -1127,7 +1377,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1151,6 +1401,15 @@ dependencies = [ "generic-array 0.14.7", ] +[[package]] +name = "dbl" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d7a944e61df464668c5f51f56cc667396a8821434273112948ea0b66e405d7" +dependencies = [ + "hybrid-array", +] + [[package]] name = "delegate" version = "0.13.5" @@ -1159,7 +1418,7 @@ checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1168,8 +1427,19 @@ version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ - "const-oid", - "pem-rfc7468", + "const-oid 0.9.6", + "pem-rfc7468 0.7.0", + "zeroize", +] + +[[package]] +name = "der" +version = "0.8.0-rc.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9d8dd2f26c86b27a2a8ea2767ec7f9df7a89516e4794e54ac01ee618dda3aa4" +dependencies = [ + "const-oid 0.10.2", + "pem-rfc7468 1.0.0-rc.3", "zeroize", ] @@ -1196,6 +1466,17 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -1214,7 +1495,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1224,7 +1505,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn", + "syn 2.0.117", ] [[package]] @@ -1233,7 +1514,30 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" dependencies = [ - "cipher", + "cipher 0.4.4", +] + +[[package]] +name = "des" +version = "0.9.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f51594a70805988feb1c85495ddec0c2052e4fbe59d9c0bb7f94bfc164f4f90" +dependencies = [ + "cipher 0.5.0-rc.1", +] + +[[package]] +name = "dfir_windows_types" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a99d9d205ecc8f1b8a64f549adbdc1173c761838e1771f310a29a141332dbfe0" +dependencies = [ + "binrw", + "getset", + "lazy-regex", + "serde", + "thiserror 2.0.18", + "uuid", ] [[package]] @@ -1242,9 +1546,21 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", + "block-buffer 0.10.4", + "const-oid 0.9.6", + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac89f8a64533a9b0eaa73a68e424db0fb1fd6271c74cc0125336a05f090568d" +dependencies = [ + "block-buffer 0.11.0-rc.5", + "const-oid 0.10.2", + "crypto-common 0.2.0-rc.4", "subtle", ] @@ -1277,7 +1593,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1311,8 +1627,8 @@ dependencies = [ "serde", "serde_ignored", "serde_json", - "sha2", - "strum", + "sha2 0.10.9", + "strum 0.28.0", "tar", "thiserror 2.0.18", "tokio", @@ -1332,13 +1648,13 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48bc224a9084ad760195584ce5abb3c2c34a225fa312a128ad245a6b412b7689" dependencies = [ - "digest", + "digest 0.10.7", "num-bigint-dig", "num-traits", - "pkcs8", - "rfc6979", - "sha2", - "signature", + "pkcs8 0.10.2", + "rfc6979 0.4.0", + "sha2 0.10.9", + "signature 2.2.0", "zeroize", ] @@ -1375,7 +1691,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -1384,12 +1700,27 @@ version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", + "der 0.7.10", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "signature 2.2.0", + "spki 0.7.3", +] + +[[package]] +name = "ecdsa" +version = "0.17.0-rc.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ab355ec063f7a110eb627471058093aba00eb7f4e70afbd15e696b79d1077b" +dependencies = [ + "der 0.8.0-rc.9", + "digest 0.11.0-rc.3", + "elliptic-curve 0.14.0-rc.15", + "rfc6979 0.5.0-rc.1", + "signature 3.0.0-rc.4", + "spki 0.8.0-rc.4", + "zeroize", ] [[package]] @@ -1398,8 +1729,18 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "signature", + "pkcs8 0.10.2", + "signature 2.2.0", +] + +[[package]] +name = "ed25519" +version = "3.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef49c0b20c0ad088893ad2a790a29c06a012b3f05bcfc66661fd22a94b32129" +dependencies = [ + "pkcs8 0.11.0-rc.7", + "signature 3.0.0-rc.4", ] [[package]] @@ -1408,11 +1749,25 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", "rand_core 0.6.4", "serde", - "sha2", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "ed25519-dalek" +version = "3.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad207ed88a133091f83224265eac21109930db09bedcad05d5252f2af2de20a1" +dependencies = [ + "curve25519-dalek 5.0.0-pre.1", + "ed25519 3.0.0-rc.1", + "rand_core 0.9.5", + "sha2 0.11.0-rc.2", "subtle", "zeroize", ] @@ -1432,17 +1787,39 @@ version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", + "base16ct 0.2.0", + "crypto-bigint 0.5.5", + "digest 0.10.7", + "ff 0.13.1", "generic-array 0.14.7", - "group", - "hkdf", - "pem-rfc7468", - "pkcs8", + "group 0.13.0", + "hkdf 0.12.4", + "pem-rfc7468 0.7.0", + "pkcs8 0.10.2", "rand_core 0.6.4", - "sec1", + "sec1 0.7.3", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.14.0-rc.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e3be87c458d756141f3b6ee188828132743bf90c7d14843e2835d6443e5fb03" +dependencies = [ + "base16ct 0.3.0", + "crypto-bigint 0.7.0-rc.8", + "digest 0.11.0-rc.3", + "ff 0.14.0-pre.0", + "group 0.14.0-pre.0", + "hkdf 0.13.0-rc.2", + "hybrid-array", + "once_cell", + "pem-rfc7468 1.0.0-rc.3", + "pkcs8 0.11.0-rc.7", + "rand_core 0.9.5", + "sec1 0.8.0-rc.10", "subtle", "zeroize", ] @@ -1486,7 +1863,28 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -1576,12 +1974,28 @@ dependencies = [ "subtle", ] +[[package]] +name = "ff" +version = "0.14.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d42dd26f5790eda47c1a2158ea4120e32c35ddc9a7743c98a292accc01b54ef3" +dependencies = [ + "rand_core 0.9.5", + "subtle", +] + [[package]] name = "fiat-crypto" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "fiat-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" + [[package]] name = "filetime" version = "0.2.27" @@ -1751,7 +2165,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1845,6 +2259,18 @@ dependencies = [ "wasip3", ] +[[package]] +name = "getset" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf0fc11e47561d47397154977bc219f4cf809b2974facc3ccb3b89e2436f912" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ghash" version = "0.5.1" @@ -1852,7 +2278,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", - "polyval", + "polyval 0.6.2", +] + +[[package]] +name = "ghash" +version = "0.6.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f88107cb02ed63adcc4282942e60c4d09d80208d33b360ce7c729ce6dae1739" +dependencies = [ + "polyval 0.7.0-rc.2", ] [[package]] @@ -1889,7 +2324,7 @@ dependencies = [ "rustls", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "signal-hook", "signal-hook-tokio", "thiserror 2.0.18", @@ -1906,11 +2341,22 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff", + "ff 0.13.1", "rand_core 0.6.4", "subtle", ] +[[package]] +name = "group" +version = "0.14.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ff6a0b2dd4b981b1ae9e3e6830ab146771f3660d31d57bafd9018805a91b0f1" +dependencies = [ + "ff 0.14.0-pre.0", + "rand_core 0.9.5", + "subtle", +] + [[package]] name = "h2" version = "0.4.13" @@ -2020,7 +2466,16 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ - "hmac", + "hmac 0.12.1", +] + +[[package]] +name = "hkdf" +version = "0.13.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ef30358b03ca095a5b910547f4f8d4b9f163e4057669c5233ef595b1ecf008" +dependencies = [ + "hmac 0.13.0-rc.2", ] [[package]] @@ -2029,7 +2484,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "hmac" +version = "0.13.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3fd4dc94c318c1ede8a2a48341c250d6ddecd3ba793da2820301a9f92417ad9" +dependencies = [ + "digest 0.11.0-rc.3", ] [[package]] @@ -2086,6 +2550,17 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "hybrid-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "hyper" version = "1.9.0" @@ -2118,6 +2593,7 @@ dependencies = [ "hyper", "hyper-util", "rustls", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -2322,10 +2798,20 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ - "block-padding", + "block-padding 0.3.3", "generic-array 0.14.7", ] +[[package]] +name = "inout" +version = "0.2.0-rc.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1603f76010ff924b616c8f44815a42eb10fb0b93d308b41deaa8da6d4251fd4b" +dependencies = [ + "block-padding 0.4.0-rc.4", + "hybrid-array", +] + [[package]] name = "insta" version = "1.47.2" @@ -2350,20 +2836,20 @@ checksum = "e0a77eae781ed6a7709fb15b64862fcca13d886b07c7e2786f5ed34e5e2b9187" dependencies = [ "argon2", "bcrypt-pbkdf", - "ecdsa", - "ed25519-dalek", + "ecdsa 0.16.9", + "ed25519-dalek 2.2.0", "hex", - "hmac", + "hmac 0.12.1", "num-bigint-dig", - "p256", - "p384", - "p521", + "p256 0.13.2", + "p384 0.13.1", + "p521 0.13.3", "rand_core 0.6.4", - "rsa", - "sec1", - "sha1", - "sha2", - "signature", + "rsa 0.9.10", + "sec1 0.7.3", + "sha1 0.10.6", + "sha2 0.10.9", + "signature 2.2.0", "ssh-cipher", "ssh-encoding", "subtle", @@ -2455,7 +2941,7 @@ checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2499,7 +2985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2524,6 +3010,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kbkdf" +version = "0.1.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97e1f9b50adafd503518a832b24241dca1d319bfc27e9e708bcf220b0b25419" +dependencies = [ + "digest 0.11.0-rc.3", +] + [[package]] name = "keccak" version = "0.1.6" @@ -2533,6 +3028,15 @@ dependencies = [ "cpufeatures 0.2.17", ] +[[package]] +name = "keccak" +version = "0.2.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d546793a04a1d3049bd192856f804cfe96356e2cf36b54b4e575155babe9f41" +dependencies = [ + "cpufeatures 0.2.17", +] + [[package]] name = "lalrpop" version = "0.22.2" @@ -2545,9 +3049,10 @@ dependencies = [ "itertools 0.14.0", "lalrpop-util", "petgraph", + "pico-args", "regex", "regex-syntax", - "sha3", + "sha3 0.10.8", "string_cache", "term", "unicode-xid", @@ -2584,7 +3089,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn", + "syn 2.0.117", ] [[package]] @@ -2783,6 +3288,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "lz4_flex" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a" + [[package]] name = "matchers" version = "0.2.0" @@ -2792,6 +3303,17 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "md-5" version = "0.10.6" @@ -2799,7 +3321,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "md-5" +version = "0.11.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9ec86664728010f574d67ef01aec964e6f1299241a3402857c1a8a390a62478" +dependencies = [ + "cfg-if", + "digest 0.11.0-rc.3", ] [[package]] @@ -2808,7 +3340,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f4f0f3ed25ff4f8d8d102288d92f900efc202661c884cf67dfe4f0d07c43d1f" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -2817,7 +3349,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da5ac363534dce5fabf69949225e174fbf111a498bf0ff794c8ea1fba9f3dda" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -2896,6 +3428,27 @@ dependencies = [ "tokio", ] +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "mtu" version = "0.2.9" @@ -2924,7 +3477,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3050,6 +3603,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -3108,6 +3672,15 @@ dependencies = [ "objc2-core-foundation", ] +[[package]] +name = "oid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2" +dependencies = [ + "serde", +] + [[package]] name = "oid-registry" version = "0.8.1" @@ -3164,7 +3737,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3201,16 +3774,35 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "owo-colors" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" + [[package]] name = "p256" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "sha2 0.10.9", +] + +[[package]] +name = "p256" +version = "0.14.0-pre.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b374901df34ee468167a58e2a49e468cb059868479cafebeb804f6b855423d" +dependencies = [ + "ecdsa 0.17.0-rc.7", + "elliptic-curve 0.14.0-rc.15", + "primefield", + "primeorder 0.14.0-pre.9", + "sha2 0.11.0-rc.2", ] [[package]] @@ -3219,10 +3811,24 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "sha2 0.10.9", +] + +[[package]] +name = "p384" +version = "0.14.0-pre.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "701032b3730df6b882496d6cee8221de0ce4bc11ddc64e6d89784aa5b8a6de30" +dependencies = [ + "ecdsa 0.17.0-rc.7", + "elliptic-curve 0.14.0-rc.15", + "fiat-crypto 0.3.0", + "primefield", + "primeorder 0.14.0-pre.9", + "sha2 0.11.0-rc.2", ] [[package]] @@ -3231,12 +3837,27 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" dependencies = [ - "base16ct", - "ecdsa", - "elliptic-curve", - "primeorder", + "base16ct 0.2.0", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", "rand_core 0.6.4", - "sha2", + "sha2 0.10.9", +] + +[[package]] +name = "p521" +version = "0.14.0-pre.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ba29c2906eb5c89a8c411c4f11243ee4e5517ee7d71d9a13fedc877a6057b1" +dependencies = [ + "base16ct 0.3.0", + "ecdsa 0.17.0-rc.7", + "elliptic-curve 0.14.0-rc.15", + "primefield", + "primeorder 0.14.0-pre.9", + "rand_core 0.9.5", + "sha2 0.11.0-rc.2", ] [[package]] @@ -3306,6 +3927,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "pathdiff" version = "0.2.3" @@ -3318,11 +3945,22 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest", - "hmac", + "digest 0.10.7", + "hmac 0.12.1", "password-hash", ] +[[package]] +name = "pbkdf2" +version = "0.13.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3fc18bb4460ac250ba6b75dfa7cf9d0b2273e3e623f660bd6ce2c3e902342e" +dependencies = [ + "digest 0.11.0-rc.3", + "hmac 0.13.0-rc.2", + "sha1 0.11.0-rc.2", +] + [[package]] name = "pcap" version = "2.4.0" @@ -3359,6 +3997,15 @@ dependencies = [ "base64ct", ] +[[package]] +name = "pem-rfc7468" +version = "1.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e58fab693c712c0d4e88f8eb3087b6521d060bcaf76aeb20cb192d809115ba" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -3375,6 +4022,40 @@ dependencies = [ "indexmap", ] +[[package]] +name = "phf" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" +dependencies = [ + "phf_macros", + "phf_shared 0.12.1", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cbb1126afed61dd6368748dae63b1ee7dc480191c6262a3b4ff1e29d86a6c5b" +dependencies = [ + "fastrand", + "phf_shared 0.12.1", +] + +[[package]] +name = "phf_macros" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d713258393a82f091ead52047ca779d37e5766226d009de21696c4e667044368" +dependencies = [ + "phf_generator", + "phf_shared 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "phf_shared" version = "0.11.3" @@ -3384,6 +4065,144 @@ dependencies = [ "siphasher", ] +[[package]] +name = "phf_shared" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" +dependencies = [ + "siphasher", +] + +[[package]] +name = "picky" +version = "7.0.0-rc.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cdc52be663aebd70d7006ae305c87eb32a2b836d6c2f26f7e384f845d80b621" +dependencies = [ + "base64 0.22.1", + "block-buffer 0.11.0-rc.5", + "block-padding 0.4.0-rc.4", + "crypto-bigint 0.7.0-rc.8", + "crypto-common 0.2.0-rc.4", + "crypto-primes", + "curve25519-dalek 5.0.0-pre.1", + "der 0.8.0-rc.9", + "digest 0.11.0-rc.3", + "ecdsa 0.17.0-rc.7", + "ed25519 3.0.0-rc.1", + "ed25519-dalek 3.0.0-pre.1", + "elliptic-curve 0.14.0-rc.15", + "ff 0.14.0-pre.0", + "group 0.14.0-pre.0", + "hex", + "hkdf 0.13.0-rc.2", + "inout 0.2.0-rc.6", + "keccak 0.2.0-rc.0", + "md-5 0.11.0-rc.2", + "p256 0.14.0-pre.11", + "p384 0.14.0-pre.11", + "p521 0.14.0-pre.11", + "pem-rfc7468 1.0.0-rc.3", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "pkcs1 0.8.0-rc.4", + "pkcs8 0.11.0-rc.7", + "primefield", + "primeorder 0.14.0-pre.9", + "rand 0.9.2", + "rand_core 0.9.5", + "rfc6979 0.5.0-rc.1", + "rsa 0.10.0-rc.9", + "sec1 0.8.0-rc.10", + "serde", + "sha1 0.11.0-rc.2", + "sha2 0.11.0-rc.2", + "sha3 0.11.0-rc.3", + "signature 3.0.0-rc.4", + "spki 0.8.0-rc.4", + "thiserror 2.0.18", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "picky-asn1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ff038f9360b934342fb3c0a1d6e82c438a2624b51c3c6e3e6d7cf252b6f3ee3" +dependencies = [ + "oid", + "serde", + "serde_bytes", + "time", + "zeroize", +] + +[[package]] +name = "picky-asn1-der" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d413165e4bf7f808b9a27cbaba657657a2921f0965db833f488c4d4be96dcd2e" +dependencies = [ + "picky-asn1", + "serde", + "serde_bytes", +] + +[[package]] +name = "picky-asn1-x509" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c97cd14d567a17755910fa8718277baf39d08682a980b1b1a4b4da7d0bc61a04" +dependencies = [ + "base64 0.22.1", + "crypto-bigint 0.7.0-rc.8", + "oid", + "picky-asn1", + "picky-asn1-der", + "serde", + "widestring", + "zeroize", +] + +[[package]] +name = "picky-krb" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed61c8d7448649c031ecae02afb10c679524c7a9af5fb0fbee466b3cc0d6df1" +dependencies = [ + "aes 0.9.0-rc.1", + "block-buffer 0.11.0-rc.5", + "block-padding 0.4.0-rc.4", + "byteorder", + "cbc 0.2.0-rc.1", + "cipher 0.5.0-rc.1", + "crypto-bigint 0.7.0-rc.8", + "crypto-common 0.2.0-rc.4", + "des 0.9.0-rc.1", + "digest 0.11.0-rc.3", + "hmac 0.13.0-rc.2", + "inout 0.2.0-rc.6", + "oid", + "pbkdf2 0.13.0-rc.1", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "rand 0.9.2", + "serde", + "sha1 0.11.0-rc.2", + "thiserror 2.0.18", + "uuid", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + [[package]] name = "pin-project" version = "1.1.11" @@ -3401,7 +4220,7 @@ checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3410,15 +4229,31 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkcs1" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ - "der", - "pkcs8", - "spki", + "der 0.7.10", + "pkcs8 0.10.2", + "spki 0.7.3", +] + +[[package]] +name = "pkcs1" +version = "0.8.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" +dependencies = [ + "der 0.8.0-rc.9", + "spki 0.8.0-rc.4", ] [[package]] @@ -3427,13 +4262,13 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6" dependencies = [ - "aes", - "cbc", - "der", - "pbkdf2", + "aes 0.8.4", + "cbc 0.1.2", + "der 0.7.10", + "pbkdf2 0.12.2", "scrypt", - "sha2", - "spki", + "sha2 0.10.9", + "spki 0.7.3", ] [[package]] @@ -3442,10 +4277,20 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der", + "der 0.7.10", "pkcs5", "rand_core 0.6.4", - "spki", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.11.0-rc.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93eac55f10aceed84769df670ea4a32d2ffad7399400d41ee1c13b1cd8e1b478" +dependencies = [ + "der 0.8.0-rc.9", + "spki 0.8.0-rc.4", ] [[package]] @@ -3533,7 +4378,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn", + "syn 2.0.117", ] [[package]] @@ -3587,7 +4432,7 @@ checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures 0.2.17", "opaque-debug", - "universal-hash", + "universal-hash 0.5.1", ] [[package]] @@ -3599,7 +4444,18 @@ dependencies = [ "cfg-if", "cpufeatures 0.2.17", "opaque-debug", - "universal-hash", + "universal-hash 0.5.1", +] + +[[package]] +name = "polyval" +version = "0.7.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffd40cc99d0fbb02b4b3771346b811df94194bc103983efa0203c8893755085" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "universal-hash 0.6.0-rc.2", ] [[package]] @@ -3654,7 +4510,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "primefield" +version = "0.14.0-pre.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcd4a163053332fd93f39b81c133e96a98567660981654579c90a99062fbf5" +dependencies = [ + "crypto-bigint 0.7.0-rc.8", + "ff 0.14.0-pre.0", + "rand_core 0.9.5", + "subtle", + "zeroize", ] [[package]] @@ -3663,7 +4532,38 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "elliptic-curve", + "elliptic-curve 0.13.8", +] + +[[package]] +name = "primeorder" +version = "0.14.0-pre.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c36e8766fcd270fa9c665b9dc364f570695f5a59240949441b077a397f15b74" +dependencies = [ + "elliptic-curve 0.14.0-rc.15", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -3864,7 +4764,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f1256e23efe6097f27aa82d6ca6889361c001586ae0f6917cbad072f05eb275" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -3973,6 +4873,9 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", "rustls-pki-types", "serde", "serde_json", @@ -3980,6 +4883,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", + "tokio-rustls", "tower", "tower-http", "tower-service", @@ -4035,7 +4939,17 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "hmac", + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "rfc6979" +version = "0.5.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d369f9c4f79388704648e7bcb92749c0d6cf4397039293a9b747694fa4fb4bae" +dependencies = [ + "hmac 0.13.0-rc.2", "subtle", ] @@ -4059,7 +4973,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -4100,17 +5014,37 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ - "const-oid", - "digest", + "const-oid 0.9.6", + "digest 0.10.7", "num-bigint-dig", "num-integer", "num-traits", - "pkcs1", - "pkcs8", + "pkcs1 0.7.5", + "pkcs8 0.10.2", "rand_core 0.6.4", - "sha2", - "signature", - "spki", + "sha2 0.10.9", + "signature 2.2.0", + "spki 0.7.3", + "subtle", + "zeroize", +] + +[[package]] +name = "rsa" +version = "0.10.0-rc.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf8955ab399f6426998fde6b76ae27233cce950705e758a6c17afd2f6d0e5d52" +dependencies = [ + "const-oid 0.10.2", + "crypto-bigint 0.7.0-rc.8", + "crypto-primes", + "digest 0.11.0-rc.3", + "pkcs1 0.8.0-rc.4", + "pkcs8 0.11.0-rc.7", + "rand_core 0.9.5", + "sha1 0.11.0-rc.2", + "signature 3.0.0-rc.4", + "spki 0.8.0-rc.4", "subtle", "zeroize", ] @@ -4135,55 +5069,55 @@ version = "0.54.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3ee9363fcf66d434d8015d9ae7d879681206981534c21bfdff8a7e34f52cca" dependencies = [ - "aes", + "aes 0.8.4", "aws-lc-rs", "base64ct", "bitflags 2.11.0", - "block-padding", + "block-padding 0.3.3", "byteorder", "bytes", - "cbc", - "ctr", - "curve25519-dalek", + "cbc 0.1.2", + "ctr 0.9.2", + "curve25519-dalek 4.1.3", "data-encoding", "delegate", - "der", - "digest", - "ecdsa", - "ed25519-dalek", - "elliptic-curve", + "der 0.7.10", + "digest 0.10.7", + "ecdsa 0.16.9", + "ed25519-dalek 2.2.0", + "elliptic-curve 0.13.8", "enum_dispatch", "flate2", "futures", "generic-array 0.14.7", "getrandom 0.2.17", "hex-literal", - "hmac", + "hmac 0.12.1", "home", - "inout", + "inout 0.1.4", "internal-russh-forked-ssh-key", "log", "md5", "num-bigint", "once_cell", - "p256", - "p384", - "p521", + "p256 0.13.2", + "p384 0.13.1", + "p521 0.13.3", "pageant", - "pbkdf2", - "pkcs1", + "pbkdf2 0.12.2", + "pkcs1 0.7.5", "pkcs5", - "pkcs8", + "pkcs8 0.10.2", "rand 0.8.5", "rand_core 0.6.4", - "rsa", + "rsa 0.9.10", "russh-cryptovec", "russh-util", - "sec1", - "sha1", - "sha2", - "signature", - "spki", + "sec1 0.7.3", + "sha1 0.10.6", + "sha2 0.10.9", + "signature 2.2.0", + "spki 0.7.3", "ssh-encoding", "subtle", "thiserror 1.0.69", @@ -4355,7 +5289,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -4371,26 +5305,27 @@ dependencies = [ name = "scannerlib" version = "0.1.0" dependencies = [ - "aes", - "aes-gcm", + "aes 0.8.4", + "aes-gcm 0.10.3", "anyhow", "async-trait", "base64 0.21.7", + "binrw", "blowfish", "bzip2", - "cbc", - "ccm", + "cbc 0.1.2", + "ccm 0.5.0", "chacha20 0.9.1", "chrono", "cidr", "clap", - "cmac", + "cmac 0.7.2", "codespan-reporting", "configparser", "criterion", - "ctr", - "des", - "digest", + "ctr 0.9.2", + "des 0.8.1", + "digest 0.10.7", "dns-lookup", "docker-registry", "dsa", @@ -4402,7 +5337,7 @@ dependencies = [ "greenbone-scanner-framework", "h2", "hex", - "hmac", + "hmac 0.12.1", "http", "hyper", "insta", @@ -4411,7 +5346,7 @@ dependencies = [ "lazy_static", "libc", "libssh-rs", - "md-5", + "md-5 0.10.6", "md2", "md4", "mockito", @@ -4423,9 +5358,9 @@ dependencies = [ "num-bigint", "once_cell", "pathdiff", - "pbkdf2", + "pbkdf2 0.12.2", "pcap", - "pkcs8", + "pkcs8 0.10.2", "pnet", "pnet_base", "pnet_macros", @@ -4439,18 +5374,20 @@ dependencies = [ "reqwest 0.12.28", "ripemd", "rpmdb", - "rsa", + "rsa 0.9.10", "russh", "rustls", "rustls-native-certs", "rustls-pki-types", + "sddl", "search_path", "sequoia-ipc", "sequoia-openpgp", "serde", "serde_json", - "sha1", - "sha2", + "sha1 0.10.6", + "sha2 0.10.9", + "smb", "snmp2", "socket2", "sqlx", @@ -4495,9 +5432,34 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" dependencies = [ - "pbkdf2", + "pbkdf2 0.12.2", "salsa20", - "sha2", + "sha2 0.10.9", +] + +[[package]] +name = "sddl" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e469cf28d4ccb5557092aa49529eaef03e1df342372e34cc20cbe30df66084d6" +dependencies = [ + "anyhow", + "binrw", + "clap", + "derivative", + "dfir_windows_types", + "enumflags2", + "getset", + "lalrpop", + "lalrpop-util", + "lazy-regex", + "lazy_static", + "serde", + "serde_json", + "strum 0.27.2", + "strum_macros 0.27.2", + "thiserror 2.0.18", + "uuid", ] [[package]] @@ -4512,10 +5474,23 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "base16ct", - "der", + "base16ct 0.2.0", + "der 0.7.10", "generic-array 0.14.7", - "pkcs8", + "pkcs8 0.10.2", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.8.0-rc.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dff52f6118bc9f0ac974a54a639d499ac26a6cad7a6e39bc0990c19625e793b" +dependencies = [ + "base16ct 0.3.0", + "der 0.8.0-rc.9", + "hybrid-array", "subtle", "zeroize", ] @@ -4611,6 +5586,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -4628,7 +5613,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4675,6 +5660,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serdect" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" +dependencies = [ + "base16ct 1.0.0", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -4683,7 +5678,18 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.11.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e046edf639aa2e7afb285589e5405de2ef7e61d4b0ac1e30256e3eab911af9" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.11.0-rc.3", ] [[package]] @@ -4698,7 +5704,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f606421e4a6012877e893c399822a4ed4b089164c5969424e1b9d1e66e6964b" dependencies = [ - "digest", + "digest 0.10.7", "generic-array 1.3.5", ] @@ -4710,7 +5716,18 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.11.0-rc.3", ] [[package]] @@ -4719,8 +5736,18 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest", - "keccak", + "digest 0.10.7", + "keccak 0.1.6", +] + +[[package]] +name = "sha3" +version = "0.11.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2103ca0e6f4e9505eae906de5e5883e06fc3b2232fb5d6914890c7bbcb62f478" +dependencies = [ + "digest 0.11.0-rc.3", + "keccak 0.2.0-rc.0", ] [[package]] @@ -4776,10 +5803,20 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", + "digest 0.10.7", "rand_core 0.6.4", ] +[[package]] +name = "signature" +version = "3.0.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc280a6ff65c79fbd6622f64d7127f32b85563bca8c53cd2e9141d6744a9056d" +dependencies = [ + "digest 0.11.0-rc.3", + "rand_core 0.9.5", +] + [[package]] name = "simd-adler32" version = "0.3.9" @@ -4813,6 +5850,146 @@ dependencies = [ "serde", ] +[[package]] +name = "smb" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c12ddf75029c02180237fa98948bd3dea72647c08bd7d1b5fa4923491764100" +dependencies = [ + "aead 0.6.0-rc.2", + "aes 0.9.0-rc.1", + "aes-gcm 0.11.0-rc.1", + "binrw", + "ccm 0.6.0-pre.0", + "cmac 0.8.0-rc.1", + "crypto-common 0.2.0-rc.4", + "futures", + "futures-core", + "futures-util", + "hmac 0.13.0-rc.2", + "kbkdf", + "log", + "lz4_flex", + "maybe-async", + "modular-bitfield", + "pastey", + "rand 0.8.5", + "sha2 0.11.0-rc.2", + "smb-dtyp", + "smb-fscc", + "smb-msg", + "smb-rpc", + "smb-transport", + "sspi", + "thiserror 2.0.18", + "time", + "tokio", + "tokio-stream", + "tokio-util", + "url", +] + +[[package]] +name = "smb-dtyp" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11e11570063587382275297db37dd686360fcc109d22a8d655846dc93bf4a71a" +dependencies = [ + "binrw", + "modular-bitfield", + "pastey", + "rand 0.8.5", + "smb-dtyp-derive", + "time", +] + +[[package]] +name = "smb-dtyp-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12fcc3a1d02a6b5a78a0380adcc9218a65bbdee515d4f60b9c90566611ef5ec8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "smb-fscc" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff4559d37f9c3e6b56fffa1a359a6f151337b18b9d0218161488a4a7e15685" +dependencies = [ + "binrw", + "modular-bitfield", + "pastey", + "smb-dtyp", + "thiserror 2.0.18", + "time", +] + +[[package]] +name = "smb-msg" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87b761115473b9af471c06b28e1d26b16602c97ae315c8d325b2418dedb992bf" +dependencies = [ + "binrw", + "modular-bitfield", + "pastey", + "smb-dtyp", + "smb-fscc", + "smb-msg-derive", + "thiserror 2.0.18", + "time", +] + +[[package]] +name = "smb-msg-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae33ff90211b548f0ff248b511eada2623ba1693d388c363e48003a5a6be5991" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "smb-rpc" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352732178153ef2379552a09cd5319fc4ce49a0837576e87eb9ac36652330a46" +dependencies = [ + "binrw", + "maybe-async", + "modular-bitfield", + "pastey", + "smb-dtyp", + "thiserror 2.0.18", + "time", +] + +[[package]] +name = "smb-transport" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "383209d094590c95b748cf20e79e5216ec8cf458486c0253c3610dd2c36d435d" +dependencies = [ + "binrw", + "futures-core", + "futures-util", + "log", + "maybe-async", + "modular-bitfield", + "pastey", + "smb-dtyp", + "thiserror 2.0.18", + "time", + "tokio", + "tokio-util", +] + [[package]] name = "snmp2" version = "0.4.14" @@ -4861,7 +6038,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der", + "der 0.7.10", +] + +[[package]] +name = "spki" +version = "0.8.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80" +dependencies = [ + "base64ct", + "der 0.8.0-rc.9", ] [[package]] @@ -4903,7 +6090,7 @@ dependencies = [ "rustls", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "smallvec", "thiserror 2.0.18", "tokio", @@ -4923,7 +6110,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn", + "syn 2.0.117", ] [[package]] @@ -4941,12 +6128,12 @@ dependencies = [ "quote", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "sqlx-core", "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn", + "syn 2.0.117", "tokio", "url", ] @@ -4963,7 +6150,7 @@ dependencies = [ "byteorder", "bytes", "crc", - "digest", + "digest 0.10.7", "dotenvy", "either", "futures-channel", @@ -4972,19 +6159,19 @@ dependencies = [ "futures-util", "generic-array 0.14.7", "hex", - "hkdf", - "hmac", + "hkdf 0.12.4", + "hmac 0.12.1", "itoa", "log", - "md-5", + "md-5 0.10.6", "memchr", "once_cell", "percent-encoding", "rand 0.8.5", - "rsa", + "rsa 0.9.10", "serde", - "sha1", - "sha2", + "sha1 0.10.6", + "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", @@ -5010,18 +6197,18 @@ dependencies = [ "futures-core", "futures-util", "hex", - "hkdf", - "hmac", + "hkdf 0.12.4", + "hmac 0.12.1", "home", "itoa", "log", - "md-5", + "md-5 0.10.6", "memchr", "once_cell", "rand 0.8.5", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", @@ -5060,12 +6247,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" dependencies = [ - "aes", - "aes-gcm", - "cbc", + "aes 0.8.4", + "aes-gcm 0.10.3", + "cbc 0.1.2", "chacha20 0.9.1", - "cipher", - "ctr", + "cipher 0.4.4", + "ctr 0.9.2", "poly1305", "ssh-encoding", "subtle", @@ -5079,8 +6266,70 @@ checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" dependencies = [ "base64ct", "bytes", - "pem-rfc7468", - "sha2", + "pem-rfc7468 0.7.0", + "sha2 0.10.9", +] + +[[package]] +name = "sspi" +version = "0.18.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2f4823ee743a4a0cc2153eb640e28ff95b55ca25c88085b559bae59fb6c317a" +dependencies = [ + "async-dnssd", + "async-recursion", + "bitflags 2.11.0", + "block-buffer 0.11.0-rc.5", + "byteorder", + "cfg-if", + "crypto-bigint 0.7.0-rc.8", + "crypto-common 0.2.0-rc.4", + "crypto-mac", + "crypto-primes", + "curve25519-dalek 5.0.0-pre.1", + "der 0.8.0-rc.9", + "digest 0.11.0-rc.3", + "ed25519-dalek 3.0.0-pre.1", + "ff 0.14.0-pre.0", + "futures", + "getrandom 0.3.4", + "group 0.14.0-pre.0", + "hmac 0.13.0-rc.2", + "md-5 0.11.0-rc.2", + "md4", + "num-derive", + "num-traits", + "oid", + "p256 0.14.0-pre.11", + "p384 0.14.0-pre.11", + "p521 0.14.0-pre.11", + "pem-rfc7468 1.0.0-rc.3", + "picky", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "picky-krb", + "pkcs1 0.8.0-rc.4", + "pkcs8 0.11.0-rc.7", + "primefield", + "primeorder 0.14.0-pre.9", + "rand 0.9.2", + "reqwest 0.12.28", + "rsa 0.10.0-rc.9", + "rustls", + "serde", + "sha1 0.11.0-rc.2", + "sha2 0.11.0-rc.2", + "signature 3.0.0-rc.4", + "spki 0.8.0-rc.4", + "time", + "tokio", + "tracing", + "url", + "uuid", + "windows 0.62.2", + "windows-registry", + "zeroize", ] [[package]] @@ -5103,7 +6352,7 @@ checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", "parking_lot", - "phf_shared", + "phf_shared 0.11.3", "precomputed-hash", ] @@ -5124,13 +6373,35 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "phf", + "strum_macros 0.27.2", +] + [[package]] name = "strum" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ - "strum_macros", + "strum_macros 0.28.0", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -5142,7 +6413,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5151,6 +6422,17 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.117" @@ -5179,7 +6461,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5285,7 +6567,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5296,7 +6578,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5316,6 +6598,7 @@ checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", + "js-sys", "libc", "num-conv", "num_threads", @@ -5401,7 +6684,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5589,7 +6872,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5649,7 +6932,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad06847b7afb65c7866a36664b75c40b895e318cea4f71299f013fb22965329d" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5715,7 +6998,17 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "universal-hash" +version = "0.6.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55be643b40a21558f44806b53ee9319595bc7ca6896372e4e08e5d7d83c9cd6" +dependencies = [ + "crypto-common 0.2.0-rc.4", "subtle", ] @@ -5921,7 +7214,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -6038,6 +7331,12 @@ dependencies = [ "wasite", ] +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + [[package]] name = "winapi" version = "0.3.9" @@ -6085,11 +7384,23 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", + "windows-collections 0.2.0", "windows-core 0.61.2", - "windows-future", + "windows-future 0.2.1", "windows-link 0.1.3", - "windows-numerics", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -6101,6 +7412,15 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" version = "0.59.0" @@ -6148,7 +7468,18 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", "windows-link 0.1.3", - "windows-threading", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] @@ -6159,7 +7490,7 @@ checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6170,7 +7501,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6181,7 +7512,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6206,6 +7537,16 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + [[package]] name = "windows-registry" version = "0.6.1" @@ -6392,6 +7733,15 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -6647,7 +7997,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -6663,7 +8013,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -6711,6 +8061,18 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" +[[package]] +name = "x25519-dalek" +version = "3.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a45998121837fd8c92655d2334aa8f3e5ef0645cdfda5b321b13760c548fd55" +dependencies = [ + "curve25519-dalek 5.0.0-pre.1", + "rand_core 0.9.5", + "serde", + "zeroize", +] + [[package]] name = "x509-certificate" version = "0.24.0" @@ -6720,12 +8082,12 @@ dependencies = [ "bcder", "bytes", "chrono", - "der", + "der 0.7.10", "hex", "pem", "ring", - "signature", - "spki", + "signature 2.2.0", + "spki 0.7.3", "thiserror 1.0.69", "zeroize", ] @@ -6782,7 +8144,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -6803,7 +8165,7 @@ checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6823,7 +8185,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -6844,7 +8206,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6877,7 +8239,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 0fedbdaea5..ac3ae9935b 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -140,6 +140,9 @@ bzip2 = "0" zstd = "0" rustls-pki-types = { version = "1.14.0", features = ["std"] } cidr = "0.3.2" +binrw = "0.15.1" +smb = "0.11.2" +sddl = "0.1.9" [workspace] members = ["crates/nasl-function-proc-macro"] diff --git a/rust/src/nasl/builtin/error.rs b/rust/src/nasl/builtin/error.rs index 229c11c978..803d9a15f9 100644 --- a/rust/src/nasl/builtin/error.rs +++ b/rust/src/nasl/builtin/error.rs @@ -18,6 +18,7 @@ use super::http::HttpError; use super::isotime::IsotimeError; use super::raw_ip::RawIpError; use super::regex::RegexError; +use super::smb::SmbError; use super::snmp::SnmpError; use super::sys::SysError; use super::{misc::MiscError, network::socket::SocketError, ssh::SshError, string::StringError}; @@ -29,6 +30,8 @@ pub enum BuiltinError { #[error("{0}")] Http(HttpError), #[error("{0}")] + Smb(SmbError), + #[error("{0}")] Notus(NotusError), #[error("{0}")] String(StringError), @@ -97,6 +100,7 @@ builtin_error_variant!(SocketError, Socket); builtin_error_variant!(CryptographicError, Cryptographic); builtin_error_variant!(SshError, Ssh); builtin_error_variant!(HttpError, Http); +builtin_error_variant!(SmbError, Smb); builtin_error_variant!(IsotimeError, Isotime); builtin_error_variant!(RegexError, Regex); builtin_error_variant!(KBError, KB); diff --git a/rust/src/nasl/builtin/mod.rs b/rust/src/nasl/builtin/mod.rs index 70ca1d405f..efa6911b7a 100644 --- a/rust/src/nasl/builtin/mod.rs +++ b/rust/src/nasl/builtin/mod.rs @@ -22,6 +22,7 @@ mod preferences; pub mod raw_ip; mod regex; mod report_functions; +mod smb; mod snmp; mod ssh; mod string; @@ -51,6 +52,7 @@ pub fn nasl_std_functions() -> Executor { .add_set(host::Host) .add_set(http::NaslHttp2::default()) .add_set(http::NaslHttp) + .add_set(smb::Smb::default()) .add_set(network::socket::SocketFns) .add_set(network::network::Network) .add_set(regex::RegularExpressions) @@ -62,9 +64,9 @@ pub fn nasl_std_functions() -> Executor { .add_set(sys::Sys) .add_set(ssh::Ssh::default()) .add_set(find_service::FindService) - .add_set(wmi::Wmi) .add_set(snmp::Snmp) .add_set(cert::NaslCerts::default()) + .add_set(wmi::Wmi) .add_set(notus::NaslNotus::default()); executor.add_set(krb5::Krb5::default()); diff --git a/rust/src/nasl/builtin/smb/error.rs b/rust/src/nasl/builtin/smb/error.rs new file mode 100644 index 0000000000..758aac2744 --- /dev/null +++ b/rust/src/nasl/builtin/smb/error.rs @@ -0,0 +1,43 @@ +// SPDX-FileCopyrightText: 2025 Greenbone AG +// +// SPDX-License-Identifier: GPL-2.0-or-later WITH x11vnc-openssl-exception + +use std::{io, net::AddrParseError}; + +use thiserror::Error; + +pub type Result = std::result::Result; + +#[derive(Debug, Error)] +pub enum SmbError { + #[error("Handle ID {0} not found.")] + SMBHandleIdNotFound(i32), + #[error("SMB error: {0}")] + Smb(String), + #[error("IO error during SMB: {0}")] + IO(io::ErrorKind), + #[error("Failed to parse host: {0}")] + InvalidHost(String), + #[error("SMB errror serializing response: {0}")] + SerializeError(String), + #[error("SMB query: {0}")] + SmbQuery(String), +} + +impl From for SmbError { + fn from(value: io::Error) -> Self { + Self::IO(value.kind()) + } +} + +impl From for SmbError { + fn from(value: smb::Error) -> Self { + Self::Smb(format!("{value}")) + } +} + +impl From for SmbError { + fn from(value: AddrParseError) -> Self { + Self::InvalidHost(value.to_string()) + } +} diff --git a/rust/src/nasl/builtin/smb/handle.rs b/rust/src/nasl/builtin/smb/handle.rs new file mode 100644 index 0000000000..bbc24d5115 --- /dev/null +++ b/rust/src/nasl/builtin/smb/handle.rs @@ -0,0 +1,160 @@ +// SPDX-FileCopyrightText: 2026 Greenbone AG +// +// SPDX-License-Identifier: GPL-2.0-or-later WITH x11vnc-openssl-exception + +use super::error::{Result, SmbError}; +use smb::{ + AdditionalInfo, Client, ClientConfig, FileAccessMask, FileCreateArgs, Resource, UncPath, +}; +use std::{ + collections::{HashMap, HashSet}, + io::Cursor, +}; +use tokio::sync::{Mutex, MutexGuard}; + +use binrw::BinWrite; +type BorrowedHandle<'a> = MutexGuard<'a, SmbHandle>; +pub type HandleId = i32; + +// Note that the first session ID we will +// hand out is an arbitrary high number, this is only to help +// debugging. +pub const MIN_HANDLE_ID: HandleId = 9000; + +#[derive(Default)] +pub struct SmbHandle { + /// SMB Client + handle: Client, + target_path: Option, +} + +impl SmbHandle { + pub async fn new( + server: String, + share: String, + username: String, + password: String, + ) -> Result { + let mut config = ClientConfig::default(); + config.connection.auth_methods.ntlm = true; + + let handle = Client::new(config); + let target_path = UncPath::new(&server) + .map_err(SmbError::from)? + .with_share(share.as_str()) + .map_err(SmbError::from)?; + + handle + .share_connect(&target_path, &username, password) + .await + .map_err(SmbError::from)?; + + Ok(Self { + handle, + target_path: Some(target_path), + }) + } + + pub async fn disconnect(&mut self) -> Result<()> { + self.handle.close().await.map_err(SmbError::from) + } + + pub async fn get_full_info(&self, filename: String) -> Result { + // Safe to unwrap because there is always a server and share. + let target_path = self + .target_path + .clone() + .unwrap() + .with_path(filename.as_str()); + + // Define read access mask + let file_open_args = + FileCreateArgs::make_open_existing(FileAccessMask::new().with_generic_read(true)); + + let resource = self.handle.create_file(&target_path, &file_open_args).await; + + // From openvas-smb the query secinfo flags are 0x7 which means the following three. + let additional_info = AdditionalInfo::new() + .with_owner_security_information(true) + .with_group_security_information(true) + .with_dacl_security_information(true); + + let response = match resource { + Ok(Resource::File(f)) => { + let r = f + .query_security_info(additional_info) + .await + .map_err(|e| SmbError::SmbQuery(e.to_string()))?; + f.close().await.map_err(|e| SmbError::Smb(e.to_string()))?; + r + } + Ok(Resource::Directory(d)) => { + let r = d + .query_security_info(additional_info) + .await + .map_err(|e| SmbError::SmbQuery(e.to_string()))?; + d.close().await.map_err(|e| SmbError::Smb(e.to_string()))?; + r + } + Ok(Resource::Pipe(p)) => { + let r = p + .query_security_info(additional_info) + .await + .map_err(|e| SmbError::SmbQuery(e.to_string()))?; + p.close().await.map_err(|e| SmbError::Smb(e.to_string()))?; + r + } + Err(e) => return Err(SmbError::Smb(e.to_string())), + }; + + // convert response to SDDL format + let mut writer = Cursor::new(Vec::new()); + response + .write(&mut writer) + .map_err(|e| SmbError::SerializeError(e.to_string()))?; + let raw_sd = writer.into_inner(); + let sd = sddl::SecurityDescriptor::from_bytes(&raw_sd) + .map_err(|e| SmbError::SerializeError(e.to_string()))?; + let ret = format!("{}", sd); + + Ok(ret) + } +} + +#[derive(Default)] +pub struct SmbHandles { + handles: HashMap>, +} + +impl SmbHandles { + pub async fn get_by_id(&self, id: HandleId) -> Result> { + Ok(self + .handles + .get(&id) + .ok_or(SmbError::SMBHandleIdNotFound(id))? + .lock() + .await) + } + + /// Return the next available session ID + pub fn next_handle_id(&self) -> Result { + let taken_ids: HashSet<_> = self.handles.keys().collect(); + if taken_ids.is_empty() { + Ok(MIN_HANDLE_ID) + } else { + let max_val = **taken_ids.iter().max().unwrap() + 1; + Ok((MIN_HANDLE_ID..=max_val) + .find(|id| !taken_ids.contains(id)) + .unwrap()) + } + } + + pub fn insert(&mut self, handle_id: HandleId, handle: Mutex) { + self.handles.insert(handle_id, handle); + } + + pub fn remove(&mut self, handle_id: HandleId) -> Result<()> { + self.handles.remove(&handle_id); + Ok(()) + } +} diff --git a/rust/src/nasl/builtin/smb/mod.rs b/rust/src/nasl/builtin/smb/mod.rs new file mode 100644 index 0000000000..eaf71ab60a --- /dev/null +++ b/rust/src/nasl/builtin/smb/mod.rs @@ -0,0 +1,119 @@ +// SPDX-FileCopyrightText: 2025 Greenbone AG +// +// SPDX-License-Identifier: GPL-2.0-or-later WITH x11vnc-openssl-exception + +mod error; +mod handle; +use crate::nasl::prelude::*; +use std::net::IpAddr; +use std::process::Command; +use std::str::FromStr; + +use dns_lookup::lookup_addr; + +use tokio::sync::Mutex; + +pub use error::{Result, SmbError}; +pub use handle::SmbHandles as Smb; +use handle::{HandleId, SmbHandle}; + +const SMB_LIB_IMPLEMENTATION_VERSION: &str = "0.0.1"; + +#[nasl_function] +fn smb_versioninfo() -> String { + SMB_LIB_IMPLEMENTATION_VERSION.to_string() +} + +impl Smb { + #[nasl_function(named(username, password, share))] + async fn smb_connect( + &mut self, + ctx: &ScanCtx<'_>, + username: String, + password: String, + share: String, + ) -> Result { + let server = ctx.target().ip_addr(); + let id = self.next_handle_id()?; + + let handle = + Mutex::new(SmbHandle::new(server.to_string(), share, username, password).await?); + self.insert(id, handle); + Ok(id) + } + + #[nasl_function(named(smb_handle))] + async fn smb_close(&mut self, smb_handle: i32) -> Result<()> { + { + let mut handle = self.get_by_id(smb_handle).await?; + handle.disconnect().await?; + } + Ok(self.remove(smb_handle)?) + } + + #[nasl_function(named(smb_handle, filename))] + async fn smb_file_sddl(&mut self, smb_handle: i32, filename: String) -> Result { + let handle = self.get_by_id(smb_handle).await?; + + Ok(handle.get_full_info(filename).await?) + } +} + +#[nasl_function(named(host, username, password, realm, kdc, cmd))] +fn nasl_win_cmd_exec( + ctx: &ScanCtx<'_>, + host: Option, + username: String, + password: String, + realm: Option, + kdc: Option, + cmd: String, +) -> Result> { + let host = if let Some(host) = host { + IpAddr::from_str(&host)? + } else { + ctx.target().ip_addr() + }; + + let host = if kdc.is_some() { + lookup_addr(&host)? + } else { + host.to_string() + }; + + let username = username.replacen("\\", "/", 1); + let realm = realm.unwrap_or_default(); + let target = if username.contains("/") { + format!("{username}:{password}@{host}") + } else { + format!("{realm}/{username}:{password}@{host}") + }; + + // Construct the command + let mut output = Command::new("impacket-wmiexec"); + if let Some(ref krb5) = kdc { + let first_kdc = if let Some(i) = krb5.find(",") { + &krb5[..i] + } else { + krb5 + }; + output.arg("-k").arg("-dc-ip").arg(first_kdc); + } + output.arg(target).arg(cmd); + + let child = output.spawn()?; + + let ret = child.wait_with_output()?; + Ok(Some(String::from_utf8_lossy(&ret.stdout).to_string())) +} + +function_set! { + Smb, + ( + (Smb::smb_connect, "smb_connect"), + (Smb::smb_close, "smb_close"), + (Smb::smb_file_sddl, "smb_file_SDDL"), + (nasl_win_cmd_exec, "win_cmd_exec"), + smb_versioninfo, + ) +} diff --git a/rust/src/nasl/builtin/wmi/mod.rs b/rust/src/nasl/builtin/wmi/mod.rs index cb02dd946b..989d70926d 100644 --- a/rust/src/nasl/builtin/wmi/mod.rs +++ b/rust/src/nasl/builtin/wmi/mod.rs @@ -1,30 +1,21 @@ -// SPDX-FileCopyrightText: 2025 Greenbone AG +// SPDX-FileCopyrightText: 2026 Greenbone AG // // SPDX-License-Identifier: GPL-2.0-or-later WITH x11vnc-openssl-exception use crate::nasl::prelude::*; -#[nasl_function] -fn wmi_versioninfo() -> NaslValue { - //TODO: once we have a wmi facility, fill this function. - // We just want to satisfy toolcheck.nasl for now. - NaslValue::Null -} +const WMI_LIB_IMPLEMENTATION_VERSION: &str = "0.0.1"; #[nasl_function] -fn smb_versioninfo() -> NaslValue { - //TODO: once we have a wmi facility, fill this function. - // We just want to satisfy toolcheck.nasl for now. - NaslValue::Null +fn wmi_versioninfo() -> String { + WMI_LIB_IMPLEMENTATION_VERSION.to_string() } -#[derive(Default)] pub struct Wmi; function_set! { Wmi, ( - wmi_versioninfo, - smb_versioninfo, + wmi_versioninfo, ) }