From f05be3dc307cde429fb2896a9ddc011bd34d36cd Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Tue, 19 Oct 2021 18:13:23 +0200 Subject: [PATCH] Fix prematurely throwing of MissingPassphraseException --- .../decryption_verification/DecryptionStreamFactory.java | 4 +++- .../symmetric_encryption/SymmetricEncryptionTest.java | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pgpainless-core/src/main/java/org/pgpainless/decryption_verification/DecryptionStreamFactory.java b/pgpainless-core/src/main/java/org/pgpainless/decryption_verification/DecryptionStreamFactory.java index 07ddb01a..d598cce8 100644 --- a/pgpainless-core/src/main/java/org/pgpainless/decryption_verification/DecryptionStreamFactory.java +++ b/pgpainless-core/src/main/java/org/pgpainless/decryption_verification/DecryptionStreamFactory.java @@ -392,7 +392,9 @@ public final class DecryptionStreamFactory { for (Tuple k : postponedDueToMissingPassphrase) { keyIds.add(k.getA()); } - throw new MissingPassphraseException(keyIds); + if (!keyIds.isEmpty()) { + throw new MissingPassphraseException(keyIds); + } } else if (options.getMissingKeyPassphraseStrategy() == MissingKeyPassphraseStrategy.INTERACTIVE) { // Interactive mode: Fire protector callbacks to get passphrases interactively diff --git a/pgpainless-core/src/test/java/org/pgpainless/symmetric_encryption/SymmetricEncryptionTest.java b/pgpainless-core/src/test/java/org/pgpainless/symmetric_encryption/SymmetricEncryptionTest.java index 4f6172f4..68f929af 100644 --- a/pgpainless-core/src/test/java/org/pgpainless/symmetric_encryption/SymmetricEncryptionTest.java +++ b/pgpainless-core/src/test/java/org/pgpainless/symmetric_encryption/SymmetricEncryptionTest.java @@ -22,6 +22,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.pgpainless.PGPainless; import org.pgpainless.decryption_verification.ConsumerOptions; import org.pgpainless.decryption_verification.DecryptionStream; +import org.pgpainless.decryption_verification.MissingKeyPassphraseStrategy; import org.pgpainless.encryption_signing.EncryptionOptions; import org.pgpainless.encryption_signing.EncryptionStream; import org.pgpainless.encryption_signing.ProducerOptions; @@ -113,6 +114,7 @@ public class SymmetricEncryptionTest { assertThrows(MissingDecryptionMethodException.class, () -> PGPainless.decryptAndOrVerify() .onInputStream(new ByteArrayInputStream(ciphertextOut.toByteArray())) .withOptions(new ConsumerOptions() + .setMissingKeyPassphraseStrategy(MissingKeyPassphraseStrategy.THROW_EXCEPTION) .addDecryptionPassphrase(Passphrase.fromPassword("meldir")))); } }