Commit graph

311 commits

Author SHA1 Message Date
Lysann Tranvouez
566b7253f5 remove overload, caller can take care of it in 2 step process 2026-03-12 09:32:04 +01:00
Lysann Tranvouez
e32402b807 streamline gpg-id handing
* decrypt should not care about it at all
* PasswordStore.decrypt always forwards the passed in keyID, even when
  gpg-id handling is disabled
* PasswordStore.encrypt: streamlined, but should be same behavior
2026-03-12 09:32:04 +01:00
Lysann Tranvouez
054f333bac deduplicate decrypt logic in PGPAgent 2026-03-12 09:32:04 +01:00
Lysann Tranvouez
b103337083 move function to be closer to related one 2026-03-12 09:32:04 +01:00
Lysann Tranvouez
5a92b6fda7 clarify public vs private keys + make prvate key IDs available 2026-03-12 09:32:04 +01:00
Lysann Tranvouez
9e3e3d1134 remove fallback behavior
this logic should not be relevant anywhere
2026-03-12 09:32:04 +01:00
Lysann Tranvouez
e69e590e36 replace calls to deprecated function
changes PasswordStore.encrypt behavior when .gpg-id support is off
(default):
  old:
    * ignores passed in keyID
    * encrypt with first public key in keychain (gopenPGP), or entire
      keychain (ObjectivePGP)
  new:
    * honor passed in keyID
    * encrypt with all keys in keychain
2026-03-12 09:32:04 +01:00
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