From 6a602ee4d4077fd165551c15daf50ab5d3de8dc5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:45:16 +0000 Subject: [PATCH 1/4] Initial plan From 16dcfe8edd6f7063164acffef1130ec008244042 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Dec 2025 10:20:19 +0000 Subject: [PATCH 2/4] Fix CI build errors by updating IronRDP dependencies and adapting to API changes Co-authored-by: CBenoit <3809077+CBenoit@users.noreply.github.com> --- Cargo.lock | 922 ++++++++++++--------------- Cargo.toml | 10 + devolutions-agent/Cargo.toml | 2 +- devolutions-gateway/Cargo.toml | 10 +- devolutions-gateway/src/rdp_pcb.rs | 2 +- devolutions-gateway/src/rdp_proxy.rs | 8 +- 6 files changed, 441 insertions(+), 513 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 62220291d..3afd61005 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,9 +160,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "asn1-rs" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -170,14 +170,14 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] name = "asn1-rs-derive" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2 1.0.103", "quote 1.0.42", @@ -285,6 +285,15 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -713,6 +722,12 @@ version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + [[package]] name = "byteorder" version = "1.5.0" @@ -851,7 +866,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common 0.1.7", + "crypto-common 0.1.6", "inout 0.1.4", ] @@ -957,6 +972,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam" version = "0.8.4" @@ -1013,15 +1034,6 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" -[[package]] -name = "crypto" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf1e6e5492f8f0830c37f301f6349e0dac8b2466e4fe89eef90e9eef906cd046" -dependencies = [ - "crypto-common 0.1.7", -] - [[package]] name = "crypto-bigint" version = "0.7.0-rc.8" @@ -1038,9 +1050,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "typenum", @@ -1077,6 +1089,29 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "cryptoki" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781357a7779a8e92ea985121bbf379a9adf0777f44ab6392efc6abd5aa9b67db" +dependencies = [ + "bitflags 1.3.2", + "cryptoki-sys", + "libloading", + "log", + "paste", + "secrecy", +] + +[[package]] +name = "cryptoki-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "753e27d860277930ae9f394c119c8c70303236aab0ffab1d51f3d207dbb2bc4b" +dependencies = [ + "libloading", +] + [[package]] name = "ctr" version = "0.10.0-rc.1" @@ -1159,6 +1194,7 @@ dependencies = [ "const-oid 0.9.6", "der_derive", "flagset", + "pem-rfc7468 0.7.0", "zeroize", ] @@ -1169,15 +1205,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9d8dd2f26c86b27a2a8ea2767ec7f9df7a89516e4794e54ac01ee618dda3aa4" dependencies = [ "const-oid 0.10.1", - "pem-rfc7468", + "pem-rfc7468 1.0.0-rc.3", "zeroize", ] [[package]] name = "der-parser" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" dependencies = [ "asn1-rs", "displaydoc", @@ -1218,15 +1254,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "des" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" -dependencies = [ - "cipher 0.4.4", -] - [[package]] name = "des" version = "0.9.0-rc.1" @@ -1285,7 +1312,7 @@ dependencies = [ "serde_json", "thiserror 2.0.17", "uuid", - "windows-registry", + "windows-registry 0.5.3", "windows-result 0.3.4", ] @@ -1322,12 +1349,12 @@ dependencies = [ "http-client-proxy", "hyper 1.8.1", "hyper-util", - "ironrdp-acceptor 0.6.0", - "ironrdp-connector 0.6.0", + "ironrdp-acceptor", + "ironrdp-connector", "ironrdp-core", - "ironrdp-pdu 0.5.0", + "ironrdp-pdu", "ironrdp-rdcleanpath", - "ironrdp-tokio 0.6.0", + "ironrdp-tokio", "jmux-proxy", "job-queue", "job-queue-libsql", @@ -1340,7 +1367,7 @@ dependencies = [ "parking_lot", "pcap-file", "picky", - "picky-krb 0.12.0", + "picky-krb", "pin-project-lite 0.2.16", "portpicker", "proptest", @@ -1503,7 +1530,7 @@ dependencies = [ "tower 0.3.1", "uuid", "win-api-wrappers", - "windows-registry", + "windows-registry 0.5.3", ] [[package]] @@ -1558,8 +1585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid 0.9.6", - "crypto-common 0.1.7", + "crypto-common 0.1.6", "subtle", ] @@ -1740,7 +1766,7 @@ dependencies = [ "digest 0.11.0-rc.3", "elliptic-curve", "rfc6979", - "signature 3.0.0-rc.4", + "signature", "spki 0.8.0-rc.4", "zeroize", ] @@ -1751,8 +1777,8 @@ 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", + "pkcs8", + "signature", ] [[package]] @@ -1789,8 +1815,8 @@ dependencies = [ "hkdf", "hybrid-array", "once_cell", - "pem-rfc7468", - "pkcs8 0.11.0-rc.7", + "pem-rfc7468 1.0.0-rc.3", + "pkcs8", "rand_core 0.9.3", "sec1", "subtle", @@ -1916,6 +1942,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", + "libz-sys", "miniz_oxide", ] @@ -2112,9 +2139,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -2211,6 +2238,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -2266,6 +2302,19 @@ dependencies = [ "http 1.4.0", ] +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "spin 0.9.8", + "stable_deref_trait", +] + [[package]] name = "hermit-abi" version = "0.5.2" @@ -2811,117 +2860,76 @@ dependencies = [ [[package]] name = "ironrdp" -version = "0.5.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.13.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ - "ironrdp-acceptor 0.1.0", + "ironrdp-acceptor", "ironrdp-server", ] [[package]] name = "ironrdp-acceptor" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" -dependencies = [ - "ironrdp-async 0.1.0", - "ironrdp-connector 0.1.0", - "ironrdp-pdu 0.1.0", - "ironrdp-svc 0.1.0", - "tracing", -] - -[[package]] -name = "ironrdp-acceptor" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7bbe1fd9a54d5e9669e4006f4840ea89339cebff2a7fb345dc925b17547925b" +version = "0.7.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ - "ironrdp-async 0.6.0", - "ironrdp-connector 0.6.0", + "ironrdp-async", + "ironrdp-connector", "ironrdp-core", - "ironrdp-pdu 0.5.0", - "ironrdp-svc 0.4.1", + "ironrdp-pdu", + "ironrdp-svc", "tracing", ] [[package]] name = "ironrdp-ainput" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.4.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bitflags 2.10.0", + "ironrdp-core", "ironrdp-dvc", - "ironrdp-pdu 0.1.0", "num-derive", "num-traits", ] [[package]] name = "ironrdp-async" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" -dependencies = [ - "bytes 1.11.0", - "ironrdp-connector 0.1.0", - "ironrdp-pdu 0.1.0", - "tracing", -] - -[[package]] -name = "ironrdp-async" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724ce488772b7850f6307b4d82559d87dadb7afdf816a35f6cf6e5a989a716f0" +version = "0.7.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bytes 1.11.0", - "ironrdp-connector 0.6.0", + "ironrdp-connector", "ironrdp-core", - "ironrdp-pdu 0.5.0", + "ironrdp-pdu", "tracing", ] [[package]] name = "ironrdp-cliprdr" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.4.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bitflags 2.10.0", - "ironrdp-pdu 0.1.0", - "ironrdp-svc 0.1.0", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "ironrdp-connector" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" -dependencies = [ - "ironrdp-error 0.1.0", - "ironrdp-pdu 0.1.0", - "ironrdp-svc 0.1.0", - "rand_core 0.6.4", - "sspi 0.11.1", + "ironrdp-core", + "ironrdp-pdu", + "ironrdp-svc", "tracing", - "url", - "winapi", ] [[package]] name = "ironrdp-connector" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb98a29bdd7ef95b490050ddabe4ddd816e527ea0df9f25cc7a9a30d2584dc1" +version = "0.7.1" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "ironrdp-core", - "ironrdp-error 0.1.3", - "ironrdp-pdu 0.5.0", - "ironrdp-svc 0.4.1", + "ironrdp-error", + "ironrdp-pdu", + "ironrdp-svc", "picky", - "picky-asn1-der 0.5.4", - "picky-asn1-x509 0.14.6", - "rand_core 0.6.4", - "sspi 0.16.1", + "picky-asn1-der", + "picky-asn1-x509", + "rand 0.9.2", + "sspi", "tracing", "url", ] @@ -2929,96 +2937,67 @@ dependencies = [ [[package]] name = "ironrdp-core" version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2db60a59716a84d09040d29c9e75e81545842510fccb0934c09b28e78b46680" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ - "ironrdp-error 0.1.3", + "ironrdp-error", ] [[package]] name = "ironrdp-displaycontrol" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.4.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ + "ironrdp-core", "ironrdp-dvc", - "ironrdp-pdu 0.1.0", - "ironrdp-svc 0.1.0", + "ironrdp-pdu", + "ironrdp-svc", "tracing", ] [[package]] name = "ironrdp-dvc" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.4.1" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ - "ironrdp-pdu 0.1.0", - "ironrdp-svc 0.1.0", + "ironrdp-core", + "ironrdp-pdu", + "ironrdp-svc", "slab", "tracing", ] -[[package]] -name = "ironrdp-error" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" - [[package]] name = "ironrdp-error" version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9d7794e854eef2f13fdf79c8502bcc567a75a15fd0522885f37739386a4cef" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" [[package]] name = "ironrdp-graphics" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.6.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bit_field", "bitflags 2.10.0", "bitvec", "byteorder", - "ironrdp-error 0.1.0", - "ironrdp-pdu 0.1.0", - "lazy_static", - "num-derive", - "num-traits", - "thiserror 1.0.69", -] - -[[package]] -name = "ironrdp-pdu" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" -dependencies = [ - "bit_field", - "bitflags 2.10.0", - "byteorder", - "der-parser", - "ironrdp-error 0.1.0", - "md-5 0.10.6", - "num-bigint", + "ironrdp-core", + "ironrdp-pdu", "num-derive", - "num-integer", "num-traits", - "pkcs1 0.7.5", - "sha1 0.10.6", - "tap", - "thiserror 1.0.69", - "x509-cert", + "yuv", ] [[package]] name = "ironrdp-pdu" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc69c5d6ad3399965e0d3762886857f5861d4d854efe8d2bfc3462eb2b2b555a" +version = "0.6.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bit_field", "bitflags 2.10.0", "byteorder", "der-parser", "ironrdp-core", - "ironrdp-error 0.1.3", + "ironrdp-error", "md-5 0.10.6", "num-bigint", "num-derive", @@ -3027,91 +3006,96 @@ dependencies = [ "pkcs1 0.7.5", "sha1 0.10.6", "tap", - "thiserror 1.0.69", + "thiserror 2.0.17", "x509-cert", ] [[package]] name = "ironrdp-rdcleanpath" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3f5401de43e86384ac0f7f356af8c0bdc321671853f76095da5d480d6998e0" +version = "0.2.1" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "der 0.7.10", ] [[package]] name = "ironrdp-rdpsnd" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.6.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bitflags 2.10.0", - "ironrdp-pdu 0.1.0", - "ironrdp-svc 0.1.0", + "ironrdp-core", + "ironrdp-pdu", + "ironrdp-svc", "tracing", ] [[package]] name = "ironrdp-server" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.9.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "anyhow", "async-trait", - "ironrdp-acceptor 0.1.0", + "bytes 1.11.0", + "ironrdp-acceptor", "ironrdp-ainput", + "ironrdp-async", "ironrdp-cliprdr", + "ironrdp-core", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-graphics", - "ironrdp-pdu 0.1.0", + "ironrdp-pdu", "ironrdp-rdpsnd", - "ironrdp-svc 0.1.0", - "ironrdp-tokio 0.1.0", + "ironrdp-svc", + "ironrdp-tokio", + "qoicoubeh", + "rayon", + "rustls-pemfile 2.2.0", "tokio 1.48.0", "tokio-rustls", "tracing", + "x509-cert", + "zstd-safe", ] [[package]] name = "ironrdp-svc" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" -dependencies = [ - "bitflags 2.10.0", - "ironrdp-pdu 0.1.0", -] - -[[package]] -name = "ironrdp-svc" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98959b1f0f4e9ae705880c73d604ad8f8ebf99feb2e33507092773c4b091c76c" +version = "0.5.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bitflags 2.10.0", "ironrdp-core", - "ironrdp-pdu 0.5.0", + "ironrdp-pdu", ] [[package]] name = "ironrdp-tokio" -version = "0.1.0" -source = "git+https://github.com/Devolutions/IronRDP?rev=2e1a9ac88e38e7d92d893007bc25d0a05c365861#2e1a9ac88e38e7d92d893007bc25d0a05c365861" +version = "0.7.0" +source = "git+https://github.com/Devolutions/IronRDP?rev=bd2aed76867f4038c32df9a0d24532ee40d2f14c#bd2aed76867f4038c32df9a0d24532ee40d2f14c" dependencies = [ "bytes 1.11.0", - "ironrdp-async 0.1.0", + "ironrdp-async", "tokio 1.48.0", ] [[package]] -name = "ironrdp-tokio" -version = "0.6.0" +name = "iso7816" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5815ae4dd7866a6730efb653281406a77fd1f5426d77dd959fc04e3512410f" +checksum = "cd3c7e91da489667bb054f9cd2f1c60cc2ac4478a899f403d11dbc62189215b0" dependencies = [ - "bytes 1.11.0", - "ironrdp-async 0.6.0", - "tokio 1.48.0", + "heapless", +] + +[[package]] +name = "iso7816-tlv" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7660d28d24a831d690228a275d544654a30f3b167a8e491cf31af5fe5058b546" +dependencies = [ + "untrusted 0.9.0", ] [[package]] @@ -3266,10 +3250,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f02a8789fa3ae967c245095183b29a7414b930d110d8b7fd4dffc5d366120ce0" dependencies = [ "argon2", - "picky-asn1 0.10.1", - "picky-asn1-der 0.5.4", - "picky-asn1-x509 0.15.2", - "picky-krb 0.12.0", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "picky-krb", "thiserror 2.0.17", "time", "tracing", @@ -3310,9 +3294,6 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] [[package]] name = "lazycell" @@ -3554,6 +3535,17 @@ dependencies = [ "zerocopy 0.7.35", ] +[[package]] +name = "libz-sys" +version = "1.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -4095,7 +4087,7 @@ checksum = "50f0690370ba64c23218c7eaf146b8d84b21b265bbad0dafb19b38c92327ef35" dependencies = [ "bitflags 2.10.0", "ironrdp-core", - "ironrdp-error 0.1.3", + "ironrdp-error", "uuid", ] @@ -4127,23 +4119,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-bigint-dig" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" -dependencies = [ - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand 0.8.5", - "serde", - "smallvec", - "zeroize", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -4170,17 +4145,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -4188,7 +4152,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -4385,17 +4348,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac 0.12.1", - "sha1 0.10.6", -] - [[package]] name = "pbkdf2" version = "0.13.0-rc.1" @@ -4432,6 +4384,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "pem-rfc7468" version = "1.0.0-rc.3" @@ -4526,7 +4487,7 @@ dependencies = [ "ctr", "curve25519-dalek", "der 0.8.0-rc.9", - "des 0.9.0-rc.1", + "des", "digest 0.11.0-rc.3", "ecdsa", "ed25519", @@ -4545,13 +4506,13 @@ dependencies = [ "p256", "p384", "p521", - "pbkdf2 0.13.0-rc.1", - "pem-rfc7468", - "picky-asn1 0.10.1", - "picky-asn1-der 0.5.4", - "picky-asn1-x509 0.15.2", + "pbkdf2", + "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", + "pkcs8", "polyval", "primefield", "primeorder", @@ -4559,14 +4520,14 @@ dependencies = [ "rand_core 0.9.3", "rc2", "rfc6979", - "rsa 0.10.0-rc.9", + "rsa", "sec1", "serde", "serde_json", "sha1 0.11.0-rc.2", "sha2 0.11.0-rc.2", "sha3", - "signature 3.0.0-rc.4", + "signature", "spki 0.8.0-rc.4", "thiserror 2.0.17", "time", @@ -4575,18 +4536,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "picky-asn1" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "295eea0f33c16be21e2a98b908fdd4d73c04dd48c8480991b76dbcf0cb58b212" -dependencies = [ - "oid", - "serde", - "serde_bytes", - "time", -] - [[package]] name = "picky-asn1" version = "0.10.1" @@ -4602,54 +4551,15 @@ dependencies = [ [[package]] name = "picky-asn1-der" -version = "0.4.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df7873a9e36d42dadb393bea5e211fe83d793c172afad5fb4ec846ec582793f" +checksum = "b491eb61603cba1ad5c6be0269883538f8d74136c35e3641a840fb0fbcd41efc" dependencies = [ - "picky-asn1 0.8.0", - "serde", - "serde_bytes", -] - -[[package]] -name = "picky-asn1-der" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b491eb61603cba1ad5c6be0269883538f8d74136c35e3641a840fb0fbcd41efc" -dependencies = [ - "picky-asn1 0.10.1", + "picky-asn1", "serde", "serde_bytes", ] -[[package]] -name = "picky-asn1-x509" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5f20f71a68499ff32310f418a6fad8816eac1a2859ed3f0c5c741389dd6208" -dependencies = [ - "base64 0.21.7", - "oid", - "picky-asn1 0.8.0", - "picky-asn1-der 0.4.1", - "serde", - "widestring 1.2.1", -] - -[[package]] -name = "picky-asn1-x509" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d493f73cf052073ca1fe38666f74c2396987aa6ea660e77dd624cc6c8f60389e" -dependencies = [ - "base64 0.22.1", - "oid", - "picky-asn1 0.10.1", - "picky-asn1-der 0.5.4", - "serde", - "widestring 1.2.1", -] - [[package]] name = "picky-asn1-x509" version = "0.15.2" @@ -4659,67 +4569,13 @@ dependencies = [ "base64 0.22.1", "crypto-bigint", "oid", - "picky-asn1 0.10.1", - "picky-asn1-der 0.5.4", + "picky-asn1", + "picky-asn1-der", "serde", + "widestring 1.2.1", "zeroize", ] -[[package]] -name = "picky-krb" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71cf61ebe6e657a81bcac31f9d61d52c23a1fd517b0dad77b915a7d3d15d2e8" -dependencies = [ - "aes 0.8.4", - "byteorder", - "cbc 0.1.2", - "crypto", - "des 0.8.1", - "hmac 0.12.1", - "num-bigint-dig", - "oid", - "pbkdf2 0.12.2", - "picky-asn1 0.8.0", - "picky-asn1-der 0.4.1", - "picky-asn1-x509 0.12.0", - "rand 0.8.5", - "serde", - "sha1 0.10.6", - "thiserror 1.0.69", - "uuid", -] - -[[package]] -name = "picky-krb" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b13eb1a97b2293277b475f07d0c36c33579e2e71f852557015addcd95f8892" -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", - "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 0.10.1", - "picky-asn1-der 0.5.4", - "picky-asn1-x509 0.15.2", - "rand 0.9.2", - "serde", - "sha1 0.11.0-rc.2", - "thiserror 2.0.17", - "uuid", -] - [[package]] name = "picky-krb" version = "0.12.0" @@ -4734,15 +4590,15 @@ dependencies = [ "cipher 0.5.0-rc.1", "crypto-bigint", "crypto-common 0.2.0-rc.4", - "des 0.9.0-rc.1", + "des", "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 0.10.1", - "picky-asn1-der 0.5.4", - "picky-asn1-x509 0.15.2", + "pbkdf2", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", "rand 0.9.2", "serde", "sha1 0.11.0-rc.2", @@ -4815,7 +4671,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ "der 0.7.10", - "pkcs8 0.10.2", "spki 0.7.3", ] @@ -4829,16 +4684,6 @@ dependencies = [ "spki 0.8.0-rc.4", ] -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der 0.7.10", - "spki 0.7.3", -] - [[package]] name = "pkcs8" version = "0.11.0-rc.7" @@ -5184,6 +5029,15 @@ dependencies = [ "winreg 0.55.0", ] +[[package]] +name = "qoicoubeh" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9b82aa3fef8a980075775b8c46f874823b5b4a15de327d2dbb3b6fd818480ba" +dependencies = [ + "bytemuck", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -5343,6 +5197,26 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "rc2" version = "0.9.0-pre.0" @@ -5525,27 +5399,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rsa" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" -dependencies = [ - "const-oid 0.9.6", - "digest 0.10.7", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1 0.7.5", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "sha1 0.10.6", - "signature 2.2.0", - "spki 0.7.3", - "subtle", - "zeroize", -] - [[package]] name = "rsa" version = "0.10.0-rc.9" @@ -5557,9 +5410,10 @@ dependencies = [ "crypto-primes", "digest 0.11.0-rc.3", "pkcs1 0.8.0-rc.4", - "pkcs8 0.11.0-rc.7", + "pkcs8", "rand_core 0.9.3", - "signature 3.0.0-rc.4", + "sha1 0.11.0-rc.2", + "signature", "spki 0.8.0-rc.4", "subtle", "zeroize", @@ -5876,6 +5730,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -6151,16 +6014,6 @@ dependencies = [ "libc", ] -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - [[package]] name = "signature" version = "3.0.0-rc.4" @@ -6277,88 +6130,64 @@ dependencies = [ [[package]] name = "sspi" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d31fab47d9290be28a8d027c8428756826f1d4fe1e5ba0f51d24f52c568e21" -dependencies = [ - "async-dnssd", - "async-recursion", - "bitflags 2.10.0", - "byteorder", - "cfg-if", - "crypto-mac", - "futures", - "hmac 0.12.1", - "lazy_static", - "md-5 0.10.6", - "md4", - "num-bigint-dig", - "num-derive", - "num-traits", - "oid", - "picky", - "picky-asn1 0.8.0", - "picky-asn1-der 0.4.1", - "picky-asn1-x509 0.12.0", - "picky-krb 0.8.0", - "rand 0.8.5", - "serde", - "serde_derive", - "sha1 0.10.6", - "sha2 0.10.9", - "time", - "tokio 1.48.0", - "tracing", - "url", - "uuid", - "winapi", - "windows 0.51.1", - "windows-sys 0.48.0", - "winreg 0.51.0", - "zeroize", -] - -[[package]] -name = "sspi" -version = "0.16.1" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523f6a99e26c1e6476a424d54bbda5354a01ee7f18b9d93dc48a8fd45ae8189b" +checksum = "43f73fe6be958ae27fa8e982d9acc42d16f34eb74714d95bb53015528667cae4" dependencies = [ "async-dnssd", "async-recursion", "bitflags 2.10.0", + "block-buffer 0.11.0-rc.5", "byteorder", "cfg-if", + "crypto-bigint", + "crypto-common 0.2.0-rc.4", "crypto-mac", + "crypto-primes", + "cryptoki", + "curve25519-dalek", + "der 0.8.0-rc.9", + "digest 0.11.0-rc.3", + "ed25519-dalek", + "ff", "futures", - "hmac 0.12.1", - "lazy_static", - "md-5 0.10.6", + "getrandom 0.3.4", + "group", + "hmac 0.13.0-rc.2", + "md-5 0.11.0-rc.2", "md4", - "num-bigint-dig", "num-derive", "num-traits", "oid", + "p256", + "p384", + "p521", + "pem-rfc7468 1.0.0-rc.3", "picky", - "picky-asn1 0.10.1", - "picky-asn1-der 0.5.4", - "picky-asn1-x509 0.14.6", - "picky-krb 0.11.3", - "rand 0.8.5", - "rsa 0.9.9", + "picky-asn1", + "picky-asn1-der", + "picky-asn1-x509", + "picky-krb", + "pkcs1 0.8.0-rc.4", + "pkcs8", + "primefield", + "primeorder", + "rand 0.9.2", + "rsa", "rustls 0.23.35", "serde", - "serde_derive", - "sha1 0.10.6", - "sha2 0.10.9", + "sha1 0.11.0-rc.2", + "sha2 0.11.0-rc.2", + "signature", + "spki 0.8.0-rc.4", "time", "tokio 1.48.0", "tracing", "url", "uuid", - "windows 0.61.3", - "windows-registry", - "windows-sys 0.60.2", + "windows 0.62.2", + "windows-registry 0.6.1", + "winscard", "zeroize", ] @@ -6637,6 +6466,7 @@ checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", + "js-sys", "libc", "num-conv", "num_threads", @@ -7911,25 +7741,27 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.51.1" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-core 0.51.1", - "windows-targets 0.48.5", + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", ] [[package]] name = "windows" -version = "0.61.3" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link 0.1.3", - "windows-numerics", + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -7942,12 +7774,12 @@ dependencies = [ ] [[package]] -name = "windows-core" -version = "0.51.1" +name = "windows-collections" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-targets 0.48.5", + "windows-core 0.62.2", ] [[package]] @@ -7984,7 +7816,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]] @@ -8031,6 +7874,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.5.3" @@ -8042,6 +7895,17 @@ dependencies = [ "windows-strings 0.4.2", ] +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + [[package]] name = "windows-result" version = "0.3.4" @@ -8204,6 +8068,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" @@ -8405,22 +8278,35 @@ dependencies = [ [[package]] name = "winreg" -version = "0.51.0" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] -name = "winreg" -version = "0.55.0" +name = "winscard" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +checksum = "73b6ec4e6176df62589d1ac9950f6295be87ca06ee61a7c9a579a2bcc80efe34" dependencies = [ - "cfg-if", - "windows-sys 0.59.0", + "bitflags 2.10.0", + "crypto-bigint", + "flate2", + "iso7816", + "iso7816-tlv", + "num-derive", + "num-traits", + "picky", + "picky-asn1-x509", + "rand_core 0.9.3", + "rsa", + "sha1 0.11.0-rc.2", + "time", + "tracing", + "uuid", ] [[package]] @@ -8500,6 +8386,15 @@ dependencies = [ "synstructure", ] +[[package]] +name = "yuv" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28f1bad143caadcfcaec93039dc9c40a30fc86f23d9e7cc03764a39fe51d9d43" +dependencies = [ + "num-traits", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -8614,3 +8509,22 @@ dependencies = [ "quote 1.0.42", "syn 2.0.111", ] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index b376bfbf0..d504049f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,16 @@ lto = true [patch.crates-io] tracing-appender = { git = "https://github.com/CBenoit/tracing.git", rev = "42097daf92e683cf18da7639ddccb056721a796c" } +# Patch IronRDP crates to use git master which has sspi 0.18.5 (fixes build error with sspi 0.16.1) +ironrdp-connector = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-acceptor = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-tokio = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c", features = ["reqwest"] } +ironrdp-async = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-pdu = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-svc = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-core = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-rdcleanpath = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } +ironrdp-error = { git = "https://github.com/Devolutions/IronRDP", rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" } [workspace.lints.rust] # Declare the custom cfgs. diff --git a/devolutions-agent/Cargo.toml b/devolutions-agent/Cargo.toml index c11e12c77..9c5415f04 100644 --- a/devolutions-agent/Cargo.toml +++ b/devolutions-agent/Cargo.toml @@ -34,7 +34,7 @@ url = "2.5" [dependencies.ironrdp] git = "https://github.com/Devolutions/IronRDP" -rev = "2e1a9ac88e38e7d92d893007bc25d0a05c365861" +rev = "bd2aed76867f4038c32df9a0d24532ee40d2f14c" default-features = false features = [ "server", # FIXME(@CBenoit): this is enabling AWS LC unconditionally. diff --git a/devolutions-gateway/Cargo.toml b/devolutions-gateway/Cargo.toml index 2cd64adb5..f43435824 100644 --- a/devolutions-gateway/Cargo.toml +++ b/devolutions-gateway/Cargo.toml @@ -34,12 +34,12 @@ terminal-streamer.path = "../crates/terminal-streamer" network-monitor.path = "../crates/network-monitor" sysevent.path = "../crates/sysevent" sysevent-codes.path = "../crates/sysevent-codes" -ironrdp-pdu = { version = "0.5", features = ["std"] } +ironrdp-pdu = { version = "0.6", features = ["std"] } ironrdp-core = { version = "0.1", features = ["std"] } -ironrdp-rdcleanpath = "0.1" -ironrdp-tokio = "0.6" -ironrdp-connector = { version = "0.6" } -ironrdp-acceptor = { version = "0.6" } +ironrdp-rdcleanpath = "0.2" +ironrdp-tokio = "0.7" +ironrdp-connector = { version = "0.7" } +ironrdp-acceptor = { version = "0.7" } ceviche = "0.7" picky-krb = "0.12" kdc = "0.1" diff --git a/devolutions-gateway/src/rdp_pcb.rs b/devolutions-gateway/src/rdp_pcb.rs index 3ff270deb..483cf970c 100644 --- a/devolutions-gateway/src/rdp_pcb.rs +++ b/devolutions-gateway/src/rdp_pcb.rs @@ -65,7 +65,7 @@ fn decode_pcb(buf: &[u8]) -> Result, io::Erro Ok(Some((pcb, read_len))) } - Err(e) if matches!(e.kind, ironrdp_core::DecodeErrorKind::NotEnoughBytes { .. }) => Ok(None), + Err(e) if matches!(e.kind(), ironrdp_core::DecodeErrorKind::NotEnoughBytes { .. }) => Ok(None), Err(e) => Err(io::Error::new(io::ErrorKind::InvalidData, e)), } } diff --git a/devolutions-gateway/src/rdp_proxy.rs b/devolutions-gateway/src/rdp_proxy.rs index 2e8062109..67ab77eae 100644 --- a/devolutions-gateway/src/rdp_proxy.rs +++ b/devolutions-gateway/src/rdp_proxy.rs @@ -269,12 +269,16 @@ where ironrdp_core::decode(&received_connect_initial.0.data).context("decode Connect Initial PDU")?; trace!(message = ?received_connect_initial, "Received Connect Initial PDU from client"); - received_connect_initial + let mut gcc_blocks = received_connect_initial .conference_create_request - .gcc_blocks + .gcc_blocks() + .clone(); + gcc_blocks .core .optional_data .server_selected_protocol = Some(server_security_protocol); + // Update the conference request with modified gcc_blocks + received_connect_initial.conference_create_request = ironrdp_pdu::gcc::ConferenceCreateRequest::new(gcc_blocks)?; trace!(message = ?received_connect_initial, "Send Connection Request PDU to server"); let x224_msg_buf = ironrdp_core::encode_vec(&received_connect_initial)?; let pdu = x224::X224Data { From a3d461fc3ba55bae970325feb082564b132f4cc7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Dec 2025 10:47:52 +0000 Subject: [PATCH 3/4] Run cargo +nightly fmt --all Co-authored-by: CBenoit <3809077+CBenoit@users.noreply.github.com> --- devolutions-gateway/src/rdp_proxy.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/devolutions-gateway/src/rdp_proxy.rs b/devolutions-gateway/src/rdp_proxy.rs index 67ab77eae..7e4c15592 100644 --- a/devolutions-gateway/src/rdp_proxy.rs +++ b/devolutions-gateway/src/rdp_proxy.rs @@ -269,14 +269,8 @@ where ironrdp_core::decode(&received_connect_initial.0.data).context("decode Connect Initial PDU")?; trace!(message = ?received_connect_initial, "Received Connect Initial PDU from client"); - let mut gcc_blocks = received_connect_initial - .conference_create_request - .gcc_blocks() - .clone(); - gcc_blocks - .core - .optional_data - .server_selected_protocol = Some(server_security_protocol); + let mut gcc_blocks = received_connect_initial.conference_create_request.gcc_blocks().clone(); + gcc_blocks.core.optional_data.server_selected_protocol = Some(server_security_protocol); // Update the conference request with modified gcc_blocks received_connect_initial.conference_create_request = ironrdp_pdu::gcc::ConferenceCreateRequest::new(gcc_blocks)?; trace!(message = ?received_connect_initial, "Send Connection Request PDU to server"); From a5effe39a7c5fab15bdb93ca782f79f4cfab88ad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Dec 2025 10:53:05 +0000 Subject: [PATCH 4/4] Use into_gcc_blocks() to avoid clone Co-authored-by: CBenoit <3809077+CBenoit@users.noreply.github.com> --- devolutions-gateway/src/rdp_proxy.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devolutions-gateway/src/rdp_proxy.rs b/devolutions-gateway/src/rdp_proxy.rs index 7e4c15592..aa47d38c6 100644 --- a/devolutions-gateway/src/rdp_proxy.rs +++ b/devolutions-gateway/src/rdp_proxy.rs @@ -269,7 +269,7 @@ where ironrdp_core::decode(&received_connect_initial.0.data).context("decode Connect Initial PDU")?; trace!(message = ?received_connect_initial, "Received Connect Initial PDU from client"); - let mut gcc_blocks = received_connect_initial.conference_create_request.gcc_blocks().clone(); + let mut gcc_blocks = received_connect_initial.conference_create_request.into_gcc_blocks(); gcc_blocks.core.optional_data.server_selected_protocol = Some(server_security_protocol); // Update the conference request with modified gcc_blocks received_connect_initial.conference_create_request = ironrdp_pdu::gcc::ConferenceCreateRequest::new(gcc_blocks)?;