From 7c3ff3a4330ce1c5ab8d6fd655a79c28d93de1c1 Mon Sep 17 00:00:00 2001 From: chiranSachintha Date: Mon, 22 Dec 2025 10:07:06 +0530 Subject: [PATCH] Fix PGP decryption for non-compressed messages --- .../stdlib/crypto/PgpDecryptionGenerator.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/native/src/main/java/io/ballerina/stdlib/crypto/PgpDecryptionGenerator.java b/native/src/main/java/io/ballerina/stdlib/crypto/PgpDecryptionGenerator.java index 810d0470..e60cbc76 100644 --- a/native/src/main/java/io/ballerina/stdlib/crypto/PgpDecryptionGenerator.java +++ b/native/src/main/java/io/ballerina/stdlib/crypto/PgpDecryptionGenerator.java @@ -183,13 +183,13 @@ private static void decrypt(PGPPrivateKey pgpPrivateKey, PGPPublicKeyEncryptedDa .setProvider(BouncyCastleProvider.PROVIDER_NAME).build(pgpPrivateKey); InputStream decryptedCompressedIn = publicKeyEncryptedData.getDataStream(decryptorFactory); JcaPGPObjectFactory decCompObjFac = new JcaPGPObjectFactory(decryptedCompressedIn); - PGPCompressedData pgpCompressedData = (PGPCompressedData) decCompObjFac.nextObject(); - - InputStream compressedDataStream = new BufferedInputStream(pgpCompressedData.getDataStream()); - JcaPGPObjectFactory pgpCompObjFac = new JcaPGPObjectFactory(compressedDataStream); - - Object message = pgpCompObjFac.nextObject(); - + Object message = decCompObjFac.nextObject(); + InputStream compressedDataStream = null; + if (message instanceof PGPCompressedData pgpCompressedData) { + compressedDataStream = new BufferedInputStream(pgpCompressedData.getDataStream()); + JcaPGPObjectFactory pgpCompObjFac = new JcaPGPObjectFactory(compressedDataStream); + message = pgpCompObjFac.nextObject(); + } if (message instanceof PGPLiteralData pgpLiteralData) { iteratorObj.addNativeData(KEY_ENCRYPTED_DATA, publicKeyEncryptedData); iteratorObj.addNativeData(TARGET_STREAM, pgpLiteralData.getDataStream());