Skip to main content

ios_core/lockdown/
mod.rs

1//! Lockdown protocol client with TLS session establishment, pair record management,
2//! and device pairing (including supervised P12 pairing).
3//!
4//! Use [`LockdownClient`] to read device values, start services, and manage pairing.
5
6pub mod client;
7pub(crate) mod pair_record;
8#[cfg(feature = "tunnel")]
9pub mod pairing;
10pub mod protocol;
11pub(crate) mod session;
12#[cfg(feature = "supervised-pair")]
13pub(crate) mod supervised_pair;
14
15pub use client::LockdownClient;
16pub use pair_record::{default_pair_record_path, PairRecord, PairRecordError};
17pub use protocol::{
18    recv_lockdown, send_lockdown, GetValueRequest, GetValueResponse, QueryTypeRequest,
19    QueryTypeResponse, RemoveValueRequest, SetValueRequest, StartServiceRequest,
20    StartServiceResponse, StartSessionRequest, StartSessionResponse, StopSessionRequest,
21    ValueOperationResponse, LOCKDOWN_PORT,
22};
23pub use session::{
24    handshake_only_service_tls, start_lockdown_session, start_service, strip_service_tls,
25    wrap_service_tls, CORE_DEVICE_PROXY,
26};
27#[cfg(feature = "supervised-pair")]
28pub use supervised_pair::{pair_supervised, save_pair_record, FullPairRecord};
29
30/// Service info returned by StartService.
31#[derive(Debug, Clone)]
32pub struct ServiceInfo {
33    pub port: u16,
34    pub enable_service_ssl: bool,
35}
36
37/// Errors from lockdown operations.
38#[derive(Debug, thiserror::Error)]
39pub enum LockdownError {
40    #[error("IO error: {0}")]
41    Io(#[from] std::io::Error),
42    #[error("protocol error: {0}")]
43    Protocol(String),
44    #[error("pair record error: {0}")]
45    PairRecord(#[from] PairRecordError),
46}