TunnelVision

Shared/TLS

The local certificate authority behind opt-in HTTPS inspection: the pure X.509/ECDSA core and the Keychain shell over it.

It lives in Shared (since M10) rather than in the extension because the CA is the user’s, not the tunnel’s, and both halves of the product need it — the extension to sign leaves during a handshake, the app to generate it, hand its root certificate to the guided install flow, and ask the system whether it is trusted (../../docs/ux/onboarding-and-consent.md). No IPC is involved: app and extension declare the same shared keychain access group in their entitlements, so both look at the very same items and there is no published copy that can go stale.

Who consumes it: PacketTunnel/TLS (leaf minting for the userspace handshake) and TunnelVision/Services/CertificateStatusReader.swift (does a CA exist, and does the system trust it).

Specs: ../../docs/spec/relay-and-tls.md, ../../docs/decisions/0003-no-third-party-pinning-bypass.md · Milestones: M8, M10