Add password manager with Android autofill, master key encryption, and tooltip accessibility#47
Merged
Conversation
Introduce core data classes for password management with JSON serialization, copyWith methods, tag management, and encryption metadata support.
Add biometric check before proceeding with local authentication on the autofill selection screen. If biometrics are not enabled, show a message indicating they are unavailable. After successful biometric authentication, attempt to unlock the master key and display an error if it fails.
Also dispose of text controllers in folder dialogs after completion
Add EncryptionService dependency to AuthService, setting pending credentials during creation and verification of passwords, PINs, and biometric setup. Update credential change operations to re-wrap keys and remove biometric keys. Extract backup credential clearing into a private helper method and increase KDF iterations from 100k to 600k. Add lockout check during credential verification.
Update PIN validation to require exactly 6 digits and integrate pending credential flow with EncryptionService for both decoy PIN and password operations. Increase default KDF iterations from 100000 to 600000. Clean up additional decoy key storage entries when resetting decoy data.
The old `MediaCompressionService` relied on deprecated packages and the `ImprovedCompressionService` has been superseded by the new video compressor implementation using FFmpeg isolates.
- Remove example files from analysis - Enable `avoid_print` lint rule
Both configurations disable cloud backup and device transfer, and enforce HTTPS-only network traffic on Android.
- Replace fluttertoast with SnackBar using global navigator key - Move download directory resolution to shared PathUtils class - Consolidate file type icon/color helpers into FileTypeColors - Remove now-unused allFilesProvider in favor of vaultNotifierProvider - Add secure_compare utility for auth and decoy services - Fix password validation to use AuthService constraints - Adjust iOS keychain accessibility setting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a complete password manager with Android autofill service, master key-based encryption with key wrapping and biometric unlock, and extensive tooltip accessibility improvements.
Changes
Password Manager
PasswordEntryandPasswordContentmodels with JSON serialization and encryption metadataAndroid Autofill
AutofillCallbackHolderto manage autofill callbacksAutofillSelectionActivityfor credential selection UIAutofillAppentry point widgetAutofillServiceand user-facing autofill entry pointMaster Key & Encryption
EncryptionServiceinto authentication flowsonOpenPasswordcallback toFileOpenServiceUI & Accessibility
GestureDetectorwithIconButtonfor autofill dismiss and folder selectionmountedchecks beforesetStatecalls in async callbacksPlatform & Security
Cleanup
device_info_plusfluttertoastwithSnackBarusing global navigator keyPathUtilsTesting