[package] name = "sspi" version = "0.14.2" edition = "2021" readme = "README.md" license = "MIT OR Apache-2.0" homepage = "https://github.com/devolutions/sspi-rs" repository = "https://github.com/devolutions/sspi-rs" authors = ["Devolutions Inc. "] description = "A Rust implementation of the Security Support Provider Interface (SSPI) API" keywords = ["ntlm", "auth", "sspi", "windows", "kerberos"] [[example]] name = "kerberos" required-features = ["network_client"] [workspace] resolver = "2" members = [ "ffi", "ffi/symbol-rename-macro", "crates/winscard", "crates/ffi-types", ] exclude = [ "tools/wasm-testcompile", ] [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] } [workspace.dependencies] uuid = { version = "1.11", default-features = false } tracing = { version = "0.1", default-features = false } bitflags = "2.6" rand = "0.8" cfg-if = "1" time = { version = "0.3", default-features = false } sha1 = { version = "0.10", default-features = false } num-derive = "0.4" num-traits = { version = "0.2", default-features = false } picky = { version = "7.0.0-rc.9", default-features = false } picky-asn1-der = "0.5" picky-asn1-x509 = "0.13" tokio = "1.41" ffi-types = { path = "crates/ffi-types" } winscard = { version = "0.2", path = "crates/winscard" } rsa = { version = "0.9.6", default-features = false } windows-sys = "0.59" base64 = "0.22" whoami = "1.5" tracing-subscriber = "0.3" proptest = "1.5" [features] default = ["aws-lc-rs"] # Enable reqwest for HTTP requests. network_client = ["dep:reqwest", "dep:portpicker", "dep:rustls-native-certs", "__rustls-used"] # KDC discovery by querying DNS records. dns_resolver = ["dep:trust-dns-resolver", "dep:tokio"] # TSSSP should be used only on Windows as a native CredSSP replacement. tsssp = ["dep:rustls", "__rustls-used"] # Turns on Kerberos smart card login (available only on Windows and users WinSCard API). scard = ["dep:winscard"] # Use AWS LC as TLS cryptography provider. aws-lc-rs = ["rustls?/aws-lc-rs", "__install-crypto-provider"] # Use ring as TLS cryptography provider. ring = ["rustls?/ring", "reqwest?/rustls-tls-native-roots", "__install-crypto-provider"] # Internal (PRIVATE!) features. Do not rely on these whatsoever. They may disappear at anytime. __test-data = [] __rustls-used = ["dep:rustls"] __install-crypto-provider = [] [dependencies] bitflags.workspace = true rand.workspace = true cfg-if.workspace = true time = { workspace = true, features = ["std"] } picky.workspace = true sha1.workspace = true num-derive.workspace = true num-traits = { workspace = true, default-features = true } picky-asn1-der.workspace = true picky-asn1-x509 = { workspace = true, features = ["pkcs7"] } uuid = { workspace = true, features = ["v4"], default-features = true } # `rt-multi-thread` feature is required for `tokio::task::block_in_place` function. tokio = { workspace = true, optional = true, features = ["time", "rt", "rt-multi-thread"] } winscard = { workspace = true, optional = true } rsa = { workspace = true, features = ["sha1"] } tracing = { workspace = true, default-features = true } byteorder = "1.5" md-5 = "0.10" md4 = "0.10" sha2 = "0.10" hmac = "0.12" crypto-mac = "0.11" lazy_static = "1.5" serde = "1" serde_derive = "1" url = "2.5" oid = "0.2" picky-krb = "0.9" picky-asn1 = { version = "0.9", features = ["time_conversion"] } reqwest = { version = "0.12", optional = true, default-features = false, features = ["blocking", "rustls-tls-no-provider"] } trust-dns-resolver = { version = "0.23", optional = true } portpicker = { version = "0.1", optional = true } num-bigint-dig = "0.8" rustls = { version = "0.23", optional = true, default-features = false, features = ["logging", "std", "tls12"] } rustls-native-certs = { version = "0.8", optional = true } zeroize = { version = "1.8", features = ["zeroize_derive"] } async-recursion = "1.1" [target.'cfg(windows)'.dependencies] winreg = "0.52" windows = { version = "0.58", features = [ "Win32_Foundation", "Win32_NetworkManagement_Dns"] } windows-sys = { workspace = true, features = ["Win32_Security_Cryptography", "Win32_Foundation"] } [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies] async-dnssd = "0.5" futures = "0.3" tokio = { workspace = true, features = ["time", "rt", "rt-multi-thread"] } [dev-dependencies] base64.workspace = true static_assertions = "1" whoami.workspace = true picky = { workspace = true, features = ["x509"] } tracing-subscriber = { workspace = true, features = ["env-filter"] } proptest.workspace = true cfg-if.workspace = true