diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-02 10:09:49 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-02 10:09:49 +0100 |
| commit | 1c4d04c2089f719e8344f6c4f5cd8488c2320e9f (patch) | |
| tree | b4d3f432f7ebf558af01186601745e0402e135e4 /app/src/main/java | |
| parent | 9b8a56cb859f45845a620d7de344079e6a91d7c9 (diff) | |
| download | HardenedPass-1c4d04c2089f719e8344f6c4f5cd8488c2320e9f.tar.gz HardenedPass-1c4d04c2089f719e8344f6c4f5cd8488c2320e9f.zip | |
build(deps): update Bouncy Castle to 1.86 and PGPainless to 1.7.8
Bouncy Castle 1.78.1 is affected by GHSA-574f-3g2m-x479,
GHSA-9pwp-9qqc-pr26, GHSA-c3fc-8qff-9hwx and GHSA-qp49-qgx5-5m26, all
fixed by 1.85. PGPainless 1.7.8 is the newest 1.x release. A root
resolution rule keeps every Bouncy Castle module on the catalog version;
before, bcpg 1.77 shipped next to bcprov 1.78.1.
The new stack decrypts the OCB (LibrePGP) packets GnuPG 2.3+ emits by
default, which the old one rejected as "non-standard AEAD". Drop the
NonStandardAEAD error, its bottom sheet and strings, and replace the
mislabelled aead_* fixtures (SHA-1 self-signed keys plus a message
encrypted to an unrelated key) with a real GnuPG 2.5 key and OCB message
that the tests now decrypt. The new fixture is a throwaway test key, so
it is allowlisted in .gitleaksignore by fingerprint.
Fix KeyUtils.isKeyUsable, which compared a Boolean to null and so
accepted every key that parsed, including keys with no encryption
subkey. A signing-only key fixture now covers the rejection path.
Also: migrate the removed SelectUserId.firstMatch and deprecated
addDecryptionPassphrase APIs, keep one copy of the Bouncy Castle
META-INF/LICENSE.md in the APK, and move the existing InvalidPackage
lint baseline entries to the bcpkix 1.86 jar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'app/src/main/java')
| -rw-r--r-- | app/src/main/java/app/passwordstore/ui/crypto/DecryptActivity.kt | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/app/src/main/java/app/passwordstore/ui/crypto/DecryptActivity.kt b/app/src/main/java/app/passwordstore/ui/crypto/DecryptActivity.kt index 0d7f8dfb..8b2109bf 100644 --- a/app/src/main/java/app/passwordstore/ui/crypto/DecryptActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/crypto/DecryptActivity.kt @@ -15,13 +15,11 @@ import androidx.lifecycle.lifecycleScope import app.passwordstore.Application.Companion.screenWasOff import app.passwordstore.R import app.passwordstore.crypto.PGPIdentifier -import app.passwordstore.crypto.errors.NonStandardAEAD import app.passwordstore.data.crypto.PGPPassphraseCache import app.passwordstore.data.passfile.PasswordEntry import app.passwordstore.data.password.FieldItem import app.passwordstore.databinding.DecryptLayoutBinding import app.passwordstore.ui.adapters.FieldItemAdapter -import app.passwordstore.ui.dialogs.BasicBottomSheet import app.passwordstore.util.auth.BiometricAuthenticator import app.passwordstore.util.auth.BiometricAuthenticator.Result as BiometricResult import app.passwordstore.util.extensions.getString @@ -255,24 +253,7 @@ class DecryptActivity : BasePGPActivity() { onSuccess() } else { logcat(ERROR) { result.error.stackTraceToString() } - when (result.error) { - is NonStandardAEAD -> { - BasicBottomSheet.Builder(this) - .setTitle(getString(R.string.aead_detect_title)) - .setMessage(getString(R.string.aead_detect_message, result.error.message)) - .setPositiveButtonClickListener(getString(R.string.dialog_ok)) { - setResult(RESULT_CANCELED) - finish() - } - .setOnDismissListener { - setResult(RESULT_CANCELED) - finish() - } - .build() - .show(supportFragmentManager, "AEAD_INFO_SHEET") - } - else -> decrypt(isError = true, authResult = authResult) - } + decrypt(isError = true, authResult = authResult) } } |
