# SecureStorgageSample A sample iOS app demonstrating the LocalData package capabilities for secure, typed storage across multiple domains. ## Features This app provides interactive demos for all LocalData storage options: | Tab | Demo | Storage Domain | |-----|------|----------------| | **Defaults** | Save/load/remove values | UserDefaults | | **Keychain** | Secure credentials with biometrics | Keychain | | **Files** | User profiles with AnyCodable | File System | | **Encrypted** | Encrypted logs (AES or ChaCha20) | Encrypted File System | | **Sync** | Platform availability & sync policies | Multiple | ## Requirements - iOS 17.0+ - Xcode 15+ ## Getting Started 1. Open `SecureStorgageSample.xcodeproj` 2. Select an iOS simulator or device 3. Build and run (⌘R) ## Project Structure ``` SecureStorgageSample/ ├── ContentView.swift # Tabbed navigation ├── StorageKeys.swift # 12 example key definitions ├── WatchOptimized.swift # Watch data models └── Views/ ├── UserDefaultsDemo.swift ├── KeychainDemo.swift ├── FileSystemDemo.swift ├── EncryptedStorageDemo.swift └── PlatformSyncDemo.swift ``` ## Storage Key Examples The app demonstrates various storage configurations: ### UserDefaults - Simple string storage with automatic sync - Custom suite support ### Keychain - 7 accessibility options (whenUnlocked, afterFirstUnlock, etc.) - 6 access control options (biometry, passcode, etc.) ### File System - Documents directory (persisted, backed up) - Caches directory (can be purged) - JSON and PropertyList serializers ### Encrypted Storage - AES-256-GCM or ChaCha20-Poly1305 encryption - PBKDF2 or HKDF key derivation - Complete file protection ### Platform & Sync - Platform availability (phoneOnly, watchOnly, all) - Sync policies (never, manual, automaticSmall) ## Dependencies - [LocalData](../localPackages/LocalData) - Local package for typed secure storage ## License This sample is provided for demonstration purposes.