diff options
-rw-r--r-- | app/src/main/java/app/passwordstore/data/crypto/CryptoRepository.kt | 50 |
1 files changed, 17 insertions, 33 deletions
diff --git a/app/src/main/java/app/passwordstore/data/crypto/CryptoRepository.kt b/app/src/main/java/app/passwordstore/data/crypto/CryptoRepository.kt index cd54dac2..eb858006 100644 --- a/app/src/main/java/app/passwordstore/data/crypto/CryptoRepository.kt +++ b/app/src/main/java/app/passwordstore/data/crypto/CryptoRepository.kt @@ -11,11 +11,9 @@ import app.passwordstore.crypto.PGPEncryptOptions import app.passwordstore.crypto.PGPIdentifier 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.coroutines.DispatcherProvider import app.passwordstore.util.settings.PreferenceKeys -import com.github.michaelbull.result.Result import com.github.michaelbull.result.filterValues import com.github.michaelbull.result.map import com.github.michaelbull.result.mapBoth @@ -39,48 +37,34 @@ constructor( } } - suspend fun decrypt( - password: String, - identities: List<PGPIdentifier>, - message: ByteArrayInputStream, - out: ByteArrayOutputStream, - ) = - withContext(dispatcherProvider.io()) { - decryptPgp(password, identities, message, out).map { out } - } - suspend fun isPasswordProtected(identifiers: List<PGPIdentifier>): Boolean { val keys = identifiers.map { pgpKeyManager.getKeyById(it) }.filterValues() return pgpCryptoHandler.isPassphraseProtected(keys) } - suspend fun encrypt( - identities: List<PGPIdentifier>, - content: ByteArrayInputStream, - out: ByteArrayOutputStream, - ) = withContext(dispatcherProvider.io()) { encryptPgp(identities, content, out).map { out } } - - private suspend fun decryptPgp( + suspend fun decrypt( password: String, identities: List<PGPIdentifier>, message: ByteArrayInputStream, out: ByteArrayOutputStream, - ): Result<Unit, CryptoHandlerException> { - val keys = identities.map { id -> pgpKeyManager.getKeyById(id) }.filterValues() - val decryptionOptions = PGPDecryptOptions.Builder().build() - return pgpCryptoHandler.decrypt(keys, password, message, out, decryptionOptions) - } + ) = + withContext(dispatcherProvider.io()) { + val keys = identities.map { id -> pgpKeyManager.getKeyById(id) }.filterValues() + val decryptionOptions = PGPDecryptOptions.Builder().build() + pgpCryptoHandler.decrypt(keys, password, message, out, decryptionOptions).map { out } + } - private suspend fun encryptPgp( + suspend fun encrypt( identities: List<PGPIdentifier>, content: ByteArrayInputStream, out: ByteArrayOutputStream, - ): Result<Unit, CryptoHandlerException> { - val encryptionOptions = - PGPEncryptOptions.Builder() - .withAsciiArmor(settings.getBoolean(PreferenceKeys.ASCII_ARMOR, false)) - .build() - val keys = identities.map { id -> pgpKeyManager.getKeyById(id) }.filterValues() - return pgpCryptoHandler.encrypt(keys, content, out, encryptionOptions) - } + ) = + withContext(dispatcherProvider.io()) { + val encryptionOptions = + PGPEncryptOptions.Builder() + .withAsciiArmor(settings.getBoolean(PreferenceKeys.ASCII_ARMOR, false)) + .build() + val keys = identities.map { id -> pgpKeyManager.getKeyById(id) }.filterValues() + pgpCryptoHandler.encrypt(keys, content, out, encryptionOptions).map { out } + } } |