[package]
edition = "2021"
rust-version = "1.88"
name = "soth-mitm"
version = "0.2.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust intercepting proxy crate with deterministic handler/event contracts for SOTH."
readme = "README.md"
keywords = [
"proxy",
"mitm",
"http",
"tls",
"intercept",
]
categories = ["network-programming"]
license = "MPL-2.0"
repository = "https://github.com/soth-ai/soth-mitm"
[package.metadata.p6_27]
forbidden_action_variants = [
"Delay",
"Hold",
]
forbidden_provider_terms = [
"openai",
"anthropic",
"claude",
"gpt",
"gemini",
"mistral",
"llama",
"bedrock",
"cohere",
"perplexity",
]
forbidden_telemetry_deps = [
"opentelemetry",
"opentelemetry_sdk",
"tracing-opentelemetry",
"sentry",
"sentry-core",
"sentry-tracing",
"prometheus",
"metrics-exporter-prometheus",
"datadog",
]
[features]
__internal = []
default = []
openssl-backend = ["dep:openssl"]
[lib]
name = "soth_mitm"
path = "src/lib.rs"
[[example]]
name = "bench_hudsucker"
path = "examples/bench_hudsucker.rs"
[[example]]
name = "bench_proxy"
path = "examples/bench_proxy.rs"
[[example]]
name = "soth_proxy_integration"
path = "examples/soth_proxy_integration.rs"
[[test]]
name = "anti_hijack"
path = "tests/anti_hijack.rs"
[[test]]
name = "api_contract"
path = "tests/api_contract.rs"
[[test]]
name = "chaos_charter"
path = "tests/chaos_charter.rs"
[[test]]
name = "config_validation"
path = "tests/config_validation.rs"
[[test]]
name = "conformance_golden"
path = "tests/conformance_golden.rs"
[[test]]
name = "connect_parser_proptest"
path = "tests/connect_parser_proptest.rs"
[[test]]
name = "decoder_chain"
path = "tests/decoder_chain.rs"
[[test]]
name = "event_log_v2"
path = "tests/event_log_v2.rs"
[[test]]
name = "grpc_envelope_proptest"
path = "tests/grpc_envelope_proptest.rs"
[[test]]
name = "grpc_http2_mitm"
path = "tests/grpc_http2_mitm.rs"
[[test]]
name = "http1_head_corpus"
path = "tests/http1_head_corpus.rs"
[[test]]
name = "http1_mitm"
path = "tests/http1_mitm.rs"
[[test]]
name = "http2_mitm"
path = "tests/http2_mitm.rs"
[[test]]
name = "http3_passthrough_mitm"
path = "tests/http3_passthrough_mitm.rs"
[[test]]
name = "mitmproxy_tls_adapter"
path = "tests/mitmproxy_tls_adapter.rs"
[[test]]
name = "mixed_traffic_soak"
path = "tests/mixed_traffic_soak.rs"
[[test]]
name = "phase_a"
path = "tests/phase_a.rs"
[[test]]
name = "route_mode_matrix"
path = "tests/route_mode_matrix.rs"
[[test]]
name = "runtime_governor"
path = "tests/runtime_governor.rs"
[[test]]
name = "server_concurrency"
path = "tests/server_concurrency.rs"
[[test]]
name = "socket_hardening"
path = "tests/socket_hardening.rs"
[[test]]
name = "sse_mitm"
path = "tests/sse_mitm.rs"
[[test]]
name = "sse_parser_proptest"
path = "tests/sse_parser_proptest.rs"
[[test]]
name = "tls_classification_proptest"
path = "tests/tls_classification_proptest.rs"
[[test]]
name = "tls_fingerprint_parity"
path = "tests/tls_fingerprint_parity.rs"
[[test]]
name = "tls_learning_guardrails"
path = "tests/tls_learning_guardrails.rs"
[[test]]
name = "tls_profile_matrix"
path = "tests/tls_profile_matrix.rs"
[[test]]
name = "tls_revocation_matrix"
path = "tests/tls_revocation_matrix.rs"
[[test]]
name = "tls_upstream_mtls_matrix"
path = "tests/tls_upstream_mtls_matrix.rs"
[[test]]
name = "websocket_mitm"
path = "tests/websocket_mitm.rs"
[[test]]
name = "websocket_reliability_soak"
path = "tests/websocket_reliability_soak.rs"
[[bench]]
name = "common"
path = "benches/common.rs"
[[bench]]
name = "forwarding_latency"
path = "benches/forwarding_latency.rs"
harness = false
required-features = ["__internal"]
[[bench]]
name = "handshake_overhead"
path = "benches/handshake_overhead.rs"
harness = false
required-features = ["__internal"]
[[bench]]
name = "sse_first_chunk"
path = "benches/sse_first_chunk.rs"
harness = false
required-features = ["__internal"]
[dependencies.base64]
version = "0.22"
[dependencies.brotli]
version = "8.0.2"
[dependencies.bytes]
version = "1"
[dependencies.dashmap]
version = "6.1.0"
[dependencies.flate2]
version = "1"
[dependencies.futures]
version = "0.3"
[dependencies.h2]
version = "0.4"
[dependencies.http]
version = "1"
[dependencies.lru]
version = "0.14"
[dependencies.openssl]
version = "0.10"
features = ["vendored"]
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.pin-project-lite]
version = "0.2"
[dependencies.rcgen]
version = "0.14"
features = ["x509-parser"]
[dependencies.rustls]
version = "0.23"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha1]
version = "0.10"
[dependencies.socket2]
version = "0.5"
[dependencies.soketto]
version = "0.8.1"
[dependencies.thiserror]
version = "2.0.18"
[dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"signal",
"net",
"sync",
"fs",
"time",
"process",
"io-util",
"io-std",
"rt-multi-thread",
"macros",
"signal",
"net",
"sync",
"fs",
"time",
"process",
"io-util",
"io-std",
]
[dependencies.tokio-rustls]
version = "0.26"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = "1.22.0"
features = [
"v4",
"serde",
]
[dependencies.webpki-roots]
version = "1"
[dependencies.zstd]
version = "0.13"
[dev-dependencies.bytes]
version = "1"
[dev-dependencies.h2]
version = "0.4"
[dev-dependencies.hudsucker]
version = "0.24.0"
features = [
"rcgen-ca",
"rustls-client",
]
default-features = false
[dev-dependencies.hyper-rustls]
version = "0.27.0"
features = [
"http1",
"webpki-tokio",
]
default-features = false
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.rcgen]
version = "0.14"
[dev-dependencies.rustls-pemfile]
version = "2"
[dev-dependencies.serde]
version = "1"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1"
features = [
"rt-multi-thread",
"macros",
"signal",
"net",
"sync",
"fs",
"time",
"process",
"io-util",
"io-std",
"io-util",
"macros",
"net",
"rt-multi-thread",
"sync",
"time",
]
[dev-dependencies.tokio-rustls]
version = "0.26"
[dev-dependencies.x509-parser]
version = "0.18.1"
[target."cfg(not(windows))".dependencies.openssl]
version = "0.10"
features = ["vendored"]
[target."cfg(not(windows))".dependencies.tokio-openssl]
version = "0.6"
[target.'cfg(target_os = "macos")'.dependencies.plist]
version = "1"
[target.'cfg(target_os = "windows")'.dependencies.sysinfo]
version = "0.33"
[target."cfg(unix)".dependencies.libc]
version = "0.2"