Skip to content
This repository has been archived by the owner on Oct 15, 2024. It is now read-only.

Commit

Permalink
fix crash due to passphrase caching after biom. authentication expired (
Browse files Browse the repository at this point in the history
#3141)

* fix crash due to passphrase caching after biom. authentication expired

* fix: add missing imports

---------

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
  • Loading branch information
agrahn and msfjarvis authored Jul 28, 2024
1 parent 7010ee8 commit 57866a9
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import javax.inject.Inject
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import logcat.LogPriority.ERROR
import logcat.asLog
import logcat.logcat

@AndroidEntryPoint
Expand Down Expand Up @@ -192,8 +193,6 @@ class AutofillDecryptActivity : BasePGPActivity() {
Intent().apply { putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, fillInDataset) },
)
}
if (features.isEnabled(EnablePGPPassphraseCache))
settings.edit { putBoolean(PreferenceKeys.CLEAR_PASSPHRASE_CACHE, clearCache) }
}
withContext(dispatcherProvider.main()) { finish() }
}
Expand All @@ -218,9 +217,15 @@ class AutofillDecryptActivity : BasePGPActivity() {
}
.onSuccess { result ->
return runCatching {
if (features.isEnabled(EnablePGPPassphraseCache)) {
passphraseCache.cachePassphrase(this, identifiers.first(), password)
}
runCatching {
if (features.isEnabled(EnablePGPPassphraseCache)) {
passphraseCache.cachePassphrase(this, identifiers.first(), password)
settings.edit {
putBoolean(PreferenceKeys.CLEAR_PASSPHRASE_CACHE, clearCache)
}
}
}
.onFailure { e -> logcat { e.asLog() } }
val entry = passwordEntryFactory.create(result.toByteArray())
AutofillPreferences.credentialsFromStoreEntry(this, file, entry, directoryStructure)
}
Expand Down
23 changes: 14 additions & 9 deletions app/src/main/java/app/passwordstore/ui/crypto/DecryptActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ import app.passwordstore.util.features.Feature.EnablePGPPassphraseCache
import app.passwordstore.util.features.Features
import app.passwordstore.util.settings.Constants
import app.passwordstore.util.settings.PreferenceKeys
import com.github.michaelbull.result.onFailure
import com.github.michaelbull.result.runCatching
import dagger.hilt.android.AndroidEntryPoint
import java.io.ByteArrayOutputStream
import java.io.File
Expand All @@ -41,6 +43,7 @@ import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import logcat.LogPriority.ERROR
import logcat.asLog
import logcat.logcat

@AndroidEntryPoint
Expand Down Expand Up @@ -214,13 +217,17 @@ class DecryptActivity : BasePGPActivity() {
clearCache = bundle.getBoolean(PasswordDialog.PASSWORD_CLEAR_KEY)
lifecycleScope.launch(dispatcherProvider.main()) {
decryptWithPassphrase(passphrase, gpgIdentifiers, authResult) {
if (authResult is BiometricResult.Success) {
passphraseCache.cachePassphrase(
this@DecryptActivity,
gpgIdentifiers.first(),
passphrase,
)
}
runCatching {
if (authResult is BiometricResult.Success) {
passphraseCache.cachePassphrase(
this@DecryptActivity,
gpgIdentifiers.first(),
passphrase,
)
settings.edit { putBoolean(PreferenceKeys.CLEAR_PASSPHRASE_CACHE, clearCache) }
}
}
.onFailure { e -> logcat { e.asLog() } }
}
}
}
Expand All @@ -237,8 +244,6 @@ class DecryptActivity : BasePGPActivity() {
val outputStream = ByteArrayOutputStream()
val result = repository.decrypt(passphrase, identifiers, message, outputStream)
if (result.isOk) {
if (features.isEnabled(EnablePGPPassphraseCache))
settings.edit { putBoolean(PreferenceKeys.CLEAR_PASSPHRASE_CACHE, clearCache) }
val entry = passwordEntryFactory.create(result.value.toByteArray())
passwordEntry = entry
createPasswordUI(entry)
Expand Down

0 comments on commit 57866a9

Please sign in to comment.