scll_core/workflow/mod.rs
1//! High-level workflow — PDD §5 (steps 1–12).
2//!
3//! Each function borrows `&mut dyn Transport` and (for channel steps) a backend
4//! and an open [`crate::scp::ScpSession`], performs the pre-flight checks of its
5//! §5 subsection, drives the §command builders through the §scp session, and
6//! returns `Result<XReport, ScllError>` (§7/§8). No success payload is reachable
7//! on the error path.
8//!
9//! Channel steps are generic over `B: KeyBackend + Scp02Backend + Scp03Backend`
10//! (Fork F-A): the open session may be either variant, so wrap/unwrap needs both
11//! backend traits. Pre-auth steps (`probe`, `discover_card`) take no backend.
12//! All per-step inputs are borrowed `*Args` structs (Fork F-C/D); the shared
13//! transport/SCP plumbing lives in [`session`] (Fork F-B).
14
15pub mod applet; // §5.7 install_applet, §5.8 delete_applet
16pub mod card_status; // §5.11 set_card_status, §5.12 get_card_status, §5.12a get_card_inventory
17pub mod discover; // §5.2 discover_card
18pub mod keys; // §5.3/§5.6 put/delete key core + ISD/SSD wrappers
19pub mod open_scp; // §5.9 open_scp
20pub mod probe; // §5.1 transport probe
21pub mod session; // shared SELECT + in-session transmit plumbing
22pub mod ssd; // §5.4 create_ssd, §5.4a load_package, §5.5 delete_ssd
23pub mod transmit; // §5.10 applet APDU exchange
24
25// --- Flat re-export of the public workflow surface (PDD §5) ---
26pub use applet::{delete_applet, install_applet, DeleteAppletArgs, InstallAppletArgs};
27pub use card_status::{get_card_inventory, get_card_status, set_card_status, SetCardStatusArgs};
28pub use discover::discover_card;
29pub use keys::{delete_sd_keyset, put_sd_keys, NewKeyset, PutSdKeysArgs};
30pub use open_scp::{open_scp, OpenScpArgs, SdKeys};
31pub use probe::probe;
32pub use ssd::{create_ssd, delete_ssd, load_package, CreateSsdArgs, LoadPackageArgs};
33pub use transmit::transmit;