Files
Andy Dixon 50c0104d57 feat(core): RDP client on IronRDP
clients::rdp connects over any caller-dialled TCP stream (direct, proxy
or SSH tunnel), upgrades to TLS and logs on with NLA (CredSSP/NTLM),
optionally falling back to TLS-only logon for servers without NLA such
as xrdp (credentials are passed so they log straight in). The server
certificate is pinned through a caller check on its SHA256 fingerprint
before any credentials are sent. The desktop decodes into the VNC
client's RGBA framebuffer; input (IronRDP's scancode/Unicode/mouse
operations), Display Control resizes and the deactivation-reactivation
sequence run on the session thread.

IronRDP's releases need three vendored patches (vendor/README.md):
picky and sspi with their RustCrypto release-candidate pins relaxed so
they share russh's stable versions (their own suites, 402 tests, pass
against them), and ironrdp-session with two unreleased upstream bitmap
fixes (#1486 stride, #1524 RDP6 orientation) without which xrdp desktops
render sheared.

Verified live against xrdp (scottyhardy/docker-remote-desktop): logon,
full desktop rendering, keyboard and mouse input.
2026-10-12 10:50:24 +01:00

39 lines
1.2 KiB
TOML

[package]
name = "ironrdp-session"
version = "0.11.0"
readme = "README.md"
description = "State machines to drive an RDP session"
edition.workspace = true
rust-version = "1.89"
license.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
[lib]
doctest = false
test = false
[features]
default = []
qoi = ["dep:qoicoubeh", "ironrdp-pdu/qoi"]
qoiz = ["dep:zstd-safe", "qoi"]
[dependencies]
ironrdp-bulk = { path = "../ironrdp-bulk", version = "0.1" }
ironrdp-core = { path = "../ironrdp-core", version = "0.2" } # public
ironrdp-svc = { path = "../ironrdp-svc", version = "0.8" } # public
ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.8" } # public
ironrdp-error = { path = "../ironrdp-error", version = "0.2" } # public
ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.9" } # public
ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.9", features = ["std"] } # public
ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.8" }
tracing = { version = "0.1", features = ["log"] }
qoicoubeh = { version = "0.5", optional = true }
zstd-safe = { version = "7.2", optional = true, features = ["std"] }
[lints]
workspace = true