Commit graph

304 commits

Author SHA1 Message Date
Lysann Tranvouez
09b0b150ce PGPAgent can encrypt with multiple keys 2026-03-11 14:12:24 +01:00
Lysann Tranvouez
b7873e6d72 move functions around 2026-03-11 14:11:37 +01:00
Lysann Tranvouez
84eaf4ad7d PGPInterface can encrypt with multiple keys, PGPAgent can encrypt with all keys 2026-03-11 14:11:07 +01:00
Lysann Tranvouez
8d4f3af475 decryption: GopenPGPInterface tries to identify decryption key from message metadata
So the system can have multiple private keys, and the caller doesn't
need to specify a specific one regardless.

Ideally: If there are several matches we could also take into account
which keys have already been unlocked (or passthrases saved in
keychain). Right now it only grabs the first match.
2026-03-11 13:41:59 +01:00
Lysann Tranvouez
2ae751044c decryption: always request key passphrase based on key ID 2026-03-11 13:32:21 +01:00
Lysann Tranvouez
d136175d93 add detailed API tests checking how calls to PGPAgent propagate to the underlying interface
this is refactoring support, so that we can notice changes in how the
underlying APIs are called, and make changes intentionally when needed,
instead of accidentally.
2026-03-11 11:36:36 +01:00
Lysann Tranvouez
c4f81c16eb move variables into smaller scope 2026-03-10 16:51:40 +01:00
Lysann Tranvouez
f0c21dd880 Merge branch 'feature/more-tests-pr' into feature/multi-key-support 2026-03-09 23:08:48 +01:00
Lysann Tranvouez
55b682b4b0 improve directory deletion/editing handling 2026-03-09 22:58:05 +01:00
Lysann Tranvouez
b8b7e1f913 PersistenceController tests 2026-03-09 22:58:05 +01:00
Lysann Tranvouez
cde82d956b rename file to match contained class 2026-03-09 22:58:05 +01:00
Lysann Tranvouez
98646242e0 fix deleting directory
this used to corrupt the local state (password entities remained in DB
but files/dirs were removed from git and disk)
2026-03-09 22:58:05 +01:00
Lysann Tranvouez
12c8c04203 test add, edit, delete 2026-03-09 22:58:05 +01:00
Lysann Tranvouez
60999c7eab more tests: entity fetching + erase 2026-03-09 22:56:27 +01:00
Lysann Tranvouez
7db85c9939 DO NOT MERGE
local development signing fixes
2026-03-08 21:08:36 +01:00
Allan Feldman
cb8305f014
(Fix) autofill / extensions and restore persistent storage location (#686) 2025-02-26 20:40:07 -08:00
Mingshen Sun
1d6785511a
Fix symlinks issue (#680) 2025-02-16 10:54:00 -08:00
Mingshen Sun
3292bd3652
Resolving symlinks in path (#679) 2025-02-15 23:38:23 -08:00
Mingshen Sun
1e79e12593
Cleanup duplicated code (#678) 2025-02-08 14:26:45 -08:00
Mingshen Sun
a43f2b017c
Set auto migration to false (#675) 2025-02-07 18:15:39 -08:00
Mingshen Sun
a69c4d16b1
Refactor git repository model (#674)
- Create a new model class for operations of Git repository.
- Refactor everything related with git.
- Add unit tests for git functions.
2025-02-02 22:18:16 -08:00
Mingshen Sun
d1de81d919
Refactor core data classes (#671) 2025-01-25 15:40:12 -08:00
Mingshen Sun
a410c9480a
Refactor YubiKey decryptor (#663)
- Add YKFSmartCardInterface extension to simplify smart card related calls
- Use async/await to rewrite callback closures
- Update YubiKeyConnection
- Better error handling
2024-12-15 21:08:27 -08:00
Mingshen Sun
c5d9d258d8
Use createPGPMessage instead of CryptoNewPGPMessage to support ASCII-armored password with YubiKey (#658) 2024-11-30 11:29:27 -08:00
Danny Mösch
1bdf9d684b Rely on SPM plugins to consume SwiftLint and SwiftFormat
Use their latest releases and fix some violations and issues.

# Conflicts:
#	.github/workflows/linting.yml
#	.github/workflows/testing.yml
2024-11-29 00:18:30 +01:00
Danny Mösch
d9bd0f3014
Update SwiftLint and SwiftFormat (#613)
* Update Swift version used by SwiftFormat

* Update SwiftLint version

* Rely on new virtual 'all' rule in SwiftLint

* Enable SwiftLint rule 'direct_return' rule and fix all violations

* Enable SwiftLint rule 'shorthand_optional_binding' rule and fix all violations

* Enable SwiftLint rule 'blanket_disable_command' rule and fix all violations
2023-04-23 13:01:37 -07:00
Mingshen Sun
da5aa61986 Update tab bar badge value immediately after sync 2023-03-18 15:54:18 -07:00
Mingshen Sun
3054e8e6f4 Fix YubiKey feature detection logics 2023-03-17 22:20:50 -07:00
Mingshen Sun
788adee1a7 Unify cell style for the password generator 2023-03-12 21:30:31 -07:00
Mingshen Sun
cdaf60da73 Do not init Yubikey if device does not support MFI accessory 2023-03-12 14:46:37 -07:00
Mingshen Sun
d078d3ca0a Use system colors (fix #608) 2023-03-10 20:34:30 -08:00
Dominik Johs
f2a0c4ccf1
do not dismiss views when application is resumed (#605)
* do not dismiss views when application is resumed

* prevents the PasswordNavigationViewController and PasswordDetailTableViewController from being dismissed when the app is put to the background and then brought back to the foreground
* Instead, the PasswordEntities are re-fetched from the context by their path to handle the re-creation of the entities during an update process that could have run in the background

* update SwiftLint to version 0.50.*

* update SwiftFormat to 0.51.*

---------

Co-authored-by: Mingshen Sun <bob@mssun.me>
2023-03-09 21:33:19 -08:00
Mingshen Sun
b09bc7444f Remove branches for iOS 12 compatibility 2023-03-09 11:40:33 -08:00
Anton Krasovsky
f6b2316324 Add support for Yubikey command chaining 2023-03-09 11:40:33 -08:00
Martin Nowak
3ab334dd00 fix #488 - support user field for completion
- a few other backends use `user` instead of `username` or `login`
  (e.g. gopass-jsonapi, keepass2csv importer, fpm2 importer)
- shorter to type when extracting field separately (e.g. CLI/clipboard) tools
2023-01-22 09:44:41 -08:00
Mingshen Sun
440b0123f2 Fix building issues with XCode 2022-05-23 10:54:11 -07:00
Mingshen Sun
90f1f54a21 Fix building issue 2022-05-22 21:40:35 -07:00
Mingshen Sun
955e50c3d3
Initial implementation of using YubiKey for decryption (#533) 2022-01-09 21:38:39 -08:00
Danny Moesch
819371f55e
Remove unused elements (#530) 2021-12-30 22:35:17 -08:00
Mingshen Sun
ff6a1edf62 Add confirmation prompt for removing keys (fix #491) 2021-12-29 16:19:12 -08:00
Danny Moesch
cdedff0d4d
Use SwiftFormat version 0.49.x and enable some new rules (#527) 2021-12-27 17:57:11 -08:00
Danny Moesch
b62c5fa2e5
Check cloned repository for .gpg-id file (#523)
* Extract method
* Separate deletion of store data from general data erasure
* Check cloned repository for .gpg-id file
2021-12-27 17:38:33 -08:00
Danny Moesch
b7e08dfb9e Enable SwiftLint rule 'static_operator' and fix all violations 2021-10-07 19:48:57 +02:00
Danny Moesch
831ffe2235 Use Self for internal static access 2021-10-07 19:19:56 +02:00
Danny Mösch
3eea063d61
Fix issues with OTP notification (#517)
* Use "Beta" since this is what Apple uses too
* Actually copy the OTP if the option is set
* Shorten notification text to make it fit to smaller screens
* Set notification center delegate before app launches
* Fix SwiftFormat issue fixed with version 0.48.12
2021-10-03 17:20:22 -07:00
Danny Mösch
32b7c9b635
Some cleanup especially regarding method references (#516)
* Remove superfluous method arguments in method references

* Use 'Self' for internal static access

* Convert static to instance field in singleton class

* Remove class name prefix in references to local methods

* Remove nested frameworks in all extensions and frameworks
2021-10-02 20:46:07 -07:00
Danny Mösch
e1cbcb5d7a
Add notification action to copy OTP or just inform about the copied OTP (#513)
* Add notification action to copy OTP or just inform about the copied OTP

The notification either shows the current OTP which can be copied by a notification action or it shows just a hint to inform about the copied OTP. This depends on the new option "autoCopyOTP".

* Extract method

* Set type and style one-time
2021-10-01 10:32:14 -07:00
Danny Mösch
763cddf540
Show notification with OTP after providing password through extension (#509)
* Allow to do something with a password after providing it in the extension
* Make fields non-nil
* Show OTP in notification after providing a password through extension
2021-09-20 00:50:05 -07:00
Mingshen Sun
f2ab400f4b
Support Steam OTP (#505) 2021-09-06 10:47:04 -07:00
Mingshen Sun
dab850f311
Check keychain every time to ensure changes propagate to extensions instantly 2021-08-31 20:36:16 -07:00