Native iOS client for Pocket — a wallet for the secure storage of credentials and passwords.
Pocket iOS is a secure credential management application built for iPhone and iPad. It stores, organizes, and protects sensitive information in an encrypted, hierarchical structure (Users → Groups → Fields), powered by the Pocket Lib C++ core through a Swift/Objective-C++ bridge.
Key characteristics:
- Offline-first: credentials are stored locally with full encryption, no network connection required
- Optional sync: can connect to a Pocket backend to synchronize credentials across devices
- Auto-logout: configurable session timeout automatically locks the app after inactivity
- Keychain integration: sensitive session data is stored using the iOS Keychain
- Password generator: built-in utility for generating strong passwords
- Import / Export: credentials can be exported and imported in JSON format
The app follows an MVC pattern and is structured in three layers:
| Layer | Technology | Responsibility |
|---|---|---|
| UI | Swift + UIKit | ViewControllers, navigation, user interaction |
| Bridge | Objective-C++ | Wraps the C++ pocket-lib for use in Swift |
| Core | C++ (pocket-lib) | Cryptography, data model, network communication |
The bridge layer (Bridge/) exposes User, Group, Field, GroupController, and FieldController classes to Swift via the bridging header.
- iOS 18.0+
- Xcode 15+
| Library | Purpose |
|---|---|
| openssl-ios | Cryptographic operations |
| curl-ios | HTTP networking |
| SwiftSpinner | Loading indicators |
| KeychainSwift | Secure Keychain access |
| IQKeyboardManager | Keyboard handling |
| Reachability.swift | Network status detection |
- Pocket Backend - Java/Spring Boot backend service providing REST APIs, authentication, and business logic
- Pocket Web Backend - Rust/Actix web server with rate limiting and session management
- Pocket Lib - C++ core library for performance-critical operations and cryptography
- Pocket Web Frontend - Modern web interface for browser-based access
- Pocket CLI - Command-line tools for user and device management
- Pocket iOS - Native iOS client (this repository)