Implement biometric-protected GPG key unlock #47
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Unlock GPG key material through an optional biometric-protected iPhone Keychain item and the shared authentication lease.
Scope
crates/storage, and establish the shared configurable authentication lease.unsafein project crates.Acceptance criteria
Implemented in
873db91and pushed tomain.AccessibleWhenPasscodeSetThisDeviceOnlyplusBIOMETRY_CURRENT_SET, with device-only persistence, typed cancellation/unavailable/error handling, enrollment-change recovery, explicit deletion on opt-out, manual lock, and inactivity expiry. Project crates remain safe Rust and launch no helper processes.Verification: all required
cargo fmt, warning-denied check, clippy, and workspace test gates passed;xcodegen generateand the iPhone Simulator build passed; simulator visual checks covered browsing, Preferences, locked/unlocked presentation, manual entry, and fail-closed passcode absence. A development-signed build installed on the paired iPhone and verified manual decrypt, Face ID lease restoration after manual lock, and opt-out deletion restoring the GPG passphrase prompt. The app uses the existing AppIcon.