# Platforms
Choose providers based on the target environment and available platform services.
## Windows
- Enable `provider-windows-dpapi`.
- Use `WindowsDpapiKeyProvider` to store the master key protected by DPAPI for the current user.
## macOS
- Enable `provider-macos-keychain`.
- `MacosKeychainKeyProvider` stores the master key as a generic password item under the fixed service `enigma-storage`. Accounts are derived from the storage path and namespace to keep entries distinct.
## Linux
- Enable `provider-linux-secret-service`.
- `LinuxSecretServiceKeyProvider` stores secrets in the default Secret Service collection using stable attributes. If the service is unavailable (headless servers), fall back to FileSealedKeyProvider or ForeignKeyProvider.
## Android and iOS
- Use native keystores and supply the master key via `ForeignKeyProvider`. The Rust crate does not call platform UI; mobile apps should handle user prompts and lifecycle.
## Desktop fallback
- FileSealedKeyProvider offers a sealed blob and salt stored beside the database as a convenience when no vault is available.