From 414548cc6d1c38e1269a17fdf2e772fbccd6dc92 Mon Sep 17 00:00:00 2001 From: Vitali Prudnikovich Date: Tue, 1 Oct 2024 19:41:35 +0000 Subject: [PATCH] Include MAC by default if encryption supports it DEVSIX-8622 Autoported commit. Original commit hash: [209419420] Manual files: sharpenConfiguration.xml --- ...cmp_encryptAes256Pdf2PermissionsTest01.pdf | Bin 6881 -> 8170 bytes ...cmp_encryptAes256Pdf2PermissionsTest02.pdf | Bin 7013 -> 8029 bytes .../crypto/pdfencryption/PdfEncryptionTest.cs | 33 +- .../pdfencryption/PdfEncryptionTestUtils.cs | 2 +- .../UnicodeBasedPasswordEncryptionTest.cs | 2 +- .../PubSecHandlerUsingAesGcmTest.cs | 53 +-- .../StandardHandlerUsingAesGcmTest.cs | 27 +- .../mac/MacIntegrityProtectorCreationTest.cs | 163 +++++++-- ...tegrityProtectorReadingAndRewritingTest.cs | 105 ++++++ .../kernel/pdf/PdfDeveloperExtensionTest.cs | 30 ++ .../cmp_encryptWithPasswordAes256Pdf2.pdf | Bin 4433 -> 5531 bytes ..._appended_encryptAes256FullCompression.pdf | Bin 8241 -> 10794 bytes ...appended_encryptWithPasswordAes256Pdf2.pdf | Bin 8351 -> 10677 bytes .../cmp_encryptAes256FullCompression.pdf | Bin 4248 -> 5552 bytes .../cmp_encryptAes256Pdf2Permissions.pdf | Bin 1659 -> 5564 bytes .../cmp_encryptWithPasswordAes256Pdf2.pdf | Bin 4595 -> 5554 bytes .../cmp_stampAndUpdateVersionNewAes256.pdf | Bin 4751 -> 5570 bytes .../cmp_unicodePassword_arabic01.pdf | Bin 4593 -> 5638 bytes .../cmp_unicodePassword_arabic02.pdf | Bin 4623 -> 5575 bytes .../cmp_unicodePassword_arabic03.pdf | Bin 4593 -> 5557 bytes .../cmp_unicodePassword_arabic04.pdf | Bin 4583 -> 5584 bytes .../cmp_unicodePassword_arabic05.pdf | Bin 4613 -> 5643 bytes .../cmp_unicodePassword_devanagari01.pdf | Bin 4575 -> 5562 bytes .../cmp_unicodePassword_devanagari02.pdf | Bin 4603 -> 5559 bytes .../cmp_unicodePassword_emoji01.pdf | Bin 4557 -> 5578 bytes .../cmp_unicodePassword_gurmukhi01.pdf | Bin 4611 -> 5547 bytes .../cmp_unicodePassword_khmer01.pdf | Bin 4564 -> 5571 bytes ...mp_unicodePassword_nfkcNormalization01.pdf | Bin 4574 -> 5574 bytes ...mp_unicodePassword_nfkcNormalization02.pdf | Bin 4579 -> 5565 bytes ...mp_unicodePassword_nfkcNormalization03.pdf | Bin 4564 -> 5577 bytes ...mp_unicodePassword_nfkcNormalization04.pdf | Bin 4572 -> 5538 bytes ...mp_unicodePassword_nfkcNormalization05.pdf | Bin 4575 -> 5551 bytes .../cmp_unicodePassword_nonAsciiSpace01.pdf | Bin 4628 -> 5555 bytes .../cmp_unicodePassword_rfc4013Example01.pdf | Bin 4644 -> 5547 bytes .../cmp_unicodePassword_rfc4013Example02.pdf | Bin 4609 -> 5551 bytes .../cmp_unicodePassword_rfc4013Example03.pdf | Bin 4640 -> 5580 bytes .../cmp_unicodePassword_rfc4013Example04.pdf | Bin 4657 -> 5537 bytes .../cmp_unicodePassword_tamil01.pdf | Bin 4621 -> 5530 bytes .../cmp_unicodePassword_thai01.pdf | Bin 4583 -> 5577 bytes .../cmp_unicodePassword_unicodeBom01.pdf | Bin 4633 -> 5551 bytes .../cmp_simpleEncryptDecrypt.pdf | Bin 4140 -> 7022 bytes .../cmp_simpleEncryptDecrypt_1_7.pdf} | Bin 4358 -> 4140 bytes .../simpleEncryptDecrypt_1_7.pdf | Bin 0 -> 4518 bytes .../cmp_encryptedSimpleDocument.pdf | Bin 7843 -> 8893 bytes .../cmp_addMacOnAppendModeTest.pdf | Bin 0 -> 8293 bytes ...addMacOnPreserveEncryptionFor17DocTest.pdf | Bin 0 -> 4718 bytes .../cmp_addMacOnPreserveEncryptionTest.pdf | Bin 0 -> 5830 bytes ...PreserveEncryptionWhileDowngradingTest.pdf | Bin 0 -> 4865 bytes ...ddMacOnPreservePublicKeyEncryptionTest.pdf | Bin 0 -> 5411 bytes .../cmp_noMacProtectionTest.pdf | Bin 0 -> 4349 bytes .../noMacProtectionDocument.pdf | Bin 0 -> 4369 bytes .../noMacProtectionDocument_1_7.pdf | Bin 0 -> 1648 bytes ...cProtectionPublicKeyEncryptionDocument.pdf | Bin 0 -> 5020 bytes .../cmp_disableMacInAppendModeTest.pdf | Bin 0 -> 10468 bytes .../cmp_disableMacTest.pdf | Bin 0 -> 4828 bytes .../cmp_doNotThrowOnValidationTest1.pdf | Bin 0 -> 3956 bytes .../cmp_doNotThrowOnValidationTest2.pdf | Bin 0 -> 3884 bytes ...ShouldNotBePreservedWithEncryptionTest.pdf | Bin 4963 -> 4797 bytes .../noSaltTest.pdf | Bin 0 -> 9295 bytes ...thirdPartyMacProtectedDocumentTampered.pdf | Bin 0 -> 3470 bytes .../itext/pdfa/PdfA4CatalogCheckTest.cs | 2 +- .../mac/SignedDocumentWithMacTest.cs | 67 ++++ .../cmp_signNotMacProtectedDoc17Test.pdf | Bin 0 -> 18992 bytes ...signNotMacProtectedDocInAppendModeTest.pdf | Bin 0 -> 25405 bytes .../cmp_signNotMacProtectedDocTest.pdf | Bin 0 -> 22056 bytes .../noMacProtectionDocument.pdf | Bin 0 -> 4369 bytes .../noMacProtectionDocument_1_7.pdf | Bin 0 -> 1648 bytes .../securityhandler/PubKeySecurityHandler.cs | 13 +- .../StandardHandlerUsingAes256.cs | 46 ++- .../StandardHandlerUsingStandard40.cs | 2 +- .../StandardSecurityHandler.cs | 18 +- .../itext/kernel/events/PdfDocumentEvent.cs | 4 +- .../KernelExceptionMessageConstant.cs | 2 + .../mac/AbstractMacIntegrityProtector.cs | 7 +- .../itext/kernel/mac/IMacContainerLocator.cs | 8 + .../kernel/mac/MacValidationException.cs | 52 +++ .../mac/StandaloneMacContainerLocator.cs | 5 + .../mac/StandaloneMacIntegrityProtector.cs | 2 +- .../itext/kernel/pdf/EncryptionProperties.cs | 81 +---- .../itext/kernel/pdf/PdfCatalog.cs | 39 ++- .../itext/kernel/pdf/PdfDocument.cs | 11 +- .../itext/kernel/pdf/PdfEncryption.cs | 309 +++++------------- .../itext/kernel/pdf/PdfReader.cs | 8 +- .../itext/kernel/pdf/PdfWriter.cs | 34 +- .../itext/kernel/pdf/StampingProperties.cs | 19 ++ .../itext/kernel/pdf/WriterProperties.cs | 16 +- .../itext/kernel/utils/CompareTool.cs | 50 ++- .../signatures/OcspClientBouncyCastle.cs | 1 - .../mac/SignatureMacContainerLocator.cs | 5 + port-hash | 2 +- 90 files changed, 807 insertions(+), 411 deletions(-) rename itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/{StandardHandlerUsingAesGcmTest/cmp_simpleEncryptDecrypt.pdf => PubSecHandlerUsingAesGcmTest/cmp_simpleEncryptDecrypt_1_7.pdf} (54%) create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest/simpleEncryptDecrypt_1_7.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnAppendModeTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionFor17DocTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionWhileDowngradingTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreservePublicKeyEncryptionTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_noMacProtectionTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionDocument.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionDocument_1_7.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionPublicKeyEncryptionDocument.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_disableMacInAppendModeTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_disableMacTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_doNotThrowOnValidationTest1.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_doNotThrowOnValidationTest2.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/noSaltTest.pdf create mode 100644 itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/thirdPartyMacProtectedDocumentTampered.pdf create mode 100644 itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDoc17Test.pdf create mode 100644 itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDocInAppendModeTest.pdf create mode 100644 itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDocTest.pdf create mode 100644 itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/noMacProtectionDocument.pdf create mode 100644 itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/noMacProtectionDocument_1_7.pdf create mode 100644 itext/itext.kernel/itext/kernel/mac/MacValidationException.cs diff --git a/itext.tests/itext.forms.tests/resources/itext/forms/PdfEncryptionTest/cmp_encryptAes256Pdf2PermissionsTest01.pdf b/itext.tests/itext.forms.tests/resources/itext/forms/PdfEncryptionTest/cmp_encryptAes256Pdf2PermissionsTest01.pdf index ba3567db40e0491ccc64f482053d7954847a5674..56356690945181318230ef5021e402f230dcb554 100644 GIT binary patch literal 8170 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 P;227iR#GyuHkSSuBY#AF literal 6881 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 diff --git a/itext.tests/itext.forms.tests/resources/itext/forms/PdfEncryptionTest/cmp_encryptAes256Pdf2PermissionsTest02.pdf b/itext.tests/itext.forms.tests/resources/itext/forms/PdfEncryptionTest/cmp_encryptAes256Pdf2PermissionsTest02.pdf index 6da4cf233fe2037e5706a0baf4f0ad1934e17dab..e554cbc19f486c1107f408aeb7960816eef7b8cc 100644 GIT binary patch literal 8029 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 diff --git a/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTest.cs index d76586229d..3a37d3f5a4 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTest.cs @@ -310,6 +310,37 @@ public virtual void EncryptWithPasswordAes128EmbeddedFilesOnly() { , textContent, ERROR_IS_EXPECTED); } + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void EncryptWithPasswordAes256EmbeddedFilesOnly() { + String filename = "encryptWithPasswordAes256EmbeddedFilesOnly.pdf"; + int encryptionType = EncryptionConstants.ENCRYPTION_AES_256 | EncryptionConstants.EMBEDDED_FILES_ONLY; + String outFileName = destinationFolder + filename; + int permissions = EncryptionConstants.ALLOW_SCREENREADERS; + PdfWriter writer = CompareTool.CreateTestPdfWriter(outFileName, new WriterProperties().SetStandardEncryption + (PdfEncryptionTestUtils.USER, PdfEncryptionTestUtils.OWNER, permissions, encryptionType).AddXmpMetadata + ().SetPdfVersion(PdfVersion.PDF_2_0)); + PdfDocument document = new PdfDocument(writer); + document.GetDocumentInfo().SetMoreInfo(PdfEncryptionTestUtils.CUSTOM_INFO_ENTRY_KEY, PdfEncryptionTestUtils + .CUSTOM_INFO_ENTRY_VALUE); + PdfPage page = document.AddNewPage(); + String textContent = "Hello world!"; + PdfEncryptionTestUtils.WriteTextBytesOnPageContent(page, textContent); + String descripton = "encryptedFile"; + String path = sourceFolder + "pageWithContent.pdf"; + document.AddFileAttachment(descripton, PdfFileSpec.CreateEmbeddedFileSpec(document, path, descripton, path + , null, null)); + page.Flush(); + document.Close(); + //TODO DEVSIX-5355 Specific crypto filters for EFF StmF and StrF are not supported at the moment. + // However we can read embedded files only mode. + bool ERROR_IS_EXPECTED = false; + encryptionUtil.CheckDecryptedWithPasswordContent(destinationFolder + filename, PdfEncryptionTestUtils.OWNER + , textContent, ERROR_IS_EXPECTED); + encryptionUtil.CheckDecryptedWithPasswordContent(destinationFolder + filename, PdfEncryptionTestUtils.USER + , textContent, ERROR_IS_EXPECTED); + } + [NUnit.Framework.Test] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void EncryptAes256Pdf2NotEncryptMetadata() { @@ -551,7 +582,7 @@ public virtual void CheckEncryptedWithPasswordDocumentAppending(String filename, newPage.Put(PdfName.Default, new PdfString("Hello world string")); PdfEncryptionTestUtils.WriteTextBytesOnPageContent(newPage, "Hello world page_2!"); document.Close(); - CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); + CompareTool compareTool = new CompareTool().EnableEncryptionCompare(false); String compareResult = compareTool.CompareByContent(outFileName, sourceFolder + "cmp_appended_" + filename , destinationFolder, "diff_", PdfEncryptionTestUtils.USER, PdfEncryptionTestUtils.USER); if (compareResult != null) { diff --git a/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.cs b/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.cs index c977b6beaf..b683b704c1 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.cs @@ -52,7 +52,7 @@ public PdfEncryptionTestUtils(String destinationFolder, String sourceFolder) { public virtual void CompareEncryptedPdf(String filename) { CheckDecryptedWithPasswordContent(destinationFolder + filename, OWNER, PAGE_TEXT_CONTENT); CheckDecryptedWithPasswordContent(destinationFolder + filename, USER, PAGE_TEXT_CONTENT); - CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); + CompareTool compareTool = new CompareTool().EnableEncryptionCompare(false); String compareResult = compareTool.CompareByContent(destinationFolder + filename, sourceFolder + "cmp_" + filename, destinationFolder, "diff_", USER, USER); if (compareResult != null) { diff --git a/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.cs index 297b472ad9..cb156c42f8 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.cs @@ -185,7 +185,7 @@ private void EncryptAes256AndCheck(String filename, byte[] ownerPassword) { document.Close(); encryptionUtil.CheckDecryptedWithPasswordContent(destinationFolder + filename, ownerPassword, PdfEncryptionTestUtils .PAGE_TEXT_CONTENT); - CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); + CompareTool compareTool = new CompareTool().EnableEncryptionCompare(false); String compareResult = compareTool.CompareByContent(destinationFolder + filename, sourceFolder + "cmp_" + filename, destinationFolder, "diff_", ownerPassword, ownerPassword); if (compareResult != null) { diff --git a/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.cs index 9b4f71e95a..d63b4c36df 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.cs @@ -22,12 +22,13 @@ You should have received a copy of the GNU Affero General Public License */ using System; using System.Collections.Generic; +using NUnit.Framework; using iText.Bouncycastleconnector; -using iText.Bouncycastlefips; using iText.Commons.Bouncycastle; using iText.Commons.Bouncycastle.Cert; using iText.Commons.Bouncycastle.Crypto; using iText.Commons.Utils; +using iText.Kernel.Crypto; using iText.Kernel.Exceptions; using iText.Kernel.Logs; using iText.Kernel.Pdf; @@ -56,46 +57,48 @@ public static void SetUp() { [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] [NUnit.Framework.Test] public virtual void TestSimpleEncryptDecryptTest() { + try { + BouncyCastleFactoryCreator.GetFactory().IsEncryptionFeatureSupported(0, true); + } + catch (Exception) { + NUnit.Framework.Assume.That(false); + } + NUnit.Framework.Assume.That(!BouncyCastleFactoryCreator.GetFactory().IsInApprovedOnlyMode()); String fileName = "simpleEncryptDecrypt.pdf"; String srcFile = SOURCE_FOLDER + fileName; String outFile = DESTINATION_FOLDER + fileName; - if ("BCFIPS".Equals(FACTORY.GetProviderName())) { - Exception e = NUnit.Framework.Assert.Catch(typeof(UnsupportedEncryptionFeatureException), () => - DoEncrypt(srcFile, outFile, true)); - NUnit.Framework.Assert.AreEqual(UnsupportedEncryptionFeatureException.ENCRYPTION_WITH_CERTIFICATE_ISNT_SUPPORTED_IN_FIPS, e.Message); - } else { - DoEncrypt(srcFile, outFile, true); - DecryptWithCertificate(fileName, DESTINATION_FOLDER, "test.cer", "test.pem"); - } + DoEncrypt(srcFile, outFile, true); + DecryptWithCertificate(fileName, DESTINATION_FOLDER, "test.cer", "test.pem"); } [LogMessage(VersionConforming.NOT_SUPPORTED_AES_GCM, Ignore = true)] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] [NUnit.Framework.Test] - public virtual void TestSimpleEncryptDecryptPdf15Test() { - String fileName = "simpleEncryptDecrypt.pdf"; + public virtual void TestSimpleEncryptDecryptPdf17Test() { + try { + BouncyCastleFactoryCreator.GetFactory().IsEncryptionFeatureSupported(0, true); + } + catch (Exception) { + NUnit.Framework.Assume.That(false); + } + NUnit.Framework.Assume.That(!BouncyCastleFactoryCreator.GetFactory().IsInApprovedOnlyMode()); + String fileName = "simpleEncryptDecrypt_1_7.pdf"; String srcFile = SOURCE_FOLDER + fileName; String outFile = DESTINATION_FOLDER + fileName; - if ("BCFIPS".Equals(FACTORY.GetProviderName())) { - Exception e = NUnit.Framework.Assert.Catch(typeof(UnsupportedEncryptionFeatureException), () => - DoEncrypt(srcFile, outFile, false)); - NUnit.Framework.Assert.AreEqual(UnsupportedEncryptionFeatureException.ENCRYPTION_WITH_CERTIFICATE_ISNT_SUPPORTED_IN_FIPS, e.Message); - } else { - DoEncrypt(srcFile, outFile, false); - DecryptWithCertificate(fileName, DESTINATION_FOLDER, "test.cer", "test.pem"); - } + DoEncrypt(srcFile, outFile, false); + DecryptWithCertificate(fileName, DESTINATION_FOLDER, "test.cer", "test.pem"); } [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] [NUnit.Framework.Test] public virtual void DecryptExternalFileTest() { - if ("BCFIPS".Equals(FACTORY.GetProviderName())) { - Exception e = NUnit.Framework.Assert.Catch(typeof(UnsupportedEncryptionFeatureException), () => - DecryptWithCertificate("externalFile.pdf", SOURCE_FOLDER, "decrypter.cert.pem", "signerkey.pem")); - NUnit.Framework.Assert.AreEqual(UnsupportedEncryptionFeatureException.ENCRYPTION_WITH_CERTIFICATE_ISNT_SUPPORTED_IN_FIPS, e.Message); - } else { - DecryptWithCertificate("externalFile.pdf", SOURCE_FOLDER, "decrypter.cert.pem", "signerkey.pem"); + try { + BouncyCastleFactoryCreator.GetFactory().IsEncryptionFeatureSupported(0, true); + } + catch (Exception) { + NUnit.Framework.Assume.That(false); } + DecryptWithCertificate("externalFile.pdf", SOURCE_FOLDER, "decrypter.cert.pem", "signerkey.pem"); } [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] diff --git a/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.cs index 9ca2836823..53c1099c7e 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.cs @@ -28,6 +28,7 @@ You should have received a copy of the GNU Affero General Public License using iText.Kernel.Logs; using iText.Kernel.Pdf; using iText.Kernel.Utils; +using iText.Kernel.Utils.Objectpathitems; using iText.Test; using iText.Test.Attributes; @@ -54,7 +55,6 @@ public static void SetUp() { [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void SimpleEncryptDecryptTest() { String srcFile = SRC + "simpleDocument.pdf"; - String decryptedCmpFile = SRC + "cmp_simpleEncryptDecrypt.pdf"; String encryptedCmpFile = SRC + "cmp_encryptedSimpleDocument.pdf"; String outFile = DEST + "simpleEncryptDecrypt.pdf"; // Set usage permissions. @@ -68,7 +68,7 @@ public virtual void SimpleEncryptDecryptTest() { docIn.CopyPagesTo(1, 1, docOut); } } - new CompareTool().CompareByContent(outFile, decryptedCmpFile, DEST, "diff", USER_PASSWORD, null); + new CToolNoDeveloperExtension().CompareByContent(outFile, srcFile, DEST, "diff", USER_PASSWORD, null); new CompareTool().CompareByContent(outFile, encryptedCmpFile, DEST, "diff", USER_PASSWORD, USER_PASSWORD); } @@ -77,14 +77,13 @@ public virtual void SimpleEncryptDecryptTest() { [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void SimpleEncryptDecryptPdf15Test() { String srcFile = SRC + "simpleDocument.pdf"; - String cmpFile = SRC + "cmp_simpleEncryptDecrypt.pdf"; String outFile = DEST + "notSupportedVersionDocument.pdf"; int perms = EncryptionConstants.ALLOW_PRINTING | EncryptionConstants.ALLOW_DEGRADED_PRINTING; WriterProperties wProps = new WriterProperties().SetStandardEncryption(USER_PASSWORD, OWNER_PASSWORD, perms , EncryptionConstants.ENCRYPTION_AES_GCM); PdfDocument ignored = new PdfDocument(new PdfReader(srcFile), new PdfWriter(outFile, wProps)); ignored.Close(); - new CompareTool().CompareByContent(outFile, cmpFile, DEST, "diff", USER_PASSWORD, null); + new CToolNoDeveloperExtension().CompareByContent(outFile, srcFile, DEST, "diff", USER_PASSWORD, null); } [NUnit.Framework.Test] @@ -260,4 +259,24 @@ private void AssertTampered(String outFile) { } } } + +//\cond DO_NOT_DOCUMENT + // Outside test class for porting + internal class CToolNoDeveloperExtension : CompareTool { + protected internal override bool CompareObjects(PdfObject outObj, PdfObject cmpObj, ObjectPath currentPath + , CompareTool.CompareResult compareResult) { + if (outObj != null && outObj.IsDictionary()) { + if (((PdfDictionary)outObj).Get(PdfName.ISO_) != null) { + return true; + } + } + if (cmpObj != null && cmpObj.IsDictionary()) { + if (((PdfDictionary)cmpObj).Get(PdfName.ISO_) != null) { + return true; + } + } + return base.CompareObjects(outObj, cmpObj, currentPath, compareResult); + } + } +//\endcond } diff --git a/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorCreationTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorCreationTest.cs index e46e2cd428..9e3465d390 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorCreationTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorCreationTest.cs @@ -70,54 +70,66 @@ public virtual void StandaloneMacStandardEncryptionTest() { String fileName = "standaloneMacStandardEncryptionTest.pdf"; String outputFileName = DESTINATION_FOLDER + fileName; String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; - MacProperties macProperties = new MacProperties(MacProperties.MacDigestAlgorithm.SHA_256, MacProperties.MacAlgorithm - .HMAC_WITH_SHA_256, MacProperties.KeyWrappingAlgorithm.AES_256_NO_PADD); WriterProperties writerProperties = new WriterProperties().SetPdfVersion(PdfVersion.PDF_2_0).SetStandardEncryption - (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_256, macProperties); - using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputFileName, writerProperties))) { + (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_256, new MacProperties(MacProperties.MacDigestAlgorithm + .SHA_256)); + using (PdfDocument pdfDoc = new PdfDocument(CompareTool.CreateTestPdfWriter(outputFileName, writerProperties + ))) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare(false).CompareByContent(outputFileName + , cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void NoMacProtectionTest() { + String fileName = "noMacProtectionTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + WriterProperties writerProperties = new WriterProperties().SetPdfVersion(PdfVersion.PDF_2_0).SetStandardEncryption + (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_256, null); + using (PdfDocument pdfDoc = new PdfDocument(CompareTool.CreateTestPdfWriter(outputFileName, writerProperties + ))) { pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); } - NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outputFileName, cmpFileName, DESTINATION_FOLDER - , "diff", PASSWORD, PASSWORD)); + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare().CompareByContent(outputFileName, + cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); } [NUnit.Framework.Test] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] - public virtual void MacEncryptionWithAesGsmTest() { + public virtual void MacEncryptionWithAesGcmTest() { String fileName = "macEncryptionWithAesGsmTest.pdf"; String outputFileName = DESTINATION_FOLDER + fileName; String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; - MacProperties macProperties = new MacProperties(MacProperties.MacDigestAlgorithm.SHA_256); WriterProperties writerProperties = new WriterProperties().SetPdfVersion(PdfVersion.PDF_2_0).SetStandardEncryption - (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_GCM, macProperties); + (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_GCM, new MacProperties(MacProperties.MacDigestAlgorithm + .SHA_256)); using (PdfDocument pdfDoc = new PdfDocument(CompareTool.CreateTestPdfWriter(outputFileName, writerProperties ))) { pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); } - NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outputFileName, cmpFileName, DESTINATION_FOLDER - , "diff", PASSWORD, PASSWORD)); + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare(false).CompareByContent(outputFileName + , cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); } [NUnit.Framework.Test] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + [LogMessage(iText.IO.Logs.IoLogMessageConstant.PDF_WRITER_CLOSING_FAILED)] public virtual void StandaloneMacUnwritableStreamTest() { - MacProperties macProperties = new MacProperties(MacProperties.MacDigestAlgorithm.SHA_256, MacProperties.MacAlgorithm - .HMAC_WITH_SHA_256, MacProperties.KeyWrappingAlgorithm.AES_256_NO_PADD); WriterProperties writerProperties = new WriterProperties().SetPdfVersion(PdfVersion.PDF_2_0).SetStandardEncryption - (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_256, macProperties); - MemoryStream unwritableStream = new _MemoryStream_129(); - String exceptionMessage = NUnit.Framework.Assert.Catch(typeof(Exception), () => { - using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(unwritableStream, writerProperties))) { - pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); - } + (PASSWORD, PASSWORD, 0, EncryptionConstants.ENCRYPTION_AES_256, new MacProperties(MacProperties.MacDigestAlgorithm + .SHA_256)); + MemoryStream unwritableStream = new _MemoryStream_152(); + using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(unwritableStream, writerProperties))) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); } - ).Message; - NUnit.Framework.Assert.AreEqual("expected", exceptionMessage); unwritableStream.Dispose(); } - private sealed class _MemoryStream_129 : MemoryStream { - public _MemoryStream_129() { + private sealed class _MemoryStream_152 : MemoryStream { + public _MemoryStream_152() { } public override void Write(byte[] b, int off, int len) { @@ -141,8 +153,8 @@ public virtual void StandaloneMacWithAllHashAlgorithmsTest() { ))) { pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); } - NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outputFileName, cmpFileName, DESTINATION_FOLDER - , "diff", PASSWORD, PASSWORD)); + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare(false).CompareByContent(outputFileName + , cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); } } @@ -165,6 +177,70 @@ public virtual void StandaloneMacPdfVersionNotSetTest() { NUnit.Framework.Assert.AreEqual(KernelExceptionMessageConstant.MAC_FOR_PDF_2, exceptionMessage); } + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void AddMacOnPreserveEncryptionTest() { + String fileName = "addMacOnPreserveEncryptionTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "noMacProtectionDocument.pdf", new + ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName, new WriterProperties + ().SetPdfVersion(PdfVersion.PDF_2_0)), new StampingProperties().PreserveEncryption())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare(false).CompareByContent(outputFileName + , cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void AddMacOnAppendModeTest() { + // MAC should not be added in append mode + String fileName = "addMacOnAppendModeTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "noMacProtectionDocument.pdf", new + ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName, new WriterProperties + ().SetPdfVersion(PdfVersion.PDF_2_0)), new StampingProperties().UseAppendMode())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare().CompareByContent(outputFileName, + cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void AddMacOnPreserveEncryptionWhileDowngradingTest() { + String fileName = "addMacOnPreserveEncryptionWhileDowngradingTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "noMacProtectionDocument.pdf", new + ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName, new WriterProperties + ().SetPdfVersion(PdfVersion.PDF_1_7)), new StampingProperties().PreserveEncryption())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare().CompareByContent(outputFileName, + cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + + [NUnit.Framework.Test] + [LogMessage(VersionConforming.DEPRECATED_AES256_REVISION)] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void AddMacOnPreserveEncryptionFor17DocTest() { + // We can't embed MAC into encrypted documents during the conversion from earlier PDF version + // because their encryption does not support this. So WriterProperties should be used iso preserveEncryption + String fileName = "addMacOnPreserveEncryptionFor17DocTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "noMacProtectionDocument_1_7.pdf" + , new ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName, new WriterProperties + ().SetPdfVersion(PdfVersion.PDF_2_0)), new StampingProperties().PreserveEncryption())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare().CompareByContent(outputFileName, + cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + [NUnit.Framework.Test] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void StandaloneMacOldEncryptionAlgorithmTest() { @@ -185,6 +261,7 @@ public virtual void StandaloneMacOldEncryptionAlgorithmTest() { } [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void StandaloneMacPublicKeyEncryptionTest() { try { BouncyCastleFactoryCreator.GetFactory().IsEncryptionFeatureSupported(0, true); @@ -196,13 +273,11 @@ public virtual void StandaloneMacPublicKeyEncryptionTest() { String fileName = "standaloneMacPublicKeyEncryptionTest.pdf"; String outputFileName = DESTINATION_FOLDER + fileName; String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; - MacProperties macProperties = new MacProperties(MacProperties.MacDigestAlgorithm.SHA_256, MacProperties.MacAlgorithm - .HMAC_WITH_SHA_256, MacProperties.KeyWrappingAlgorithm.AES_256_NO_PADD); IX509Certificate certificate = CryptoUtil.ReadPublicCertificate(FileUtil.GetInputStreamForFile(CERTS_SRC + "SHA256withRSA.cer")); WriterProperties writerProperties = new WriterProperties().SetPdfVersion(PdfVersion.PDF_2_0).SetPublicKeyEncryption - (new IX509Certificate[] { certificate }, new int[] { -1 }, EncryptionConstants.ENCRYPTION_AES_256, macProperties - ); + (new IX509Certificate[] { certificate }, new int[] { -1 }, EncryptionConstants.ENCRYPTION_AES_256, new + MacProperties(MacProperties.MacDigestAlgorithm.SHA_256)); using (PdfDocument pdfDoc = new PdfDocument(CompareTool.CreateTestPdfWriter(outputFileName, writerProperties ))) { pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); @@ -215,6 +290,36 @@ public virtual void StandaloneMacPublicKeyEncryptionTest() { , "diff")); } + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void AddMacOnPreservePublicKeyEncryptionTest() { + // TODO DEVSIX-8635 - Verify MAC permission and embed MAC in stamping mode for public key encryption + try { + BouncyCastleFactoryCreator.GetFactory().IsEncryptionFeatureSupported(0, true); + } + catch (Exception) { + NUnit.Framework.Assume.That(false); + } + String fileName = "addMacOnPreservePublicKeyEncryptionTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + IX509Certificate certificate = CryptoUtil.ReadPublicCertificate(FileUtil.GetInputStreamForFile(CERTS_SRC + + "SHA256withRSA.cer")); + IPrivateKey privateKey = GetPrivateKey(CERTS_SRC + "SHA256withRSA.key"); + ReaderProperties readerProperties = new ReaderProperties(); + readerProperties.SetPublicKeySecurityParams(certificate, privateKey); + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "noMacProtectionPublicKeyEncryptionDocument.pdf" + , readerProperties), CompareTool.CreateTestPdfWriter(outputFileName), new StampingProperties().PreserveEncryption + ())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + CompareTool compareTool = new CompareTool(); + compareTool.GetCmpReaderProperties().SetPublicKeySecurityParams(certificate, privateKey); + compareTool.GetOutReaderProperties().SetPublicKeySecurityParams(certificate, privateKey); + NUnit.Framework.Assert.IsNull(compareTool.CompareByContent(outputFileName, cmpFileName, DESTINATION_FOLDER + , "diff")); + } + public static IPrivateKey GetPrivateKey(String keyName) { return PemFileHelper.ReadPrivateKeyFromPemFile(FileUtil.GetInputStreamForFile(keyName), "testpassphrase".ToCharArray ()); diff --git a/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.cs index 1ce7cd8b9f..776a118178 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.cs @@ -92,6 +92,37 @@ public virtual void PreserveEncryptionTest() { cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); } + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void DisableMacTest() { + String fileName = "disableMacTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "macProtectedDocument.pdf", new + ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName), new StampingProperties + ().PreserveEncryption().DisableMac())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare().CompareByContent(outputFileName, + cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void DisableMacInAppendModeTest() { + // We do not disable MAC in append mode if it was there + String fileName = "disableMacInAppendModeTest.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "macProtectedDocument.pdf", new + ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName), new StampingProperties + ().UseAppendMode().DisableMac())) { + pdfDoc.AddNewPage().AddAnnotation(new PdfTextAnnotation(new Rectangle(100, 100, 100, 100))); + } + NUnit.Framework.Assert.IsNull(new CompareTool().EnableEncryptionCompare().CompareByContent(outputFileName, + cmpFileName, DESTINATION_FOLDER, "diff", PASSWORD, PASSWORD)); + } + [NUnit.Framework.Test] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void WriterPropertiesTest() { @@ -258,5 +289,79 @@ public virtual void ReadMacProtectedPdf1_7() { } ); } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void NoSaltTest() { + String message = NUnit.Framework.Assert.Catch(typeof(PdfException), () => { + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "noSaltTest.pdf", new ReaderProperties + ().SetPassword(PASSWORD)))) { + } + } + ).Message; + NUnit.Framework.Assert.AreEqual(KernelExceptionMessageConstant.MAC_VALIDATION_NO_SALT, message); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void ReadTamperedMacProtectedDocumentTest() { + String message = NUnit.Framework.Assert.Catch(typeof(PdfException), () => { + using (PdfDocument ignored = new PdfDocument(new PdfReader(SOURCE_FOLDER + "thirdPartyMacProtectedDocumentTampered.pdf" + , new ReaderProperties().SetPassword(PASSWORD)))) { + } + } + ).Message; + NUnit.Framework.Assert.AreEqual(KernelExceptionMessageConstant.MAC_VALIDATION_FAILED, message); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void DoNotThrowOnValidationTest1() { + String fileName = "doNotThrowOnValidationTest1.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + StampingProperties stampingProperties = new StampingProperties(); + stampingProperties.RegisterDependency(typeof(IMacContainerLocator), new _StandaloneMacContainerLocator_360 + ()); + // do nothing + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "macProtectionStrippedTest.pdf", + new ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName), stampingProperties + )) { + } + new CompareTool().CompareByContent(outputFileName, cmpFileName, DESTINATION_FOLDER, "diff"); + } + + private sealed class _StandaloneMacContainerLocator_360 : StandaloneMacContainerLocator { + public _StandaloneMacContainerLocator_360() { + } + + public override void HandleMacValidationError(MacValidationException exception) { + } + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void DoNotThrowOnValidationTest2() { + String fileName = "doNotThrowOnValidationTest2.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + StampingProperties stampingProperties = new StampingProperties(); + stampingProperties.RegisterDependency(typeof(IMacContainerLocator), new _StandaloneMacContainerLocator_384 + ()); + // do nothing + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "thirdPartyMacProtectedDocumentTampered.pdf" + , new ReaderProperties().SetPassword(PASSWORD)), CompareTool.CreateTestPdfWriter(outputFileName), stampingProperties + )) { + } + new CompareTool().CompareByContent(outputFileName, cmpFileName, DESTINATION_FOLDER, "diff"); + } + + private sealed class _StandaloneMacContainerLocator_384 : StandaloneMacContainerLocator { + public _StandaloneMacContainerLocator_384() { + } + + public override void HandleMacValidationError(MacValidationException exception) { + } + } } } diff --git a/itext.tests/itext.kernel.tests/itext/kernel/pdf/PdfDeveloperExtensionTest.cs b/itext.tests/itext.kernel.tests/itext/kernel/pdf/PdfDeveloperExtensionTest.cs index 56e66caf9e..a3a9b865fd 100644 --- a/itext.tests/itext.kernel.tests/itext/kernel/pdf/PdfDeveloperExtensionTest.cs +++ b/itext.tests/itext.kernel.tests/itext/kernel/pdf/PdfDeveloperExtensionTest.cs @@ -105,6 +105,28 @@ public virtual void AddMultivaluedExtensionNoOverrideTest() { .GetExtensionLevel(), MULTI_EXTENSION_2.GetExtensionLevel())); } + [NUnit.Framework.Test] + public virtual void RemoveSingleValuedExtensionTest() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(baos))) { + pdfDoc.GetCatalog().AddDeveloperExtension(SIMPLE_EXTENSION_L5); + pdfDoc.GetCatalog().RemoveDeveloperExtension(SIMPLE_EXTENSION_L5); + } + AssertNoExtensionWithPrefix(baos.ToArray(), SIMPLE_EXTENSION_L5.GetPrefix()); + } + + [NUnit.Framework.Test] + public virtual void RemoveMultivaluedExtensionTest() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(baos))) { + pdfDoc.GetCatalog().AddDeveloperExtension(MULTI_EXTENSION_1); + pdfDoc.GetCatalog().AddDeveloperExtension(MULTI_EXTENSION_2); + pdfDoc.GetCatalog().RemoveDeveloperExtension(MULTI_EXTENSION_2); + } + AssertMultiExtension(baos.ToArray(), MULTI_EXTENSION_1.GetPrefix(), JavaUtil.ArraysAsList(MULTI_EXTENSION_1 + .GetExtensionLevel())); + } + private void AssertSimpleExtension(byte[] docData, PdfName prefix, int expectedLevel) { using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(new MemoryStream(docData)))) { PdfDictionary extDict = pdfDoc.GetCatalog().GetPdfObject().GetAsDictionary(PdfName.Extensions).GetAsDictionary @@ -113,6 +135,14 @@ private void AssertSimpleExtension(byte[] docData, PdfName prefix, int expectedL } } + private void AssertNoExtensionWithPrefix(byte[] docData, PdfName prefix) { + using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(new MemoryStream(docData)))) { + PdfDictionary extDict = pdfDoc.GetCatalog().GetPdfObject().GetAsDictionary(PdfName.Extensions).GetAsDictionary + (prefix); + NUnit.Framework.Assert.IsNull(extDict); + } + } + private void AssertMultiExtension(byte[] docData, PdfName prefix, ICollection expectedLevels) { ICollection seen = new HashSet(); using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(new MemoryStream(docData)))) { diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/PdfEncryptingTest/cmp_encryptWithPasswordAes256Pdf2.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/PdfEncryptingTest/cmp_encryptWithPasswordAes256Pdf2.pdf index 092fe20533f37069ea0d0d6734912b307bd58a2c..8f724a26d6652ff8a2244b408070341fdbb16603 100644 GIT binary patch literal 5531 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 delta 3728 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 OY!IABPEN;Em*-!0>Y|na diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_appended_encryptAes256FullCompression.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_appended_encryptAes256FullCompression.pdf index 533b80e956ec91bcb78becab4224cb50260e331a..d1a6fe05ddd6e2bc11d5a3ad0286c63eb704e48c 100644 GIT binary patch literal 10794 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�=K`>4Y0uk2FrEBGI8_J3}1fd!jd zENFTJ$@X*O|IKcPl*ZoA`CSpVQwpH$LF5ZT1%xp8UEC>tg8_hPU|$J@Trk`>dfl_Y z0_+X>f88(hqd54#+c5LP{hxjM`;9~_{BL(0{GT=wZE0Dras;=lGhpsGfX@sK?P>28 zUABM2s+cHb+lJJz$u03*x#QAto00=f4C2RUfB0+Ee^kdX75#}1F~G9^jPY=U{ukVb z;qV_YBZCV6Y>y)>u-)P}G|2jgT^3+Hzsr9pK!EZ5!N#vL9LD~DApZl%ki`Jb!4S$~ zQc)KEpJayrwaAde;IdhOIq?8cgBc8x32-7EhPf!6$DngClwfi=Y>WWFiewQCk`y2% z9)m{!1PHS*g2{$>BnOZlh=4GFi->ny5Tm0E4tS3NNE(wMxnPeJMlwkh;ovZv z;4(=j!X-#R4*@=d0XAi^2!sW5nS!?^1c@^NJ_P%`xCnR~!ekIA!2`INhqD18W-yr? zgoFVHM%V;_0B8)jCIk_Jr~yKab2ub~u>h)N@cz3YLx3MqgvViW2o8YAbPfs=Owe~a z!9)Oo1qhl>rvvgzuozq>$aDd_gy`TE1q%lNmOwce0@8>Cu$+al0gNQsTo8MdL;*h~ z2|B`sNIJRe=Bg0uN#E#_K;u4_R~^ I|49%37Zr8xYXATM literal 8241 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%0D(O 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 OWAu*#6DU9E-~R%n{t0{l literal 8351 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 delta 3549 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_encryptAes256Pdf2Permissions.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_encryptAes256Pdf2Permissions.pdf index fc84e5a3c6176639604f942770fffffcbcc2de29..24f164693c96b29e182b6f522f42d1c3bb1b00ed 100644 GIT binary patch literal 5564 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 E2mAP&#Q*>R delta 1060 zcmdm^{hMckeZZTgvD;JUuDxHp>D>FUJ%)6}q^kbEC>UgV@9)&S{IA9_r7zvt`kTT?Xmg4$Y_MZQ?GAKbSqSfBIxDCho~U zn3U>`6$}*eld`yMZ1f#VOEU6{G|+5|F)%c~(D>?P#D#>0pJ&o63_XD&=1-Tz6!})G zA3Lzkv(D9X+l>c7n)=Q~sfi_-`FSphC8^j<`QMa3v*v?ejD|;tR?&i)Upty^y{Pvv zc@Pj|U}V??GF9)f>d|>UP?NAbig!WkYX>) z+Ikdw1B&ufN|RHuhQVQ_n4+~n>r8>JHP1gmyYTW7pj%A-S$>?KTHOM2 z7RW!9&)PTJcPgCFe+U#Y2V#TVP8*ap5 zP8MKZFnKngd%aI;UV2G}f|042zQ2OT8N;_A^%2gX=y=foaN6Pzi;5zTnMFT!y`u^W zI*XfS?}28RU0#0T703-8K*BV<)Hym+H#zV8!gqT$_5EEHG(g&c2ASxr+w)BYq#not z37CHU(iLm?_3Gak%}vJw9KBB&dENX6axGAeiP|Jh{Qw1BV?$#j{eaY>++qcd+8ICz z)4fhHNz)hJd*7eiv#e8b@^yas`leYiY571oqiKJWKV1ZxU_N(7@oZ4Q8SmQF3$pF- zStrZ7ulmdX7A*yenpejp-2o~y0%Eh3g$@aBSGTMLiW^+h)DHzZxNClbT}ytSmch$C z^>%-DH#`C9QS7f>05r-_^`E*2h&~C_Yy!jv#^Rd#VG5>pc3i1>DWGIsQIwj-WuRa& zxn4kK@?ilHaSLM;1)%8$1`2r!Twn&!WyY41j|o`So0wrpSy-4N#7c@1GjmdlKzYSA zFS)3)phUqOn0ri5EKO33(hO76EKH2k672}7 zU`(8xB`T+H0d&1;W=Lv9iLSYxfu6B$u%BZbhQ@~GT&k+B{%%|V DD+i-^ diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_encryptWithPasswordAes256Pdf2.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_encryptWithPasswordAes256Pdf2.pdf index ad124a4201d66bff43644090c7b92cc433200555..0342ff69f23032dd8597d2dc4fb11e59ce0719c1 100644 GIT binary patch literal 5554 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 delta 3898 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_stampAndUpdateVersionNewAes256.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/PdfEncryptionTest/cmp_stampAndUpdateVersionNewAes256.pdf index 4e4e2c245b50cd881b19af6a375e2a9db3982f36..81221803b7694050cca2f1f27dfef783381128cc 100644 GIT binary patch literal 5570 zcmbtYdpuNY_wRC&9Em7NYDx|gv#+!FoKUWjnIX3>F4;4)2OUg}A@?q*Tq;Q<387L% zx`}hTAWFGZM08Fml~kxuQhA^0a(dr$`Tg_TpAUOK>sf0(>-&Ay^L%D49S2KmL&OMD z(0TZ%@wNiafEZ%_S_NZcrnRr1l$J29{U|AINeje6n#rL9yrn)25;8RnluBsIUx90z zUpF0IwN=T%?b1BmcSnA9lk2RVrrH-%k~xkYXMVl$U~*)O!P#Ty&xiGH$82w&w)Vf6 zf6Bwf-p#o!OuIfW>&mhApS=s(>x$Kz)?TWMQlJBbUtNPQStQu^h%CebQaV5y$dE

9TVzq_cveO-gAQ+PG|%;Cys1G{Ew6ou<{rP-;qCb-tDe)a$!+dW6S zA$G`aOYza}>%T^&*AHst^jkCABqBfaUO?((r0)99Mv?vl&rt>KCM%0z{gv)#GZ z_{&Tc7c6pp>afA|?Xu=^Lv3!CmagFSzj`}at^cAxN7?0Elo zi{9IHHM5ZRg|Fr*SuYg+Z20O?l{aJROl8sOo$pTcpJ^yx+-=G>T{E*>FTJMges=5z zgR>=j3z)$UE{^f0SmJ6;3faq`Dtcu8go{O5j)Q6%&HJn8X#5&|Zz@|zK5%`YvUrWMt#qt8 z!zym3m+1Ajj~!F{YVtDX{bI`~tWpZG%MssomQC)I+!C249@mXisQ7NxOsObgSqd zYgnqb=2Yv^maLmO;|zpaN@I<*O58-xt{rNMX6NUy%=%O}d)-Gvdr}6CEJ89Q-TUKK z4M|@)aavOK@|e2O+?jYku}NR`sEyaF`NhJfk9+=j-h5pxHEw3z;_x%YZ{VPMw}0zA z*4Mwf#%4fwILP>;Z^Ml;AJZTp>6j*Bo=qSvVj7!SGYw50oY60O6h%hG+-Je+AfrTl zO2TJanwU9I{xW@>WOFHs%O)v;MN<@w(rkna<18GeARZ4wP?$gw0UPHFAQlQ?Ts8|K zC<3J*l;rb(xxtrp5S(DzFtjAjp{eH@PBpr`Z{6d5YWqi?T%)WvCrPggAWF~=6|rIt z=RV7z;KY5QEZ&79Lxh^oMOg;gOdC^%)+s%XERrMXc>If8{X|?EEP6@Y^%f)#YQqS8RRjH|}+Z z_ixu}>aeUmyP_p?=izr835eMV#O$GQXTuhaOxNektdE0o;Z-J&#-8{1{fjjBCBz!w z7O~v_dZVc})0u&Pl`p{(TA&Is*s9Q94}-vQ6lVw+U;1zuh->-75dGE1B7wsHM<2ol zI_V#MFagx-Kl&i}-*ZV85K{lJVv_xJCk#o=(6hP#1I7CL< zQzCDg0m=>-2C5D?jH3*cg)=-D|Eq^-ZD`EUMf6D=Z*cANDC_vOG1XB8Y%)kZ02GNlypzNQSfiH-L zA(A9eu7GA?umA)J3O@u72ZtA;Z~`21jG%cqg`qqMWkDI0ZyB z3V0$%<8SeSY(Wt4zpw*9A#yzbWsPDe40C}m_J2VaUd?JWEPmnR6 zM^L~!B*0+#y~TwfLI42g^LYr3;w(M_33vpHKnaMX1p+p}2FKYLAB>?iD9j)b3DYDS zW5X!T<;rg}l85004{SG!7ElzMk7GC>9G?~-Y?udb9AF3l_ykO_Ns=aL1i@&8ATb_H5il2L zQ5atUc80)U6bBZ3j7uO0Pk;l`(0srknn$BNj7^XLYnTmVI2Yy$Fo+8<#sxf<046XR z2m4O3Q62?GL69`YLt#=tve^)yg$fM*|0D2VT8IQ!LpUcVhO#HtqbWwD;?Gu+B&SYaa5JcD2Z(J(!^jETUArj)W%HpKUhn+rT_o{ delta 3886 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 W8!V1egCjr+A_)cv3aaU;1O5RwB}7gD diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization05.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization05.pdf index 20ad57efbc14b30d758bafe2f527e9ac4475a0e7..41b2f7c6672c1960c92df86b3eb7990b77c870e9 100644 GIT binary patch literal 5551 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 QgOgqk3J?|5FwzA42L(qf_W%F@ diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nonAsciiSpace01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nonAsciiSpace01.pdf index 25866b1594ea931ce208c7b17d1be146d2aa1957..b3b13fe20238ecc52b572e122fcd28b06e623c2a 100644 GIT binary patch literal 5555 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example01.pdf index 0f5dcc5def34feef3425ae4aeff75ba375ad7980..1bb32c6a410f29da9e0cda9d07ead3071381d7ad 100644 GIT binary patch literal 5547 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 LhK8w)nZmyTM83h} delta 3957 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 A5C8xG diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example02.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example02.pdf index 68fbdbdc4782d488d8c64a53fc4294e343e8e78e..54866c9766b0c102db40e5f619d6d3a0131bd44c 100644 GIT binary patch literal 5551 zcmc&&dpJ~U+wXi(=^!bcMp90hb(l44ri95chjKn-#G08kQo}HYoT5acB!#v^RC3rv zA*V=kNJ%LoqIRJjrD98|)PA3_>+O4Y`~BG@89!#p3Co6GS@TM zfM`HcNJtx^~Tq6j&=r8G6E25tf|DWVz(2r;Qga)msSYD#*zig!^Mkd~IWSVR); zQtH9pe>VFzKU_h*V;YJgdk&}EIBFVsBJ{V6wYpcP);;p?j*q7~6N#L|4T+`wSJGXj zyQ+~_D|CzxyT%xs##}$w8P7i2_iOjfj))WIuT2`0B0YHDLW3tsCbSq=(p> zBFWN{YDV(hh%G`tM+m%POpL;yAx>0tLIiv$$b^d}=`HjTaY=7UJz%ut2d2;^-?YF* zwHCR#{}jR6-;)GkTuCi0Njj1wP%z>fEV`g>v769C55S`Qy?i!=(!L>}-Z@sw_ISjG zAX+cui7zjw_hSMZLh!&`a7S5MgSv+3eJ$_|rDY_mP<4I0#X|Rg3X}tU;P*a-YzU@1 zwWU~W%R9Wy7gnK~33>lFbN?t0{!yO3AAr~!)F**#tJQXANASCa@Fs0Zk;F^|T%rEk z$&~aZ1r!tk#r`l_lD=*d*MBN1Spr2%UF3+)Y3ABf#TjfB03A}RLbb6p{U`sg;4?l@ z!lH;crdup4}13Im5QFPvA|Wd zw4A^qn~`FIM~DduKEVme%6fm}$HY?Wf^Pz$>kl|2{P?!olFB8-p&F3_UsCMGC8+uy zU@y3NxKi!hJXip#f4^J#aKsYoNP@x>_X*DZh%4dbcNPhK07+r0i5t(`Q9^M`r@ux_ zWcOo;B;{{IzHL4PM6{~Gqa#{ar8M}pZ=QT8KgNvnw!5r?{$P-265O%LVe zLtfqOIyPX|qTI1Lxv0t6Rf%D;GGS$&Y)q?YZ@Ru9=+wZ~zO<(&hT0ZzM&VNpeU28h z=a+`wjGPmSgu47xC)Q>nO6>>Y#;^7>J5~G+^J3>WwFC2V*M=EKGPWv04oW|s* ziEo>`9yWT!@@?M*5c9!|B zYoUBs+ud2Ln4?Y6SBnA{on0AprtXktS&WF7&s&L%Cjna}SFCV)lF5vj8A=Lg=Zg{wLgkxpXs;3t^uB>?U<)&}dyVZrZF;fb6 zy$&x;ANg`SmWqGgFW;xR%3@yI*LcsM(V+Ziaomwp^H_@6fgiZcmAB-YgU5=)-bm#X zMD4rD-?}5n#d9%dflKNKY3Hw5MH`)~$5$&cvb&hmTQ0_4>rziNc~amXy}+fbx6r1# zO0eZF&C`&^-k;7s=$)7u=(wtS@)+eAGAqaS&sZ~dV>aAiK8R%Wb`Jl8f#P_OJc zs#UyUiuF1HL-Yq8d2Vyu);T!S|6Zn3O2n%8#-O{ut4@}-pJd*eGWKG2oSAuCp?!RS zJksPK-`;L`?UnS%@jJdrO$Qb_wkP((Cd=eH5>C0CH<>g2(6C-n<JSrB)N zXlg)Wqjkuv0`>T-4SBC=`wV*oKB;a&KAeDZ!=*F(#spgI<5FzIG5_P;kU-7(Eb04> zw~UTdtFs+f)JV@GeGeHx#ya_3A)etV)*qROyQ zp;CSGQK!546(2g^!x{7zIOldPYSN@BCn~9_8rpOs;m(@lGP_4iUxd`}ygmBm(jI>U zT3TnccK`auYx_)rHX0Wl){%Gzg)m8Q(k%iMf%1tU} zH%7&3?vS0U@?yuJ?aFb=eP;eT^^42v&d-wR&wN}b*D)y2h&_BSgS9NTo?$p;Y0>6< zKmQ$$bHbgzYL8b|iM2NUqP=tM<-Em*hR1W%Jf~(H4hgYHnKjHoZ@rzn?^^kl+xq7d zMaF$vc8}67opE2-nb2KxxhpgJ(RRP1aqjt+j8`^&sdE>KM%#*da!QTtH!a&HU1jXy z?9e#f^27pu$A+nznc8qkd1Q#gx7fW^JO3Gy_;ghymh+M z^TBV8?txlN9C2Gc((;}aa>!qd=05H}ut?iwPePV_{5kU-8`IUg z3U7b%EK6IDm)0(9Woa|-O}RqVNvyEN+Wz*lR+^|?=8rkn)(yG$&kg>#uxd@M^U@gw zZVsVq{S?0*e>x@(_@ch_p5el&7um1gxKgNc(V2})%r-7`6csx8=~cJPFwIVNZQ1yX-dmGu4X?PB zsU3#xViBYlKxwa+!#e4C?U!>NR zjU<|R4-M*J)0Yqt_hh_oI$R46Up095FjhkN_AP8uJe_l78CmJR#cyp;)VZmm)K#j7 znwJmVP+KAs`ZYpxkLu|w){$9W_2B~z;^hnNR`l*TbmqN0`bD8_G%_o;+^P&ynDyX~ zd36iabt7Fqx_O>?v%=*wzv+DE=r2bNZ;fvYq$@nXl%JdJb^zbv)fzQ&Ca`p@dH4Bz z&l$F#{eqvVx!ztPiIj=dX`Ly=2ulT}?3GKSJGhF7jndom6R?n!!3bq&m@EPX3m^t&KMkqI^TO|e>u2@f72;!#cX46F!& zSd-2{xey8QVLrjNR&oylkLA(%;{aUd>} zK_|7o&x3$-dOJnADT)(!PR#abust5&Pd1wZ)q%e*l?WMuR$n#_1RDxWh#K4D#pvm5 ziGB++$;^5@U|3`M_((^aH${cIU7w#k+x!A=Nw9MVH4aM@ z;+jUMHJc?5!zxsB$_AXqU{K9Tk-IlV*(0HFw4gO*7zBVj!u%c^boHxHEh%&Wo4dhZ z*nzv~`=bp-dGm%}dw@3-RN;vtB|8Ce2C{8Q&wZ*bQE%>&Am=4Twzzxe=qKK81fyUxfC7SjvG)&o7H8)O zTxg>zR9g!6L(2GxNWK(AVM>9SzFibLhM^dRPx)@cU?6xT7scb>HUK2#k+&VJ1(KCdmZZK?Il$g!~^hAP|#)|1k@YH41@2|CuugfiOXKI0}gNS7qQ0 zqVoxai{lWVOQIk;9mV(v%wXblg5)zf2u6a7po7*6pT+P3Gf7U z@-YTZG9U&Yp>Z(;q>YgThrvN{oQ~iSjfN9EFgby9aZo5Y?Jzz`Vh{(c4}{TC0+Ymm za2}IJkX*nJF3I8YAU;m=_%J|^$0v9k6s996hC^JO&Ot~njv-uvN#ikKfE$E?RR_Hk zmaeIgJJA3G$BX2g6$m{*qfF8j5&3(HDUws%lDbuo;;6|)`8a{$OoGSdB6J?fBM}J) zV1x@+1O^Q|K8|59pGKg34xL9J90KJ4Ur&5<>wWnP9cR z`3x)=23)x?AS!U@;~dE!7gz{BgU8`u44&5ie+Ev}tsZ{lpt|g(7kTQv=d~Hdt+AnOhlcx0do26C&}%p$S$Fky299-)`I{!o_HDUio|dBwV6FE@W45MvnIJ` z!4#fzYku0NmyHGe*HMRh!-iOJ!8(oPO!GE=`#n_@Eahc68*0)FdXp zSE^IPPCR-vlC|z(LR<=^7zhG#v9PCPm{QnX~Ltv2q)?FO_ zT`5(Dw&BeDjU?p7?Gb1Q6her^(9Rx(u7m(4V;rvib9uSLXyKCp_<_4M25aZytboB< z|B3G$jV*{ejaT;y10MWPa(UW+DOO0}gu{P!uDbWhtB!}GEnXJ2{fp|)Q<P9(95^Mq$)3hR^0*T;Ype=$^$_qxjD;Jjsp-nmWmEHE zQG0AJLKqQfhvQ#0o~X}icEf?Os-A=R#4B#TWopf`#7ubaG=S)30R4G))y?Z94KdPj z?V$iw%gsAjZ8AfaLAJ;v4S+1HJ6uDpjm{zGAQRf6Z*#`B-%wJN0YZL(kX5zqFPO$> z?OioUHPuz{PbYdPCYa$%HZ`9XXub2Pgu)Eg%|bz3F)L6IO(Enr`Dh54aldvsw)KZz zUU9pHknl%D_jjX^Sn%hc8`?t(c+>%TXg%=S=*37(x-st_f8muLXb-60NL`ujqulkYElp)X`msbx%r$q<X8Gv_>t12K-|-Pvqd^IJC02)b8{&UhWr$@!$*ij;9sx+*h!;kd*5TKDP^foml zZdZ3KJt|yTC6nXTw2?)e$sZsJF!NrS=)?BPal;3Fi457fy{UH6r0YnKO!R@$U1@8ZhGbV zyP{pX$5{du2bLw8rPWH*pX3Q?;Tdp&^`Ls8%V)oOkA~GC#xF+hi}J9 ze@Ma>s&2t7cQxf9m0WkKj^Q~Yzk%nTs>-KoB_4U`S{uZCi@Yi0ySz{YJKRA2d}hvbbE1{IL>O*DpB_8O@(&iQgrK^L6WM@kwQ!g*FAA7y*VNAivG>Yq&Jy zJzZYzhBESJI|e*i^NQ^$YgZX|X2?MY>)$D~6?cG+mH_&GZ6n3idn>7Yz${03yS7cO z@|`?|*`YCs!jLzq#rx~a<*6Ngg(3%AC)6UfPE%?k1ODuyJ1Z|?56ZY(LYCy6gx@yvA z*qCBDY$5pg=R0mDkuDpkFmTN?D59p1L5x%;=mT@lTYgtP>TNEA+sP`EYkKFy5*jwcki%GX$2HQN$z0qszTNY2YF;?~P z{zR&SVhM6jD+|r^T(8ht53;xz#%^SG;3gbu#FJZeVb&_V5WE%cBkix1oyGOR^i?e6 z$QCt0(!u{GNJas;er3S(w)eu6tzbH71@7#}O%roU&iYYwFsyv=oy+5!&J!9QPKw{R zCz6e>u{lr(9k6nLiW?7qrWsRjv!_?mOdF0qN{i#6{`D@9;Y(pHd0t{K>!I+g#B01<_&RNJvcmc{r)~;s)aQzEBxmzVtw7j@Fn7hfT8is+dD1NI-PTFVsrEv z!Z^|i!&d6P`6a1*5Gg-j631$w6JCK+OAM0_S&>8iRuhK5#%7i$3#5`HcBvCFMUPiU zVCBj_44pd>QHk6#jB-zV(>fNCK3fu{pYe>sP#8tNC=t=QF+eGE&5HJFE!BW>=Dybj z&z2viT)1`!$bZ@vWtZNk8bn&H@Y}d4fwph0GhrjgSCw){cEPKvxHYg37jW|7is?&u z7xNLMQDAN3qQ`ch-Zn=qZgPJmBRdj1e{22Sk)F^|VO^f|Q1HExuC4g4>;2t6lfC#K z#%thgqZ*5j;WjAg)euf-k=^x1l2#q0@D-$jjlJScpd_m<;yJGA?0Ybue^n+}X~pge z_Sb6`FisPJex%gp2aRH+j2Lq}YxCZ*bG?Bo2%%WS#Kb|e?vJzz-O@edo%iYGZsEPN z4VSzJgcmEROu_{maBqW8g6uFxKUc*p z`SGg(%P~mZ>KzX|6uB8zqwu`@+#7m}$RN~nR>AuApSWK}!tEKKkI@yAaYtUa>UtBpu{z!C@5xf~V&|u;60Oc{&ef5IxbSqxQ_Pe%$ zxyL$B+Xp+eJ_j3zx~AO=8POyGH-`nqao34TP;Iho>xL=3lzGQ^<{Lm|>J9@w&)^@jhJo z4VKqfGqCJEv*7Nl0Wl{mgEF4BS4%>|e=E3I6w`lfy%3M^6RS-5^2!S5d3-SU8!sw& zG#e{hnY}S+8_KyQY!3ZMZt4fCve(qw1kQKe8~qVSSGJ>wx`=PH3MKtom-0@CJ=T#e1QV+1r&8l&t)6eNnpi%U)Pv>OZufrsvUJd}Vg^Tr z)5Nsd`8=OCAoKKrI#}O*p8JU0*%_!g-}Qb@%c@d6V=H8mY|cwc@}e~7e3d1P-4(h2 zdl=WXMm?5IMed;GG{^L&Dn}x6e>p}YLD5v-Z&k?5Z$V!>_IMP^aO1UJ<}v#|^HK*% zGx7W2^SKX?8aio;M5U-z{MppC4fM*q(CvtUSTJWHRh3m>Y>?24&Mm6JQ@QXU#E^kul&wgpMXd{$QkuEgP6slPueKAQ*BnPn%)@qWNrV6Qg*6W$#`|S?H z6n~DbmJQEvxFkRE(udy8;T*)Y#^21$(&FZ&wIA|a2l59Fcr+UrELnwsQ_9^RwJhvK zL)15@^}tEg^+V$0zGIbdtNX0fSaCiyR)D&-^HZ!X2nt7lwLttb^4lPUPFgTDns8;q za?#kF9JIjQ^%;%&7Bocc($K&MJc`l@H@Wy>Xv1@Zr4>R5LtCJ+gwmzcL2T7r9_;^Q zAy8NvT0j7-r3m8ZL-WrZ6Y4NG!Us}8sKZB&?fu(ibBZyS%>GNQgGPh^)+!ojS3E>u zgYF4{wLu~<7zzs3wsv>&0P%O!JzhTy_LDRuw2P&BqR|IHIj*0U18^!Pup(iXL^Ydo zz+2hqu1s-}fs#v{r>1|{_LCr+BK3C!5R_m%VE@=L)#l9(G&+I+5!W)&-Q+T|5diBG zCY3yOLqZTJKvGcY^zNA6{tm>_w`Wc{al?d1qokDQwE)-v1ecbkw05?-^oBm});2h2 zIuNd&j)6%+904Nu8VCgB45IueAZ!PYYoxmmz$N}qMFNHV&m2qw3i)>q>yEK=w00-> zPq3o1rMs^y7DQkH>4H@hKqiuwPy_^SDS<**BVaH~aTpwm60;D)*kHsl5TpeZBK^M+ gjDLjSOc@2PB1IvhFkCz%6NNaEl9yLe>mlWT0m2<3iU0rr diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example03.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example03.pdf index d7d11aac6d6bbabd290878c2c0d82e2049894c11..2de9ec3f40a2543d440dc574c07bb6c88e7b7f3d 100644 GIT binary patch literal 5580 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 delta 3974 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example04.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_rfc4013Example04.pdf index c7fbaa9399f02c0b201e97d8378712acf3470503..bd72132b5106ba187c623594d4b35d138c899187 100644 GIT binary patch literal 5537 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_tamil01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_tamil01.pdf index 23e10323734e15ef4df2615ef12a502b7d90b78d..8a0132e81b5c83767347c9e38f387296496043fb 100644 GIT binary patch literal 5530 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 delta 3941 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 DzNx*w delta 3896 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 Zz{d{fgU4Z=m=G`+lu1ZP!{9d4e*rU(K|cTh diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_unicodeBom01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_unicodeBom01.pdf index a87947fbad1d165454e21904d1cafdc67f27421c..b13c9602c0d44b629c99f9493963384553714a78 100644 GIT binary patch literal 5551 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 C)~J2} delta 3956 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest/cmp_simpleEncryptDecrypt.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest/cmp_simpleEncryptDecrypt.pdf index fcf26de22f55e2f22eede7498eeedce6b222c7cb..04af4ab69af355d9a22342f532ed9301d794ac11 100644 GIT binary patch literal 7022 zcmeHMeN6RKQWoj9}2spn}fXKlU8&;V^fe z_xb!i&wb~4-WzH$Cqz;PpbKqoIdE9V5P)!53w6=aWP;tHAPNOkTx<#A2PVmd*k<#pT8mVu5pAeu1qpPkyvhN}w=2eXsvpKqf8t$E z1vwQjq57CXCVE^YZtP}!CTT{cb_r!9#*s;c;weF7CYj|ConE)-K~AZh%qn*yKflRD zrXtxc#<_es0IPvCG*B#nEJZ+$H9(dDlrfjIsDcVXX@)Y8*Hz+?keA@J@0vD?n2$^* z)nC<18ZWe?7LQ?3>@KGnqc*`DMPYqFpco)P4)76x4g(-8oJ@7ezsk_58g{Cl?8EVU zv2HI8J1H}LRu2A*6TN5#@~C7Ir;+SnNbFM$1GzUUazfI}uaYt|h}&g3}1eWV`ImQA;T!*Ix{pmQE2hvF#!l zzr;)hClALe0{kyN7AufM0-EqeW~W;Vk)&X{4+4VMT=GFk;6K$nAH;>E86tfwE-62e zBPg}l@G?(OYOUZqfuLCRPStv?j8t{)Zp3v~s9Ks_?yo$KxQNNlBE@d01~N;midyyw zE>E#P=62Tu9^Kr<$+~{AL(G?j$t#KP!kUytCvSaa*KBC`_{uzLNzk^Sll?bjT&ioR ztUXnIcx~RCX%R<*^%K{g99CjDwuH-;m}K_Y3%4h?HRO#6+aFzkVEWq9(QjWIx`O{= zfb-Qo$!B&|9VuTJy0UUn;@!m;R_T}C+PeP3kfT?x-x z{~p{JCJ;A&VtRucs)-%e0EXOhzI^_yjsKoqyXU}(K@&!PWf``!Ei_|GN$9@NBZmri zd=~*%RHsc{xb5AimVH6zI#a$4d+nv9&}SEXosjN{4|H(9@I*>{ zM0N1#^=oX)-n=yoZmckWGRQG{Jhwcd@lYW*@s+WkG541SAKo|k??cZ{;*%rA&mOva z_La2z62H0l{d*t8c=uL!Ue}{;`LiIC%BXq{5eO`-$PU-oEz! zAM0Gy+|$hjs+u(Y<@d|1hQ>Qg&yL>u>0QPjw}n;8VP~eKHlG{8ZkoH|tD|G%OGanc z6aGI3Gr0Fx#QDW zPp6STDQiOaTt0c=?eVKVPu$*5oS%522cXq(`&zgG`%d40<^q8hdjG)J?9latBdV^< zsV=W9;o3eu5>&bSv+DU~i+S*t)=MAeddl?U1|8qHoo-rEHK`@{iMA^xyH1B}eJ2Uj z|2$y9?&?1-PCxV(I{uA&;?PQ3INMsaXziu_!>b+AKy>Kwfgfk5HL>rGS#&nUI3vO_ z^YO3hO4sdd65>|%A9`mFt)#~p&+afBemTFyKD($Eu6yahtz%yQ^23iTQcBCc)89Vo zPN99n&5?yKQloz|@hv}IzPae)$A`xd1E+-bfVUcTAMw_9;oq}S82JFaDgTd8?>36$ zVR0~M@~QgDQF-CPN6^-)7w$0)JTP}#TVuNYwwAhi-sc`R93A&;^P`LJOwVcfdCrZZ>c1U;CPyOCUzX1nw!U`{$;yXiu84V&|A zze#yU-R!!-%lFCYU#8l!E&ER|NgVtAqr>2lgsl1t+bi~-ISvi(1!G1u#H{EJq!vzJ zfehGH`c$|y9SEeqk?ReRxr<}e9d~}&>gJU@8`I8)>^%`QJ>-4MfD>0oj(R3y*NKyx zFJ4`>bSrUgOY^3Xde=vdg*AH~9x^=p)Y3;<2Ry)D&f^S8e=Bn6E%%Ph zcw?q_a7)r363;abZJx=b-!tXwPYU_|bLN#6w@#C$=I>q|V|2I8@~w%ObJKuVjXmtG zR6w)b+r3r$(f>UqNK=8x`5TX3A$I_($n`&XZ2k9PAnlGxO^}Zp^%S-A=B@9Ur?pH4 zKHopu-dY_pbHuj~&3^EfGcRs(vjx@MsyHcXquxE(8x*3_PP__1X*OLJb|JfZd2rm%T?2hse2D?gye&$S&t_RZA0Z>y&r zJ(OHPqtjd9wDzwZxb`uGVg;e&_a!?u#oy+nB7ei!(dR_p=W~lv5mE>%%C|dX^yjy~ zrzh-kjQ#;86{Nc3QGtC*g$HF;q-9AJMUo)v?=$J5eNnz*cQIB*_=+7)ZDJl|kM0(4eis*}UddF)z+O?RGSMu21>V!e4T1Bg?M2XSsu@(R2 zcUG121s_5aR<2N^cu8a4U(&v#0yw}?k0fo>9BI0fKPN| z0ni~JOHnr5hKkrx(d~BFC2c}d^By~-O2 zgh-0X0zwqzqO`dz3V=WXJfPWa<-a9BYS|^*(~FCS?5G-b<$r(OFw!TCZ@_f}u0A2q zC*~W~bpx(GA`T}x9v9MblSk{kApk1Ep78@nB^9AU`vfXk-L%xT6(D)4a`qCaHKEZo8;VD?JCH|x^OIyIa-wC15(N(O4B~hrlz7Q%lPUZn!$z?*CsKd`q6~~S zqbyT44j@jJS(>3mAh8TWNHikaC|RLQu{P0&owPB?2!SL(il(g+MIk|^WgCkmmNG&b zF_0D{fyI&%5IIU>fGL{dk&HF-k|c19#0#`2GJr*pfua%cvM9)qhlmAM3K*d*%CyK> zZ4?g}2sCC9@Dj~iF%wJkG~i?_jYEQzU=ukWiZ&j{M)ABXaL5J)R^VBVu_A`E$*c&l zOQu{h$!T*D>S0F)nc;HbR|)>3HhTrak1Reh4b?`KNOkIqynay8;a4agMSHyQ`z1yf K8ag>WLHA!2T}!F} delta 652 zcmZWmOKX!+5GBz?8o`Y;kA{{HBx#B?-kJLx6rrfmg|>loS&{pg3thB<*h+WZy1)1@ zL==~T_)lEAbL~z)MO-v9n;FiWGp`@!UDX=S9!+;)Vn4QCG+JOmYK5wtH2TwjiMb=> zwh-GpcW28*I*+^@A0P6?+576@V#yUv#6;}Q_xEP=rw51C(RlC4>{<1im#>Z&r$;+g z`FeAsylw24dGqa=SA4TLaOm(ShML9+rm14Z^m z9TZm~0E=bO8?Gz8LIYi(w_d*VZgpU#9XLbfdvDkUr>}}4N?UICM;%ZrkT#~g?2oq4 ztw7HGAFq7tZ(aihl6_F5t#DDMAd_Ls-r3;ms|!>Kn7J;XtT2bfT06?dv+w{4d z_E}CFt+ib-Lmve<-m8ZLHxAbZuOmmvEh=t7Nxsg-RnD(=d+*fc{}JGXaCcOf2SpfN zqescREudeLV>R`D@8SK>yXnU6Uj1RepN3)C6xv`X1s@E@40>G|k3TGsve|&X7+t!?5WsqL!gPer)Lp^-i`#Uo39W{kdiO zb#a}(nR`N?WQvZ?8~S#>oghvwJe~i#Nw+hkXIU0++@K#8GWt7Rr+*fX6I2b9ppHg^ z1kI$Le;27qUv6)`p_x`nC|0qQPea<+WfN?8a;9^2=1fHChwTo1*S>t6+X)OaGI=wO zQ!+*aebv6yjmwBJ!v<&u`aByT$H;!+wOO82XH-FPLr2S3*1$CTIVEDWr9YN0b>li? z%t#@aGd&@SykXNzD;L*LHH&{<4wcpuxv9~toWc0>oMIcp>HU=}hXUl(e=^hY$nD(= zqvq}09K1*=5Gg$UY~ z7ST%#C`;?Du&&YMIyXG{L+dyi#Z|5>7Qx%N2NgIvTj}7H>u&}ltrlKb&x?|)N>`$? zl|+pO5DO7pvlzv)ODOizqI$PVf(*FP)jVi_f delta 1350 zcmc&!&2Jk;6qoI!F6*`3C|Ig;KqG`{+z{`3^RcrVBBPSn5-Oo3f&-#RtoI`^0&iq* zBy#etf)grF+&O^6p_d|#P){ceglj1mu7LN`wu-D*zpD$CC2N_Mkr)0LT!)@0;;5 zfEH%91C0)5Rsh`0!mPRB7}I>VYpVwUGv9o){AU=@IuX~5(Kxrm|E~ZxxZ!Ez(Kk_f z*z@-C=j^lK)9&bgXNzSl~eizuS^~0h#nr?YsY~h1R zbaXh1r`>#VaI5no`yfw7*(goe@pLpkVDx$Eb?UoKdQ|#I%@6mDlcUtziHhj`{Giu! z(s5!tVQv3*D!#XEw9nNTwl1pz@H=6<%{t=Fby+IEvpVDVb{W2G3*`ej-yCrTM1oX@WmtHl5 zH!nOeg-EK`1npH_x?EeQk1r~dLBk;TmIb*rNhj`VOEF(5p;*Qo(`_q3sObl{T?u7C zzqrrOP%;bS6AD5Arx>vD<83HHbq@2jIcqBmyik}UJ&SP+&tuXay^-q+o4FRI4QDqC zkmmxMZ0Ed%qy?C|zN|l25h&@``qQm>35yJKwdl9{s=cyC&RCSN7J|mgk`SOyY3D-- zrRgtsmA-1M&;z$s(HPKojkQ@EM~J=>QHnw*I`(;hkcNJ&AxOed_=$-86e6v(N<|>z zjPqe8Aj=ZYBQ235kA~ThBW4O!h!BRp&Lj?T=nKJR1QLc>rXUQG)VPv}v9dQXmYCu! q?QQ>`DXf_s(%w7XE8{F@rw^QY_wu}8JfJ_D%8?K{?RNjh!1)`Lt5=r* diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest/simpleEncryptDecrypt_1_7.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest/simpleEncryptDecrypt_1_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f24d3a4fcc4b4eb5cf9749111d31b062cfec5e0 GIT binary patch literal 4518 zcmcgv3s@6Z7FM??1QE3eW!Kg#5|N_G+?h-s1+78|B1j^ri(-@*1_)vjk_n>KRS~tO zK4P^k+Ne~Ex|X`Gek$vuRTdv8t`FS0Qmg{?vFIwFk7~ur-aAQnBz)g~yKc=llY8gP zopaCq|8vi|hp&<=MnD10mt{<- z&DF4soY5LG7~ZH+JTq%zG_!dHc4{KgEm|D|G}-#?S=pI6=^0yX_Op|`iu5o@72iukc#J;7sTlRJ zN!SkDB1WUzn<# znZsyVZcKp~i1BKHus{MN&Yl!VojnL{0w|^lQUui8 zw=o7ii#|33%$$R!IFrF*>;QmcMo#L&Bn8=F(&)`bJhOJLOB@ealZA0T#h_7gCSRvz zlH;PW(1}Vb!TE+}8`pF&EiNSNN)9F31-L9_O2NUG5&&dOxN0?%n$#O6$45rzf zB)TIS7zT-R{q4rUHf!1(Qf)iR>jC=~wJfmCEwo5luhe=Mp15jVDp$#U_cuQ|r#8(A z8SHa?&ta-+T~TDCdUTXeG|fBUg2S@dQvzqivURv9h2cT`ZbHOr#Q zn`MXFznD@U^wp2&E~&JMjqgr6SZ7S63jF0Gay};mUyPDAK7ZPM*5k`HL7>;zFi-F2 zaKzXme4td~@+@xA4#+v2{>u%}?xNV+-KpdD0;l%Zrp^&#kTq@8F}8$0(a<~gc3I(o z^zeXMro8C0p`&`8Uwo*wQmK2hv1Ez)jZNhZlb`Er3dyoaQ|xUcE=SEh+QK?+AJP1N+{GR+~8OQIE)U5ihUAcf;un z<&WbtQ&rVX>*9i+&F=$i6%)%I9-epV?sX_IE(_{gF>+%UoVffQb0TVsNzfIk95G1v zKXZcPjyoq@EP5@RaPhBGd{?g-*{6c&y>!l&hE2yRlkSC{y5T)3^o*+KjhFogtco~( zqkiAxmz&p@gZuj%_J)=jE>-5(PEPObpL%=!2hBZyFMgUX5yby_){&<84W+&syMN=m z{gc0*X7+82|4rQeO239_v~uX!Ti@kKy%sFVpWQq`J1*x_bJ5evHY+$oyZ z1qm*cFbNdZwlUfr`qefD4*6~*kX-10EhKOWr!xuXAtu4=!nGaG!ic1SkyTI{Jzxd7 zzI*w%@(GROh=PK@wjS6LI<4=csd-c0xcm8Dqd0r!S!=JdecAqo=IUGTQYT%0$n*L&?seo|6VXuoZ(DNSE6A)+oIWO!+PAB*7HI!UUQ zP7q)F?5%{>iu9nc>Zoi6DogVN4?gzWDE*$DqI~mX!gU+A?y1! z?>HA)_p(L(&qRaWCJN|+1J@yg;{dui;EZ=b_lg`~6x=y@ZONVVOzwi$1mdf zYnR8d96CNC0MXLF($$q(6nP)X7TQRVQ|kp`FB3KfkPx46qOfq zB*VW9zDkeI52!iq`xn1^k<+UWeA9v^Rvv1FiRM!NB{B2AZF$$g59N1xQ zXu6G?S3AA7CvWb|>CVk-%id&H*}H0X4D2m`u&Z#u%2?~H;PB%_`fc05k01M|{(Rx- zybJYyA6^`?aO(04FaIE9rTK?m(30}EN=H90F_4R!8URxiIce*eIWq;714pe5EWh%O z==q_r!i=!HW5+k#?OjKxxlX8GUTw9$}Z}*EW)|WjLo*ugI z3^Bj1dHbhcBNk3ft2*$JD%51%ee}wVkCKEh*lqliPwUSg9J2ZQxWhd(OXF^Iv7tI< zcPY_E+W#xNcid0yMS+>yr3tzWGdlb`N(t9N--2s|4ySFhJ;kAd!eq#>Xi;@GOsmnE z3;?1sK|p|E*(_@`zb8b650Yk?G{$V5)+{iXvcki;nPO1w#u`i@N)fA25QIoZ5aL*L zM-zmELM^@_>JzA?34%l|g`PP6wcm9BwrYRa^0;h};(J1@lAJDsG1Vtk%++x=eHz;9ypUUiKup48%=m(AnQV(%u^plq0-V#A4Sn9 zfOnpQqCL5!B(e_cU`-lbE@R?~{uJFj2KyC?|H5R0fd$xTXSp7)&olsTFLR}|nbnwB Q&J!sqP4f8sSfzsZZ=nHEQ~&?~ literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest/cmp_encryptedSimpleDocument.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest/cmp_encryptedSimpleDocument.pdf index d770a7aa3c2016c29c5b83900ae188848194f71e..51981cdeadbb1a796cd255c76e402d69469de947 100644 GIT binary patch delta 6441 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 delta 5453 zcmcIoXE>Z)x7MPQ5D^3!V)Qb7hG@}+M2#M0W{lp6kT7ZxC1G@;cS4j=B5Jf~gCs;J zK_sF^BueCr_dVZro%6nb&Y$yK*R%K9YwdNfd+lfcdG0p#LWQTwc#%h6opBU@J?F$P zmc(E4HqHR%s=U??bR8xMr)#_AcB9mG9Ok5%Y#!aNB7#YIOu=?2Vn1r}q) zv1y{0$DaIYWUJQwThe>QQdrNQ)-0jrAu5E_r^KluXhom(;2lX{MtgUxkFU4Ao!gn^ zfp%tu0YHfzt>-4Y7q90KI;k(~fvi9v=nq%&2njJrxbYxhc`+`TyaGpTSb?BOE2}eG zi##A)@$aXtKoE$8m3vRcBuvpP#;y8Gt(eR$53HJ%L)WWIGHUv*+`PJkH%TU)3sg+~^TjXtveO=Q(wxRU znk%2kIN;9eGUp4wm@0l@h939vN+G&mS!4`K$2ls@dybeX5Q0>wUMYOKR`EXv~z8_T-1E0=3+Pa3B3pqJgeQ}TFV@~N>rz3Xez7k&r7+rO~$zSih^srTnc65v;EVxabGW;?(Wdt?a-zT1~!(C zxZg+YI$(^Wu9mw)cP7td1g-{8#Umx?g3J-`SU}3PG9N$D(M%_R52`1}+#G zmM-skh_5LoSRtzxruGS`j6{4Va~U$~@8&pmH2obQIz~5%TlU1OIRMwfilD1JR$XKI zikUvi*9*P~cd`qHOQB4teOB$q56@RUs&PMMVK5Z5nZFs%X_d^ z9wYpon$Tm4rUviN*jnoYS{xEVQ~oy^|L`&ifW-`#Dl{dSx=<;c^it6r?^XswhLV^LyMFJ~x0shv_Yxf!d zW`6nU`Fx!}2>uSxB*oQq z@&eWV=m$Sr#yn}fH5D-BW>1PyMwAEnOFSIL%Z~Ca30I zb{Aq;25mB@LbcU_{^O4Y6$}&1cY}%7iv|eGPBx!MM^oa#tNeChC}X!=i`WyKRuP#h z5iji2QT5*k%)>qQ!4nVPvy{R%e>Ys5NW$Fky zLVkPH8?wB(blE;~A-O~|RmzXKh{E3i;7gH_Pi@N$?il}eXu&C_xz8W{+bW4+91}TK za*)H?KnyN*#Fd@mcj7BX_bU*V0vzJY^K}nghN(5^u6I2%6CT(~4UIQ@AhsdJN@d); zD;fXSfwr)^;g2d_HwXNEpnMsX^5;&~<{$dAKKoE}UcRGr_GvMNe{FcpF7H3RJ0Pwx1er+aieF`yx!|GvR`VqD0^%tQ_C*| zp_fd%nEUvrIvpe-pY5XbX2c@2Cm9|*pF1wO`W~OKNf-x8J&a8mke`ql=6W}AKrF9# z|I-v&i6~aKZ@)k{8Lg@<`msT`xMj*hr>)_N{fX$IQkSdrVy79^hE(~ExPrXqn7bvA zKM6Y({<~qxcl2KALyL1s@koA9%!LO|q?K;!uAUS2Dl_?Ysb8kLilUn-VS3_x6TLka zm>IlZSMQbdGW%XZ1lHdgUw4{tYrM;2u+nC~Qsgi)5vYRG8J-W`_Pcxca|1{CMlUKc z`c!dDWoGVfg5?C)%Z@2teLtHJyYybOZ|6h}P1?t#%?=ryS4`14%^V(Kc48 zS+(!?#7?q)GBgiI2dS+JihT#0{ogfa&ZmTzpe%_xtXrJ+|8+hKBKsC#{>+T_Kc zcI~R)u2IWrGq*XF^X^`!a6IL@UH#G~MZEod4Pw_h>fO)^Jqsp$Fx51f6+XT78hyI``AC|2aqHOnDipaKJ=Uxe)?;M(ZU*z{t(Us78qjXsUkZ zS*0t|x=9eqna@bX)G_mY@$DsC*(Y@kJHG#+PrS3~=gU{;<<%BMZILi$fDiqV)*)N5 z?*{3mt)t0r8@KB0Zc_Mp z;kfmJBdYD`uhbGS_g3|iF4bq_BoIlwEXdy0obH(Y5k>UlV;c{aaSktO2R`Tn}5czy{v_?ue@TJHvXZPnRSiu+V>T33o;dU%UMFaD2fGht`mYE39Q zMTb>GyzkRCZ=P#+=-6=@Yg+4eT+@&IcnW@qTfr{|ssh>m+|NZt0(#7nqRf z<*VTATm@Y_v`*@gu=I60?9-k^cjI(V&egzWpY<1;%!X}W(u28M56wXI=dAQnB^@KH zV_aUO#qK9ZPpn!@X5$wx>s}pA93!K*Ry>o4UzH@&PKySCO9 zv!dEmaO0Z=^x?;op4EKk9ZQWlG@MSbr`22Elp^EcWvqiv^t{q34_Sqy+Oo z$6|M-?8Uap*^Z)y_td)s89<|-)lEJy+SkiJ^WC*<9N^8`0_Gdvvtk~3->&ss$+!fG z;WQO?F^x3Kcf2)ch%XDG}{iDz&Ago2gU~)qESBfn85S zeOgb^Rd+NFtEG7_N59WLQp{^8n7UNi#2~*(YfEe!5e}lcWX-P^c^-K_S#HrQYdhR7 z?z>|BF9Yeu42UYdu-a^lVW3jTYq+MQP%irtLlwfCG(vBV@AI-U%jS-G;|i#%dIYre z)*UgC7j>uaz~9bf&`vV)+4Lu1 z1vHG7h1@yuUt%ks7OGTZN3L9e7Yh}QYZ8aW1|umywzsB;Fktw%7qUkCQZOYfoIho_ z=10w(bZ;>SjaMFz9w@1u43tT*E$DIC;BH*eo@SJLAiC#CPn)<#Q+EF2kiZ?=W`#y? z^LcsdACo)rK_Q)EOKyz{#QC2?p2?PPmK0H<KV9Ye|dqm^r#9He&v~l%<#KlNKy4QITp)=Or zP<^2}n*JMRC;1u=j{FS*F_(N+d?yTea-!G@JG;>ndTEM1kAg8fKSu%%zFcHAI=w=> za4oAi5C7|aV^6XcThE&?ci&t9le+L9M);NGiY8CLl2cKs&cnZ zw<{Ppw=W$}t5ZVf1g2I64+LkPr)GctRb4viAQ=VlnXpNe+Vd!Oxzc7krlC0z@JnDFflT-Zwo{V{UL%c>bETwDr=moUEGdGa6&6 z;A2XG`LMORguKMb>4L5_BIQyHw}^I*WkLz*`U`#~xacQu;6C%Wj!mL|!v#Wks>pd2 z_Dmz0H3!j%9oLK*v;L-&?Sp57N+kD5i*kt(-8)h9i*nktiZ&|k+`F08e|}T4>X^#Q zN1*!X>s&>?I>%=X30nBag}VfaZhY=wn{JYjKP~u#cA7^m z^yb(pO|Q%`k}$$;kJq(#ckp!tK;Q@&J%A|SRSo&)AN&MJRtFICF1RxZ;dO9!3pjdE zwe`CA{@WQLA!3u2m_saXtNun+QU2#d@=mbv{+gonbuk$|b%1EMI@tp|QxmXf3Pzsy z?WY6e71;wt>?=>}uC+9U-X{Y?U~(<1SiHx)mDo=)8GV2h7zzW)=-Yd{`2a-EGD$r{ zxo7neRYCSwRd${6{&X^;o3>e=Z1AM*}C^sZshBpI8m#z3HF^EHo5 zbq~G7CNvTB+sZfUtn9v-vTHioK&)kU=xO$Zx43LJBqB(k9==VzPS$@Q5VE>L?qkd+ zX)3V1`QceN)?_zWYFt=Q(#qEgH#>oIJ@HUJJ0gd(?$v9wjR@6O;G9SVfGnzjKmd0D z<6i~{Bntu)4zJj9fn?#3e+I!I6q4Y@3%m?Pk|nDDod||O5Cj2U?rUHG?mu8)Boy_p zeMngldEZ6C2`~F)Fa-I}I0TH8CD`#@B%t`%FT)|wf5qWQI5{rF1wo-e{|d@NA%7*m zASXj0|7rjVLBa^rd_X)L@h@N~0u28r9s&mb9}W0=+c~+~do#+*%c#3!yaPOa0Z=jp zfT4`G8o*K>iIhdd5I8tm7L5dfun;H$gn?l(Xea_A3$ce{P)G=rd^x~S5DE{Mg}^X& zSTv4&ZD4RD7K)Qa%EDl1FdBlhN0F}q7HfwFLs7CgG#Gs#RFEJN z1Vn-$Nph5=paggD)93e|wN-Dcc5C;Ky;a?}Z}&N;&*?e0=Ki`x^psSjAkrXak&hFd zJH%QX2Lqr15l^uIgFt}&0{N?00S!HH6ramP;6ai?7M7W1ypn)Q;1}WJ7C`j z1E4mMV2{1v;%xzbx5H%p`4fZo8&~-~UOAr__L>`@c zs8n2;9GNY;FH9AIZufc{s28kIn@GLUbxRNwJ|im*)OI2KH=F$JKKQr$+C&PLfTdso zh#$+bAEx`yrTG!JB6ZBk#qPK6{<8fF-Nl2tj$ojsJ;B}LN1j*#|FKx^zg6~4|5W+; z>qC$b&_A-rR9ovWwO_vcriA4r znFA%t;uPd0Y6J3Mu#)I_QgnhfOp91-(&KBXUc*%9+sW^C!Z`SdF4pk-S&pMB$NPfP zW`PO^V`Y^1M-ZbKX^!7}GIw9RUO&W_9|nfGzEC!10ZQ9A_c9jcMVCitzHVQDuU>tTU(SIVWQ!A4R|bATzdJXoCpkva4E$v39==m z#!Rl5fgEQefSPw3%Ue^Qg{O)rEt+NDQn?(S+ka5#BkXcIjp@ucqtw(5C1mGKp@CZq z9j3ZnN~*8AvPObGq-}9W*8?&%S0wnROqo zY;U+sr?iDQ>@}m~N>}s9y?tY$vPEZkIp%xs*aP+ajJYS0^V5p!M`^SIa$YnUk4WefLHY5L@gY1+ zE2o^V)?<4(yJ~6pv65f*boGT|dUJ3TvygkRoM2O%DfY@axjQBYV*wnFXDeouxvm!r zaGT=ZGqImA74vbqRTm5Nf|-UeQZYRy{&As6h~+($hs9B-nP)Y)qGj9C9a9&l9TnJgcQ<)#W2~tv#@IOc zTJHnT@!JB=EV4OD-?97NcyWd7WHnNK*f;T#?$9vBrW+}ux&>Ps&eFxml0c%v;_Dop z&?Kd8hLwVldki@#VfO@WBG7?er^q{G1Vdj$>kR@$;xX^_o^HJN^s!QPjVafwd-7h-1dDb+wa`D4ov#-=-=_43ZNL9qa$-F?mlq8BM9Pe#+cH%`Kud2 zmC|IZccr*T31#N6{uq>aa26dKlSMr6K@Ojjy@7+vk4jBQyTe!3=oD zm6xE|J6Ax~(Q>v1PhXD<)JgWz?P}*RjrE>R>XKrAaO=!;oOP=JT@hBwk@t%s*RjY76V59! z#=@Gcc>iW{_SL8XPehX?PemO6qooy`M3o~QXGzsr#rthrCZ;aMdEFnkOQ1YC^z9Lc zkR$WubCJshy&jqqels)=jkRup5(72!dTNN?4>}%peuo<#?u5U5Iq;C_!BC3=x4Vn7 ziGz;40Rf}H#UWA=u&YGb-JQ*Bqo9k!WrkpeqUOP^os4>*Smky`w?0bh0I-_xrN_>fhp zoPD8PDnerT#(e#&4Y>cy(co$M(G7-izxP4$t&B}pOj*{+HO)MtCv#*AFgpOtgaAA1 zlw+MA_@v}SMMTxZ;|_QgfV-_IM2Nv(}O9z25(}7RNXfAs*RgfzxcmrI=EOG)EMKN zL@*ezB>M<7vQ4*#c-B?I&HV&uw26{mM_2z6TcCPUoOnZd$z_?M zokuNivg)4ffTTQ+Oo*)csttzpd8oHyguDq>7E7b2YT#*AzT)M_Snam?0uCwH%zO!Y z-VS%Q&xWaQIHm{9sZIH<6kg95GOWssW;hV^Jw^*Wt5|Gnx>1fP>kT5a8nP@Mnm9Rt zMurXf~igTL2gj_*q zG?X2K)qkFIM)>R}O6r-i&X8+t?%Z;Y_Sf7S95AYO3H2E=Izw|tuue5eZWfCdOO_eA zL4viLo<|#4=`K0wZu)Pt@f`MKIrmb7cKsg4TW7v7Qo@siZfXRHFZYX5PkP+vy1XJ^ zcKa(!wy5EkG1m+WR)xo1A@|aHPiHr3eEC{reN6e3U`^v<+9PP<=iIEW=0k{?D2ZxK z7H)kH3$Rj5whEiExKdjA^5S)X7_5}MU(gp5diox#IZs*av2`=FwrqM zF!ig_mn)x=G-ST6Q7*KkGjW?|ynWrNYQFZKd9~;JLG=xHPbpM$RdtOxo`D1u=aew1P0 z{nL2aNm3|Xm>cQd=@)kCuD(U$rnV^1u>ME*G z`N@z%_;JU0P%bHZQn3T5ux^B3qYyX( zs0$Di{1mrH=@}n4>KIk)HI$?x1U$DfwGPzKKll! zt=)b#jR0a#_Z>-pt^@lyJ3TiLaQ3ygmb>m#lYOOfX z7y$o`Al`075;F*ZW~Ms$^8z5?a3~x=0{rTOp{by`uYDQGTQc6a}X4fQTsTsxUMEUjY2p(ES%LcE4JpCOKj)4=bwoDI-;x z`hJ7J8C@vq2&m&*--zS>OPV-#Q&RkQ!vD7-KICtR4?yoP?f--R|0?J|^y$`)xOvr+ zZ@I2KmNTM9#Svg6dh=0qelB=t&R9OG$vLN)m0{x!E4M^0^K=t7*0%m!sGjE3%M;;q z;tF8_Mg`|>19FE6;p65sciME#{aBF8ogWnjtAoBfORiQVZ0|5WA3o|ccW;l;CFu$E zkD%c(!&ue_i4P|C2D;3~6cLl-$0j%C^oK5r9lo^lrCw+thhtLjE%{Y7yF=sB^~cX> z-j&hj;Lik3!=z~^!e#v3nF|L!mQEPh4=G(W^rYSJ43@oDC8J%#*!RYRCpPoOq03oS ztV}3gx#MoV(Tr!g=K&7)eNAwy#iw0Yh6>FmW(9?2mexMpD2;TE{g@G!U#faG!-t;M z%`H&6b?rIFyLp;Np$xX(mL>z2*gQXI4o#w2EY3%j$X#1N2%gGeel!x$nisA5VLt45 zPvqX>7{^(o-c!zQcOBUtR5^-ZpeH5D9-55Lz6f2mJ8&L!w?S-H*}YrwvW`SFqwz4C za7y`X{HLiY6NT9*f$?G&8`)la8V1bW^+1CY{z>16t;Y-+9!H=S)>cA`4+$}@o_Z!s zKlwP#<<7~X)$ZfVa;CQnxvLr`UV&!c)g=m3m_P4+0(`?6^=~@j>9Jv{7wV&Jo|U=| z9C&Yb=R=4m^R>rcY0LW!6qx(oPTKNbFru&)VRDy`gQJ(*mx|m(ug;L|VpUnwL8;E}zG4E9J&WwBu@6lp>=cBhk%oWa+T`_>a zkKKOF1fF`ZmO&}Nbbs7iHh%hat@WAoF$~l3luaW^F3p>jm@VfgFUI!76Q+3Y*PTs# zgy)tkNIkDuvnklO$@_84`WQx()LVq1>ixLxtCaFviQ>lbA-b;2%Jtti_^z+YV6LWk7>d|u~S-IGvnjPgg6O$*9g|3fyG`O#GY+ve5)=co|$o&?t zGO2yLUi7~3L>KW0ZLQ#tMf~M&v^FxE?*1tBrtcLSXY1D~J69{k#QG29E*8_WyyhQ{ zS*FR3WQw4;c`9&wdn|7HbIDj}6-?ZXR}1;N*IhpK!PiH9UPf1W+NyKbU%!1?K3v*8 zK`xwT!LK>stjeHHP~iAQj=Lo*(3D>8W$}V9YIOAzcf`oTTIat@ybkXgv?-EFZ7}=_ zmE-|dI??E_PT$`qvQJ+yZ~FW?I6ye>qz(gTVZC4_%NURUYce;e=@{&`H%Po!vgd`R zbU!Ei-Z(-=zpG@AY%1lSY_UjDqU@85bKbGbCDf#PLaCM$=xneTd@OyIv>Z6CGeJQXPBw{Won0 z4%?<(lWe<2x3UDdsPEfkFMe>dnvXAJi^IIIAO(RLU>vg?nifcxW%h-;4B$H6oIRel z?N!X|FUj@P)YQYptA;`AZsQq{)Z%>Ecyr=Ld~TqX2}2C}^px}&A!5p_r}T7cuJgzj zm96UBz8oq&+T>!?9muhx{LyCOL(53r`EBjY+ESAs5B4L69b^xi9f@V7(vfIWCr#o- zUnwK7SZ`yoHRzUCM$U%F7`3=18*2Qh#T3Ts&>8~D( z+&%(=GFbu<)zFTGnWPbmFdc=UYSgDITdAa%HzsSuMGD2PT(C~{$-7zUk`yrrsL~;y zb8yr$RCX?Z;&3qFHdezvhrV`mM_$YRV)2Z3kBS~^V_!e-(r}YZsBUjh?YH+cyK|FQ z>gan%zKILKWXu|O`+Pcd;oYi&temtO_T4LvUiN*T12>@=le=?J}2T=4cS>bA zj+=&^B|$p^A-|Ai3%(I3D;2h^^FEOaeIFLp^yRo8f~hGNb-b}2&{ksN;wH0vnvlS- z@ov(0cGr|=xb?wp#;okPqo>=-u%-2%^U^%eu5*8=GKE$9aD{TGure>Q*)7No5mW%6HGJdM*~`v&@tH-;WW`%q^0I*KUOVrFsaI;+TWP#LCZv;m zuPW@gFhir3PSi;TXaD?)TI=twrZusL{WR@&y726-&au!!>;QcMYs=b4`>}Bbwi2v7mqeT_uyv<*=ej?UqI>%S(|Nk&plIO7 z#F6-W+g&v+4aMwZoDY+(f`T%!A0q?4BkD!tR!>OBv?VK8v>2vumC<`A-R=>q>TuT8 zK;H@KtSYLraDIfEQh%WOKK}D4r^~G)>)mFfDH2EKyNvmJ2DF3lNB;!<{jcDEK7s`Q zV2;0?L4x;B9sjLE$ba|P@rT8qv;Geqt^SDO=M;K>ee3_14u5};6c_;g3Dqz-f{IeV zK=wxi1Vcdn?1LhytMy9`0RaEfN1*=JkN$^UBn2g12qGL02a^ae1RM`Tp-3P+5=lhiuwXcp l1VSMZNcn#PX+1ZhCtx3n|3GRm_3-}RV`?N44*$v2{{a&x84~~i literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionFor17DocTest.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionFor17DocTest.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a95592bc0df707637010bb903b1256be5d60b67 GIT binary patch literal 4718 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 M0j8s4?Q8@44}ZJhT>t<8 literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionTest.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_addMacOnPreserveEncryptionTest.pdf new file mode 100644 index 0000000000000000000000000000000000000000..86eb20d0c6159c394f0cb3818061b7ebf8f06414 GIT binary patch literal 5830 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 literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_noMacProtectionTest.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/cmp_noMacProtectionTest.pdf new file mode 100644 index 0000000000000000000000000000000000000000..963d5074ab73f65b3bae628ef0fd8d6b85350993 GIT binary patch literal 4349 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 RULI%y5;_4<)-}-+{twOCTEGAR literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionDocument_1_7.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionDocument_1_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..db862c70693692900cace1fd85531659439fc3ab GIT binary patch literal 1648 zcmc&#-ES0C6n}R8CoT@x z=bYd9-I;JUnQoGr^-%col`p>vVSs>d^@UnmU>2zSAqR8RW2g1#0ZjK3Mw8U`9SV0*ub1rxiX4wuSU|}@D0Ba|d~x#ZzH3E) z>c--v8T8F6o>9GU-|V-yf=AB$DE6&|*4`j;swLR!c|NNYMasDnO!yw79;*P6Lk@OO zr%c-X;UeOXnxTQ1DwklE1Uv@FYauyW@vDJND=jVYI4lI^ferBmQDT<#(t3#s$JP=^ z@ETaz_maHCNXA5x^3Q5a;ad51tZ(Fl1v5BK2fG(cq{tUeys>9!DfQCH&g-LdWGHzl z3Ojt~zi*Nae5Y#D;9pbu?r8Sno7e4&vu!uqv?C@CBFFi0rmIinU`cvJTem>P>|8n;9H{g`%zWQ>(M6x{HV7d=(&D&F_ zqjh$qIy-{4N{#9@9utI-e!sUKEZVS6rC;TJkzjk-sT9|ASAuuQuhb#>U63>vX`VR= zac`}%-KinoTbT6i%pmn(BHaO7Q~56CZrSlZ*L0a@#B)gCtgp%%h8YkkxaGq`#mBFG z*8b_<`M285$btS%5^tLR*9xDdmAQS(Q`>)N>wItYh1WJSPJ^}!w;i25aDFZdGbs>h zIYwHS{Vg-`uKBT(FHV1W?h_8frn`D>LRy5|ra1x+?>rpkr>jXZkP5Rj7^r}V@PGWh z89746esAOu^svEup*7BIjlvwzc%1|3+r{!ZST{Qb5aD-UzoD8@ZpoKMKHAA18Wy^{ zx_bU<_mow4cJjQl;+>bj5dAkjo{YYS zPfG7NpH=SE=Wne%!S8|!rRV8qH;*rjpPBgMAa@}?a1?d{t=^^KfVv?BVj;dey0 Rz}BQ7NyrF=!>LR<^f#FDDeM3M literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionPublicKeyEncryptionDocument.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorCreationTest/noMacProtectionPublicKeyEncryptionDocument.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4b5a106e645ce6b3c07fdc36acd4158835c49cad GIT binary patch literal 5020 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 literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_disableMacInAppendModeTest.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_disableMacInAppendModeTest.pdf new file mode 100644 index 0000000000000000000000000000000000000000..acd6ea98f1bb288dac799b0005ab18434806df83 GIT binary patch literal 10468 zcmeI22T&ACw}2H9iAFHNg%u?#?1T-oN{}c>1_hDi?9QxYWLcsjA}R(1B`64z%n=Y3 zP_6=!6jT&Yi6TlC1Qop`eZ5|9zJJyI>%CWhy{fkbJ2TyOztbu4k z;!2&bAJ>aBDGwA`04mSHJ++!1wU;H3TNA3QTc^AXmyA`gj0oPx1uCR1gHzUxm!cAkrJm6fo$wLR&J(Lm>LEZO!j|W|Ca)%)WT}V#07i z_?J30>PB1he=Q%qqCwz`O*doU+TK7#S8zdl7Y@GBPM7sifK#TRV4pb$xDN%V5Oy=s z8G=!NJK$-Cg;RMRs6ddi9L){GYC1YDU>Yq*K2G3#oWl4v$AY;F_&(p?Cer}adHZes z%|(J(_+>u*0zq)VR5K4E!0B7?yHJ0PfPmkc2)h2>ybsHCdrRnkB?q#)p;C}SX!3mDK}HNEPK7| zvN>@w9>I3ELPP6HH_trt26x`BYdyCG7C?BeS4EDrsoz{Be`#K_L4jd!k)@~Y znV}DD1FgbmJT6k6E3bxLj8xX@ohcmGZckgDp*oqFJwB9RKNT$R@Yrx+|4@~O<2$cu z9ZCN8qg5Pw#N2FJ1FA$TrE>$;NUqg=RCFQKT$`*DqHO024<0d9o@+TG^26cmgEe_g zQBP%aTH_VsmL&M+aqo5p)&+`KR!7wBH(6e>+4Yornl{a+&|jpXWonfs+oJVxXHCP? zd3So%N@`02jiZ7twlE}iuTHM`ntVd#UCY5e`=ERFHP&^qbRCH{{{u4fc9?dCa&HLl zl?(km!_s`?Eq+V2Ja3=6;ju+myNZ)zH081nbo4~*2wCsEbM3n`qv~2w#t^o4d6eTm zC$&M?Q&+9oY~<9Lm1x%8ne~Ta;-wm{j<=%}k?v${2SQmzi@CzL29$n}f4HdCYKdd?6rfBtk? ztGgL_lCCwKZ#~E3REyVr+hB7sIAHKg%(ffr-OmN@T3b8|b*gz)g~F_~4I}&MM`R_wN(Im3l?jz+e-c&hlZn4&L)Vrp`Y>s- zNMu2fs!h0YbENRFR_aL1nDwz&MK5dT_Dvm}UE8?DdHI-LNWC)QoF9L$Zc}lJ{edaW zT%x4V{KIRT0aM)#D$&8F=lvp$MH(8i@NZ~rC%@injdZ-O5I-Y<;{JCrd5ll ziX2rlCbZ^@P-ZlVh^`(MQT{#fx2Fsi3YLgs3ky zUfaAxv|ORSCS~KHXr1Z9O3pQT%B)kW$>}TSV5>H!JhUs38Z~y?K3~iCS@XkBaYycj z&G@q4(mn0XLDyJG!fx2+!TGGj4bz#h_^?^tiW5oMZuhw=YBgaobCzANc-=Tx_`;6; z)`R71Utq`g*}t+Ss=S9+J>)K_YZHb-r=s~co~k`)zi)k8NJO%sAl5jOd7;BTr)Vcz z&roL4mm2>>LF0*Wjf`0TW$AOMV(9HzC;QjhY`u_mbXf1}j1TWa&5xpmdGFPX?~Z?V zQNQ89);Z{EGwo2v<}xv<5XHE}BgGjPoy2ukdY#C5{j_aBLab|`5=uf!aPE(kq_QiQ<_M1Hk?yl;4 zwZy}9YqNLBb<#%ODam3-k(+%D9oG9l>07f+R9m+@YOYV2b)xIy;;QCti67ld`p2^e zES+ZsFovCf8cTZfPBa0DldDh6nOl9Xy|(WaW=*FyN1Ty;l0CJT!@6nX@9F0*8(UUw z720z&A;NrU*E<`2LV(w!p_?zmuJ@bM@4J6uEx7)lGs{DLh`?AZF?#WKC z4ep}RuCG4_gywygzVY>B2DEhD{I1z-r3G8VK26y9V5|=r&x;R5ioaSl`N>6oSGvc? zstZ#?-qnd7&$e89!d^^Fdt!XDLdG%p_ShoYY=bp{Zb32TO@5mq532ckZ)_AIG9@&7 zvVPDuS}bhI*3Wi#E1Pa+ExEMucEXk!8IngvEA0Yy1*Yy@@8X=0H-6nx^_+#swhL3f zFD8crOanXCExpXFo4xjGN~R)L$S*(5={+m4Ht>|h;rNHR%7L00SzDpNi(M%(UoIPn z$o{z7$gi1{ZhE()zP9zf^2Npn9fR{uPj@-lrka!)=yoJZR*lh19FVt_d>egEcN}HPFEAGx$tF$h4_`w!;n-8S4tbd*x zAr?n|9oc;|aw?bQo#&I4yiet*!>2OOqrqm6_V{OOO^kt~FTSc+lfz~^#=AFN**yvZ;Q~xI8g2triA)BDM<0zpQJwIEx zyI^a^oXLg8CKR~(^LB2V%GqiDRfuEu4z*Rfw-@d0Hm7`6TqgXm+hBK>U82dO8sxH7 z|JL(DGoPu8=u1 znzuwwsNw-K`$BPTD~or@&bw*7dQ+dHM)5fwna5rhIg6H!M-I&lu09{X>}AOVgNW`E z$G^Dm_qkN2DH~C-#xAvNC@s=jc6ai8EA<;A&(A(t(or{X@LfS@Rrvj%Y`RzE@5+~7 ztb5MvY>H3uk+U4>R!S-$^qTB;a$jw8a0@=Q-D5ER%7^Kn zrYr~9sc}~>FTpU)ujftuwWXd@pI%zVDu0pwdNAV0)jAsQpU?ftF{l* zZTRis^$9f|Dz{r2i=UtX0RC$7a}n_fuSf#vUGkK2ca{lRut9Kf>-=( zD8>6;-i~7dyQ-YIIf5k0HQjtOo*NST>@c{Z=RbPv?Au~k7Ju33;m6mRwO4|?4}o^@ zJ2k465k=KJUXUNyBzW@Hyank4k{GThIOIlofpP}E-AHiIURmE-7$qo2&Vg&D8pwP# zm^2KdT9Z7V0E+5%XVsXvyf=cbdIcF?yAt?@T;uP916_@3OJM*v`WXN0OYqJ6<#Z!O zHGK=ZzVBS}>O+rCY;1Ps?Ykd+A@c!fhgy8OV$Eaj0iDvo(Dbc5o#(b0Q93$bPoDFc zP_c^61ep`C0MtRxh6HLZFE`(OQjq+VoT8YUICCEiaP4228W`MVH%A+*c-&N@+EeJi z=0|UV@n2SR+AOWKg#0F(72GEy=eH#N6)F1>zLokSd!9Xa% zWg#4#1(68G;W7z?Lt{cP$%1JRiUA2OI1=DKp|h9_80NAd&iL24e^cfwcno>kk%ySpXCO{)>0Pq5ypOH_~8G7-oaMfPMeUavb@4 zUjeJRf7d7Q0Su@J@B|7bi$Nz~7DmIsZG|!sh>0*@9ATjZ$^@$$2O&ugjo>i31V&@f zIWRCBCBPK|8ZbFb7Q|(97&wzn!bb`$Umn;x}96E!+0g(Y=BuZytObjffFv&z| zz+W^569>yE#)8-k1`BkDV=$eLlQ0|SkR%r(SWFCPN3vlW2Ld=m&%oS|^Nmu0l}WH< zd;9qUnngA8>*a$EZ$2ky~WCAQ95EtPhARq}20)m?4GDw01Ra`K)I1|PR zCJDlo4%1*R%w&Ujpra^*rSqTHz=dk+%k`rO7#{$ietv)keLJ=D2qP&hu(~RF2!N-C zfgg|5U}-{{kcOS5p0%Bc)dukZKF;HRTXty>oguEIWMpM5F8&|Hh2YtNrs2-2o0bV4 z8=q3|%;dfxAi;cKP-5L)e0(3rVr;{_5k?o7l`}+(D2`fhRE-rAq6}^1w{HE zqC>E7{69MUA4iAOM%v2d;m>;_Yw{cWtfW4uEM8>QWZz>n@dYdG#B^eG(%D<1enNl42;~Ad3v2tX5RL3W)>u=?^ z1&#!+*-grn_DgxmRG(UOHm^}4{l4xq`Kh7LUy6>IiAQ>^=H#u2@8ium)n23<)w$AJ zdobzYmPOjJa|aN4V!_k(8>6FFZP8Xet--wh#8qyl&*tdU~H=-pRkME zT@qJ}0+E2@4d?e>e^Da)@ztD!n{CB5p86LQk8E!Ipjce?%uLopF;1GkqxQJ=-A6xk z#S1syd1dUIwEd&G)C-4{Nv|+uRm0F(t#zk&Mnu}>xQ_KLpItLHjBo`MhPcHtscfZtp#ss5#hkOXy18+=19BOJfS##&lrg=)#)rzU}1Yvy3J4 zSMS>Yqji+iG}*3A*89%2c0MT7JlifFPrVn=76fk|ML)kW&r|A0z0S!5i5_(bu?<=B zOzQPdq89gL>z><&Yl+C|zj$Q7%v|Dh^1hUuXn{hu@+ zU0q-Cpx0S;ma9abW@gXjsIH-@oG9ZQKc32v(v5(~)1~cUkr{eDC)q0>yX^{$kZR#Q z^|r6PEw$ce<>s2Bv0{FXr>1^9DYr(UzYxck?(cl%^hjkjp4DJJ zkTkpF-R_BV6+N!eLg%!cdQ4sg)rP!V9#i)GR*FsZ(8lp2eosrUCLPjlt{+d=J#PI{ zV&(9sTM+)5a>*Mz8ol2m4aQ7h+>emCUO$%`JTsKZLg*GuraO_E}DwQC#me z4c?68Pm!NvTx6w1GUPjP!@jQ4(^FV1rDokd%;qbj6h@1pL6y4nM~ zriC77L|MJpIXqaIzUK79ll!W6t_aJ#R{f%R-=dh+Uq_eLmSsy9=}`kcsEf3GRZuwYchzp)lYWs;!ZmWT3lfZ8+)WfGF^3BsSL&3M+&#H%NKy|%fE>ZVcE4p-)^Mc7l1(e^#hSG|;dwrTgGTQBEIrNv8|B&Erj%tT9! zw%vFXBV6r#TsZGQnMh^5#^fbr)_5FwgSlyQ-8j8#_E>H(pPDq|$10zmk%=&a)Jq5L z%NA5|h4~zl0J-gNbkl||_C1PL-=mAgau>Ec%`vdn4}a1w-JZpu2KBwlvWM;~IrOi| zY;^11ThXV1Jun~7x)En<9bRqFDIP^0p0?f3LF!=ZFza2d7cExqGRfIol`e2 z8ja4oop3<-kl~AVJJBUs@4eqx?F~P6R9oh*d&;J=%826!Ms|of+IyhOZtqq;TOKbT z8VFs>ShR)1ddv!l^&vcx-*rZw-+XJDRg2Yq735h#+FA7qO&{6Ya~*e=e(Z@J$?Blo z8JI*h$K{^!E#5BDr_U}vIzK2w)I(vw$h6%*tWH19q$#REuO#Y4=_o%qXU%GZ1zF`L z3(Ys(me|^Wwo4TbmP}|#HF=EWFW6PD)~@j3=CYics+JEqJ<2~QkKcF@ zvf6v~;;%`Ex>VYlOqQO$Ys~i1bEmsqn31|}evGKJKYC{5Orgo6)84x`MOKZj%PpLE zW8iSa?$Nag8{?nOaNLSpW~9A_Zs)!VyY%uy(%_49`PMIz(Oq{Wn&lpb*ha?=xn);0 z3w^46+RqmDOE664)f|IuzIK#Q{6F%i8kEFyh|8Wj)?%;Y94RB)qYL#*8yswP&pMpU zuZc=qcG}JGv|}tHB{Xl3$Q0s5%W15Y2|Cm^+TYZ`-IaXRea_vNs>i3R)z$_TQ(B&S zsvI#MxUN0NB{<0S2vpX;d`;tySw}j%W4#ReOT`@C?h<7NeGNS?*OW0zvH8MQl|FpA zvu@tF{YKr#3zw;{`x4vOI=A|3e>+2Yo+%s+a;(G50K_#%%3rku2}C zd+us~Uv-;=(>`&Qa^7Tjb$r+O=$P?>KAoW>KBkMp&orqkk58_AV#t%vZk}3b670_& zN&fK%FFh;k!ZcNtZjs$C1;=k_{5aLmDm!+P#E-U1>Qj5PJg?*_ZXldW{ zz4zre9GX@d)g9?D&qz9aH5p(X$MYFtXHU%*Lc))q$AxololL%DGjD0{C6XP1T5NRM zHnCvM>%&)@I2KYRms^@m+}Fs7Rj>T0zG;)~MLR5)n&|mB_8qg?gd;t5sZCmRNz?o4 zX-}DZLwe>~7LynHH5WK7yvIYsH?O%9d2DXt9D3DjvDu^bCsLoTGCSnG^~|TMMH$Nv zt?5G!Z%dza={7vNquFeOitw|d{@CK|7%$-&W^)ETl6=(W=h_^+B4Ku0Z(2iFe)mj; zsheAx>$kQEmv*b`FExEaydBX#oqkvC#NNjvs_$3E>R@S@6%y~T;KBu+Yi4gP6((Ks zn?_^~Bn7Lasx^HG@V44cxv#(Bh}FGEI~O0Hp;zCsarW}Y9YeaBZEF+rvoW=O4zU&wW+zpiBBt18v+=R1#k?;MmQ{-Ns@rTkT4AB8^Hh=kpr>Vpd1EN3c(RJ&csNB z#^qvw(gR!nuaGwY4M~!KnFt%;PCyK4fH#3(7XY+nFqv!?3t?hx8kbE#;AaPfMA-mH z(qI%t*bIySlggyAxpbIILO2&;u}F@9=b3?K;FRb6%avZGYE_gvza6c z;oy$|Gr$H|mJTQ!jl%^#g>jNi13zFubPOngV_XI(gE%b4|26UkA_zrsHdq<}#Df5! z1soIOU?>{~h>=6E0pvswE^rry&`}bE4u_-zxDD7Nn+X$i7MlrSH~_{tn`FXZ=|K@1 zff5Wlz`+QEoeDN=KRiY`JUhTp3mp}j)Iwvo+`K-5K$O> z-PSHbL;)x-x|;}vf;L0pkd6h~0%maSF#v$#z2LXk0d46+=LQ^x(N?fOmr50Z*-V}p z{)f4qs|Oe6p!GZ;F02DHyqGZB7-ly6@Jut1x@ zOjk(D%ikVAx_B}kMZ$p&Xfud|=%B!56${wg%ZI~&y(ttb6>Y_F_54NOiZ?|w$Qk}I zMGVjQpA?b5d;0&U2*U&P-TuFnBOa)K&(SjIpOdtV;=h<7c>@ehu|F-g~2b&5)X#f_`4YN(%Ctq?zR-ZR$#)>x4dwG_osP)N4ZMQ?P z657Oz`G0$QpBGh$x+AOB`JNINRZ@Q9ib9Q9#XZ*q8oQ*z`4lhs1*XzZ>-htzu0O&c zZv-mB2(*Ev=^=Xugcv3;7h*zO2!+8Qsus(1@cvGrWqxQQgC1VaKV1IA5N$6X9^cSL zu1s(H<^6J0RfNe z>;$vlK(rtY8^JJI@6FBeRjSgF*Hh)nju!3xy=UKi{78iVNhdkZ5%1~{(K?sND-DFd zx>UCu{XMj((dm(#hvfQQ>4H&WGV6CKD?ANt(01hDUP*lN8>*YPUi&;hKFNADU_Ep- zzH3K)l#XM$dWoZFfM>x$p9kaazE*_N@H_cqXZ`{TON#Cie{gf z=>BlOMKil%LH$*#T)N_yOP3cW;%pYt9XMsVqg{W6H5Ye`n5GG>q-*aES6>m{p!C6> zTSrDS8e{Ge(l;OUB-#M8L$lZ1wdq#t8B~$ zd~i#m`kmITZ(~<>)C}mc6M|-p*K{99{^A}8syv&xLfMxU5*lWC!|~Iw+}h?(lUT;2 zweuHotr>~&mIP%58~LESo@1vU`flX!ceFet5WVKH?c`qj#8_b?WkdI4jsDfT9enMb z-0Cce_L10!$FB>UPRFe17vob|_|o24>InPY;%kVE&!0>tZM5}ocODkVZr!3Hnwz%~ zKGZ8zN7?$`?vc#p_!Q9|+3SSf2-7K{;_iAk;xoGk9%X7d$3*lXc`n_f+;;x>-sb|3@M3nPYv%<@EfVmjziL=q%(;=d!9dC_H#__yZAyA8r9ZT` z<3YZ9ND=Y3^$qXxn_oIa48Dx5bKd(P>GkS2=}MKl7)ROrLdrFJ?3BG+i;~iBcm(sw z9*RpGIC+0DeU)y!PFe1lX=MHxgT0@He5WN>3t3%mqbOyaFPt^9+go|u{OdZu%-iBQ z(eJh$?ar!I-@&n&s_o+df2dbQxYP(=-=$Jah0kpA5Sh(nuE_}Nn@e&%sQ7f7xTr}5 zRekDS&UNjjC&f~%?y2CJ=;FrcmP21^&CtYW;>6m|QK?cmEy2Qo2(!{!k7;q?BPoT! z#}^b27xKG`KiLdFEOR3J&u-(B&UMnW8kR9x4$_-p|j$iwE zgXrnSd;5DMf*%VrqPxn5R7XB^Dz4aib+eNX|6#l6i=Vqrtuks;Lm$8?nl~O@`8i~p zAe%T+A$dIHDwT{7br-$^(pgQpuHRvDwA)6~26P6W+Mhe_YCX zH}B^#@5=ZCZ*!HXcFrfK`r6$foV)SP9RB+|SCL-3B+5(Ot`WeTcspi)nOcUqkx=CF zVsZQClLzYkH_x@pDXdb487aBFO%VD3Gp55jp&(hpkqHgT_yh#U^6$8ssh`>}e*E@b z16d(owfO-1O{rU?T^uf#*YDA2;5aXhG7sKdTQpQIvX5dK(HHQ^2nnO3bXD&7oA_s^-tx-7`Ft#_}|Ul7O@PN~Nv=N*~5L0d`_4p&{PcL23TvZ140 zBQSg};Vn8w-ZHX@3VTn*Ki4npjq7sT8YCB7fnF3|Uy~^B;Qv6AbYJoqsDx3eAwlbKl@k}M;z(7c{UbXJsa}5yO9WUg%y(xLT#k8~DIC37LnaiG)@#Ej zUC(ayZ+$lY*Wbo-});L%E=%77_#@;VX^9^^gXKDt5ytUcS{up z&AyeQeD0mMG#|0#r2H>`MENo9()s=^oieFZ=bDC zOm)9NYzT34+80dI7D9i(P-fR!RwlpHyKTW)Tqk5!$0u+Ij$CI_kB<73x^*&Uy`8Ze zHzP`Li{~XnU{dIhU1idfgqT0AKKTk1?zlOflN17Zhq!I241rIY%ABYAJ8W2euF<5q z=!B(T*7haKBirVc1WJ#PPV8wBNePrJA6FH+fwnrCwM5=p?~1)Q*+Fq@^TSjOSIssm z;z*?_doX-m?f3PZ*!50GGjXMYDix^C_&-;1!@cK_M4!JjiSy`kmTuwyq$rer}?E<%D&L`>5Hw78FH7+tGAMGHq%th z9lhx6~T_XoSzw)JMU|T;NjI*Gz zf9s32Kc?z*CiK)_Q}VB_Rzs>n6)XzLclC+W?_g(n35CAQ>u2t3nA=ssoic_QAGVY9bEW44>a?DfqEqp{6S7)s-nvkfCHFxjpkumQ$aPGN6&%Avv?at^u zw#k}twWY897OA1q>bBEuZ#K>;(aqkDHo1o0y!x(hga4#|x4-)E^N4~s&doQin;gG8vog=rOQM<@TA*2~~$aASUUklrz?L)a1+?!wu|ak^tuPP_bJ=?)q!kn}^YVG^Zas~FH0m}PkxMdLcJ1PK z>=BM7`Z~001x>7d@kQ&@1r=-=T{}>WKZ-x3U^hKjBt9HA#EvJu<{O-F8(Y^s{>YlX z{gjrS)!p@A6^*?QW#5L`^sPD&RFHU71bBmFpcYwIEBZA&h5xz+UHy6E~M zRT^5yi(z^gW}~(BOwgLTmNwX*3rOT({=Is#Z9< zf^YypB(O+iEQvv60wgjM$E4#hcmRU2EHaA(;YoA?odB=^n1pANuvi!-Q~!kPyVzFcpZ3c5Zy-|ua8T)98N3XQNI7A8mfd*iRh#vOIqiiL#1&V-V&{OYQ8j&yO z@4wcHX--(f;hdyBr&=#q_s}>|52JH0H6h@zCQJEd9O7}r$+Aah4zKT}31q&^f_FDA!(f|Gqb!>N18wa)^qy$Fovvj{Xd4v% zM>XTmfmtHRwEKC2zWdek7A+zmJta^J;ZxZ?0;k=JW@gZhYU~tRS!cX{GtaC z5n}y^Ez(_Vv-<;0T2<=Bk2TKAPd9;0FwcdK?cksz)Tn!Vqr)iM8rT$B232v zcnl81!Vu{UIthCJAIQNGv)T z0$Erl9gFA@$qWD>5kLkRgfMs#NF?KNFd2YwL^6>CGYDi5N5qM)E_sweU<$?eht literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_doNotThrowOnValidationTest1.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_doNotThrowOnValidationTest1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b1117bb947c42d5ba376b63e6d01ae1aa1981ec3 GIT binary patch literal 3956 zcmeHKOK#&v5KWLBPtjmtjEz9*ADcf&8hEVnj1kKt$j)Q{!w8z)O`BthBuL7ZeU@Ax zn_M7^0CRyXa)aamxk9QbS@LJ)MHT_v03mj?B-+%n+1c;y_ z`Rw$1c#J&QOz_00=9ChG?8BDN89tsT%}r_WiCHv*fn#!QVPXT{&!&y3@cvXbW@uEQ z4L&sad2@ln!Juv`BWKRy=Wo7(^|ghsL@Ptq^(v0tJTIF1)J8Tr!+S;En7pZxbv3~w zqci!YSez2rib$Z)V`q3QE6_o#RhgK&m{-cwz20DePpWM8ME}HQGM49NlL-gxDu6wR zwaJQn2$^gTV@8-qB1UMy7!AH7{1qXucJQds4-`0|gbOdaQ`nfM8`EzWkW3A>Avk<+ z{Nbll_L6!i)J?684S*Vl96eomW@PF%a`S$UUAnFvj^X%#rY-y%j+FC z#TABT_U~Li&Cmf)1bthXL;ZK z=eOTolZKvkhU!?FBUUcJ*DW+aVEPPG}G_7PnV0CgeT#DI|{`>Xfn- zoK4>e6G`8_wq50uDP>Wa)Ukt+18vN5`N$W73zVWe84sZ0w+rQKned@kek5Zd%rK8+ zR6NC!Abg@n$Wlh{`6U!aq(}B(+sf|i`SW;5)%?ZbQ0-6C28pU zTEU1!y)a6+GDfD6&jQYrVu{ab;HL>2^aKk`Xq13?O8ANJCFe=%8>OO<>O?6ispOPL zOr@y+ccCX(8iu|H8&8{nLIO&pG}KfI>T@P|ps0X&JtY!uJfc$S`AG=;Cn--kjkqR? zM`%i1iHEo%29!AdA J*4q#J&cD%795w&| literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_doNotThrowOnValidationTest2.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_doNotThrowOnValidationTest2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..593d11e8fdd31c13fe0d67a3c3f23b480765cdbe GIT binary patch literal 3884 zcmeHKO>Wyp6mHQSPcdL&Btap~aE3#2Sc!pS#feeNF=RIlU>F6-d9)czBtcTK?6c$o z-Sh%o6vzd-=ndKf^a_1L$&wPUyy&8UM-VxD^S<~0fO$K|qx~N5Gi&FszyJ8tl7x{m zd2bB{bU&ZAP}BWs+`G@4e`uceEjAsTwhyI=oJZfMu58!v{x1_ z6m3I{@ChA*&f^#5;*8;^RFVWPKc~lWjXZ>REE8zTd7VNt7(@|0t@GJE{?nTZ5Oe`i zWRx3~-j+(VuFcD0gtiY{SHyw~hJP2I0sf_M@aZDO5dlwdFSw6S#{GznOKosZM+ESI#ks4*en5&6z2I$@$WQPRa&iM6V#Lnlj<1C-bB={=OR@E@5}JtP5`Nd{M>e z6|^LQi@X@x|NQp5O>#Z7f0AQ1uJ+(Ee|=lS$?ef;dV7^BZ9k8!!6IDDsu?;)7PD#5 zgo~jaW6eN_dqbu+=~&vUp}lJk$h+||*(+-xvhVa+?|q7?vLlO-L9MfJGTL8B!mpuy z*|t?k>Gkz>|626R`hq%2DattIyoVgU=B8-lMXzYS?PRQ^jG#&DyfTGKjMO+O=k3t8 zQOj~Ijn(N|Lp86boqU~An8M7o6?OU!{Ss4cnN>9X&e?ui&L|!rK->dheAZe%11#bS z0c;J>X_%GuEJj1)s+#6$*JwuWoej7RkLyy;Q>ce_b@Mtdu1doC97Fj%nUy-va?oVn zWo@pdIExJJ zYjf$mHxeys$Sg*bg}0dH62y~INRp8|ns9v5osnWqlfJq~V{FOiY++e|*J`u2u*|`s z>kArZ;vUVQ4BNImPb_Jjyta<>Db!{#JQ$I)ffA`NB-fq;8j?gN4rB@fEixx&LFz;U z?l6f17FQZ#hk3$v9Ici10dX39ymARO&_LM5puU9JPIwM;aZ z(gU1igwB)_S~De;N>~7rc{tf{Pe>I24nsW4xROH0Iy$EZMOG3s7Eb7-EO9XDwkP>5 j5QW3YPIvk2nQMOU^Q))Tv~k^b2{V(DwX^f`&A#<7J&XuJ literal 0 HcmV?d00001 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_macShouldNotBePreservedWithEncryptionTest.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest/cmp_macShouldNotBePreservedWithEncryptionTest.pdf index 9b54a711e1249c69376dc0896baecbc1c864ca10..c74d7239e39801a61be076ac47f5ff17b8ea1a6e 100644 GIT binary patch delta 2401 zcmV-n37+=jCcP!F(E=u#s+_7iCu{gYTre^*vA@+vZ`1$Q-P?^^Ff%ZEMAI*qT0}W5 zvXk@zy_1Rrg9A4*FtZQ^a{_-3i7rQ=x*N38&F4SF;_+64T9hV@2Y&aHoz!8iW2lk0 z84(alWDr+6jKZqR1KEt6Ua&#`E8hn(a5zk*2Q;g4)MtUEXFAkEe`yMsM}l7{6}cfy ze1tAfeD^CdnlNhzTLXzGNLX_iBTE!|^!2DQaiObW{PHi?^JEBXk#Bzi8UHDVdVu01 zGVjJy5XNzI<|5+|1%X6vXCZOOzlqT|dKWHFcT?^v?UNU2YCoGy`HZku4H-#bMUU}3 zfY-wP5S-4w0{|I~jmehtrN>**7jp$2l>z3>fwg*^njcU57?svDCl|ON_&af%;lirM zjZUHvGxwEG5+nU2prW85+A&er*~{%&|_=&}D1o%HGvkE1xg zg^A~V&C9W4cqysGtn8j2Cr7(_dd#Q%LoBL>jjT`^`Yj(lKTLUxa*iHeVX9J_7N4?2iHl>&m?nwQUj81?a-aT%<#6kj zqf$|PdPM~>5Un&%*gt!4V^b9*L#>OOyusT=OVP`krof$H`|Y~1iE~KBT#O(m}KI%A1> zH3!X~q#$n~1~rJ8Y}{02Vs(!96~nPD+U*;b^P{wp3~{A^;Zk01fTVxaUt0(I*f+|( zE`*j>aHR;OJ?=lz@8c1RFhy|;0X8fW?Rp9ilbM5R5R+Gx_0w)q-4 z@3en+C&z9TkJXAw?!c5pVpH|eHA_y6e3(Z;=&7ZCFYPP=eH@){F3#P3FZ`RH&BV11 z(HQghfXK(ua@a8To`=dODB$m34w`jy3gKi$r$azzJeEgZ*BnZCSMzJZ2e=CP;Vx`a z9ie)chxhA!J6~)=36ARyo+j#erIxm=y{v!8Kj3_IuY4dHXZv*p^`mrpd;Xr(4;kRu z1k&ItFvA{!?+-$<=C|%H<96&}Qk!PUR|N1(NOiPjK^4mvJ=FWi`UzjsPZqVbzOH(; zFCU?}e1GA8m0w(5qM4wlRBDP7mnw`KjC-;eZc{7m!2ThXRR&Xvy*iB)BsPp3bSHl& z=2v{OMsco7`l7##crTj<#dVk7i@n?-CT3u8nW+4E@G~RV^5Y8aZmc9h&lr5A(9x5w zt^0K8ZQx3vYZfT~1PTkq!Ad9)pYMDWeX28K!VgccQou`fAR1WbHK%NT-JYmdmNf7G@P2qRupd}!Wa5mMLmX-wqQ~Zx1QYKI zz*7l5?$^P7tu$Syl?Gr~mBs`}zaOG|<}ap3gU!ZQZy}MzdfFO2`-OkUha)=)!ogO! z>i~slc@pefQzWFH<49V$dnq{J9Ga&?bdB9mg}nXlD+*134+PrVoq(QttmL4i0Ww<5 zAha~UE;&|$eu4u7kMg5AUL>^cwF|evBY?}R>Q0`hfLKk=y0;bb7Y^1v>IceQdxL&2 z5soCfawr>Mc@=*ku>^nDjz|#!=7++a^&1vU9G|0Y8Ih!6!j)Ka^*vX!$nBJ=3opC4 zly|ZJb2T2O$k8B1a=?xI&yKzZul4#x&HAhnW5Nl(48&NYfI_rZ@fMlrT_+4M_-q{9 zHTpJ)U608UC>14Y14RT*32{Yucsj=a?Mf$yj>J}=TiA-GblqSyEAlWe{&kX#Rqp?$ zO4|geLI66*9UuR=eFXdJnu3nEnpUnc0?wvr+25XxurqeM<&05so3T_b)2newqqaY{ zT6%o>)jl1-ob?A+QJD+UUgoF}IHg@0)0n^&Xn}RJqYqI56*(XH93>L5hMgNI5jns5V>C4|Ff?UmGGQ=gHaRvmVKFc^ zF*Y}3H#cEoFg7waH)b?BWi(|uIb>!xIb~uoI50IbFkvxfVlp#hH8nV7H8^BtGB7d$ TWRnmRNeVGDH3}sqMNdWwfj?@m delta 2569 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 literal 0 HcmV?d00001 diff --git a/itext.tests/itext.pdfa.tests/itext/pdfa/PdfA4CatalogCheckTest.cs b/itext.tests/itext.pdfa.tests/itext/pdfa/PdfA4CatalogCheckTest.cs index 3fb4f7826f..4432430ee7 100644 --- a/itext.tests/itext.pdfa.tests/itext/pdfa/PdfA4CatalogCheckTest.cs +++ b/itext.tests/itext.pdfa.tests/itext/pdfa/PdfA4CatalogCheckTest.cs @@ -123,7 +123,7 @@ public virtual void EncryptInTrailerTest() { [NUnit.Framework.Test] public virtual void EncryptedDocumentTest() { - String outPdf = destinationFolder + "pdfA4_catalogCheck03.pdf"; + String outPdf = destinationFolder + "pdfA4_encryptedDocument.pdf"; byte[] userPassword = "user".GetBytes(iText.Commons.Utils.EncodingUtil.ISO_8859_1); byte[] ownerPassword = "owner".GetBytes(iText.Commons.Utils.EncodingUtil.ISO_8859_1); int permissions = EncryptionConstants.ALLOW_SCREENREADERS | EncryptionConstants.ALLOW_DEGRADED_PRINTING; diff --git a/itext.tests/itext.sign.tests/itext/signatures/mac/SignedDocumentWithMacTest.cs b/itext.tests/itext.sign.tests/itext/signatures/mac/SignedDocumentWithMacTest.cs index 738f4daf05..7bd82f2984 100644 --- a/itext.tests/itext.sign.tests/itext/signatures/mac/SignedDocumentWithMacTest.cs +++ b/itext.tests/itext.sign.tests/itext/signatures/mac/SignedDocumentWithMacTest.cs @@ -83,6 +83,73 @@ public virtual void SignMacProtectedDocTest() { , properties)); } + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void SignNotMacProtectedDocTest() { + String fileName = "signNotMacProtectedDocTest.pdf"; + String srcFileName = SOURCE_FOLDER + "noMacProtectionDocument.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String signCertFileName = CERTS_SRC + "signCertRsa01.pem"; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + IX509Certificate[] signRsaChain = PemFileHelper.ReadFirstChain(signCertFileName); + IPrivateKey signRsaPrivateKey = PemFileHelper.ReadFirstKey(signCertFileName, PRIVATE_KEY_PASSWORD); + using (PdfReader reader = new PdfReader(srcFileName, new ReaderProperties().SetPassword(ENCRYPTION_PASSWORD + ))) { + using (Stream outputStream = FileUtil.GetFileOutputStream(outputFileName)) { + PdfSigner pdfSigner = new PdfSigner(reader, outputStream, new StampingProperties()); + PerformSignDetached(pdfSigner, signRsaPrivateKey, signRsaChain); + } + } + ReaderProperties properties = new ReaderProperties().SetPassword(ENCRYPTION_PASSWORD); + NUnit.Framework.Assert.IsNull(SignaturesCompareTool.CompareSignatures(outputFileName, cmpFileName, properties + , properties)); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void SignNotMacProtectedDoc17Test() { + String fileName = "signNotMacProtectedDoc17Test.pdf"; + String srcFileName = SOURCE_FOLDER + "noMacProtectionDocument_1_7.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String signCertFileName = CERTS_SRC + "signCertRsa01.pem"; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + IX509Certificate[] signRsaChain = PemFileHelper.ReadFirstChain(signCertFileName); + IPrivateKey signRsaPrivateKey = PemFileHelper.ReadFirstKey(signCertFileName, PRIVATE_KEY_PASSWORD); + using (PdfReader reader = new PdfReader(srcFileName, new ReaderProperties().SetPassword(ENCRYPTION_PASSWORD + ))) { + using (Stream outputStream = FileUtil.GetFileOutputStream(outputFileName)) { + PdfSigner pdfSigner = new PdfSigner(reader, outputStream, new StampingProperties()); + PerformSignDetached(pdfSigner, signRsaPrivateKey, signRsaChain); + } + } + ReaderProperties properties = new ReaderProperties().SetPassword(ENCRYPTION_PASSWORD); + NUnit.Framework.Assert.IsNull(SignaturesCompareTool.CompareSignatures(outputFileName, cmpFileName, properties + , properties)); + } + + [NUnit.Framework.Test] + [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] + public virtual void SignNotMacProtectedDocInAppendModeTest() { + // MAC should not be added in append mode + String fileName = "signNotMacProtectedDocInAppendModeTest.pdf"; + String srcFileName = SOURCE_FOLDER + "noMacProtectionDocument.pdf"; + String outputFileName = DESTINATION_FOLDER + fileName; + String signCertFileName = CERTS_SRC + "signCertRsa01.pem"; + String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName; + IX509Certificate[] signRsaChain = PemFileHelper.ReadFirstChain(signCertFileName); + IPrivateKey signRsaPrivateKey = PemFileHelper.ReadFirstKey(signCertFileName, PRIVATE_KEY_PASSWORD); + using (PdfReader reader = new PdfReader(srcFileName, new ReaderProperties().SetPassword(ENCRYPTION_PASSWORD + ))) { + using (Stream outputStream = FileUtil.GetFileOutputStream(outputFileName)) { + PdfSigner pdfSigner = new PdfSigner(reader, outputStream, new StampingProperties().UseAppendMode()); + PerformSignDetached(pdfSigner, signRsaPrivateKey, signRsaChain); + } + } + ReaderProperties properties = new ReaderProperties().SetPassword(ENCRYPTION_PASSWORD); + NUnit.Framework.Assert.IsNull(SignaturesCompareTool.CompareSignatures(outputFileName, cmpFileName, properties + , properties)); + } + [NUnit.Framework.Test] [LogMessage(KernelLogMessageConstant.MD5_IS_NOT_FIPS_COMPLIANT, Ignore = true)] public virtual void SignMacProtectedDocInAppendModeTest() { diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDoc17Test.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDoc17Test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eacc5b6be812e6f9c055399a9bbdb52024a7b9c3 GIT binary patch literal 18992 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 Jz`oUr{6ESTPx1f& literal 0 HcmV?d00001 diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDocTest.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/cmp_signNotMacProtectedDocTest.pdf new file mode 100644 index 0000000000000000000000000000000000000000..49b98db1e7b8a3d3f1c17e1f200bbe132653446f GIT binary patch literal 22056 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 h{NmaL#>9n3xA(|!5{J`e~9kghq#X{0HlVj;{a! literal 0 HcmV?d00001 diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/noMacProtectionDocument.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/noMacProtectionDocument.pdf new file mode 100644 index 0000000000000000000000000000000000000000..318f529543424068e1b7f545b36d4199fb6ea5ad GIT binary patch literal 4369 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 RULI%y5;_4<)-}-+{twOCTEGAR literal 0 HcmV?d00001 diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/noMacProtectionDocument_1_7.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/mac/SignedDocumentWithMacTest/noMacProtectionDocument_1_7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..db862c70693692900cace1fd85531659439fc3ab GIT binary patch literal 1648 zcmc&#-ES0C6n}R8CoT@x z=bYd9-I;JUnQoGr^-%col`p>vVSs>d^@UnmU>2zSAqR8RW2g1#0ZjK3Mw8U`9SV0*ub1rxiX4wuSU|}@D0Ba|d~x#ZzH3E) z>c--v8T8F6o>9GU-|V-yf=AB$DE6&|*4`j;swLR!c|NNYMasDnO!yw79;*P6Lk@OO zr%c-X;UeOXnxTQ1DwklE1Uv@FYauyW@vDJND=jVYI4lI^ferBmQDT<#(t3#s$JP=^ z@ETaz_maHCNXA5x^3Q5a;ad51tZ(Fl1v5BK2fG(cq{tUeys>9!DfQCH&g-LdWGHzl z3Ojt~zi*Nae5Y#D;9pbu?r8Sno7e4&vu!uqv?C@CBFFi0rmIinU`cvJTem>P>|8n;9H{g`%zWQ>(M6x{HV7d=(&D&F_ zqjh$qIy-{4N{#9@9utI-e!sUKEZVS6rC;TJkzjk-sT9|ASAuuQuhb#>U63>vX`VR= zac`}%-KinoTbT6i%pmn(BHaO7Q~56CZrSlZ*L0a@#B)gCtgp%%h8YkkxaGq`#mBFG z*8b_<`M285$btS%5^tLR*9xDdmAQS(Q`>)N>wItYh1WJSPJ^}!w;i25aDFZdGbs>h zIYwHS{Vg-`uKBT(FHV1W?h_8frn`D>LRy5|ra1x+?>rpkr>jXZkP5Rj7^r}V@PGWh z89746esAOu^svEup*7BIjlvwzc%1|3+r{!ZST{Qb5aD-UzoD8@ZpoKMKHAA18Wy^{ zx_bU<_mow4cJjQl;+>bj5dAkjo{YYS zPfG7NpH=SE=Wne%!S8|!rRV8qH;*rjpPBgMAa@}?a1?d{t=^^KfVv?BVj;dey0 Rz}BQ7NyrF=!>LR<^f#FDDeM3M literal 0 HcmV?d00001 diff --git a/itext/itext.kernel/itext/kernel/crypto/securityhandler/PubKeySecurityHandler.cs b/itext/itext.kernel/itext/kernel/crypto/securityhandler/PubKeySecurityHandler.cs index 9344d8eabf..9f8f16cbcf 100644 --- a/itext/itext.kernel/itext/kernel/crypto/securityhandler/PubKeySecurityHandler.cs +++ b/itext/itext.kernel/itext/kernel/crypto/securityhandler/PubKeySecurityHandler.cs @@ -177,14 +177,11 @@ private byte[] GetEncodedRecipient(int index) { //constants permissions: PdfWriter.AllowCopy | PdfWriter.AllowPrinting | PdfWriter.AllowScreenReaders | // PdfWriter.AllowAssembly; int permission = recipient.GetPermission(); - // NOTE! Added while porting to itext - // Previous strange code was: - // int revision = 3; - // permission |= revision == 3 ? 0xfffff0c0 : 0xffffffc0; - // revision value never changed, so code have been replaced to this: - permission |= unchecked((int)(0xfffff0c0)); - permission &= unchecked((int)(0xfffffffc)); - permission += 1; + // Force set 1 to 1, 7, 8 bits and all bits above 13. + // Basically to all not used bits. + // Bit 13 we do not touch. It's handled separately in PdfEncryption. + // Not sure about bit 1. But we always set it to 1 so let's not change for now. + permission |= unchecked((int)(0xffffe0c1)); byte[] pkcs7input = new byte[24]; byte one = (byte)permission; byte two = (byte)(permission >> 8); diff --git a/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingAes256.cs b/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingAes256.cs index 7e1264b6a3..504c045148 100644 --- a/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingAes256.cs +++ b/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingAes256.cs @@ -79,6 +79,13 @@ public override IDecryptor GetDecryptor() { return new AesDecryptor(nextObjectKey, 0, nextObjectKeySize); } + ///

+ public override void SetPermissions(int permissions, PdfDictionary encryptionDictionary) { + base.SetPermissions(permissions, encryptionDictionary); + byte[] aes256Perms = GetAes256Perms(permissions, IsEncryptMetadata()); + encryptionDictionary.Put(PdfName.Perms, new PdfLiteral(StreamUtil.CreateEscapedString(aes256Perms))); + } + //\cond DO_NOT_DOCUMENT internal virtual void SetAES256DicEntries(PdfDictionary encryptionDictionary, byte[] oeKey, byte[] ueKey, byte[] aes256Perms, bool encryptMetadata, bool embeddedFilesOnly) { @@ -175,21 +182,7 @@ private void InitKeyAndFillDictionary(PdfDictionary encryptionDictionary, byte[] ac = new AESCipherCBCnoPad(true, hash); oeKey = ac.ProcessBlock(nextObjectKey, 0, nextObjectKey.Length); // Algorithm 10 - byte[] permsp = IVGenerator.GetIV(16); - permsp[0] = (byte)permissions; - permsp[1] = (byte)(permissions >> 8); - permsp[2] = (byte)(permissions >> 16); - permsp[3] = (byte)(permissions >> 24); - permsp[4] = (byte)(255); - permsp[5] = (byte)(255); - permsp[6] = (byte)(255); - permsp[7] = (byte)(255); - permsp[8] = encryptMetadata ? (byte)'T' : (byte)'F'; - permsp[9] = (byte)'a'; - permsp[10] = (byte)'d'; - permsp[11] = (byte)'b'; - ac = new AESCipherCBCnoPad(true, nextObjectKey); - aes256Perms = ac.ProcessBlock(permsp, 0, permsp.Length); + aes256Perms = GetAes256Perms(permissions, encryptMetadata); this.permissions = permissions; this.encryptMetadata = encryptMetadata; SetStandardHandlerDicEntries(encryptionDictionary, userKey, ownerKey); @@ -200,6 +193,27 @@ private void InitKeyAndFillDictionary(PdfDictionary encryptionDictionary, byte[] } } + private byte[] GetAes256Perms(int permissions, bool encryptMetadata) { + byte[] aes256Perms; + AESCipherCBCnoPad ac; + byte[] permsp = IVGenerator.GetIV(16); + permsp[0] = (byte)permissions; + permsp[1] = (byte)(permissions >> 8); + permsp[2] = (byte)(permissions >> 16); + permsp[3] = (byte)(permissions >> 24); + permsp[4] = (byte)(255); + permsp[5] = (byte)(255); + permsp[6] = (byte)(255); + permsp[7] = (byte)(255); + permsp[8] = encryptMetadata ? (byte)'T' : (byte)'F'; + permsp[9] = (byte)'a'; + permsp[10] = (byte)'d'; + permsp[11] = (byte)'b'; + ac = new AESCipherCBCnoPad(true, nextObjectKey); + aes256Perms = ac.ProcessBlock(permsp, 0, permsp.Length); + return aes256Perms; + } + private void InitKeyAndReadDictionary(PdfDictionary encryptionDictionary, byte[] password) { try { if (password == null) { @@ -219,7 +233,7 @@ private void InitKeyAndReadDictionary(PdfDictionary encryptionDictionary, byte[] byte[] ueValue = GetIsoBytes(encryptionDictionary.GetAsString(PdfName.UE)); byte[] perms = GetIsoBytes(encryptionDictionary.GetAsString(PdfName.Perms)); PdfNumber pValue = (PdfNumber)encryptionDictionary.Get(PdfName.P); - this.permissions = pValue.LongValue(); + this.permissions = pValue.IntValue(); byte[] hash; hash = ComputeHash(password, oValue, VALIDATION_SALT_OFFSET, SALT_LENGTH, uValue); usedOwnerPassword = EqualsArray(hash, oValue, 32); diff --git a/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.cs b/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.cs index 4aae761362..4380cc21a7 100644 --- a/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.cs +++ b/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.cs @@ -163,7 +163,7 @@ private void InitKeyAndReadDictionary(PdfDictionary encryptionDictionary, byte[] byte[] uValue = GetIsoBytes(encryptionDictionary.GetAsString(PdfName.U)); byte[] oValue = GetIsoBytes(encryptionDictionary.GetAsString(PdfName.O)); PdfNumber pValue = (PdfNumber)encryptionDictionary.Get(PdfName.P); - this.permissions = pValue.LongValue(); + this.permissions = pValue.IntValue(); this.documentId = documentId; keyLength = GetKeyLength(encryptionDictionary); byte[] paddedPassword = PadPassword(password); diff --git a/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardSecurityHandler.cs b/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardSecurityHandler.cs index bbfe223d06..4b03dbf8a1 100644 --- a/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardSecurityHandler.cs +++ b/itext/itext.kernel/itext/kernel/crypto/securityhandler/StandardSecurityHandler.cs @@ -26,20 +26,28 @@ You should have received a copy of the GNU Affero General Public License namespace iText.Kernel.Crypto.Securityhandler { public abstract class StandardSecurityHandler : SecurityHandler { - protected internal const int PERMS_MASK_1_FOR_REVISION_2 = -64; + protected internal const int PERMS_MASK_1_FOR_REVISION_2 = unchecked((int)(0xffffffc0)); - protected internal const int PERMS_MASK_1_FOR_REVISION_3_OR_GREATER = -8000; + protected internal const int PERMS_MASK_1_FOR_REVISION_3_OR_GREATER = unchecked((int)(0xffffe0c0)); - protected internal const int PERMS_MASK_2 = -4; + protected internal const int PERMS_MASK_2 = unchecked((int)(0xfffffffc)); - protected internal long permissions; + protected internal int permissions; protected internal bool usedOwnerPassword = true; - public virtual long GetPermissions() { + public virtual int GetPermissions() { return permissions; } + /// Updates encryption dictionary with the security permissions provided. + /// new permissions to set + /// encryption dictionary to update + public virtual void SetPermissions(int permissions, PdfDictionary encryptionDictionary) { + this.permissions = permissions; + encryptionDictionary.Put(PdfName.P, new PdfNumber(permissions)); + } + public virtual bool IsUsedOwnerPassword() { return usedOwnerPassword; } diff --git a/itext/itext.kernel/itext/kernel/events/PdfDocumentEvent.cs b/itext/itext.kernel/itext/kernel/events/PdfDocumentEvent.cs index c221bea9a5..2b7319ec63 100644 --- a/itext/itext.kernel/itext/kernel/events/PdfDocumentEvent.cs +++ b/itext/itext.kernel/itext/kernel/events/PdfDocumentEvent.cs @@ -43,8 +43,8 @@ public class PdfDocumentEvent : Event { /// public const String END_PAGE = "EndPdfPage"; - /// Dispatched before writer is flushed to a document. - public const String END_WRITER_FLUSH = "EndWriterFlush"; + /// Dispatched before writer is closed. + public const String START_WRITER_CLOSING = "StartWriterClosing"; /// Dispatched after writer is flushed to a document. public const String START_DOCUMENT_CLOSING = "StartDocumentClosing"; diff --git a/itext/itext.kernel/itext/kernel/exceptions/KernelExceptionMessageConstant.cs b/itext/itext.kernel/itext/kernel/exceptions/KernelExceptionMessageConstant.cs index 2a332c6134..b61ae47368 100644 --- a/itext/itext.kernel/itext/kernel/exceptions/KernelExceptionMessageConstant.cs +++ b/itext/itext.kernel/itext/kernel/exceptions/KernelExceptionMessageConstant.cs @@ -374,6 +374,8 @@ public const String CONTENT_STREAM_MUST_NOT_INVOKE_OPERATORS_THAT_SPECIFY_COLORS public const String MAC_VALIDATION_FAILED = "MAC integrity protection was compromised. Document content was modified."; + public const String MAC_VALIDATION_NO_SALT = "MAC token validation failed. Salt is not found."; + public const String MISSING_REQUIRED_FIELD_IN_FONT_DICTIONARY = "Missing required field {0} in font dictionary."; public const String MUST_BE_A_TAGGED_DOCUMENT = "Must be a tagged document."; diff --git a/itext/itext.kernel/itext/kernel/mac/AbstractMacIntegrityProtector.cs b/itext/itext.kernel/itext/kernel/mac/AbstractMacIntegrityProtector.cs index aff577abf7..9159989953 100644 --- a/itext/itext.kernel/itext/kernel/mac/AbstractMacIntegrityProtector.cs +++ b/itext/itext.kernel/itext/kernel/mac/AbstractMacIntegrityProtector.cs @@ -133,6 +133,9 @@ public virtual void SetKdfSalt(byte[] kdfSalt) { /// introduced to the document in question, after MAC container is integrated. /// public virtual void ValidateMacToken() { + if (kdfSalt == null) { + throw new MacValidationException(KernelExceptionMessageConstant.MAC_VALIDATION_NO_SALT); + } try { byte[] macKey = GenerateDecryptedKey(macContainerReader.ParseMacKey()); long[] byteRange = macContainerReader.GetByteRange(); @@ -151,14 +154,14 @@ public virtual void ValidateMacToken() { byte[] actualMac = macContainerReader.ParseMac(); if (!JavaUtil.ArraysEquals(expectedMac, actualMac) || !JavaUtil.ArraysEquals(expectedMessageDigest, actualMessageDigest )) { - throw new PdfException(KernelExceptionMessageConstant.MAC_VALIDATION_FAILED); + throw new MacValidationException(KernelExceptionMessageConstant.MAC_VALIDATION_FAILED); } } catch (PdfException e) { throw; } catch (Exception e) { - throw new PdfException(KernelExceptionMessageConstant.MAC_VALIDATION_EXCEPTION, e); + throw new MacValidationException(KernelExceptionMessageConstant.MAC_VALIDATION_EXCEPTION, e); } } diff --git a/itext/itext.kernel/itext/kernel/mac/IMacContainerLocator.cs b/itext/itext.kernel/itext/kernel/mac/IMacContainerLocator.cs index 784bbe665e..6b4ab7f3ac 100644 --- a/itext/itext.kernel/itext/kernel/mac/IMacContainerLocator.cs +++ b/itext/itext.kernel/itext/kernel/mac/IMacContainerLocator.cs @@ -93,5 +93,13 @@ AbstractMacIntegrityProtector CreateMacIntegrityProtector(PdfDocument document, /// AbstractMacIntegrityProtector CreateMacIntegrityProtector(PdfDocument document, PdfDictionary authDictionary ); + + /// Handles MAC validation error. + /// + /// + /// + /// to handle. + /// + void HandleMacValidationError(MacValidationException exception); } } diff --git a/itext/itext.kernel/itext/kernel/mac/MacValidationException.cs b/itext/itext.kernel/itext/kernel/mac/MacValidationException.cs new file mode 100644 index 0000000000..16c3126e0d --- /dev/null +++ b/itext/itext.kernel/itext/kernel/mac/MacValidationException.cs @@ -0,0 +1,52 @@ +/* +This file is part of the iText (R) project. +Copyright (c) 1998-2024 Apryse Group NV +Authors: Apryse Software. + +This program is offered under a commercial and under the AGPL license. +For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + +AGPL licensing: +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +using System; +using iText.Kernel.Exceptions; + +namespace iText.Kernel.Mac { + /// Exception class for MAC validation errors. + public class MacValidationException : PdfException { + /// + /// Creates a new instance of + /// . + /// + /// the exception message + public MacValidationException(String message) + : base(message) { + } + + /// + /// Creates a new instance of + /// . + /// + /// the exception message + /// + /// the cause (which is saved for later retrieval by + /// + /// method) + /// + public MacValidationException(String message, Exception cause) + : base(message, cause) { + } + } +} diff --git a/itext/itext.kernel/itext/kernel/mac/StandaloneMacContainerLocator.cs b/itext/itext.kernel/itext/kernel/mac/StandaloneMacContainerLocator.cs index b9a5b62d85..60b00aed42 100644 --- a/itext/itext.kernel/itext/kernel/mac/StandaloneMacContainerLocator.cs +++ b/itext/itext.kernel/itext/kernel/mac/StandaloneMacContainerLocator.cs @@ -51,5 +51,10 @@ public virtual AbstractMacIntegrityProtector CreateMacIntegrityProtector(PdfDocu authDictionary) { return new StandaloneMacIntegrityProtector(document, authDictionary); } + + /// + public virtual void HandleMacValidationError(MacValidationException exception) { + throw exception; + } } } diff --git a/itext/itext.kernel/itext/kernel/mac/StandaloneMacIntegrityProtector.cs b/itext/itext.kernel/itext/kernel/mac/StandaloneMacIntegrityProtector.cs index d9023a910d..f2ded9ad2e 100644 --- a/itext/itext.kernel/itext/kernel/mac/StandaloneMacIntegrityProtector.cs +++ b/itext/itext.kernel/itext/kernel/mac/StandaloneMacIntegrityProtector.cs @@ -51,7 +51,7 @@ internal StandaloneMacIntegrityProtector(PdfDocument document, PdfDictionary aut internal virtual void PrepareDocument() { document.AddEventHandler(PdfDocumentEvent.START_DOCUMENT_CLOSING, new StandaloneMacIntegrityProtector.StandaloneMacPdfObjectAdder (this)); - document.AddEventHandler(PdfDocumentEvent.END_WRITER_FLUSH, new StandaloneMacIntegrityProtector.StandaloneMacContainerEmbedder + document.AddEventHandler(PdfDocumentEvent.START_WRITER_CLOSING, new StandaloneMacIntegrityProtector.StandaloneMacContainerEmbedder (this)); } //\endcond diff --git a/itext/itext.kernel/itext/kernel/pdf/EncryptionProperties.cs b/itext/itext.kernel/itext/kernel/pdf/EncryptionProperties.cs index d1a1c4609b..e2239aa967 100644 --- a/itext/itext.kernel/itext/kernel/pdf/EncryptionProperties.cs +++ b/itext/itext.kernel/itext/kernel/pdf/EncryptionProperties.cs @@ -47,6 +47,11 @@ public class EncryptionProperties { /// protected internal MacProperties macProperties; +//\cond DO_NOT_DOCUMENT + internal static readonly MacProperties DEFAULT_MAC_PROPERTIES = new MacProperties(MacProperties.MacDigestAlgorithm + .SHA3_512); +//\endcond + /// Sets the encryption options for the document. /// /// the user password. Can be null or of zero length, which is equal to @@ -108,7 +113,8 @@ public class EncryptionProperties { /// public virtual EncryptionProperties SetStandardEncryption(byte[] userPassword, byte[] ownerPassword, int permissions , int encryptionAlgorithm) { - return SetStandardEncryption(userPassword, ownerPassword, permissions, encryptionAlgorithm, null); + return SetStandardEncryption(userPassword, ownerPassword, permissions, encryptionAlgorithm, DEFAULT_MAC_PROPERTIES + ); } /// Sets the encryption options for the document. @@ -169,7 +175,10 @@ public virtual EncryptionProperties SetStandardEncryption(byte[] userPassword, b /// /// /// - /// class to configure MAC integrity protection properties + /// class to configure MAC integrity protection properties. + /// Pass + /// + /// if you want to disable MAC protection for any reason /// /// /// this @@ -249,7 +258,10 @@ public virtual EncryptionProperties SetStandardEncryption(byte[] userPassword, b /// /// /// - /// class to configure MAC integrity protection properties + /// class to configure MAC integrity protection properties. + /// Pass + /// + /// if you want to disable MAC protection for any reason /// /// /// this @@ -265,69 +277,6 @@ public virtual EncryptionProperties SetPublicKeyEncryption(IX509Certificate[] ce return this; } - /// Sets the certificate encryption options for the document. - /// - /// Sets the certificate encryption options for the document. - /// - /// An array of one or more public certificates must be provided together with an array of the same size - /// for the permissions for each certificate. - /// - /// the public certificates to be used for the encryption - /// - /// the user permissions for each of the certificates - /// The open permissions for the document can be - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// and - /// . - /// The permissions can be combined by ORing them - /// - /// - /// the type of encryption. It can be one of - /// - /// , - /// - /// , - /// - /// or - /// . - /// Optionally - /// - /// can be ORed to output the metadata in cleartext. - /// - /// can be ORed as well. - /// Please be aware that the passed encryption types may override permissions: - /// - /// implicitly sets - /// - /// and - /// - /// as false; - /// - /// implicitly sets - /// - /// as false; - /// - /// - /// this - /// - /// - public virtual EncryptionProperties SetPublicKeyEncryption(IX509Certificate[] certs, int[] permissions, int - encryptionAlgorithm) { - return SetPublicKeyEncryption(certs, permissions, encryptionAlgorithm, null); - } - //\cond DO_NOT_DOCUMENT internal virtual bool IsStandardEncryptionUsed() { return ownerPassword != null; diff --git a/itext/itext.kernel/itext/kernel/pdf/PdfCatalog.cs b/itext/itext.kernel/itext/kernel/pdf/PdfCatalog.cs index e544b920ab..c566b3ccb7 100644 --- a/itext/itext.kernel/itext/kernel/pdf/PdfCatalog.cs +++ b/itext/itext.kernel/itext/kernel/pdf/PdfCatalog.cs @@ -376,11 +376,11 @@ public virtual void SetLang(PdfString lang) { } /// - /// Add an extensions dictionary containing developer prefix identification and version + /// Adds an extensions dictionary containing developer prefix identification and version /// numbers for developer extensions that occur in this document. /// /// - /// Add an extensions dictionary containing developer prefix identification and version + /// Adds an extensions dictionary containing developer prefix identification and version /// numbers for developer extensions that occur in this document. /// See ISO 32000-1, Table 28 – Entries in the catalog dictionary. /// @@ -432,6 +432,41 @@ public virtual void AddDeveloperExtension(PdfDeveloperExtension extension) { } } + /// + /// Removes an extensions dictionary containing developer prefix identification and version + /// numbers for developer extensions that do not occur in this document. + /// + /// + /// Removes an extensions dictionary containing developer prefix identification and version + /// numbers for developer extensions that do not occur in this document. + /// See ISO 32000-1, Table 28 – Entries in the catalog dictionary. + /// + /// developer extension to be removed from the document + public virtual void RemoveDeveloperExtension(PdfDeveloperExtension extension) { + PdfDictionary extensions = GetPdfObject().GetAsDictionary(PdfName.Extensions); + if (extensions == null) { + return; + } + if (extension.IsMultiValued()) { + PdfArray existingExtensionArray = extensions.GetAsArray(extension.GetPrefix()); + if (existingExtensionArray == null) { + return; + } + for (int i = 0; i < existingExtensionArray.Size(); i++) { + PdfDictionary pdfDict = existingExtensionArray.GetAsDictionary(i); + // for array-based extensions, we check for membership only, since comparison doesn't make sense + if (pdfDict.GetAsNumber(PdfName.ExtensionLevel).IntValue() == extension.GetExtensionLevel()) { + existingExtensionArray.Remove(i); + existingExtensionArray.SetModified(); + return; + } + } + } + else { + extensions.Remove(extension.GetPrefix()); + } + } + /// /// Gets collection dictionary that a conforming reader shall use to enhance the presentation of file attachments /// stored in the PDF document. diff --git a/itext/itext.kernel/itext/kernel/pdf/PdfDocument.cs b/itext/itext.kernel/itext/kernel/pdf/PdfDocument.cs index fa19ec34e6..8e135859e1 100644 --- a/itext/itext.kernel/itext/kernel/pdf/PdfDocument.cs +++ b/itext/itext.kernel/itext/kernel/pdf/PdfDocument.cs @@ -993,6 +993,12 @@ public virtual void Close() { long amountOfBytes = ((CountOutputStream)writer.GetOutputStream()).GetAmountOfWrittenBytes(); manager.OnEvent(new SizeOfPdfStatisticsEvent(amountOfBytes, ITextCoreProductData.GetInstance())); } + else { + if (writer.GetOutputStream() is ByteArrayOutputStream) { + long amountOfBytes = ((ByteArrayOutputStream)writer.GetOutputStream()).Length; + manager.OnEvent(new SizeOfPdfStatisticsEvent(amountOfBytes, ITextCoreProductData.GetInstance())); + } + } } catalog.GetPageTree().ClearPageRefs(); } @@ -1002,7 +1008,7 @@ public virtual void Close() { finally { if (writer != null && IsCloseWriter()) { try { - writer.Dispose(); + writer.Finish(); } catch (Exception e) { ILogger logger = ITextLogManager.GetLogger(typeof(iText.Kernel.Pdf.PdfDocument)); @@ -2456,7 +2462,8 @@ private void EnableByteArrayWritingMode() { } else { if (writer.properties.encryptionProperties != null && writer.properties.encryptionProperties.macProperties - != null) { + != null && writer.properties.pdfVersion != null && PdfVersion.PDF_2_0.CompareTo(writer.properties.pdfVersion + ) <= 0) { writer.EnableByteArrayWritingMode(); } } diff --git a/itext/itext.kernel/itext/kernel/pdf/PdfEncryption.cs b/itext/itext.kernel/itext/kernel/pdf/PdfEncryption.cs index 0301e80a2e..d68e809f64 100644 --- a/itext/itext.kernel/itext/kernel/pdf/PdfEncryption.cs +++ b/itext/itext.kernel/itext/kernel/pdf/PdfEncryption.cs @@ -54,7 +54,7 @@ public class PdfEncryption : PdfObjectWrapper { private int cryptoMode; - private long? permissions; + private int? permissions; private bool encryptMetadata; @@ -66,73 +66,6 @@ public class PdfEncryption : PdfObjectWrapper { private AbstractMacIntegrityProtector macContainer; - /// Creates the encryption. - /// - /// the user password. Can be null or of zero length, which is equal to - /// omitting the user password - /// - /// - /// the owner password. If it's null or empty, iText will generate - /// a random string to be used as the owner password - /// - /// - /// the user permissions - /// The open permissions for the document can be - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// and - /// . - /// The permissions can be combined by ORing them - /// - /// - /// the type of encryption. It can be one of - /// - /// , - /// - /// , - /// - /// or - /// . - /// Optionally - /// - /// can be - /// ORed to output the metadata in cleartext. - /// - /// can be ORed as well. - /// Please be aware that the passed encryption types may override permissions: - /// - /// implicitly sets - /// - /// and - /// - /// as false; - /// - /// implicitly sets - /// - /// as false; - /// - /// document id which will be used for encryption - /// - /// the - /// - /// of the target document for encryption - /// - public PdfEncryption(byte[] userPassword, byte[] ownerPassword, int permissions, int encryptionType, byte[] - documentId, PdfVersion version) - : this(userPassword, ownerPassword, permissions, encryptionType, documentId, version, null) { - } - /// Creates the encryption. /// /// the user password. Can be null or of zero length, which is equal to @@ -253,70 +186,6 @@ public PdfEncryption(byte[] userPassword, byte[] ownerPassword, int permissions, } } - /// Creates the certificate encryption. - /// - /// Creates the certificate encryption. - /// - /// An array of one or more public certificates must be provided together with - /// an array of the same size for the permissions for each certificate. - /// - /// the public certificates to be used for the encryption - /// - /// the user permissions for each of the certificates - /// The open permissions for the document can be - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// , - /// - /// and - /// . - /// The permissions can be combined by ORing them - /// - /// - /// the type of encryption. It can be one of - /// - /// , - /// - /// , - /// - /// or - /// . - /// Optionally - /// - /// can be ORed - /// to output the metadata in cleartext. - /// - /// can be ORed as well. - /// Please be aware that the passed encryption types may override permissions: - /// - /// implicitly sets - /// - /// and - /// - /// as false; - /// - /// implicitly sets - /// - /// as false; - /// - /// - /// the - /// - /// of the target document for encryption - /// - public PdfEncryption(IX509Certificate[] certs, int[] permissions, int encryptionType, PdfVersion version) - : this(certs, permissions, encryptionType, version, null) { - } - /// Creates the certificate encryption. /// /// Creates the certificate encryption. @@ -426,30 +295,6 @@ public PdfEncryption(IX509Certificate[] certs, int[] permissions, int encryption } } - /// - /// Creates - /// - /// instance based on already existing standard encryption dictionary. - /// - /// - /// - /// - /// , which represents encryption dictionary - /// - /// - /// - /// byte[] - /// , which represents encryption password - /// - /// - /// original file ID, the first element in - /// - /// key of trailer. - /// - public PdfEncryption(PdfDictionary pdfDict, byte[] password, byte[] documentId) - : this(pdfDict, password, documentId, null) { - } - /// /// Creates /// @@ -470,16 +315,9 @@ public PdfEncryption(PdfDictionary pdfDict, byte[] password, byte[] documentId) /// /// key of trailer /// - /// - /// - /// - /// class for MAC integrity protection - /// - public PdfEncryption(PdfDictionary pdfDict, byte[] password, byte[] documentId, AbstractMacIntegrityProtector - macContainer) + public PdfEncryption(PdfDictionary pdfDict, byte[] password, byte[] documentId) : base(pdfDict) { SetForbidRelease(); - this.macContainer = macContainer; this.documentId = documentId; int revision = ReadAndSetCryptoModeForStdHandler(pdfDict); switch (revision) { @@ -555,47 +393,7 @@ public PdfEncryption(PdfDictionary pdfDict, byte[] password, byte[] documentId, /// the external decryption process to be used /// public PdfEncryption(PdfDictionary pdfDict, IPrivateKey certificateKey, IX509Certificate certificate) - : this(pdfDict, certificateKey, certificate, null) { - } - - /// - /// Creates - /// - /// instance based on already existing public encryption dictionary. - /// - /// - /// - /// - /// , which represents encryption dictionary - /// - /// - /// the recipient private - /// - /// to the certificate - /// - /// - /// the recipient - /// - /// , which serves as recipient identifier - /// - /// - /// the certificate key provider id for - /// - /// - /// - /// - /// - /// the external decryption process to be used - /// - /// - /// - /// - /// class for MAC integrity protection - /// - public PdfEncryption(PdfDictionary pdfDict, IPrivateKey certificateKey, IX509Certificate certificate, AbstractMacIntegrityProtector - macContainer) : base(pdfDict) { - this.macContainer = macContainer; SetForbidRelease(); int revision = ReadAndSetCryptoModeForPubSecHandler(pdfDict); switch (revision) { @@ -708,7 +506,7 @@ private static byte[] PadByteArrayTo16(byte[] documentId) { /// See ISO 32000-1, Table 22 for more details. /// /// the encryption permissions, an unsigned 32-bit quantity. - public virtual long? GetPermissions() { + public virtual int? GetPermissions() { return permissions; } @@ -719,6 +517,13 @@ public virtual int GetCryptoMode() { return cryptoMode; } + /// Gets encryption algorithm. + /// the encryption algorithm + /// + public virtual int GetEncryptionAlgorithm() { + return cryptoMode & EncryptionConstants.ENCRYPTION_MASK; + } + public virtual bool IsMetadataEncrypted() { return encryptMetadata; } @@ -1137,12 +942,13 @@ internal virtual void CheckEncryptionRequirements(PdfDocument document) { throw new PdfException(KernelExceptionMessageConstant.MAC_FOR_ENCRYPTION_5); } } - if (GetCryptoMode() < EncryptionConstants.ENCRYPTION_AES_256) { + int encryption = GetEncryptionAlgorithm(); + if (encryption < EncryptionConstants.ENCRYPTION_AES_256) { VersionConforming.ValidatePdfVersionForDeprecatedFeatureLogWarn(document, PdfVersion.PDF_2_0, VersionConforming .DEPRECATED_ENCRYPTION_ALGORITHMS); } else { - if (GetCryptoMode() == EncryptionConstants.ENCRYPTION_AES_256) { + if (encryption == EncryptionConstants.ENCRYPTION_AES_256) { PdfNumber r = GetPdfObject().GetAsNumber(PdfName.R); if (r != null && r.IntValue() == 5) { VersionConforming.ValidatePdfVersionForDeprecatedFeatureLogWarn(document, PdfVersion.PDF_2_0, VersionConforming @@ -1150,7 +956,7 @@ internal virtual void CheckEncryptionRequirements(PdfDocument document) { } } else { - if (GetCryptoMode() == EncryptionConstants.ENCRYPTION_AES_GCM) { + if (encryption == EncryptionConstants.ENCRYPTION_AES_GCM) { VersionConforming.ValidatePdfVersionForNotSupportedFeatureLogError(document, PdfVersion.PDF_2_0, VersionConforming .NOT_SUPPORTED_AES_GCM); } @@ -1169,11 +975,18 @@ internal virtual void ConfigureEncryptionParametersFromWriter(PdfDocument docume PdfString kdfSalt = GetPdfObject().GetAsString(PdfName.KDFSalt); if (kdfSalt == null) { GetPdfObject().Put(PdfName.KDFSalt, new PdfString(macContainer.GetKdfSalt()).SetHexWriting(true)); + GetPdfObject().SetModified(); } } - if (GetCryptoMode() == EncryptionConstants.ENCRYPTION_AES_GCM) { + else { + document.GetCatalog().RemoveDeveloperExtension(PdfDeveloperExtension.ISO_32004); + } + if (GetEncryptionAlgorithm() == EncryptionConstants.ENCRYPTION_AES_GCM) { document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ISO_32003); } + else { + document.GetCatalog().RemoveDeveloperExtension(PdfDeveloperExtension.ISO_32003); + } } //\endcond @@ -1185,23 +998,75 @@ internal virtual AbstractMacIntegrityProtector GetMacContainer() { //\cond DO_NOT_DOCUMENT internal virtual void ConfigureEncryptionParametersFromReader(PdfDocument document, PdfDictionary trailer) { - if (trailer.GetAsDictionary(PdfName.AuthCode) != null) { - macContainer = document.GetDiContainer().GetInstance().CreateMacIntegrityProtector(document - , trailer.GetAsDictionary(PdfName.AuthCode)); - macContainer.SetFileEncryptionKey(securityHandler.GetMkey().Length == 0 ? securityHandler.GetNextObjectKey - () : securityHandler.GetMkey()); - PdfString kdfSalt = GetPdfObject().GetAsString(PdfName.KDFSalt); - if (kdfSalt != null) { - macContainer.SetKdfSalt(kdfSalt.GetValueBytes()); - } - macContainer.ValidateMacToken(); + PdfVersion sourceVersion = document.GetReader().headerPdfVersion; + PdfVersion destVersion = sourceVersion; + if (document.GetWriter() != null && document.GetWriter().GetProperties().pdfVersion != null) { + destVersion = document.GetWriter().GetProperties().pdfVersion; } - else { - if (permissions != null && (permissions & MAC_DISABLED) == 0) { - throw new PdfException(KernelExceptionMessageConstant.MAC_PERMS_WITHOUT_MAC); + try { + if (trailer.GetAsDictionary(PdfName.AuthCode) != null) { + macContainer = document.GetDiContainer().GetInstance().CreateMacIntegrityProtector(document + , trailer.GetAsDictionary(PdfName.AuthCode)); + macContainer.SetFileEncryptionKey(securityHandler.GetMkey().Length == 0 ? securityHandler.GetNextObjectKey + () : securityHandler.GetMkey()); + PdfString kdfSalt = GetPdfObject().GetAsString(PdfName.KDFSalt); + if (kdfSalt != null) { + macContainer.SetKdfSalt(kdfSalt.GetValueBytes()); + } + macContainer.ValidateMacToken(); + // Disable MAC for writing if explicitly requested. In append mode we cannot disable it because it will + // remove MAC protection from all previous revisions also for knowledgeable attackers + // TODO DEVSIX-8635 - Verify MAC permission and embed MAC in stamping mode for public key encryption + if (document.properties.disableMac && !document.properties.appendMode && securityHandler is StandardSecurityHandler + ) { + macContainer = null; + UpdateMacPermission(); + } + } + else { + if (PdfVersion.PDF_2_0.CompareTo(destVersion) <= 0 && permissions != null && (permissions & MAC_DISABLED) + == 0) { + // TODO DEVSIX-8635 - Verify MAC permission and embed MAC in stamping mode for public key encryption + throw new MacValidationException(KernelExceptionMessageConstant.MAC_PERMS_WITHOUT_MAC); + } + else { + if (!document.properties.disableMac && !document.properties.appendMode && securityHandler is StandardSecurityHandler + ) { + // TODO DEVSIX-8635 - Verify MAC permission and embed MAC in stamping mode for public key encryption + // This is the branch responsible for embedding MAC into the documents without MAC + // Do not embed MAC in append mode as it does not add extra security + PdfNumber vValue = GetPdfObject().GetAsNumber(PdfName.V); + if (vValue == null) { + throw new PdfException(KernelExceptionMessageConstant.ILLEGAL_V_VALUE); + } + int v = vValue.IntValue(); + // We do not support MAC for increasing PDF version to 2.0 (old encryption do not support it) + // and decreasing from 2.0 (not supported by the spec) + // v >= 5 stands for supported encryption algorithms for MAC being used + if (PdfVersion.PDF_2_0.CompareTo(destVersion) <= 0 && PdfVersion.PDF_2_0.CompareTo(sourceVersion) <= 0 && + v >= 5) { + macContainer = document.GetDiContainer().GetInstance().CreateMacIntegrityProtector(document + , EncryptionProperties.DEFAULT_MAC_PROPERTIES); + UpdateMacPermission(); + } + } + } } } + catch (MacValidationException exception) { + document.GetDiContainer().GetInstance().HandleMacValidationError(exception); + } } //\endcond + + private void UpdateMacPermission() { + // We don't parse permissions on reading for PubSec currently + if (permissions != null) { + permissions = ConfigureAccessibilityPermissionsForMac(permissions.Value); + if (securityHandler is StandardSecurityHandler) { + ((StandardSecurityHandler)securityHandler).SetPermissions(permissions.Value, this.GetPdfObject()); + } + } + } } } diff --git a/itext/itext.kernel/itext/kernel/pdf/PdfReader.cs b/itext/itext.kernel/itext/kernel/pdf/PdfReader.cs index e2962c86ab..1ef28ebff2 100644 --- a/itext/itext.kernel/itext/kernel/pdf/PdfReader.cs +++ b/itext/itext.kernel/itext/kernel/pdf/PdfReader.cs @@ -615,8 +615,8 @@ public virtual bool IsOpenedWithFullPermission() { /// . /// See ISO 32000-1, Table 22 for more details. /// - /// the encryption permissions, an unsigned 32-bit quantity. - public virtual long GetPermissions() { + /// the encryption permissions. + public virtual int GetPermissions() { /* !pdfDocument.getXref().isReadingCompleted() can be used for encryption properties as well, * because decrypt object is initialized in private readDecryptObj method which is called in our code * in the next line after the setting isReadingCompleted line. This means that there's no way for users @@ -625,9 +625,9 @@ public virtual long GetPermissions() { if (pdfDocument == null || !pdfDocument.GetXref().IsReadingCompleted()) { throw new PdfException(KernelExceptionMessageConstant.DOCUMENT_HAS_NOT_BEEN_READ_YET); } - long perm = 0; + int perm = 0; if (encrypted && decrypt.GetPermissions() != null) { - perm = (long)decrypt.GetPermissions(); + perm = decrypt.GetPermissions().Value; } return perm; } diff --git a/itext/itext.kernel/itext/kernel/pdf/PdfWriter.cs b/itext/itext.kernel/itext/kernel/pdf/PdfWriter.cs index bc4ea878f4..65c0ae5799 100644 --- a/itext/itext.kernel/itext/kernel/pdf/PdfWriter.cs +++ b/itext/itext.kernel/itext/kernel/pdf/PdfWriter.cs @@ -115,17 +115,6 @@ public PdfWriter(String filename, WriterProperties properties) : this(FileUtil.GetBufferedOutputStream(filename), properties) { } - /// - public override void Flush() { - base.Flush(); - if (document != null) { - document.DispatchEvent(new PdfDocumentEvent(PdfDocumentEvent.END_WRITER_FLUSH, document)); - } - if (IsByteArrayWritingMode()) { - CompleteByteArrayWritingMode(); - } - } - /// Indicates if to use full compression mode. /// true if to use full compression, false otherwise. public virtual bool IsFullCompression() { @@ -204,6 +193,16 @@ public virtual iText.Kernel.Pdf.PdfWriter SetSmartMode(bool smartMode) { /// protected internal virtual void InitCryptoIfSpecified(PdfVersion version) { EncryptionProperties encryptProps = properties.encryptionProperties; + // Suppress MAC properties for PDF version < 2.0 and old deprecated encryption algorithms + // if default ones have been passed to WriterProperties + int encryptionAlgorithm = crypto == null ? (encryptProps.encryptionAlgorithm & EncryptionConstants.ENCRYPTION_MASK + ) : crypto.GetEncryptionAlgorithm(); + if (encryptProps.macProperties == EncryptionProperties.DEFAULT_MAC_PROPERTIES) { + if ((version == null || version.CompareTo(PdfVersion.PDF_2_0) < 0) || (encryptionAlgorithm != EncryptionConstants + .ENCRYPTION_AES_256 && encryptionAlgorithm != EncryptionConstants.ENCRYPTION_AES_GCM)) { + encryptProps.macProperties = null; + } + } AbstractMacIntegrityProtector mac = encryptProps.macProperties == null ? null : document.GetDiContainer(). GetInstance().CreateMacIntegrityProtector(document, encryptProps.macProperties); if (properties.IsStandardEncryptionUsed()) { @@ -418,6 +417,19 @@ protected internal virtual void FlushModifiedWaitingObjects(ICollectionGets the current object stream. /// object stream. diff --git a/itext/itext.kernel/itext/kernel/pdf/StampingProperties.cs b/itext/itext.kernel/itext/kernel/pdf/StampingProperties.cs index e2b2a4b2c7..cb86b0cfb7 100644 --- a/itext/itext.kernel/itext/kernel/pdf/StampingProperties.cs +++ b/itext/itext.kernel/itext/kernel/pdf/StampingProperties.cs @@ -26,6 +26,8 @@ public class StampingProperties : DocumentProperties { protected internal bool preserveEncryption = false; + protected internal bool disableMac = false; + public StampingProperties() { } @@ -67,5 +69,22 @@ public virtual iText.Kernel.Pdf.StampingProperties PreserveEncryption() { this.preserveEncryption = true; return this; } + + /// Disables MAC token in the output PDF-2.0 document. + /// + /// Disables MAC token in the output PDF-2.0 document. + /// By default, MAC token will be embedded. + /// This property does not remove MAC token from existing document in append mode because it removes MAC protection + /// from all previous revisions also. + /// + /// + /// this + /// + /// instance + /// + public virtual iText.Kernel.Pdf.StampingProperties DisableMac() { + this.disableMac = true; + return this; + } } } diff --git a/itext/itext.kernel/itext/kernel/pdf/WriterProperties.cs b/itext/itext.kernel/itext/kernel/pdf/WriterProperties.cs index 20014c03f9..799183609e 100644 --- a/itext/itext.kernel/itext/kernel/pdf/WriterProperties.cs +++ b/itext/itext.kernel/itext/kernel/pdf/WriterProperties.cs @@ -214,7 +214,8 @@ public virtual iText.Kernel.Pdf.WriterProperties SetFullCompressionMode(bool ful /// public virtual iText.Kernel.Pdf.WriterProperties SetStandardEncryption(byte[] userPassword, byte[] ownerPassword , int permissions, int encryptionAlgorithm) { - return SetStandardEncryption(userPassword, ownerPassword, permissions, encryptionAlgorithm, null); + return SetStandardEncryption(userPassword, ownerPassword, permissions, encryptionAlgorithm, EncryptionProperties + .DEFAULT_MAC_PROPERTIES); } /// Sets the encryption options for the document. @@ -276,7 +277,10 @@ public virtual iText.Kernel.Pdf.WriterProperties SetStandardEncryption(byte[] us /// /// /// - /// class to configure MAC integrity protection properties + /// class to configure MAC integrity protection properties. + /// Pass + /// + /// if you want to disable MAC protection for any reason /// /// /// this @@ -350,7 +354,8 @@ public virtual iText.Kernel.Pdf.WriterProperties SetStandardEncryption(byte[] us /// public virtual iText.Kernel.Pdf.WriterProperties SetPublicKeyEncryption(IX509Certificate[] certs, int[] permissions , int encryptionAlgorithm) { - return SetPublicKeyEncryption(certs, permissions, encryptionAlgorithm, null); + return SetPublicKeyEncryption(certs, permissions, encryptionAlgorithm, EncryptionProperties.DEFAULT_MAC_PROPERTIES + ); } /// Sets the certificate encryption options for the document. @@ -409,7 +414,10 @@ public virtual iText.Kernel.Pdf.WriterProperties SetPublicKeyEncryption(IX509Cer /// /// /// - /// class to configure MAC integrity protection properties + /// class to configure MAC integrity protection properties. + /// Pass + /// + /// if you want to disable MAC protection for any reason /// /// /// this diff --git a/itext/itext.kernel/itext/kernel/utils/CompareTool.cs b/itext/itext.kernel/itext/kernel/utils/CompareTool.cs index bea60a43f0..f1b3ca52e7 100644 --- a/itext/itext.kernel/itext/kernel/utils/CompareTool.cs +++ b/itext/itext.kernel/itext/kernel/utils/CompareTool.cs @@ -108,6 +108,8 @@ public class CompareTool { private bool encryptionCompareEnabled = false; + private bool kdfSaltCompareEnabled = true; + private bool useCachedPagesForComparison = true; private IMetaInfo metaInfo; @@ -359,7 +361,31 @@ public virtual void SetEventCountingMetaInfo(IMetaInfo metaInfo) { /// /// this CompareTool instance. public virtual iText.Kernel.Utils.CompareTool EnableEncryptionCompare() { + return EnableEncryptionCompare(true); + } + + /// Enables the comparison of the encryption properties of the documents. + /// + /// Enables the comparison of the encryption properties of the documents. Encryption properties comparison + /// results are returned along with all other comparison results. + /// + /// IMPORTANT NOTE: this flag affects only the comparison performed by compareByContent methods! + /// + /// doesn't compare encryption properties + /// because encryption properties aren't part of the document's Catalog. + /// + /// + /// set to + /// + /// if + /// + /// entry must be compared, + /// {code false} otherwise + /// + /// this CompareTool instance. + public virtual iText.Kernel.Utils.CompareTool EnableEncryptionCompare(bool kdfSaltCompareEnabled) { this.encryptionCompareEnabled = true; + this.kdfSaltCompareEnabled = kdfSaltCompareEnabled; return this; } @@ -1415,6 +1441,7 @@ private String CompareByContent(String outPath, String differenceImagePrefix, ID (), catalogPath, compareResult, ignoredCatalogEntries); if (encryptionCompareEnabled) { CompareDocumentsEncryption(outDocument, cmpDocument, compareResult); + CompareDocumentsMac(outDocument, cmpDocument, compareResult); } if (generateCompareByContentXmlReport) { String outPdfName = new FileInfo(outPdf).Name; @@ -1525,6 +1552,26 @@ private void CompareDocumentsEncryption(PdfDocument outDocument, PdfDocument cmp } } + private void CompareDocumentsMac(PdfDocument outDocument, PdfDocument cmpDocument, CompareTool.CompareResult + compareResult) { + PdfDictionary outAuthCode = outDocument.GetTrailer().GetAsDictionary(PdfName.AuthCode); + PdfDictionary cmpAuthCode = cmpDocument.GetTrailer().GetAsDictionary(PdfName.AuthCode); + if (outAuthCode == null && cmpAuthCode == null) { + return; + } + ObjectPath trailerPath = new TrailerPath(cmpDocument, outDocument); + if (outAuthCode == null) { + compareResult.AddError(trailerPath, "Output document does not contain MAC."); + return; + } + if (cmpAuthCode == null) { + compareResult.AddError(trailerPath, "Output document contains MAC which is not expected."); + return; + } + CompareDictionariesExtended(outAuthCode, cmpAuthCode, trailerPath, compareResult, new HashSet(JavaUtil.ArraysAsList + (PdfName.ByteRange, PdfName.MAC))); + } + private bool CompareStreams(Stream is1, Stream is2) { byte[] buffer1 = new byte[64 * 1024]; byte[] buffer2 = new byte[64 * 1024]; @@ -1569,7 +1616,8 @@ private bool CompareDictionariesExtended(PdfDictionary outDict, PdfDictionary cm if (excludedKeys != null && excludedKeys.Contains(key)) { continue; } - if (key.Equals(PdfName.Parent) || key.Equals(PdfName.P) || key.Equals(PdfName.ModDate)) { + if (key.Equals(PdfName.Parent) || key.Equals(PdfName.P) || key.Equals(PdfName.ModDate) || (key.Equals(PdfName + .KDFSalt) && !kdfSaltCompareEnabled)) { continue; } if (outDict.IsStream() && cmpDict.IsStream() && (key.Equals(PdfName.Filter) || key.Equals(PdfName.Length)) diff --git a/itext/itext.sign/itext/signatures/OcspClientBouncyCastle.cs b/itext/itext.sign/itext/signatures/OcspClientBouncyCastle.cs index 261d841f8b..d488045608 100644 --- a/itext/itext.sign/itext/signatures/OcspClientBouncyCastle.cs +++ b/itext/itext.sign/itext/signatures/OcspClientBouncyCastle.cs @@ -124,7 +124,6 @@ public virtual byte[] GetEncoded(IX509Certificate checkCert, IX509Certificate ro /// protected internal static IOcspRequest GenerateOCSPRequest(IX509Certificate issuerCert, IBigInteger serialNumber ) { - //Add provider BC // Generate the id for the certificate we are looking for ICertID id = SignUtils.GenerateCertificateId(issuerCert, serialNumber, BOUNCY_CASTLE_FACTORY.CreateCertificateID ().GetHashSha1()); diff --git a/itext/itext.sign/itext/signatures/mac/SignatureMacContainerLocator.cs b/itext/itext.sign/itext/signatures/mac/SignatureMacContainerLocator.cs index e726f5f1c2..61db328eb5 100644 --- a/itext/itext.sign/itext/signatures/mac/SignatureMacContainerLocator.cs +++ b/itext/itext.sign/itext/signatures/mac/SignatureMacContainerLocator.cs @@ -56,5 +56,10 @@ public virtual AbstractMacIntegrityProtector CreateMacIntegrityProtector(PdfDocu authDictionary) { return new SignatureMacIntegrityProtector(document, authDictionary); } + + /// + public virtual void HandleMacValidationError(MacValidationException exception) { + throw exception; + } } } diff --git a/port-hash b/port-hash index a523416cfd..238dce8913 100644 --- a/port-hash +++ b/port-hash @@ -1 +1 @@ -dc76524bdb9871dfcd4e2b6d156e42a653d2396d +20941942038f765b1cbc9df1c8ea7f895b03a730

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 delta 4126 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 aXL1$bAAs`<_*Wa?Fcb_RF0O5&1Na{dd0&+P diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic01.pdf index fdbf27e6ce66e74040101814ff21373e5d3e67e8..9bf3c10bef994203c3bb612da7641b5f0a1f4722 100644 GIT binary patch literal 5638 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 delta 3940 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 E2L_Wj^#A|> diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic03.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic03.pdf index 22a95ed46cef8f530f0e7b36fa5faf732a610bcd..1fef9fd751b5d2e8b56817f29ead3d899007d09b 100644 GIT binary patch literal 5557 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 BLsb9( diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic04.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic04.pdf index 84f2984d92c204027300ab191b957fb5e6480255..908976c4680965eedf50b1cd8f76e0f27298c459 100644 GIT binary patch literal 5584 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 J=C&3x{{d=e!3Y2V delta 3906 zcma)9c|4Tw*R~{ClI#kN-PmT#FbpcpSjw6uVuWFAS*F3*JrvoMeUGmg%D!Y@QYlNe z21#WJ+1CgOzwv(F_x-(}@9+D^`}}dveV_Z>*LCjm{By1$sRiLD*9}#!lf(sY8|d_A zj#(+znyq7gj6UV0eo;v_s=HZR1u59U{m8qF&-KfUpuyk&DSL7Xg@Hl=#p0Uuru}!z7^oa#!K!Bg111Ym&Y-bKa{8U5{|5Yrs#3Iw zun!qa%U2Xe`Ylzcslsl^vgJKBlrrU> z^~OYwp0)$yL3xe5;ONm2@djMh@A&!Lnlhqt3L`;zuv|>0g-Q9eV9?Rnui?{M1r#Iy zhhh}Y`MxGSwb*$LPUfO5p;eMsO75f;2LApFxX*@Ncqi>*A=WRTa6nYK(ujM#^f~E3 z?7K&11)Ho%s#8xSlflpTv34zAY)C8zlY;dnx{SOy<0JpD+*%>s?X=9~vH=THyMFA{ zY{jZ+Sf1zu+FQ~hOVCCSw##O+D*?H*YpvrFvfHt!oHb!|m+ z=?iCyMwtEMYDH9A6Qo!adqf@h`U`XJSxLM ze2oc=^;)5qj|aR=?#!ib3yJ2|N#XowTv48x0EZx&<{Is`kj3ZTFMldcEm@dTLWJ3a zM(V!Y|1jYQgsSgpUOZDx#xsO3wp|l`xu7YtWx?+~>*B1*W>B1ZcZJkycMgB=N&ZTYELq?y4K>i&$7pUcdGy4N(KV8xM}I&KY%&X!?NL#qCsn z)F$}GWvT&piW!R#T*b2w9AkZXPpibajRbu0 zwV`z1!oNzM)a0%QTR-jO%2f#c_KOvjy2S^QxHxwi{odd*F<_cUr|2G1bW@9AiC0N} z`nqa;3^PKPUtXRl&s9WPO_wBsk#c4?#lakzZ~S9^%r@=q`?Q3;en+Lf)Ke-=w9}K} zoXDO9{BtilRPeS6hM!m)OnDf)F_a0ECOMHQV6X>*(==KxM73nq8 zYbWy=L!9RDpTPHY((nFIh(UfL!u5D z$K>7MH`y>@~(gZDizk-KN_WK@^GDnN$$*b63Nm1^N>Y zEgX3m1ls6o%XXvIW>qiz$*Klz_foS0(f$q5##WRD`79O)>nh$KtmGFU)odJAx}A3w zDYA@k>>gxFa5;~1pmJ3yEb^s_MpDg6Ukd1~A4yIAmK5rT?UZ#&e^k-f9%b#LGzd0A z>JH{TK8#ZM%`JDkd%jTY{y_-ZK3K&;#rk&K9Z41{*N2>JLyRc*=^5_xavHI~xHICU zu#pgw**GqP3pzL4&nnt)6(V6?S&`J{9CWjfgP-2q4G!=KMC|?iK6w8(OwPP6qYbAEUO3wIczRV;UX7 zNEpd>FR#&@gZrh9w_RV&kMV*b4t`<9R(%u)lg|M0`*9G{i-DoH(}~J_j8fb`-JzoG z>BcS*`nx7+Nt}!WFB5<5z%+b5Oiz%R9K6^Kj@hU4>L6O4Kd%h=-&3-ijPN|FGTf zf?dy2K~+ZGY|B=*@HY-MVF49LIWZGPu*D!;nq>ycduj%Ce%}%pU2*DhG1U^T6E2$& z2`tizUkm&B#~xrLb*ZoBl#mLj?(y}X4S>cnKeHp#B@uW79- zr;m`2L&NX~?a^K@$*L(0x6~gAB-E6BUS8B9Gjfk#^gh0AZDQ%iXHfGed)9CROW^t^D*GR83z)b>+tJoP zy3<)JVzUj{GcFBPN?dU)lyNH`)H#}7q!M}yy<2mk$?vP4NsatDH%l)@QF$4N>g8*WMi}f7*JKPiR~)IGtj*%*w`4LsTDEb zEg%^3c;|8NCwo2pM8i>{|D7;BbhO`}p#dg}5A3*f{@~Mn8>$eqy@dTiTCR!As2R#o zU8t|5P1p(QpE!1|m&ShG$wDA^rl|E8%?svl35_qlYbNl3Up=m}?^FeQ=57TNn+?bM zR`9`SApbEj+^)=hsQ3GiP0}Bq3(qo)j~RL$#l4ziJ%$%lA>{W9Cd=vDP=|*#Kgz#& zjk>_2`aCnvGv0<VedKBb1zDoo^e~z_{uW& z2dM*e2*W|$J&vmTqMqI>rN4r;r0TyRTJFcCw>ac5sVGG4Wt$vRE$lwloKlM_oB!C{Hx9k!3JTf}H;;`hz&E)XK*_ca{lx4;lX zO^}3oX2Z9o?)P5L&fw%4=GXj5yc=V0Yyv2V8yj+ zLns(xMk#)yH@BqfR9NlA?tigHt;82na^y|LO0QBp43gH@iy;6Qtf};)SII%F@Z?Xd z99&BB6oGj9fjmHr|FwWpWJ>a9R%Jj@fg%?FcBF)a{XGU(l2iD1%$s26;)WwoR@Lt=ZICnI?5@?Il`6X9S}+mFsvgK>4;Q-VHNDJ{hti3 fe@;mb;RMqu%0gw~$<>@(3@|xHQBh4pEyjNVa~~E~ diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic05.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_arabic05.pdf index 0072a341ea521123a848b1f9b2ea9ddd3038e3d8..96515720688423c42257b21ec883f707d57d1a32 100644 GIT binary patch literal 5643 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_devanagari01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_devanagari01.pdf index 309fdcf2ef96aa984d641b7513603f62ce2b3f6f..c41d3c81239c206b72a96a5ebdd32d8fceebc2b7 100644 GIT binary patch literal 5562 zcmc&&d0b8F*Ebcq=1a*?Cl!S{dpLWay=l;>h-M8=X`g-esnc){=bWO6OsP=Hkd&^9 zP=+!`N=QkUOhvj)G>}3R5q{6EWQ zLMpn=Pw(7U!B`MW!uMA(GGbec0_BX9Z5>F-8B2zi2pF~^AL|%;IAz+pvDaE>dg<86`kU1%&pg&m zp3t#tZco@~#NW{J`MAjOR<&!)<|a(DT(qKnuiGUGL4CGGuuLuq`l+#d3dJ}!+a?}p z;hQe5?{70X@2SsTA`$%GIq)M+_(z;pYXH_V5U2t>TW9+f%fZu}k}=B|sbZK7NW=b1 z$c_nN0$C^mL7X3hPE3eMA^OwE4i}lOXp_{Z3Un0MRVMMoJpE*SwyTrfPsLIBGSMvU z>NX+ot$h51aKh9*_~VvyP=EQQV^zZ zV&Vl7zJ!re0!mJ?xC8u9WLfr&D+6h_0CRy7-yeu5xbiLYir^I_V%so*A&gu^Q*0|S z*cT$PFWXHdHUnt=_3a$Ymn&$bFbWUc2l)5Hu7aQ686^n@goW9QMFQD!1>K#z{?r)o z?uUxPtAHX_1BAolmA+?Uw>srEg_|GG(Sy`t!ZS=*vq@|@kqR439eD-yec6GwBc zEFG&P(~bEy+96+xgH-b3wA>fIDBF_N8+>li=Lb6*kKJlpP@O%c`>c+OYtWU5m9YDl z>*un>*P`r##+);|8Nq5_^~*k0mCrVMa~`}=y3u5-7c_oZgKa|Yvzdt}>gZv!r=H8o z(C*O4P)?h>uT9;m*G(>U^^onMHO`%lN!~|wMr?1cH8$o(MpP%5rU$tdRgj%WM7;bd zlbXC$wTesEV+$|7J8ZEr=-1!t%|(ZXrrgqtder}ZMBuvATQNOBmz(TjZKslZZ^ss{ z$qCSsbCE?M%QP>KowFf_>>a8cPfy#XW}Vd6>-?+vqQ)14=dwrN2sy#Kap1gG;mxx) z%uI;GOQF)lD8ju?JYEna2;iN;Nk9zZ~k#Qz-%cE+P8XUv6y{q$M zol~#=&^TcVs*kB^+W7Pyw@)b;^T=2?Df>a##KK$nCle*5sJJes&O~LfEb!6r#)xLt z?IRi0vvtm|%&B_$QsaDwdB0hJ%eXlk8j~JXh40ckTcEr>d-TDrJuZVsy&$WjRMpT> zRZd*aqoyscZH2?{I%kdQe?B2*6Jk|itCw#5XnW$OoHWl)SzdWMdiDHuy&Uz zZ%Xp3t9DAZtnjNDJb%VS<(5&M2_{Iy##-SShj2}A=cg^t?^fEFhHu8M)v=7Va%&pB zt*setXyKwS(ruV5aNLuu)d@!m+xNNg-5yHZmU(-p9<^B(*|W_n!goSy&76S2D zgOawSy`A13c_}W77hcwZ9TGx{uNT}IPbw>oOV@v%i>GM?-RRP+9TTIR*P7HDwcDw+ z#d^>gGyRTw@8vpMtQ^OxM?c(|tyxxHW0#lLSlE}kt}g%L+17CpkDu4-sol$4JZuC1 zU8PDwL}LLmLYsH5rBUyG%29{CS+t*J?&F7ePswU}&h|BdR(iT8GWF>;|HO;&ZkFuu zw^3WQ9V^Z^z>h1mwbgH5*tTSQW^T!;*@o_=YLkz3N8u6C)3uXBr5XoW?=tpkNF7oH zZ>A1ik}Lf^<;;Am&E1iK{>XI4%J${0PbB2sG4j^Y<)tZ`HKMC}Ui4S*e$bpEnsAO( z|8m(=J9xBjb6ENoe(-e<`{azKP&b>*^|J7_o39QtLWBKaSJ_onwQ~>=@l2o_}boXJ6+2&$s)uH-D;# zd6KxWFxsd0{Z05#d#Y!-ZT)(Caoi&Tc_Ti~B8XN_x! za|vrS%ss!zbWC-W@9I;dO~)~OIuaBLll<90JFg}c18^+kC z8Qgx8FPq^LKC!zZdCi0#uc=3#XSH9-G~gK}Mm}k{Y$k+0wHQj5MAsv`*ABhX8sv5S zjaN&kr{*B)L-nq{JLk3UCMX|>I9BN`P>(-m-hR9>UZr)H{pya$y^@Ue-5F+jeRCbX zEt0inn!Mf9AeO!lYCqW2KSCQxTo=$9-t@lbSxw~7q2}AGO1lCa|M>X$+Q&&_Io4@6 zwBE6uOBS@JpH#ODo8NHPx*fHA{x&*o#)K{?XVsMrsW<(L*8Y0n#Og8XVI{@B(rts> ziyZU!SXHzeHH*uEf>$f2X=A>mEYf>9&;+0bxHT`bfg;nvN3g;*W-X22ZX0}E*K#-#Id%V$x`I_JDl`ebNtPp(!hb6&-k;lTw6s8Ll|5Y$ zKBptq-_C=$vn+e^%Xde5ig@g)^UF<7;(IM?AFpXJ?vP(ByOp}9Nz=zGe)gi&`(4`F zBQ`pV(tSFO{Gpl^``v4wI~nd*d2sKK&-GV!)T;U1Dv;ftRJ3DtgsTcVL^teC?`9(< z^5jN4=H}{)>bK69*>KGdSZ^*ky7f-PGv(bMCTy0EA8ijVhIxRe$0uxQ zCb{AEiI4hE^Ul1`JSv~mc=g2B_54!eaMs4@GyN78?@;se^|{piN9`e1NYs-TUv9AN z^v>Mn)7&0a=+->&xs&#KUABkrgeT{6qSmn6f_BFiXS^y+b~kL>WygG=&N*9i-)|Qf zZc2>NEj0>m+G;29==v&JWUy=G#CZlY=rHDlv82MtrhWD#lMLOGdB-PD9$mKnEOdNT z-l)?rIwNFPoeqtR#wYT9r%+21hHZoDu7?KadGyv6`7ig{F(&ls;UuxIOf@egA*pY}G>5W;5O=9Eqfz>np850-R&==ap1PVDla&+q zS)|GL*ryJL?B3n?v2}i!YB;k8pV8mDcGE8&bmF^1B_U@sw>m!IJt2Ib>@~KSy!n@j zkk+w{t9^C0_}S^Ky3f;C`$Tu@<{N6=+!N=fy^{F#8pQR!2u$HWc% z#opzr3uca4oB8m13n3mkUCnLxm{YP{p4&6dsBUzLed&9=ljgw6a+77)v>T~2y-5f*D^pD%=-k2?-0zW0As<-s+C7Q-dU%Q>MYj8Q$ zSZGwd?_@JiQarM!_H)dJnA=wz)4U_n4;QG3oDa;-csfp~M82)t(ru?#qV(aO=Ds6G z`Wl{R*N^Bgpqt(@LzU;{a~Wn)p?37V50$b{qe=%&)S7&>IG}Qb_wxrR+DnTvaPwMZ|n@T$+hJ;YUi1l^?>@VTRCTSJRJrW+0o z^!R@leZ-G{buFwx-Qg@33_Q((<$hKnpuS^UN@)9)jF@d zdUcjlVgV%;uoqieJ5zyjBR<22aE#$XT$n@P7!JcQ4wD>`Vqh*s&?t-%99V!M1c?bz zE<=(upCNG)6`-V0NW+ZD_jM2qXWO&%>^kardhbqM0@VhVNx5SI$d{s9KGllC4q6~$ zHC^50w&!b+4VXsL%GQDh1Zoqg*_28;?0T_!?-G5sy%kHZ(C1W(p`u{fx%2FUhMMO`fLZ50hdD%YzIafBxC9EAOx}DiOcWK0dLr&22d@c z__n9O5blZVvz=HtKrYDoPx!!H`u)|FrH241#M9$tc3HD-ymqv7{w&4%S}PX4>AJIY zKTmu!uq|l&9TSP{K!r2jk!;|4zzi&cN)vceP^AH%;TK2B-rnK~Pn%^T)W*IJ_g+7q zzM@?Hl>7qt!Od6z?g)>+ETE`OpS_HQ{itNtNEx9D#3EGy9N#V$j$tUq60*LJVF)O_ z6c$ae~m#f=oi z1X09E2r(`Mz~=Bd;7EeN;YA8K9H7U61O%-312_vw0hbiw0t$g?4$S9c7)T1jAyJG` z*uY^f%|$@6FoA$i&;pFXI2;V)&;ka52@0YJE=({a!lem5!G|b}%Yg}ui=rgX7xFnI zXr-80*h%PtUKlu96vu3!L=1Xnil&G(bfui7IK-XUwwA2rMg+99 z35vteC`1Zin4*M$R5VB`%%B8>FdPQ7X-Gbo54^xRI7~r83WiCD3(`qp2p}vUpnwTT z8WsuwX;GNQ84_a@kTVcL162W|pbnqH1sKQV|K9^IwyjtwVJSL^PHZQM1ay1`UY$i@ z42uM3qprw>StB>FkVqK=(hxF)44jvmIXK(cyQs+IlvF-&XmSu3RngV8vbR?G4}^`n AbpQYW delta 3862 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_devanagari02.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_devanagari02.pdf index 6481b117823fabe3b30b6194ee809bf78015f5ad..f23b6fbaa52bf8522d8467ee72452874f9cd8c3a 100644 GIT binary patch literal 5559 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_emoji01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_emoji01.pdf index 0c3803b0d1e0e2b3c3148f511352939982517c75..bcb49fb02e9f7020732ee7914541d6018931d1a8 100644 GIT binary patch literal 5578 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 baQV`%Qfb$z1UD`fWp!09X=y{W5!e3!pD`tU diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_gurmukhi01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_gurmukhi01.pdf index c090428637421f8546894faad547da87f15b2b4a..e88847346f1f5406daaffa31fd7dfdcf67bf167e 100644 GIT binary patch literal 5547 zcmc&&XIK+i7q*}xvg(Rrp%_G(5;B>Vi~`b?CP*)#%p?;ilQh*EZ~YF zE{akF6i~3C2uLsMB33LbSXdDh^t)koeZF<~*Z1R_A9r%kJ@>t*ymOzNqvdE}#e@wY z1+9mV?ldc442U77)+!hpvaAAvq_l)(6+}vD3z{z$&@4Mzv|74`!G(;C!=w_L3|9D5 z^TfVI=e70bd4?)&8G*uI{N7U!o8Y0iF|Fs`T%E3-y_2QvS0AuEdE@PQYL53RbB;tT z&3s>Xs#@M%sQkp^$XUIS;Ywds+lWo!m3vhj`3kg1@C6$Dl39X&v&dX5lF}k+7(-^I z6U&|!1dwLpNN)&CF#=<7QP_v&NJ@YX10GdzqQk`D5!tfq~PW#-6?K){YKVKE1OO9R9r3lJ9Fzuf0R2y6%jL>7cjo~R*F(>Jy~ zul61ff;gSpmmTkJW}Y!}dVrokbD>~O#{ff*WgZ?T6$k$dgbb>O3q~x$$dw1Nae-S2 zfI>L@_-%SDd$HhuJ^q_->~FqVMuPZ;0q11#vUYax^9FA-GK_YkB{DG!5QX)Zk{!K{ z4q_lM1fk!APV~9}nd-mz^$TzUcl0&ix&KXKg6AG4Pk6{gkLBuQ_b>X_3T4jAqC2?Y zzG3=0>pd3@q_GyY{fF6WkZW%j>wqO_=|Bux(skunn|(e{qS=(=xs}`0sb_5L12Sw+ zOGyDKB^jJiLden@_Jtgyc{T@YLE_cl!XYEamsHCS=eex-+>bsxUpIbP$3(zffw$fE~WcFeqR3e#D) z?6>N}r)}={JS%RDy{~diI5ztym$_{lRoJ#GT)Jy5PEX9bQ}Uz2KwQQp@oCQ)TiizmcUX=1~u>XGfUT`?U6% zm0*V3H1?+VRjr*8cz?(%(W^KPilA`IE99vTg4UbXk+zA(hfOAL~4|pWTf+`gwh(N$W`T>gmv(59($X zPcQ7%y_AsGed?!{;KIep@JKc;Xz;&WJK>Ot($Ut+?irCz$29^LcrCs}WT@Ns)+bEN zHT=|W?zyhJMZ9;ag#&Sw|we(rXJ&=-*~ZTQz)KhmhFByf1jA? zq!BJut2a=3cEY`)y^))uBEDxD&^x`jXzg@Pi#WBo?YEcjhlkm*XA&dpn#L4Y?2TYn zFWIuWY{tmAAglD0jnOrOKffMmG_UK)yT9efH?{|pTa}Z1bvqB+Mrv-7)3ysaBlgJG zD)YoNKF<8@R;b6$9Ytiz;bYUL)U;?FvTbnQK8NQ%&&t-~vaPF=Masb$tqru@q41c2 zv~6m|DmFi-kA#n1UDb3U~FL}4I-s|=BZB9;OGistCupRz~6GNx(qw#as0$i&y~5q1TBw# zm0eO__h{LqSKjqWP_d(2kZDx0#%wa@D!ROjGi}g7dEWWpUu=V#`r>t-?dXywqzinugZL8E-3%Tt~GfBat9b|YqHdVN>e)(c3 zq26>2e7EyVeKXfCJve`0y1J11!$p%Q)Z8zM@$E`JwQ;aNuvcC&dsoh?^D(xC`b!=e z+{~MqnS4|!=34EL{MGEuC)%`iZ~dBdZ@fIOnJ1rtt z`Aq5t|DD+6>+Jq6iEo?RssoS8P55>$ZLQHgRg1QmGzX_xwH~pJo-na?T#M`BDEjQC zWQp3?(pB2Gm3=drWS?rs(iObzH~SZs>680xG-vM)Dw1Xu$WMxyIc{D~Qg~o@>9p_& zF8`tZGdGnJgDuNUqV?pThnw1=KGNPQCC`0tc)tB*7v~JGzp~Eb-85=8yI^L!dhuyy zzWxy&f6O?o!WW%2_uQL${qx`5F7wYw`#foEblQesw>axyH;>rbR65f3!1CG=vqY6r zz2H36F>kXi45kdl=@)IO*qha_aXn+_quGdqN$hN+rc9S)OBFIFcy8XxAFIM|T?;$F zv}wVUz2+B0r^`KRP7ACVcI~?As-~!>9>zK*QY~1Nxcf!X8L!tRK@W|_cog`L1m@Sw zr@hTQ^97!Gyg@tGkM6MdN^^)(?i;gnUU+uHwbnrU)+E1Wo+`;zsWuv8%2}Qka9(xkLBgRauk*3f4->ew}o^?a&>1+xP2s{T6ty4 zatp_!>8yIi&RMq14ujUMYa?#&DTaIPYI3tzHKfix4?m=0_X+mCUL)k*_Br{y_-tu= zj@zZ{erL584~(@a?3sGvnoslFpX<2y<$PZD3mBbK70c)0Chyb6?tbraOvABb#_)PbMAe za20$W+qdS9XJCVI>$zm#WzR$lVnWVOm%sWv6dgNj4tGLa0ctekR&(g#6LQfhPqzuj zmd6;T|9GJP4&tI8nmw2?H(2wTW;e$@j_NLJDD_A$SZSf&gB*Obzc_U6GwrVOiPO@` zoh$3DP83Yq(Ghp;ZAamPi>Vv+Oipp4sihm1vGfmn>qF-pl{~U?u38Tb z9Ns*@sd`k>RZud#v8H<3sq&duhiLbQmHf07c?z+MKC@J8{5Pifk&GKg&6dNL&FemN z@2yQZqUL@;GG0QOCr9Wx_dVD(Pv7?@%V*1{xRUpuBkpcU3-W9eb%l{*bW``=#q#Hv z?P5%_goe*2B;^**Hnperyb&r|j}i5E$~iu%U|k3*b)CGg>X=#Gg{`~SnFXcXYnk=B zhmpdV;>@cT9cd|3PY$@!pOK)wL}%*JtFgi57k>?I$10o$o*2fs4s*K_G=?(Qqfd>J z?_6D89dF{BIqh=k(Z;jKlD5~_PhPwJs9`;^IDe$(iiEl;C0{U%#j zYz_E$^!8ONP2b_LC)R6un)>>J`Z3$Jj~=ejRb63TVPjK}+N4|3um2%W zU-ic0QoGb%?bY`k?!LKHcyaJdmaF5|q7btu$NNLpuX&%R`+K9_tmfYbjGi8o_8w;z z?BG(Y`l67Tpdm$$67sp)vj z{BV`~mP$(>hxD9!bFS3%%wy}E&?)m3^I2|6aqUT2C-tSl>)+}mA|=&sYqENm5r>68 zH1}oQ9Ctdi;$B@)r*h!}EHie+%KrP$liCjvC2M`(ZBdDf^i&;sxg$4FVbdbkm{7^G zW4jbTEprUkIvVmR^1j%js%+&Iri9vy{zG-j>X6F z@2foSx4*jPR-ou`mI_ASrs2{xmg_)4$FdOf9YSak%iPMIWoqf{hJ39?5qPwe`%%7b9kO513FwK=S(-^btd z_B||fWasbivREevO_(81O+H0C#q85#Iao4ulPxttxq|bAuURItx@9{@W6kkTJl*(i z9z_eo02I-$6B`X6xqUsK2IUh6c?GI2lwauyPQZ%qZCjM~O8eF02LUcWGY`o` z8$Y%4bT@avKnr#fzF1P$$inhv2G)Yo4A{N(%od9num}kN8Zzqf!37ySy*`=D3J4)= zcNfrS=Qr)ew@H_@8Y6lvHwN~tl8KbiLIsFHD1Z%L9tMtK2*waHzREB*D1~GXL-d!7 z%K?@5-()cHy&f9}RqWsNAU0?d{7uH;elH{7@9+=~oA|a@Dj@@cXo;*RBBP@@=!D41 z;wUNYM2c3^4A6f-F$iT~Y#e4F-~=DW|MalzP0bmG2*iaUHi|+xM8PB%2Ry)q97q7M zA%YEo5hh195adrySO@`q&>~=?IEjFLqcakMxBvl%xq!|jgaQpV0znjz5jZ461?4pc zQVmvM0ffR_7=;O;fS@2s$VOoSmknY|QY4oPkV!-cVO$JHNQ{lJfmv)CgSiBRvISfc zrwI-lCI~K<03Q+1Bsdh9gVRWG8u!0^fFXip|DzSaY6SE?{$?|PfWa{^2LW{b(=#xG zC>o{^Om-$haVSzi;WSF~DT<=`IA2I{NCAgKaxoO;kT}lg6Kqm|b7+i02{spJ6DSGl zX$0^@7LEV155yQ4!Tv6GAW*O@p5JLBD8gn_088fYKSdY#MZ*6a34kg5Crk)n!m!Lw zkX8-_a!(P!RT4u1BX9&II5^2?BOp^0pMxPJpTl8O6fQ&%7^gS_9Krc8&ZaOFmthDH zOn?a}ic8U48U@z@A7mM12B8T8Mfo^Q!vdIqY2Z15AVMyJ@NonK?BeoKlz>RkN-;IJ z6Z1!#U*M*ZU9&-A5onUhnj(^@5Gg};i94~ZEg0U01SSx2Aqp@7P!$2!Dj()k7>5GZ z5RecYF5nWB00lGyl;a>=8f2HtrD+a^Q@|yG5M-8O(*%YI1#E(kV0@uafKj+Wz-MDz zKF;A1e1b$tp@0MK0}4={OM+V)=1>S1mbFMIX2@EHPAn&}7<7C_e>w-O zrx^se8?^#l=twEkTr8oPgaKp#F`ZYMIy$d#a8U@8k`n3YrHQf$u7Z}9rGu5ie*oge BzB&K^ delta 3948 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 E0Zm&nwEzGB diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_khmer01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_khmer01.pdf index 79672d615df698c29a7648a32659494312cce359..a4182c680425de37c435ac40e0ee549b8384a6cb 100644 GIT binary patch literal 5571 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization01.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization01.pdf index 994a3cf184ebe431062c5ab960933f37dafeff06..700818f5098dcf32d2812c8ff8e4f1a63ce42d6e 100644 GIT binary patch literal 5574 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 BqiO&E delta 3930 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 diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization03.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization03.pdf index ac6400b63d6f68e94c1c02fa664b8b1c7f0034bb..74608901bd26b02138a0cf6396b6d634823279d4 100644 GIT binary patch literal 5577 zcmc&&d00)|+ZO$zOpz&52c^<*_IUQ*m7_G#JW#2VoME4wrqggz=1L(n8B%B@8j*^W zltu}elHz@nLcGXKC4K9J*Y$e+{`$V_`u26T&tA`3>sj~nJoj2x_foSnG1EbGAqBNZ zUCp-@a0bK>^Sl%c447sj9|;}EH1pv~XcL+*7SK#9+Rsz6mO(;nc90~H=K3lq`-U-I zBzdPZp9ORtBKG~AH>s1TO6hpo{YcmAtQS&` z90*23OKUWl)?&f`A&j5l!au_`4FxF=0`W>yxZKg!!wvi{v-;E6+BACl4Y$)~7 ztApncaRNCSx@N06ny)rVlXL~VV2-A7Pq)sBWt_mbZ)1+^xVTMgtGoZ(0>LRwHrpMP z+nSbe1zZW2K@77)TH~PaOc^e^G3fIVd;Uy>lquiqE{$1AA?7mLXB{mO@wrS>Kd>uA zex6Kck)IJr(%)^zV4g%uBB@h&_&v5nnw1Scb}JL9jXoU1-I zspiX`zKK?6j?v8dCwjPpu2wp&cU$AORBG+~8q34xwFc)^KkGDQ=GgTsk0qBm?8t5> zHZ&hCb{R2gQ+>)RCmG9j&YcD)nK{^vQ68-1l%a@xuUoS-o7+OPe5-r)g7=k0cxcKC zv*s_F;}|KcTkK;zds$cS^Q&W&SGUVu%sLXAWB@CRyAtm>_}ne@Jhh{9QDw@TYl*G2 z_thCT6Ak*OgxiNG%lQ?bb$QsmZ@Q|?Qg-Mzzk!#*R_7;0y!LE8;^xztxpPF{oe5X> zFdk<^m88I7`QB z?6iV^9`<-4+#ZGgwf5z}OCP)4z8Mzx2BKJ1qfou@j1S|vst;=}>fd?7QGKTK${Y?@ z1?8%!RAe8WeL&nXEmo9tJ^VUDbUrG3PxO(`Jy*>9Z*DgM@$CHyMFG$$js=mcmLshvZXP;a$nXf-x>A8bh!J3tBs!Pr#)V0Og?!9NA zCEMZ1>+@BAyEX4#@6x@U?ql4u>l;1p9Ur~)>tjPA8J)VpxlE?LNG%h_-jHEwt0nKB zc!`*$j>}x4`vNL=kBFL(_ocmPrSHC28Oh+ZDg}ww=~E{bX4#icnfXFE`u&z}d$Iy{ ztGd<4dtg?W@hK+|tJ}4B)S?k@{#5Q{Q6))(e|(*_|8!805?0)k^`K6ntL^-%wuq^u zVdt%^&(lxnEc0egA534nhcaq<(a=2hK}G(_D9h_IwJ!uv=aPy`2Ssl_6vkq@IVOap zvRgtnp9!ui##G8yL}o-JZ)fIIr-sxyC|d9;6KeQ+ZMRd+!)vXbpAyG5pSh^#og-H> zx14cTcb9t7qgg|rz1wEzE-)(Jl3AYkZX4caK6WRZ)O38B!$`@%sbF&b?87cMRnFz8 zlbHNm8<{glT(!HkZ@>qNtk1=87E%?#V-~EpzrP_SGJXAng0B7ZbIKXP(8zj$x9&a- zgMjJ}5z$!atojs2+s3k~@83+Hxh~kN9{)>k$-w5p=s62URI#<@>UWpFwK+vJJ5#!u z)4Gc0eMk#kj-LF&wm2VBUneeC|7xccf8uDHp*EQ&)1qY3CMGOjDzsdY8*_8Ra?g%z zwFPVbGcM86%`T%~FU;OQPbbAVZtwPM?>Cj4YFAjgBFC|@#-RCx!<(pG-ujD5N^Hxk z{MW?Yi_)|__0aiXjGoqG&0yVHzobv^1W#lxe;CpKa@IJFYlS_J{BMTYgm2V ztMyRXA<{2gKZ)lS9$_{zz(@ansEc1~W?_W=!J|_fp1G`QJ#UofYNEdJEBilF@>H}> znpVq?Pg^CQ;|1f5F`;?0FNSXO)^ZGqPAdOHVTxB}WXr6Fnq$u7t6RT5)K+q`bgkAO zmJ1bQw0k%o732Ns!jx5t{E(~L2D@nZSS&P`_1q)A@Phiqdap!F(vujhj7p5*;L3!*9v|As%N{XI6_12sQf4|{C;mjwMAU+ zp%)qR_W0yGo`y;f9T?HOmS5nbGw0nT-(G|EnTH;*pE5J1wt#Ww5_-PHR4f8AH%Q(m7GFS+N!G*;@ZGuxh~oN)hW+h^A!_Uq^9 zr);uJQEg4E8`&|p%EA5VZs&0=J&AMToaK%lN*&k7a!mO=qa7@YbB2p85P4+fdKp z-G!p_<;NMj%#?*4uu>?q|48b`P`hfGqnz#=YWw03ly7`z>mn1Ke@1<1vgov2;{^NY z$OGlZv@9_85eH=YIth=a1QE^Izn&GXh{gTU@#L1{b^H!czS00KL-fWqC)s{VaW3Mcd{+vHhoDguxdZXw5RRXOQlH-fB*C11R>;^+z z0!l)yJVI6A<_!aV^;Xmt|BA;z)_b%>UT^ zQn0%>nrpj~|LTiTzHUJG=EdC`k1Hx!rR;wADnl`*?DK-VXXQuOhw#20U;ff;d_reW zd_>czq}lJ!ablY|FK_G&_DqYb7&5ZlEVJ`V8|Mn|S44FI-IH+gMd@?lg)xja&AKPY1{%_*Sf;MF zTw=9*k0{_KLq(RttBp0*j~6TuJ_}p9xJNB&z0Vbo>bI3%2}<=%8wZZL!@|gx)d3d4 zNX;W?N-k>qY~7PuHHdS@EAvXvXzOr;+EoiXX3jW5Md?9#bvv``VYSQcO>?lK-oIQ6 z$NBl)@=ttD}VLC*TGOn3g7H zj$9v!0gRJel;U#{lEwuDiX#FVLuph1u?Ri^>=@4D!59~134~k>7Vrob#Dau4O`!;e zA~?bRu?~W>n6?a!ownJJf$(5)I6%1|XCYMY^NXjsj-Y`Z21*TRKokv1c+_k$l(bLZ z15UKoKd76T+NO5tu~S?H=)~6)X)eXc0F?0xwB$;+}pl=XE;~E%(*Vi-JMEkFBcpn0TvT_?VnGOsV zNS?3Rw+w=J;E&Ih42=eW5P{yK-3C%U>2ug0sfN2wf8}Ucq)WBbE%3tn-(e*wJR7hk ztDqpJ^Z>BoZ@E`F5-Ey-nqwTvwhExvKmZ(#hzx)Mj$@Zo+vc@MXIzwmB96`PPXjIZ z%jPEE&P`RsxgeKinoK7K{!`k72GT+Wh(Rd;IsE-$uy7p38A8Sn8;$}EE`1n&f7?hB z=(AsJ2n96MFE*G31nn<22nLr3zt{*0Fz*)|g#zLAPa8_0K)?O4NdmbdA39KaVA3Hdyj#U}{95CtqpX|Rn5(9een0gfXqfhFC&~5|S{B!dWCu!UBw9Q4|EWJOcJT!s5YP z9*uET(tfqN1h$M`rO=8+Hx3($*%Xg&`Uq5_OdATUay0vzE{AVnmB zfV&kVV=FO#_-YIsG}3d|N9+f#(4@B{f$RMx4C$%vz+7&^a5Lb7io>*!2FEXtM!A3^ z1j#~p5X^@mJ^}M60Yz{T0gA&yfQ=Hu6wVX!XdVpm&L=>cZ~;ZqEKmeKh4EQ94{#2~ z2vA!gB47b-@hKicKsXN57)f9>PEi6BW6>zZLPmnaAz*}6N(wqi$w>fgIEl% zfQCOEMH^@a1-R*Vn_w~B>{BzFxyx-?}p0oUMo{tKHQg^j1%C%PeT3kleN~%gk24`SJes0t4HWs2J@eReFU)I66)0>Gy0NxeW~nfBer7 z58h22b9L<7Q$4}jl>$^hIqe~rsw7x4(A|$qLxZw-1Oh<+GgQ&JM)CRfi&wo6LwFCX=K#kR0i#ER>{qzWG z?d#zwXvo;U7`5kaxNCr^^Sc+MYFeIgsMGE+z*KPA6y6TN?Vi$+)g^Eb~mfTUB^*^E4W!UdX`2V(i z-b()X(Bo#73IF&iNRaC5Q1ZgUnKdrLPWVT=bC@frn<1x(Lt3r zjf3MHB7C!?di@T8 z%Fn4PCZ{V(sVRTc%q!50@FO@F1jrO?Af}lYuTp(@ADhsNbT;kL^xe>(x23`zb+@-} z8tpv)bowQ@G4+Z$;W#U|-|&+@ejnX3NF;T=zO>2DBhP_4m5#f48)}omYquj@!77@a zR18eJ=AVhlpR|1^T}ULXigpi$+}Lg~Q`-Tg-HsKVX;hW%R^1W*a(l zCL0;ypLz=p7n-!kMKlP0&HjWjSCpf115;1vL4+5Jtv(95Uoyc`R_;Q`O&fiXKhx_B zamMCp1*vQVRISAX<%Hj~pBO`*5$-UdTnu@Ue@V)pNh3roi3%>oHrHTs!Uh`?uc!-u>*NC zMxbUdi9XfSLe5Og$<|rDTw^)*2Q=$vX}YjN6aA=p?fD$4FnM0LJ6eJ`4BT%~ zIZ_9c7D}Bj34S%m?5zp1+cJNceivx+udacAiftqM^T)B^auAaP3i=erwbT|(^)>6* zu%RvD!?4p>Yz~=~b3>iMl&YzmFcc8mIs@n2YmPkG?slt3qAc6GA4tg#@?PgHa9{I( z+maMo{Ys^l>3yNpuOFV#oRx88h!2r;{jIIW$QNCYPLnzw^waAezFkdL^?*RkiR4M% zdwuVIZWVK<(=Z0qZ>Cj(C5EBRvde9uXF*qHC7`)d9gz%9j-VeECrrr`);d1F25T>9 zIrpem;?Rj^dRctu`ECm_h6T@)i!wV;NK@MSzUnzG{B4tkcQ;39sYGRC%I1G5;Of3^ zVtbzXJ#=%+qDdq#N>noLwEzk)^O@$TS@pjHqT<*7`Z=NQO+LvzMD5C03fPO7{w`nf zDD>NcQd)k*bq4uY)4Q5uBU=~TZl#;yW|qQi9_uWYjvxI#R`~OoJ3PLHSFTIrTw~@` zW&)4;h;7Up(l7Vt)gR-LEYWP8)fBOTMa!czq4JI5?Jnub&Dz#9!x<9LO`6M^Vz1wc zDKe<;#ajyBcva9_ylG#buh3p4Y6qK`Pz<_syuOI5&A{=JZ2*V~{am9PM|b~a^QSjK zS}TqRzekl;Jns<1yreg$6KHN!c4n|ZdQs&3N9Vj|nWpgFoGzPy$asZo*tL*j4mepQ zk;CU27;x}9;Yek4AoCA!+tNXi%AS5gR*LKis_QE(?Ywgq%){sW$8#MU)blB3k*vJu znaA@f`)=o&-uuI8!V71uUJUiwv^Zmyb*e>#=ydc6v1DeoJ@%wTVp3`HQsSy^$p{Ct zhu%u*Ns|A}bG9z+4z*}_Y~zRdHmbfqTu+D7=z*vc;l_twY`&@hGIVMch>+O zJDwtcsmIjQ$=ac7=Ra?_ye#YZfbd;-&i(lC zhaG)~`+PyE_zz8VYh%m}94qyyhP?x%%@i#?T6ry(uVh6CD39AbBNAK9Q0Y*O&JG(? zd9pG&`N+RT==-=JP?VH9*yB0)xl=#yDuW>=bzk|-;)bZS?5dF5K=SRftkRx@_bbV| z&20R6s6dlt+9K8PB*W5adv2C0Ki;vWGi#m(1S&b4%~T9HW^v`Heu;xb3%f{$&`6-2 z>Qb|GJgZtxqX{^^Ih_04qX+kmpS04qD#$KEO6o^iy92i@0ineSXUW*PrRMT>KPL~8 zw&u{fSGSES--MKc;)ajco>MegQ^Sj69rgl_Gd^+2$a$Bg^A3_h>Yql_UAZ5X$zQEX zib{M{)n;pJ)_zFkq5_|qn7Ru+&h+c6n`pLHaeG5XH{00!UBaQA05c3DG^n)xMmS3N zgj~to_T|4T0R9)#iGo0uKQyI=o1O0M%W`_>mKg2aE&kYQ1*<>Auxp093apD`iGC5- zlrYR=WygigX&qKq zc)0$pIzqzWlt+OkZrzbYJF9MO`xRaLl~TgEPYO4ECti5e?(kXN(8$=|n3&w)-B!o< zyZTKAXMF04Lc6e2`Ih4W%Qe=>Ed7u7X@K{spAdK#<5`%u%@9$%P#pwoYBqbv@}Oy4 z`*;B0SlPRJtQ2GDUDTd-={`l67sZ}TtaFqZAWN)n?tOca;(E{D_hMXNSpQ51|8buM zHIT`pUz20O@RQh3-|Bpx8|0RGO@H+T8Le>Qj+bOT-)-7AgG===OfBzj=%GB5qlZ_e1@2)odyw_cBXR zi=N{tos@iuZ)q3$mNOFyt44FUNi)RrBJU<^g}#WteJ*l~-yNZrx;U7~IxFH9KTqEl z=+P|+u7kctiDLPChIyMXhSD|S9A);#i4_T4PsfBh&@S^0->tk_jqeUXRkY9{_)b~{ z02wMY81Rlww7!vJn7EwGd==Z(VEq?V={W>+*clQ|hr%Q0W4AS4E3s&4jdJn}3=+Do z*e*$Uvs0)E%ckMs5p2_k-_x@qBRHYOvACduW7@%6@CQqx{2MWQ>@32kV@ynogI-)d z8CR}6J~x|vD481(k>T`coCUf+jbWrxMq$-krjtaK-TJz3Zh?(gdgE=+IKd&vE`frop6$&&EWX15S!yx{G0(*#>#l6TvIGrK(D z>#3-SqkFV@wU24vTuj|>FwN!dOmDx&B>p~^?VkdlMELjTRirwOa40#Qw4?1JflZG` z=`uVT+F3__;vQo+p=D!%FEi9~%l7KnWTT_1?BW6swJU3`l^1hqJ%V0-C>VO)YsopG zIj{Z&9F;-~q~tD^NfbIesm85ciQj*pxMbN4<7!$>7VEvUzp2Jo`iA>p5XGMRkvUQe zN<9L;exii3kS6QgN!QejKAdw9(C00E?X2aRa23l)!H{|PxEIVPIE-U7;#H#s`q{wi z@{8>H3gD{G*wS5DtR+e^%QZL$E2|%+S=h{>!vQ}kk6%081lv6NC{IIYx~U8HsBn$02`U~ zyxzcTq9LGRW0Cca*oC6Y6^HD}H#`x?P3C&sIZ@lsK=K=WC#!8lUa&^FAC(zAU0KxW z^=Nu$_9=2T`b*^d^1M6{t+_yoHq!JX05`m~#coGAGCFNiK zkb{4^qG(1=Sb$l6unVV*@ks#Eiyuu6meP$H#&M*=(J;aR;O8*8_QJ_7&3!B=VdWrS zsu>v?kGftswDsd(rs$jOeh#vWFOjwZso3m`I|vPxmU<4B8kJkP^)=N9pAk5JW=v?cPC?BuH}oYXAmA;go)U zbu7~$m!Lu>qB6_n6ZAZayaurgH1%1p)!xv$svCL diff --git a/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization04.pdf b/itext.tests/itext.kernel.tests/resources/itext/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest/cmp_unicodePassword_nfkcNormalization04.pdf index b26f7154adca899f8f20ab9fe062591e8c03e160..b4f60b0dd506638c8c620abe9f9de6421d578580 100644 GIT binary patch literal 5538 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