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 package app.passwordstore.data.crypto
import android.content.SharedPreferences
import app.passwordstore.crypto.GpgIdentifier import app.passwordstore.crypto.GpgIdentifier
import app.passwordstore.crypto.PGPDecryptOptions import app.passwordstore.crypto.PGPDecryptOptions
import app.passwordstore.crypto.PGPEncryptOptions import app.passwordstore.crypto.PGPEncryptOptions
import app.passwordstore.crypto.PGPKeyManager import app.passwordstore.crypto.PGPKeyManager
import app.passwordstore.crypto.PGPainlessCryptoHandler import app.passwordstore.crypto.PGPainlessCryptoHandler
import app.passwordstore.crypto.errors.CryptoHandlerException 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.Result
import com.github.michaelbull.result.getAll import com.github.michaelbull.result.getAll
import com.github.michaelbull.result.unwrap import com.github.michaelbull.result.unwrap
@ -25,6 +28,7 @@ class CryptoRepository
constructor( constructor(
private val pgpKeyManager: PGPKeyManager, private val pgpKeyManager: PGPKeyManager,
private val pgpCryptoHandler: PGPainlessCryptoHandler, private val pgpCryptoHandler: PGPainlessCryptoHandler,
@SettingsPreferences private val settings: SharedPreferences,
) { ) {
suspend fun decrypt( suspend fun decrypt(
@ -54,7 +58,10 @@ constructor(
content: ByteArrayInputStream, content: ByteArrayInputStream,
out: ByteArrayOutputStream, out: ByteArrayOutputStream,
): Result<Unit, CryptoHandlerException> { ): 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() val keys = identities.map { id -> pgpKeyManager.getKeyById(id) }.getAll()
return pgpCryptoHandler.encrypt( return pgpCryptoHandler.encrypt(
keys, keys,

View file

@ -83,7 +83,9 @@ public class PGPainlessCryptoHandler @Inject constructor() :
require(publicKeyRings.isNotEmpty()) { "No public keys to encrypt message to" } require(publicKeyRings.isNotEmpty()) { "No public keys to encrypt message to" }
val publicKeyRingCollection = PGPPublicKeyRingCollection(publicKeyRings) val publicKeyRingCollection = PGPPublicKeyRingCollection(publicKeyRings)
val encryptionOptions = EncryptionOptions().addRecipients(publicKeyRingCollection) 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 = val encryptor =
PGPainless.encryptAndOrSign().onOutputStream(outputStream).withOptions(producerOptions) PGPainless.encryptAndOrSign().onOutputStream(outputStream).withOptions(producerOptions)
plaintextStream.copyTo(encryptor) plaintextStream.copyTo(encryptor)