95bd218183
Lands M2 wave 1 — three pure-Rust modules under crates/mxaccess-rpc with 60 unit tests. Each is a 1:1 port of one .NET reference file: - ntlm.rs (1137 LoC, 19 tests) — `ManagedNtlmClientContext.cs`. NTLMv2 challenge/response, Type1/Type3 builders, sign() with RC4-sealed checksum and per-call sequence advance. Manual `Debug` impl that hides credentials; not Clone (rc4 0.2 cipher state is non-Clone). Pure-Rust crypto via hmac/md-5/md4/rc4 v0.2/rand v0.8 (rc4 0.2 chosen per design/review.md:78). - pdu.rs (1573 LoC, 33 tests) — `DceRpcPdu.cs` + auth-trailer types from `DceRpcAuthentication.cs`. Bind/AlterContext/Auth3/Request/Response/Fault PDUs, NDR20 transfer syntax, auth_value with 4-byte alignment padding, preserved-byte fields per CLAUDE.md unknown-bytes rule. - objref.rs (~470 LoC, 11 tests including a 366-byte captured OBJREF round-trip) — `ComObjRef.cs`. MEOW signature, OXID/OID/IPID, dual-string array with printable-ASCII escaping and security-binding boundary. ComObjRefProvider.cs deferred (windows-rs Win32 wrapper — see F6). Every wire-byte claim cites src/MxNativeClient/<file>.cs:LINE per CLAUDE.md "no fabricated protocol behaviour" rule. Test count delta: 217 → 277 (+60) Open followups touched: F1–F8 (new — see design/followups.md) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
356 lines
8.1 KiB
TOML
356 lines
8.1 KiB
TOML
# This file is automatically @generated by Cargo.
|
|
# It is not intended for manual editing.
|
|
version = 4
|
|
|
|
[[package]]
|
|
name = "block-buffer"
|
|
version = "0.10.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
|
dependencies = [
|
|
"generic-array",
|
|
]
|
|
|
|
[[package]]
|
|
name = "block-buffer"
|
|
version = "0.12.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be"
|
|
dependencies = [
|
|
"hybrid-array",
|
|
]
|
|
|
|
[[package]]
|
|
name = "cfg-if"
|
|
version = "1.0.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
|
|
[[package]]
|
|
name = "cipher"
|
|
version = "0.5.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e34d8227fe1ba289043aeb13792056ff80fd6de1a9f49137a5f499de8e8c78ea"
|
|
dependencies = [
|
|
"block-buffer 0.12.0",
|
|
"crypto-common 0.2.1",
|
|
"inout",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crypto-common"
|
|
version = "0.1.7"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
|
|
dependencies = [
|
|
"generic-array",
|
|
"typenum",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crypto-common"
|
|
version = "0.2.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710"
|
|
dependencies = [
|
|
"hybrid-array",
|
|
]
|
|
|
|
[[package]]
|
|
name = "digest"
|
|
version = "0.10.7"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
|
dependencies = [
|
|
"block-buffer 0.10.4",
|
|
"crypto-common 0.1.7",
|
|
"subtle",
|
|
]
|
|
|
|
[[package]]
|
|
name = "generic-array"
|
|
version = "0.14.7"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
|
dependencies = [
|
|
"typenum",
|
|
"version_check",
|
|
]
|
|
|
|
[[package]]
|
|
name = "getrandom"
|
|
version = "0.2.17"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
|
|
dependencies = [
|
|
"cfg-if",
|
|
"libc",
|
|
"wasi",
|
|
]
|
|
|
|
[[package]]
|
|
name = "hmac"
|
|
version = "0.12.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
|
|
dependencies = [
|
|
"digest",
|
|
]
|
|
|
|
[[package]]
|
|
name = "hybrid-array"
|
|
version = "0.4.11"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5"
|
|
dependencies = [
|
|
"typenum",
|
|
]
|
|
|
|
[[package]]
|
|
name = "inout"
|
|
version = "0.2.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7"
|
|
dependencies = [
|
|
"hybrid-array",
|
|
]
|
|
|
|
[[package]]
|
|
name = "libc"
|
|
version = "0.2.186"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
|
|
[[package]]
|
|
name = "md-5"
|
|
version = "0.10.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
|
|
dependencies = [
|
|
"cfg-if",
|
|
"digest",
|
|
]
|
|
|
|
[[package]]
|
|
name = "md4"
|
|
version = "0.10.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7da5ac363534dce5fabf69949225e174fbf111a498bf0ff794c8ea1fba9f3dda"
|
|
dependencies = [
|
|
"digest",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"mxaccess-codec",
|
|
"thiserror",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess-asb"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"mxaccess-asb-nettcp",
|
|
"mxaccess-codec",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess-asb-nettcp"
|
|
version = "0.0.0"
|
|
|
|
[[package]]
|
|
name = "mxaccess-callback"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"mxaccess-codec",
|
|
"mxaccess-rpc",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess-codec"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"thiserror",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess-compat"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"mxaccess",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess-galaxy"
|
|
version = "0.0.0"
|
|
|
|
[[package]]
|
|
name = "mxaccess-nmx"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"mxaccess-callback",
|
|
"mxaccess-codec",
|
|
"mxaccess-rpc",
|
|
]
|
|
|
|
[[package]]
|
|
name = "mxaccess-rpc"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"hmac",
|
|
"md-5",
|
|
"md4",
|
|
"rand",
|
|
"rc4",
|
|
"thiserror",
|
|
]
|
|
|
|
[[package]]
|
|
name = "ppv-lite86"
|
|
version = "0.2.21"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
|
|
dependencies = [
|
|
"zerocopy",
|
|
]
|
|
|
|
[[package]]
|
|
name = "proc-macro2"
|
|
version = "1.0.106"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
dependencies = [
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "quote"
|
|
version = "1.0.45"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
]
|
|
|
|
[[package]]
|
|
name = "rand"
|
|
version = "0.8.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
|
|
dependencies = [
|
|
"libc",
|
|
"rand_chacha",
|
|
"rand_core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "rand_chacha"
|
|
version = "0.3.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
|
dependencies = [
|
|
"ppv-lite86",
|
|
"rand_core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "rand_core"
|
|
version = "0.6.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
|
dependencies = [
|
|
"getrandom",
|
|
]
|
|
|
|
[[package]]
|
|
name = "rc4"
|
|
version = "0.2.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "840038b674daa9f7a7957440d937951d15c0143c056e631e529141fd780e0c92"
|
|
dependencies = [
|
|
"cipher",
|
|
]
|
|
|
|
[[package]]
|
|
name = "subtle"
|
|
version = "2.6.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
|
|
|
[[package]]
|
|
name = "syn"
|
|
version = "2.0.117"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "thiserror"
|
|
version = "2.0.18"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
|
|
dependencies = [
|
|
"thiserror-impl",
|
|
]
|
|
|
|
[[package]]
|
|
name = "thiserror-impl"
|
|
version = "2.0.18"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "typenum"
|
|
version = "1.20.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
|
|
|
|
[[package]]
|
|
name = "unicode-ident"
|
|
version = "1.0.24"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
|
|
[[package]]
|
|
name = "version_check"
|
|
version = "0.9.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
|
|
[[package]]
|
|
name = "wasi"
|
|
version = "0.11.1+wasi-snapshot-preview1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|
|
|
[[package]]
|
|
name = "zerocopy"
|
|
version = "0.8.48"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
|
|
dependencies = [
|
|
"zerocopy-derive",
|
|
]
|
|
|
|
[[package]]
|
|
name = "zerocopy-derive"
|
|
version = "0.8.48"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|