feat(app): wire in ASCII armor toggle

This commit is contained in:
Harsh Shandilya 2022-10-29 04:36:34 +05:30
parent b4c9115365
commit 538ddbfd95
No known key found for this signature in database
2 changed files with 11 additions and 2 deletions

View file

@ -5,12 +5,15 @@
package app.passwordstore.data.crypto
import android.content.SharedPreferences
import app.passwordstore.crypto.GpgIdentifier
import app.passwordstore.crypto.PGPDecryptOptions
import app.passwordstore.crypto.PGPEncryptOptions
import app.passwordstore.crypto.PGPKeyManager
import app.passwordstore.crypto.PGPainlessCryptoHandler
import app.passwordstore.crypto.errors.CryptoHandlerException
import app.passwordstore.injection.prefs.SettingsPreferences
import app.passwordstore.util.settings.PreferenceKeys
import com.github.michaelbull.result.Result
import com.github.michaelbull.result.getAll
import com.github.michaelbull.result.unwrap
@ -25,6 +28,7 @@ class CryptoRepository
constructor(
private val pgpKeyManager: PGPKeyManager,
private val pgpCryptoHandler: PGPainlessCryptoHandler,
@SettingsPreferences private val settings: SharedPreferences,
) {
suspend fun decrypt(
@ -54,7 +58,10 @@ constructor(
content: ByteArrayInputStream,
out: ByteArrayOutputStream,
): Result<Unit, CryptoHandlerException> {
val encryptionOptions = PGPEncryptOptions.Builder().build()
val encryptionOptions =
PGPEncryptOptions.Builder()
.withAsciiArmor(settings.getBoolean(PreferenceKeys.ASCII_ARMOR, false))
.build()
val keys = identities.map { id -> pgpKeyManager.getKeyById(id) }.getAll()
return pgpCryptoHandler.encrypt(
keys,

View file

@ -83,7 +83,9 @@ public class PGPainlessCryptoHandler @Inject constructor() :
require(publicKeyRings.isNotEmpty()) { "No public keys to encrypt message to" }
val publicKeyRingCollection = PGPPublicKeyRingCollection(publicKeyRings)
val encryptionOptions = EncryptionOptions().addRecipients(publicKeyRingCollection)
val producerOptions = ProducerOptions.encrypt(encryptionOptions).setAsciiArmor(false)
val producerOptions =
ProducerOptions.encrypt(encryptionOptions)
.setAsciiArmor(options.isOptionEnabled(PGPEncryptOptions.ASCII_ARMOR))
val encryptor =
PGPainless.encryptAndOrSign().onOutputStream(outputStream).withOptions(producerOptions)
plaintextStream.copyTo(encryptor)