Documentation
¶
Overview ¶
Package simulator finds booted iOS Simulators and installs pano's root CA into their trust stores.
The Simulator shares the Mac's network stack, so `pano on` already routes its traffic — decryption is the only missing piece, because each simulator keeps its own trust store (the Mac's keychain does not apply). Since Xcode 12.5 the supported way in is Xcode's own CLI:
xcrun simctl keychain <udid> add-root-cert <ca.pem>
which lands the certificate directly in the trusted root store — no Settings toggle, unlike a physical iPhone. A reboot of the simulator makes running apps pick it up.
pano never installs by itself: it detects and suggests, the user confirms (`pano ca install --simulator`, or one key in the TUI). A state file remembers which simulators already have the current CA — and which asked not to be suggested again — so the suggestion appears only when useful.
Index ¶
- type Device
- type Manager
- func (m *Manager) Booted(ctx context.Context) ([]Device, error)
- func (m *Manager) Dismiss(devs []Device) error
- func (m *Manager) Install(ctx context.Context, d Device) error
- func (m *Manager) Reboot(ctx context.Context, d Device) error
- func (m *Manager) Suggest(ctx context.Context) []Device
- func (m *Manager) Supported() bool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Device ¶
type Device struct {
UDID string `json:"udid"`
Name string `json:"name"` // "iPhone 17"
Runtime string `json:"runtime"` // "iOS 26.4"
}
Device is one booted simulator.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager detects simulators and installs the CA. Safe for concurrent use in the read paths; Install/Dismiss serialise on the state file via WriteAtomic.
func New ¶
New returns a Manager for pano's CA at certPath, remembering installs in statePath (normally config.Paths.SimulatorState()).
func (*Manager) Install ¶
Install adds pano's CA to the simulator's trusted root store and records it. Running apps see it after a reboot of the simulator.
func (*Manager) Reboot ¶
Reboot shuts the simulator down and boots it again so apps pick up the freshly trusted certificate.