diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-03 13:57:05 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-03 13:57:05 +0100 |
| commit | fcbd5999f28f287507844b55f2bee82e714620c8 (patch) | |
| tree | af26ef041aeaca0a437c52c324b6291d69e0f5a9 /app/src/main/res/values-it/strings.xml | |
| parent | 3d8373dfff5101e58281b3b8f2e3b0ae2212678d (diff) | |
| download | HardenedPass-fcbd5999f28f287507844b55f2bee82e714620c8.tar.gz HardenedPass-fcbd5999f28f287507844b55f2bee82e714620c8.zip | |
fix(app): harden the setup key imports
- PGP key import reads at most 1 MiB (bounded read, buffer zeroed) and
refuses larger files with a new message.
- SshKeyViewModel catches any Exception from import and generation
(CancellationException rethrown) instead of a short list, so an
unexpected provider or sshj error no longer crashes the app.
- Pending PGP key bytes are zeroed in a finally block, also on
cancellation during addKey after a replace, and an earlier pending
pick is zeroed before a new one takes its place.
- PGPKeyManager never replaces a stored secret key with a public-only
key of the same ID, with or without replace (KeyDowngradeException);
the setup ViewModel shows a localized message for it. Unit test added.
- storeRecipients strips '#' comments and a trailing '!' as pass reads
.gpg-id; tests added.
- GitServerViewModel.clearStore returns the failure when the store
folder cannot be emptied, so the clone does not start; the plan's
Task 3 call site reports it.
- readGpgId opens the file with NOFOLLOW_LINKS and reads at most
64 KiB + 1 bytes, refusing more.
- SshKey.import writes the new private key to a temp file and moves it
over atomically before dropping the old key's Keystore entry, public
key and passphrase, so an I/O error keeps the old key.
- KeyUtils.isSecretKey notes (ponytail) that GnuPG stub and smartcard
keyrings count as secret.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'app/src/main/res/values-it/strings.xml')
| -rw-r--r-- | app/src/main/res/values-it/strings.xml | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c2edc768..192345cb 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -372,4 +372,7 @@ <string name="ssh_key_state_imported">Chiave privata importata</string> <string name="ssh_key_state_generated">Generata su questo dispositivo</string> <string name="git_clone_progress">Clonazione…</string> + <string name="git_clone_delete_failed">Impossibile svuotare la cartella dell\'archivio, la clonazione non è partita.</string> + <string name="pgp_key_import_too_large">Il file supera 1 MiB: non è una chiave PGP.</string> + <string name="pgp_key_import_downgrade">Una chiave privata con questo ID è già importata. La sola chiave pubblica non può sostituirla: elimina prima la chiave privata, se vuoi davvero farlo.</string> </resources> |
