a simple rust terminal ui (tui) for setting up alternative plc rotation keys driven by: secure enclave hardware (not synced) or software-based keys (synced to icloud)
plc secure-enclave touchid icloud atproto
at main 30 lines 986 B view raw
1use crate::enclave::EnclaveKey; 2use crate::plc::{PlcOperation, PlcState}; 3use ratatui::crossterm::event::KeyEvent; 4 5/// Messages sent from async tasks back to the main event loop. 6#[derive(Debug)] 7pub enum AppMessage { 8 // Terminal input 9 KeyEvent(KeyEvent), 10 11 // Key management 12 KeysLoaded(Result<Vec<EnclaveKey>, String>), 13 KeyGenerated(Result<EnclaveKey, String>), 14 KeyDeleted(Result<String, String>), // label 15 16 // PLC directory 17 PlcStateLoaded(Result<PlcState, String>), 18 AuditLogLoaded(Result<Vec<serde_json::Value>, String>), 19 OperationSubmitted(Result<String, String>), // CID 20 21 // Signing 22 OperationSigned(Result<PlcOperation, String>), 23 24 // PDS / atproto 25 LoginResult(Result<crate::atproto::PdsSession, String>), 26 SessionRefreshed(Result<crate::atproto::PdsSession, String>), 27 PostCreated(Result<String, String>), // URI 28 PlcTokenRequested(Result<(), String>), 29 PdsPlcOperationSigned(Result<serde_json::Value, String>), 30}