From 775b69ee4e7d122f020641c7f78be86be9e4d95f Mon Sep 17 00:00:00 2001 From: Glenn Volckaert Date: Wed, 10 Jan 2024 09:49:55 +0100 Subject: [PATCH] Introduce separate class for two-step signing DEVSIX-7972 --- .../itext/signatures/PdfSignerUnitTest.cs | 40 --- .../signatures/PdfTwoPhaseSignerUnitTest.cs | 114 +++++++++ .../itext/signatures/cms/CMSContainerTest.cs | 4 +- .../itext/signatures/cms/CMSTestHelper.cs | 228 +++++++++--------- .../itext/signatures/cms/SignerInfoTest.cs | 9 +- .../signatures/sign/TwoPhaseSigningTest.cs | 53 ++-- .../cmp_twoStepSigningBaselineBTest1.pdf | Bin 10230 -> 10482 bytes .../cmp_twoStepSigningBaselineBTest2.pdf | Bin 10118 -> 10466 bytes .../cmp_twoStepSigningBaselineBTest3.pdf | Bin 8382 -> 8388 bytes .../cmp_twoStepSigningBaselineBTest4.pdf | Bin 10438 -> 10573 bytes .../cmp_twoStepSigningBaselineLTATest1.pdf | Bin 35631 -> 36111 bytes ...mp_twoStepSigningBaselineLTATest1_FIPS.pdf | Bin 35567 -> 36048 bytes .../cmp_twoStepSigningBaselineLTATest2.pdf | Bin 37757 -> 38336 bytes .../cmp_twoStepSigningBaselineLTATest3.pdf | Bin 34665 -> 34673 bytes .../cmp_twoStepSigningBaselineLTATest4.pdf | Bin 36004 -> 36248 bytes ...mp_twoStepSigningBaselineLTATest4_FIPS.pdf | Bin 35891 -> 36138 bytes .../cmp_twoStepSigningBaselineLTTest1.pdf | Bin 26577 -> 27054 bytes ...cmp_twoStepSigningBaselineLTTest1_FIPS.pdf | Bin 26508 -> 26989 bytes .../cmp_twoStepSigningBaselineLTTest2.pdf | Bin 28694 -> 29274 bytes .../cmp_twoStepSigningBaselineLTTest3.pdf | Bin 25612 -> 25617 bytes .../cmp_twoStepSigningBaselineLTTest4.pdf | Bin 26948 -> 27197 bytes ...cmp_twoStepSigningBaselineLTTest4_FIPS.pdf | Bin 26832 -> 27080 bytes .../cmp_twoStepSigningBaselineTTest1.pdf | Bin 18487 -> 18739 bytes .../cmp_twoStepSigningBaselineTTest1_FIPS.pdf | Bin 18423 -> 18675 bytes .../cmp_twoStepSigningBaselineTTest2.pdf | Bin 18375 -> 18723 bytes .../cmp_twoStepSigningBaselineTTest3.pdf | Bin 16719 -> 16725 bytes .../cmp_twoStepSigningBaselineTTest4.pdf | Bin 18743 -> 18877 bytes .../cmp_twoStepSigningBaselineTTest4_FIPS.pdf | Bin 18631 -> 18765 bytes .../cmp_2PhaseCompleteCycleCMS.pdf | Bin 11708 -> 12870 bytes .../itext/bouncycastle/BouncyCastleFactory.cs | 5 + .../asn1/Asn1EncodableVectorBC.cs | 21 ++ .../asn1/x509/AlgorithmIdentifierBC.cs | 3 + .../BouncyCastleDefaultFactory.cs | 4 + .../BouncyCastleFipsFactory.cs | 4 + .../asn1/Asn1EncodableVectorBCFips.cs | 21 ++ .../bouncycastle/IBouncyCastleFactory.cs | 6 + .../bouncycastle/asn1/IAsn1EncodableVector.cs | 24 ++ .../signatures/PadesTwoPhaseSigningHelper.cs | 27 +-- .../itext/signatures/PdfPadesSigner.cs | 18 +- .../itext.sign/itext/signatures/PdfSigner.cs | 154 ++++++------ .../itext/signatures/PdfTwoPhaseSigner.cs | 164 +++++++++++++ .../signatures/cms/AlgorithmIdentifier.cs | 2 +- .../itext/signatures/cms/SignerInfo.cs | 20 +- port-hash | 2 +- 44 files changed, 609 insertions(+), 314 deletions(-) create mode 100644 itext.tests/itext.sign.tests/itext/signatures/PdfTwoPhaseSignerUnitTest.cs create mode 100644 itext/itext.sign/itext/signatures/PdfTwoPhaseSigner.cs diff --git a/itext.tests/itext.sign.tests/itext/signatures/PdfSignerUnitTest.cs b/itext.tests/itext.sign.tests/itext/signatures/PdfSignerUnitTest.cs index f2bf172ed8..100a241502 100644 --- a/itext.tests/itext.sign.tests/itext/signatures/PdfSignerUnitTest.cs +++ b/itext.tests/itext.sign.tests/itext/signatures/PdfSignerUnitTest.cs @@ -372,46 +372,6 @@ public virtual void SetFieldNameToSigFieldWithoutWidgetsTest() { reader.Close(); } - [NUnit.Framework.Test] - public virtual void PrepareDocumentTestWithSHA256() { - PdfReader reader = new PdfReader(new MemoryStream(CreateSimpleDocument())); - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); - String fieldName = signer.fieldName; - int estimatedSize = 8079; - byte[] digest = signer.PrepareDocumentForSignature(DigestAlgorithms.SHA256, PdfName.Adobe_PPKLite, PdfName - .Adbe_pkcs7_detached, estimatedSize, false); - PdfReader resultReader = new PdfReader(new MemoryStream(outputStream.ToArray())); - PdfDocument resultDoc = new PdfDocument(resultReader); - SignatureUtil signatureUtil = new SignatureUtil(resultDoc); - PdfSignature signature = signatureUtil.GetSignature(fieldName); - NUnit.Framework.Assert.AreEqual(estimatedSize, signature.GetContents().GetValueBytes().Length); - } - - [NUnit.Framework.Test] - public virtual void AddSignatureToPreparedDocumentTest() { - PdfReader reader = new PdfReader(new MemoryStream(CreateSimpleDocument())); - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); - String fieldName = signer.fieldName; - int estimatedSize = 8079; - byte[] digest = signer.PrepareDocumentForSignature(DigestAlgorithms.SHA256, PdfName.Adobe_PPKLite, PdfName - .Adbe_pkcs7_detached, estimatedSize, false); - PdfReader resultReader = new PdfReader(new MemoryStream(outputStream.ToArray())); - PdfDocument resultDoc = new PdfDocument(resultReader); - ByteArrayOutputStream completedOutputStream = new ByteArrayOutputStream(); - byte[] testData = ByteUtils.GetIsoBytes("Some data to test the signature addition with"); - PdfSigner.AddSignatureToPreparedDocument(resultDoc, fieldName, completedOutputStream, testData); - resultReader = new PdfReader(new MemoryStream(completedOutputStream.ToArray())); - resultDoc = new PdfDocument(resultReader); - SignatureUtil signatureUtil = new SignatureUtil(resultDoc); - PdfSignature signature = signatureUtil.GetSignature(fieldName); - byte[] content = signature.GetContents().GetValueBytes(); - for (int i = 0; i < testData.Length; i++) { - NUnit.Framework.Assert.AreEqual(testData[i], content[i]); - } - } - private static byte[] CreateDocumentWithEmptyField() { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outputStream)); diff --git a/itext.tests/itext.sign.tests/itext/signatures/PdfTwoPhaseSignerUnitTest.cs b/itext.tests/itext.sign.tests/itext/signatures/PdfTwoPhaseSignerUnitTest.cs new file mode 100644 index 0000000000..ccad772b59 --- /dev/null +++ b/itext.tests/itext.sign.tests/itext/signatures/PdfTwoPhaseSignerUnitTest.cs @@ -0,0 +1,114 @@ +/* +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 System.IO; +using iText.Bouncycastleconnector; +using iText.Commons.Bouncycastle; +using iText.IO.Source; +using iText.Kernel.Pdf; +using iText.Test; + +namespace iText.Signatures { + [NUnit.Framework.Category("BouncyCastleUnitTest")] + public class PdfTwoPhaseSignerUnitTest : ExtendedITextTest { + private static readonly IBouncyCastleFactory FACTORY = BouncyCastleFactoryCreator.GetFactory(); + + private static readonly byte[] OWNER = "owner".GetBytes(System.Text.Encoding.UTF8); + + private static readonly byte[] USER = "user".GetBytes(System.Text.Encoding.UTF8); + + private static readonly String PDFA_RESOURCES = iText.Test.TestUtil.GetParentProjectDirectory(NUnit.Framework.TestContext + .CurrentContext.TestDirectory) + "/resources/itext/signatures/pdfa/"; + + private static readonly String DESTINATION_FOLDER = NUnit.Framework.TestContext.CurrentContext.TestDirectory + + "/test/itext/signatures/Pdf2PhaseSignerUnitTest/"; + + private static readonly String CERTS_SRC = iText.Test.TestUtil.GetParentProjectDirectory(NUnit.Framework.TestContext + .CurrentContext.TestDirectory) + "/resources/itext/signatures/certs/"; + + private static readonly char[] PASSWORD = "testpassphrase".ToCharArray(); + + [NUnit.Framework.OneTimeSetUp] + public static void Before() { + CreateOrClearDestinationFolder(DESTINATION_FOLDER); + } + + [NUnit.Framework.Test] + public virtual void PrepareDocumentTestWithSHA256() { + PdfReader reader = new PdfReader(new MemoryStream(CreateSimpleDocument())); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); + int estimatedSize = 8079; + SignerProperties signerProperties = new SignerProperties(); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties, DigestAlgorithms.SHA256, PdfName.Adobe_PPKLite + , PdfName.Adbe_pkcs7_detached, estimatedSize, false); + String fieldName = signerProperties.GetFieldName(); + PdfReader resultReader = new PdfReader(new MemoryStream(outputStream.ToArray())); + PdfDocument resultDoc = new PdfDocument(resultReader); + SignatureUtil signatureUtil = new SignatureUtil(resultDoc); + PdfSignature signature = signatureUtil.GetSignature(fieldName); + NUnit.Framework.Assert.AreEqual(estimatedSize, signature.GetContents().GetValueBytes().Length); + } + + [NUnit.Framework.Test] + public virtual void AddSignatureToPreparedDocumentTest() { + PdfReader reader = new PdfReader(new MemoryStream(CreateSimpleDocument())); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); + int estimatedSize = 8079; + SignerProperties signerProperties = new SignerProperties(); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties, DigestAlgorithms.SHA256, PdfName.Adobe_PPKLite + , PdfName.Adbe_pkcs7_detached, estimatedSize, false); + String fieldName = signerProperties.GetFieldName(); + PdfReader resultReader = new PdfReader(new MemoryStream(outputStream.ToArray())); + PdfDocument resultDoc = new PdfDocument(resultReader); + ByteArrayOutputStream completedOutputStream = new ByteArrayOutputStream(); + byte[] testData = ByteUtils.GetIsoBytes("Some data to test the signature addition with"); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(resultDoc, fieldName, completedOutputStream, testData); + resultReader = new PdfReader(new MemoryStream(completedOutputStream.ToArray())); + resultDoc = new PdfDocument(resultReader); + SignatureUtil signatureUtil = new SignatureUtil(resultDoc); + PdfSignature signature = signatureUtil.GetSignature(fieldName); + byte[] content = signature.GetContents().GetValueBytes(); + for (int i = 0; i < testData.Length; i++) { + NUnit.Framework.Assert.AreEqual(testData[i], content[i]); + } + } + + private static byte[] CreateSimpleDocument() { + return CreateSimpleDocument(PdfVersion.PDF_1_7); + } + + private static byte[] CreateSimpleDocument(PdfVersion version) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + WriterProperties writerProperties = new WriterProperties(); + if (null != version) { + writerProperties.SetPdfVersion(version); + } + PdfDocument document = new PdfDocument(new PdfWriter(outputStream, writerProperties)); + document.AddNewPage(); + document.Close(); + return outputStream.ToArray(); + } + } +} diff --git a/itext.tests/itext.sign.tests/itext/signatures/cms/CMSContainerTest.cs b/itext.tests/itext.sign.tests/itext/signatures/cms/CMSContainerTest.cs index 4ef946f7f7..5492337358 100644 --- a/itext.tests/itext.sign.tests/itext/signatures/cms/CMSContainerTest.cs +++ b/itext.tests/itext.sign.tests/itext/signatures/cms/CMSContainerTest.cs @@ -128,13 +128,13 @@ public virtual void TestGetSizeEstimation() { si.SetOcspResponses(fakeOcspREsponses); si.SetCrlResponses(JavaCollectionsUtil.SingletonList(testCrlResponse)); si.SetDigestAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_SHA512)); - si.SetSigningCertificateAndAddToSignedAttributes(signCert, SecurityIDs.ID_SHA512); si.SetSignatureAlgorithm(new AlgorithmIdentifier(SignatureMechanisms.GetSignatureMechanismOid("RSA", DigestAlgorithms .SHA512))); + si.SetSigningCertificateAndAddToSignedAttributes(signCert, SecurityIDs.ID_SHA512); si.SetSignature(new byte[256]); sut.SetSignerInfo(si); long size = sut.GetSizeEstimation(); - NUnit.Framework.Assert.AreEqual(4827, size); + NUnit.Framework.Assert.AreEqual(4821, size); } [NUnit.Framework.Test] diff --git a/itext.tests/itext.sign.tests/itext/signatures/cms/CMSTestHelper.cs b/itext.tests/itext.sign.tests/itext/signatures/cms/CMSTestHelper.cs index 1514110e0a..368e9693de 100644 --- a/itext.tests/itext.sign.tests/itext/signatures/cms/CMSTestHelper.cs +++ b/itext.tests/itext.sign.tests/itext/signatures/cms/CMSTestHelper.cs @@ -126,49 +126,49 @@ internal class CMSTestHelper { + "fZ9dnvLL/Ncb34yHo0TVBy9bvbVEuWE/Skg5ygHQzBkXeETUMgvu+PhBCQq8BDFpv3o45LhZHnXWbRGUXnLhVrVE8F1FK7EW6y/N" + "PLKNu3R1lt7g/zX7481b6g0z7Exj"; - internal const String EXPECTED_RESULT_CMS_CONTAINER_TEST = "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" - + "ARMKAQCgggEMMIIBCAYJKwYBBQUHMAEBBIH6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADANBgkqhkiG" + "9w0BAQ0FAASCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + internal const String EXPECTED_RESULT_CMS_CONTAINER_TEST = "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\n" + + "AKCCAQwwggEIBgkrBgEFBQcwAQEEgfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAsGCSqGSIb3DQEB\n" + "DQSCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; internal const String MESSAGE_DIGEST_STRING = "This a a 'long' string representing the message digest\r\n" + "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\r\n" @@ -289,24 +289,24 @@ internal class CMSTestHelper { + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; - internal const String EXPECTEDRESULT_4 = "MIIHtQIBATBpMGExCzAJBgNVBAYTAkJZMQ4wDAYDVQQHDAVNaW5zazEOMAwGA1UECgwFaVRleHQx" - + "DTALBgNVBAsMBHRlc3QxIzAhBgNVBAMMGmlUZXh0VGVzdEludGVybWVkaWF0ZVJzYTAxAgRcbCwi" + "MA0GCWCGSAFlAwQCAwUAoIIFCzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMIHXBgsqhkiG9w0B" - + "CRACLzGBxzCBxDCBwTCBvjALBglghkgBZQMEAgMEQAJAICi7FPbZ7MwuzR4m/aK+S1eD6bzTwuOy" + "R7FTgIO8qLDmq9xnUmiZk1Qx7DIAZJkHriWUtM6HRka/few5zPQwbTBlpGMwYTELMAkGA1UEBhMC" - + "QlkxDjAMBgNVBAcMBU1pbnNrMQ4wDAYDVQQKDAVpVGV4dDENMAsGA1UECwwEdGVzdDEjMCEGA1UE" + "AwwaaVRleHRUZXN0SW50ZXJtZWRpYXRlUnNhMDECBFxsLCIwggQTBgkqhkiG9w0BCQQxggQEBIIE" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw" - + "DQYJKoZIhvcNAQEKBQAEggIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAChFDASBgkqhkiG9w0BCQUxBQIDAeJA"; + internal const String EXPECTEDRESULT_4 = "MIIHsQIBATBpMGExCzAJBgNVBAYTAkJZMQ4wDAYDVQQHDAVNaW5zazEOMAwGA1UECgwFaVRleHQx\n" + + "DTALBgNVBAsMBHRlc3QxIzAhBgNVBAMMGmlUZXh0VGVzdEludGVybWVkaWF0ZVJzYTAxAgRcbCwi\n" + "MAsGCWCGSAFlAwQCA6CCBQswGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATCB1wYLKoZIhvcNAQkQ\n" + + "Ai8xgccwgcQwgcEwgb4wCwYJYIZIAWUDBAIDBEACQCAouxT22ezMLs0eJv2ivktXg+m808Ljskex\n" + "U4CDvKiw5qvcZ1JomZNUMewyAGSZB64llLTOh0ZGv33sOcz0MG0wZaRjMGExCzAJBgNVBAYTAkJZ\n" + + "MQ4wDAYDVQQHDAVNaW5zazEOMAwGA1UECgwFaVRleHQxDTALBgNVBAsMBHRlc3QxIzAhBgNVBAMM\n" + "GmlUZXh0VGVzdEludGVybWVkaWF0ZVJzYTAxAgRcbCwiMIIEEwYJKoZIhvcNAQkEMYIEBASCBAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAsG\n" + + "CSqGSIb3DQEBCgSCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAKEUMBIGCSqGSIb3DQEJBTEFAgMB4kA="; internal const String EXPECTEDRESULT_5 = "MYIGIDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMIIB6wYJKoZIhvcvAQEIMIIB3KCCAdgwggHU" + "MIIB0DCBuQIBATANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJCWTEOMAwGA1UEBwwFTWluc2sx" + "DjAMBgNVBAoMBWlUZXh0MQ0wCwYDVQQLDAR0ZXN0MSIwIAYDVQQDDBlpVGV4dFRlc3RSc2FDZXJ0" @@ -324,59 +324,59 @@ internal class CMSTestHelper { + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; - internal const String CMS_CONTAINER_WITH_OCSP_AND_CRL = "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" - + "9w0BCQMxCwYJKoZIhvcNAQcBMIHXBgsqhkiG9w0BCRACLzGBxzCBxDCBwTCBvjALBglghkgBZQME" + "AgMEQAJAICi7FPbZ7MwuzR4m/aK+S1eD6bzTwuOyR7FTgIO8qLDmq9xnUmiZk1Qx7DIAZJkHriWU" - + "tM6HRka/few5zPQwbTBlpGMwYTELMAkGA1UEBhMCQlkxDjAMBgNVBAcMBU1pbnNrMQ4wDAYDVQQK" + "DAVpVGV4dDENMAsGA1UECwwEdGVzdDEjMCEGA1UEAwwaaVRleHRUZXN0SW50ZXJtZWRpYXRlUnNh" - + "MDECBFxsLCIwggETBgkqhkiG9w0BCQQxggEEBIIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAwDQYJKoZIhvcNAQENBQAEggEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="; + internal const String CMS_CONTAINER_WITH_OCSP_AND_CRL = "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\n" + "AzELBgkqhkiG9w0BBwEwgdcGCyqGSIb3DQEJEAIvMYHHMIHEMIHBMIG+MAsGCWCGSAFlAwQCAwRA\n" + + "AkAgKLsU9tnszC7NHib9or5LV4PpvNPC47JHsVOAg7yosOar3GdSaJmTVDHsMgBkmQeuJZS0zodG\n" + "Rr997DnM9DBtMGWkYzBhMQswCQYDVQQGEwJCWTEOMAwGA1UEBwwFTWluc2sxDjAMBgNVBAoMBWlU\n" + + "ZXh0MQ0wCwYDVQQLDAR0ZXN0MSMwIQYDVQQDDBppVGV4dFRlc3RJbnRlcm1lZGlhdGVSc2EwMQIE\n" + "XGwsIjCCARMGCSqGSIb3DQEJBDGCAQQEggEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAL\n" + + "BgkqhkiG9w0BAQ0EggEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n" + + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="; internal const String CMS_CONTAINER_WITH_INCORRECT_REV_INFO = "MIIXKQYJKoZIhvcNAQcCoIIXGjCCFxYCAQExDzANBglghkgBZQMEAgMFADALBgkqhkiG9w0BBwGg" + "ggvqMIID6jCCAtKgAwIBAgIEWOeR1jANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQGEwJCWTEOMAwG" + "A1UEBwwFTWluc2sxDjAMBgNVBAoMBWlUZXh0MQ0wCwYDVQQLDAR0ZXN0MRYwFAYDVQQDDA1pVGV4" diff --git a/itext.tests/itext.sign.tests/itext/signatures/cms/SignerInfoTest.cs b/itext.tests/itext.sign.tests/itext/signatures/cms/SignerInfoTest.cs index 26f3295631..3500896cc0 100644 --- a/itext.tests/itext.sign.tests/itext/signatures/cms/SignerInfoTest.cs +++ b/itext.tests/itext.sign.tests/itext/signatures/cms/SignerInfoTest.cs @@ -204,8 +204,8 @@ public virtual void TestGetAsDerSequence() { SignerInfo si = new SignerInfo(); si.AddUnSignedAttribute(new CmsAttribute(SecurityIDs.ID_SIGNING_TIME, FACTORY.CreateDERSet(FACTORY.CreateASN1Integer (123456)))); - si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSASSA_PSS)); si.SetSigningCertificateAndAddToSignedAttributes(signCert, "2.16.840.1.101.3.4.2.3"); + si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSASSA_PSS)); si.SetMessageDigest(new byte[1024]); si.SetDigestAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_SHA512)); si.SetSignature(new byte[512]); @@ -217,7 +217,6 @@ public virtual void TestGetAsDerSequence() { [NUnit.Framework.Test] public virtual void TestEstimatedSizeWithSignature() { SignerInfo si = new SignerInfo(); - si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSA_WITH_SHA256)); si.AddUnSignedAttribute(new CmsAttribute(SecurityIDs.ID_SIGNING_TIME, FACTORY.CreateDERSet(FACTORY.CreateASN1Integer (123456)))); si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSASSA_PSS)); @@ -226,7 +225,7 @@ public virtual void TestEstimatedSizeWithSignature() { si.SetDigestAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_SHA512)); si.SetSignature(new byte[512]); long res = si.GetEstimatedSize(); - NUnit.Framework.Assert.AreEqual(1977, res); + NUnit.Framework.Assert.AreEqual(1973, res); } [NUnit.Framework.Test] @@ -251,7 +250,6 @@ public virtual void TestSignedAttributesSerializationRoundTrip() { [NUnit.Framework.Test] public virtual void TestEstimatedSizeEstimatedSignature() { SignerInfo si = new SignerInfo(); - si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSA_WITH_SHA256)); si.AddUnSignedAttribute(new CmsAttribute(SecurityIDs.ID_SIGNING_TIME, FACTORY.CreateDERSet(FACTORY.CreateASN1Integer (123456)))); si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSASSA_PSS)); @@ -259,13 +257,12 @@ public virtual void TestEstimatedSizeEstimatedSignature() { si.SetMessageDigest(new byte[1024]); si.SetDigestAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_SHA512)); long res = si.GetEstimatedSize(); - NUnit.Framework.Assert.AreEqual(2489, res); + NUnit.Framework.Assert.AreEqual(2485, res); } [NUnit.Framework.Test] public virtual void TestSerializeAndDeserializeSignerInfo() { SignerInfo si = new SignerInfo(); - si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSA_WITH_SHA256)); si.AddUnSignedAttribute(new CmsAttribute(SecurityIDs.ID_SIGNING_TIME, FACTORY.CreateDERSet(FACTORY.CreateASN1Integer (123456)))); si.SetSignatureAlgorithm(new AlgorithmIdentifier(SecurityIDs.ID_RSASSA_PSS)); diff --git a/itext.tests/itext.sign.tests/itext/signatures/sign/TwoPhaseSigningTest.cs b/itext.tests/itext.sign.tests/itext/signatures/sign/TwoPhaseSigningTest.cs index 4ea80b629e..4fe52119fb 100644 --- a/itext.tests/itext.sign.tests/itext/signatures/sign/TwoPhaseSigningTest.cs +++ b/itext.tests/itext.sign.tests/itext/signatures/sign/TwoPhaseSigningTest.cs @@ -82,15 +82,17 @@ public virtual void Init() { } [NUnit.Framework.Test] - public virtual void TestPreparationWithClosedPdfSigner() { + public virtual void TestPreparationWithClosedPdfTwoPhaseSigner() { // prepare the file using (PdfReader reader = new PdfReader(FileUtil.GetInputStreamForFile(SIMPLE_DOC_PATH))) { using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); - signer.PrepareDocumentForSignature(DigestAlgorithms.SHA384, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); + signer.PrepareDocumentForSignature(new SignerProperties(), DigestAlgorithms.SHA384, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached , 5000, false); - Exception e = NUnit.Framework.Assert.Catch(typeof(PdfException), () => { - byte[] digest = signer.PrepareDocumentForSignature(DigestAlgorithms.SHA384, PdfName.Adobe_PPKLite, PdfName + Exception e = NUnit.Framework.Assert.Catch(typeof(PdfException), () => + { + SignerProperties signerProperties = new SignerProperties(); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties, DigestAlgorithms.SHA384, PdfName.Adobe_PPKLite, PdfName .Adbe_pkcs7_detached, 5000, false); } ); @@ -109,7 +111,7 @@ public virtual void TestCompletionWithWrongFieldName() { using (Stream signedDoc = new ByteArrayOutputStream()) { // add signature Exception e = NUnit.Framework.Assert.Catch(typeof(PdfException), () => { - PdfSigner.AddSignatureToPreparedDocument(preparedDoc, "wrong" + FIELD_NAME, signedDoc, signData); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(preparedDoc, "wrong" + FIELD_NAME, signedDoc, signData); } ); NUnit.Framework.Assert.AreEqual(MessageFormatUtil.Format(SignExceptionMessageConstant.THERE_IS_NO_FIELD_IN_THE_DOCUMENT_WITH_SUCH_NAME @@ -127,7 +129,7 @@ public virtual void TestCompletionWithNotEnoughSpace() { using (Stream signedDoc = new ByteArrayOutputStream()) { // add signature Exception e = NUnit.Framework.Assert.Catch(typeof(PdfException), () => { - PdfSigner.AddSignatureToPreparedDocument(preparedDoc, FIELD_NAME, signedDoc, signData); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(preparedDoc, FIELD_NAME, signedDoc, signData); } ); NUnit.Framework.Assert.AreEqual(SignExceptionMessageConstant.AVAILABLE_SPACE_IS_NOT_ENOUGH_FOR_SIGNATURE, @@ -141,16 +143,17 @@ public virtual void TestCompletionWithSignatureFieldNotLastOne() { using (PdfReader reader = new PdfReader(FileUtil.GetInputStreamForFile(SOURCE_FOLDER + "2PhasePreparedSignature.pdf" ))) { using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); // Add second signature field - byte[] digest = signer.PrepareDocumentForSignature(DIGEST_ALGORITHM, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached + SignerProperties signerProperties = new SignerProperties(); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties,DIGEST_ALGORITHM, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached , 5000, false); byte[] signData = new byte[1024]; using (Stream outputStreamPhase2 = FileUtil.GetFileOutputStream(DESTINATION_FOLDER + "2PhaseCompleteCycle.pdf" )) { using (PdfDocument doc = new PdfDocument(new PdfReader(new MemoryStream(outputStream.ToArray())))) { Exception e = NUnit.Framework.Assert.Catch(typeof(PdfException), () => { - PdfSigner.AddSignatureToPreparedDocument(doc, FIELD_NAME, outputStreamPhase2, signData); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(doc, FIELD_NAME, outputStreamPhase2, signData); } ); NUnit.Framework.Assert.AreEqual(MessageFormatUtil.Format(SignExceptionMessageConstant.SIGNATURE_WITH_THIS_NAME_IS_NOT_THE_LAST_IT_DOES_NOT_COVER_WHOLE_DOCUMENT @@ -166,10 +169,11 @@ public virtual void TestPreparation() { // prepare the file using (PdfReader reader = new PdfReader(FileUtil.GetInputStreamForFile(SIMPLE_DOC_PATH))) { using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); - String fieldName = signer.GetFieldName(); - byte[] digest = signer.PrepareDocumentForSignature(DigestAlgorithms.SHA384, PdfName.Adobe_PPKLite, PdfName + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); + SignerProperties signerProperties = new SignerProperties(); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties,DigestAlgorithms.SHA384, PdfName.Adobe_PPKLite, PdfName .Adbe_pkcs7_detached, 5000, false); + String fieldName = signerProperties.GetFieldName(); using (PdfDocument cmp_document = new PdfDocument(new PdfReader(SOURCE_FOLDER + "cmp_prepared.pdf"))) { using (PdfDocument outDocument = new PdfDocument(new PdfReader(new MemoryStream(outputStream.ToArray())))) { SignatureUtil signatureUtil = new SignatureUtil(cmp_document); @@ -197,16 +201,17 @@ public virtual void TestCompleteCycle() { // Phase 1 prepare the document and get the documents digest and the fieldname of the created signature using (PdfReader reader = new PdfReader(FileUtil.GetInputStreamForFile(SIMPLE_DOC_PATH))) { using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); - byte[] digest = signer.PrepareDocumentForSignature(DIGEST_ALGORITHM, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); + SignerProperties signerProperties = new SignerProperties(); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties,DIGEST_ALGORITHM, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached , 5000, false); - String fieldName = signer.GetFieldName(); + String fieldName = signerProperties.GetFieldName(); // Phase 2 sign the document digest byte[] signData = SignDigest(digest, DIGEST_ALGORITHM); using (Stream outputStreamPhase2 = FileUtil.GetFileOutputStream(DESTINATION_FOLDER + "2PhaseCompleteCycle.pdf" )) { using (PdfDocument doc = new PdfDocument(new PdfReader(new MemoryStream(outputStream.ToArray())))) { - PdfSigner.AddSignatureToPreparedDocument(doc, fieldName, outputStreamPhase2, signData); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(doc, fieldName, outputStreamPhase2, signData); } } NUnit.Framework.Assert.IsNull(SignaturesCompareTool.CompareSignatures(DESTINATION_FOLDER + "2PhaseCompleteCycle.pdf" @@ -227,7 +232,7 @@ public virtual void TestCompletion() { )))) { using (Stream signedDoc = FileUtil.GetFileOutputStream(DESTINATION_FOLDER + "2PhaseCompletion.pdf")) { // add signature - PdfSigner.AddSignatureToPreparedDocument(preparedDoc, FIELD_NAME, signedDoc, signData); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(preparedDoc, FIELD_NAME, signedDoc, signData); } } NUnit.Framework.Assert.IsNull(SignaturesCompareTool.CompareSignatures(DESTINATION_FOLDER + "2PhaseCompletion.pdf" @@ -257,7 +262,7 @@ public virtual void TestWithCMS() { cmsToUpdate.GetSignerInfo().SetSignature(signaturedata); //if needed a time stamp could be added here //Phase 2.3 add the updated CMS to the document - PdfSigner.AddSignatureToPreparedDocument(doc, signatureName, outputStreamPhase2, cmsToUpdate); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(doc, signatureName, outputStreamPhase2, cmsToUpdate); } } // validate signature @@ -288,13 +293,13 @@ private byte[] PrepareDocumentAndCMS(FileInfo document, ByteArrayOutputStream pr ) { using (PdfReader reader = new PdfReader(FileUtil.GetInputStreamForFile(document))) { using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - PdfSigner signer = new PdfSigner(reader, outputStream, new StampingProperties()); - signer.SetFieldName(signatureName); - byte[] digest = signer.PrepareDocumentForSignature(DIGEST_ALGORITHM, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached + PdfTwoPhaseSigner signer = new PdfTwoPhaseSigner(reader, outputStream); + SignerProperties signerProperties = new SignerProperties().SetFieldName(signatureName); + byte[] digest = signer.PrepareDocumentForSignature(signerProperties,DIGEST_ALGORITHM, PdfName.Adobe_PPKLite, PdfName.Adbe_pkcs7_detached , 5000, false); System.Console.Out.WriteLine("Document digest from prepare call: " + digest.Length + "bytes"); System.Console.Out.WriteLine(Convert.ToBase64String(digest)); - String fieldName = signer.GetFieldName(); + String fieldName = signerProperties.GetFieldName(); // Phase 1.1 prepare the CMS CMSContainer cms = new CMSContainer(); SignerInfo signerInfo = new SignerInfo(); @@ -316,7 +321,7 @@ private byte[] PrepareDocumentAndCMS(FileInfo document, ByteArrayOutputStream pr // now we store signedAttributesToSign together with the prepared document and send // dataToSign to the signing instance using (PdfDocument doc = new PdfDocument(new PdfReader(new MemoryStream(outputStream.ToArray())))) { - PdfSigner.AddSignatureToPreparedDocument(doc, fieldName, preparedOS, cms); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(doc, fieldName, preparedOS, cms); } return dataToSign; } diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineBTest1.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineBTest1.pdf index 3f193c8802d2c45cc87706c1d140dae91fc9f69e..d83cd82e2933c378044d25bccdd9fed88e2ddb23 100644 GIT binary patch delta 1375 zcmbtU&1#-i5GJ&xG%mVnuw6($kkk|<-<+8gyRnKo5tcfJCarfPV z_~J(J9)w(gxabAAbz|`oT)1{VwFX;sWMhOPUAw=JGNAfcDmpnbwUnqp zrIg|jF4afj-FX_)LCwL3N)pwSn@|rqMsq632(5CLPzI%fCLva>^&)W}RY$0WBvL+k z?aKG(rnj!V_|?@{p7RL?cB;M%VM^IKmW^}VHZr$6iuW`qEEs@&-hcbCSE8{QROpTE0vXXF0S(PxJ@=JVs@ z4L;TXrAro1b!lc#d@Y7)>)QIlR8H-G#+aXrr*+P%XL9?%;b}i} znm(h8_Dnt##iif$%QamL-{_J?PbyW&??-OXw2);ZqSBi00XQ$B<=ib4jX{v8I%R=0 z*4jDCa!LJg5oJihiC;BvE5mPH$|kKhzdS{K=_@uK=4s7}cU579rf*)_SvBU>_4QlZ Hw^x4$HNSBb delta 1107 zcmZWoyNaeo5anlPS!NVWoK+Fo&tTXE4XUg9Rz`|CnJjB48dOzRC4zx3@P`J5A8h73 z2onn$_y8J<`V0of)-0<7PG^1kblpy!zn=d6tQ30YC zAFe32%3RYL4dbxd)~J0NEw-W>Vo1W1h)cEBou!WJUoSp9>_42od4!s^6aX@Esf4kZ zVy?a{S~IN9CZ&%xIlB8mRu<^khk-T}bXgu5VMbl6hI=)kHbhs4)<#>_mJ60C61A#M z8n9+yFwqJ=X3b-2adS=XaBqdN3_%NZ2V7v5u$C$V#*#v&bva=xt&!&pXEU!F)H8!Y z<{PamtF77tM5i~55iT<;6Q&lV-c=#HU2=4s*hoS^7YOOBgEC*iz@msX&_fUhBGoyJ z#I)qZi?~%YZoXC{1=H55LkMS$i7QWq3edA?s}Y@=jf%bBBZEZ_R@G}FVHxZ53haY7O>3R zjZ~mGH5n1BDzM}($jenU zZC3}{zumsP{_XA8?_E*f;O1;!ZRfP%`SS}*m~@N3z*@yyY;625w@=>RdvtjmRBzv3 z{F#;SV71+i%{c$hV;JQQhIA($SArYf{`;eOgyk!=HVyCTVQ7}?+fsfvr8z6ejk!{j z^lTc8hr`e|Iw>b#h82W#RqtGSxK=KbP62_MyCRBJ`zjf|Ov8W_H-%g5scd?I3Q15GEv{a1Dq^ErHs;E}{ua?#!HzIa5k4LKUG9Y|)LBa=xYwwn@poB<}9c zm5aiQOGW$zLiXa$ogn@J@s~K)+6EhNNjKyWU)_|wLv@vV#R-)sRnxDXO_z#ek;5Nl&_6<8s;q9~=tt}Zo!ss_)f${cfW$awnw z#iuI^RE*ha?70O;nWL0gVsOsYt{J!!Nsqa94lN>8qMV@$B?po$SA!lk$uc~MPy^JM zKx+}QE6Ind6_rcT%)~(w5klx0*&7482qCLL6mCL=a%+}cNn4KqCD!f=G?!g6T&&a> zeU_B1#-1=Mx1iButFGF=kd@xDK;u+M7?n@B}DX*1emF1t=6oRNm|X-CFf%-z8i8U&*;G!Un*TNh)fYhcBn;^zJJ@#f}Ye0t@* zS1=(u@%~-F@s}&#{_A{r^_vwxt`A=(dYNtbf*zX8VT+Q`&{;tuN>O zV0pUTkNcy+kv;Uxc&8ulFP+=h2#9v3pWeB>{ct{iGP^dNo}8TQ?#~W)504&9XY+i} z@==@mkT~o(}Uhc$rgw0BUFpvTsFa@WP%pQop(<_flfMAAdTHGN delta 1105 zcmZWoy{cYC6y@W7NzA8UlWR<4PKrxJE%xus>>^-e>=J^lf-|#c8o?K^_$sxr5Kf_u z;3EjPN|y%+fxJP;bEL>V*Wd;3fpa*sXU$qOd#!o>vz9+ADB=Q+vmXRgS&s- z{BOMex_h$9@^HuNPsu1NEnbLOE}eO`4=kBPi9P1WYXzZw|qG2(7zRY_3_!LraZov)nTXmM$s9+Q3?NjI7u> zCMcO(iZs*BoBbEFwSWRsRxyNNR8d$<*A}8D8vlf@RstDuXr5ds*(ei?a#QY7%q$vE z?v2=k*J_=ER6rCssrOIfH;hkwuJ(!tmH zbZ~HE`hMl!MRY`tLGA)h*OqVpi%*uvv#@z`_4)k1hSjOY>g8&|D_Z;()Y0=_{10XT z(~q0WnN9Osx7U%*5=P$6Vyfqb3|!Chj3}PNIG)opaX;lvKQGuCOobpP!JK<-V}ir! z+T6UdD5wtup@vp-=@`0r$FVv(uHHjLhfbV_eaMbPP${N(y4 delta 938 zcmaJ=yJ}uX5avfhLW=AZ0oxFaPNNWTin-5j>B4G5NNvMju?ws43;d;uq&sz9A;hRR z82kcxgFu=*gDa191sk%(vO6>1H}?-u-#z{7{my~rg_L-CzW%*q>pwgD>;CStN$Zch zk1;bO0__R}2*?PN0Xi6DgJhBbO@To|-#`H_-t3<5f7dTzIP*0OMAozWzkUBd!1d3g z7u$(rj;^G&^)V-Dk8489-lcg5LB%OUhUe6q$$&g7GZm~ZJUX$CJO*>^ts?sfwW?17 z9}R^P4Ygpk0+y#4&MEOKwU{vSre6Gh@AYQuksnhvb^M$Yh!f84R&q(fk))^tm)>!H zX7HSudkrGO0?>Q__ohRj%^pafq9hu%3bQ0^5e@ea&NaJbE*#}2ZIwskGHeTta=4vd zk|J`QrE?9Jvr%zMwe(S&QYv*)fJ~;fHp1UGYK6rGx;fv>wUhSP~ zS}xJc*>cDW9bQodrQXS}WtQbm=1ab@O@iyu@ekW%cj_yM1K^i3v#+Tg5`1ar6q9`$ z+BF~NulQUOUD~a0k9`|CdvvD{8!>3n1y=V2gh?v77GN3KVh%E9tyn~|lS_?BW5r$u zV?r1-#G^gjn1FMuC1I?O7K=3!&{hn{QjON7Y*O0PmPw><%KCEo^+5ITa DBmn9Q diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineBTest4.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineBTest4.pdf index 585cfc15993006b5153539d33d1000320a5ba04f..31702bee02e3891e6c7f71de11d3e8f43c673ab2 100644 GIT binary patch delta 1206 zcmZ`(KZ~bD3})Fq4u6U^9&&};@6cmU{6jL6WRhmJ@me`c!NW{uMiI3VJNdP?@*-9i zeuI;(EG@JX@e7C_#KP=(uz0I)H_w|)o;-Onzuf=z-G@INKSj1LTxkFP_WQAHe;!}o zuAl6WXuEsz;_F;N3%DZ`K){MHDnJJT6Hp-q6ov|v|Ly#XlRuu@*?N>ytZxsV|M`Xg ziQUd_Joun@TzQiPD!G(NeT5;*1fpnIA?94RIwUwdMUN$|8Hi1y>Qfq%jWT-F72G1K z%IG6p-KJMN|Lew=M~DAnP+;EG5;ELu*O;)5d% zB?!?FN{Y2})pDphd5q*nu9`DbN6qO-tV#?+C48oE(|~P?brD_=Ba&D_S)kNAH=KZD zjXsTYK*F_aTE=J2K25r&EkZBU08=uX%F1q(j(uqrptekO_9_K?%ULmjI2%_g!^=AV z{^pO@wud)QxA$(n_B1MDHR4wRx36z~_ph_IqkuH3n6>X|k~AG7Al zh%cFKt=8Q%7h$0W<<6LR$jZdI3j2_0od>f=%|pZ}&I;%{Q0; delta 1142 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 delta 5893 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 delta 5809 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 VSz7h&E~~*Tt!-j5bKxxQe*;RPK&t=% delta 5650 zcmc&&eO!;%`(LCD!#pg)XhXJnI_Ez3ea?NBr$ktmjVTnlpH3zfVm7IdWK*(CRWl7)qq2^u zst8?IRZBAHwacZwq)5t68L3` zkdTlxMF_>PETS1QW2THarIw}(EU7YcASp48LL6)iQA8x2Dh$`&1j$U&IX5&RWLd#N z<4Cu-K_rS)gP4*cbHkD}A|$Lcp;J>e6DR5^lbB1(7 z=!!vfAqjA+8N?z&p+qw^OJl0VI5Rm?G+m{FBURH(rYKm!GRCS2w?Rn5kRwgEmo_P| zNg9$d;Sz-qN(5XGL1f879COX0%%ohx)L@1JaT8Ql2+}pd6&*uHR6!x=NJZcm878F) zT#*WbRV0W+Ahtw?-xyxC?}*g?D3C7=K=T+(uj6MOsHTZDEhV&R`=(8v+ht$%R>!wZ zl`D(^k_^FBFg0|OVkTQElZB;ArlBi3u~g0e?Z>lhkX~#^5ERoSi~-)5sSpiol7ua) z0k#AY)G&3+AO_c{DhnM`#Ucb*lyF^WSTTvE!+lhXm<+;+A&VxQ0D+N^nW-s~4pGGd z!KZ*Zgmt1@h%imj4Vw&EVg?snSWE{S%M!9M0WyYyh$&;$vaqa!4_VQvYSt1!V8wvM za@7J%5k?4PL70|l5k+W1kqq#{n8m1Wa>=a3l4c2A0#v9f1q~o7F_Ed% z=2}OBNw5Jz!6}@B1N(@?O(9uABO0uNOPk4ogtdram}!QoL0A=lh6Kc5oN$PwFu6>z zurL+|97IBp7GOL9GiJzuDG&x(P!+DIARr{LUD1FsKx&y%jwv!#BEcPW;Gh6c8e&8R z@@m489aUzsl*yeQHno4ox;8{|EdUkV1rhsZ7Wd5m0s5MhYIUU3K!wY$paclHhPpN& zu2O?X|6rNO`04uNHOL`)y2f1j6I%u1Vqev#vrT&X>60CVu;R8vwJ){$g@ z3UNR!)j=u{5t>OfrmK>oTZA$T;0pQ;PzP-QkP8vN^8hElQCdMmP}!(4x0Ub z-w_Vj?&HzvRSD_~$ha#9a;4Zj935}A zei_(nDi$_W!XflrLbAk#CIj3c5(1tGa$_oxAf0Ov0825b4xl$Rs3VdBwM=7FQf;OL z;Q#_+po2^WR9Ox+O~OzD1TjDtMJ);_gW|?aIHU$zK^3Sfpy0JdM`5~dVhxr+q9iCt zpsP??4GSa*>KX-A;-KWJ3fF>U7y?vQLQtJls1}R?^5EG(YJ+357F-OJnsOpkA`63Q z)KC>>SO&u~<4}%dqzldw)J5eHyg;*bkTM1WA_1}}l?_9;On`+2atZQlfIcX)1vQeZ zj6l^hASa+}Q1WENESrFgKxQzvkY;fmRGdHsz>lIJ;Nb)*TtJEpYFdV>ff7q{t)7Ca zAOyk>kI*6F@S%)kkSPxJSQXp?-dHk+uLGP*x@2gYqzjc=SOfiqzyqK`bvbvWP+L-( z`t@!2-$EmS@T3IjwDH?2^6Zb`yOzSeYK6{gfTtJ312FUG@8RX)38A38{{YW^G-das zR(0wq-2VHNY@5fuvVCth}V*iWbhj%Cm!xWe#t(GRd*^*pRp@ zl~Z?(+c@y+ug`p$H?PEdVWWmEm+qSqP<-Ib!%F#ZAf39;(+MSjVG_K>;hs!cHT^>JR4YCf8 z?-FZchtBrix42h%N%1_tYh4yJd9NgGWaOsJepyp-L=WBQ-ZI{&b*Tbo3eJIVJ_ zLvQBp%e;|)C$3R)t9?87w5z^Tl6$6S@)7rxrqen)IJ&+ut!WDXw6%k6LuR*AHOjhy z9e3nq_X}OOBx3BiuTCFH`cx`&>Jr^@d~w*>M$PiFI=(qgt_WK*ZQ-OLZzq?TyAExd z*EZLCQTLg6c;z;S9&M6*R}RdbKGw@C)Ys{no0pf<>$?I6So3o~Th?OlUkma^@86QL zzGh0SF|hB+JssRH-pxzuJsNqOsw%Oq4y4nacNdXv!PRYksJPH4GCk?@_6bwE2Bw~# z54zt_j+_~CB0a9@u#1fsU0NR= zS$}6{L_tlo+u_dp9V=e?>h?>MPu3A`UTz=uboqHJZV{a1JZ!~~MlCWv{{jcUGH2Xt z^%+h#`Szp zHhyPSK$aJq$bFYiQ3&6`K=_ zZl;~8xjtpi=00IL3%^=Fq~6AYJ{eta50+kf>E$`g2ix;McZY7O&5Ua{ZE5+g!Uf42 z+Mf_(&R@TBzsscRT<_e--5a~jSP_(SzSw>FnBMQC`=xb0g35E}+S(_4obyKSmO&-9 zdsCNI6yyzWy!YI1?6P(B_X(xrt4^IbdNlL+{=AH%M}M8ZB(|{TxMyipuU`t|LZf^( z1p7}&-N(!4R&FeA|6Y34*az!GWk=hAh_WqlTdNZb({?Uu;D0=M{+`7CRiD4Rd17Am z>=9Q^d^_ZeMONyT!uQ{b^r=%*o^Mt;TQ%Qwp;B``M@<8|BY*nXwMF!TW-`(+)3TM>RSs6Il zR_$YN=~j3$B)tC0$WDDa-?U#De6eInb@xc`9z(`XAMG16qUvl?#$ZexW0-TW|7M&+xj<>xO$8 z<65JbI&SqmTR61N$<0_h=az@pq#2ikUivy5f6?r4#qEUrPeOW4ykeX`<-2Ud_Ob&p zX(`6s(#o9KovQ}1h`b#aTCLh1oDh6JE7ZScP*K;4X$7oR(dekjb61QUbR)e>lbb=e zV?J(iKYiG1VTV~C+a62uu0G`Mw9Y5rlWYxnJ!-}`4`q7t{`DC-UGHAVY~(#{>Zms& z{R&-N+P3JbE}wMlig#vZR%LdUlMl&kAw`uOd{96CP;k?kTU}xu4#a1d#{YZO%Gmrn zAyEN7*$;NKY4>MDyN8?KIrB@mAyW^p@$MWIx^&gvQ2z<$hMcTrhrhOEZSH(H#eHD5 zExEzaxUOZZt!fYFD^usO>Y}jDK38^({j1pO@#V0}ULPd+wV#?+SXJ1);h%Q@iQ%7Z z`SFObxd|_)!-p2U+^BWA%U^XpKlFXdxV10We>>&lR^KV(GH*2O@cplA2Th3X_`#^f zb?=YN_<5N;&TdwW8ac~penp$@0f8yr!A%_;)0_j7?62G09TfXVwh~+M2RCN!^f|Ua z_2`4Vq0{^$V$(kjEr>by>AOBF?-W+I+?JA``BuBBnPsmZMdRYzHe1*3UrSThUJ5l% zZ>>2n<)_w}nNE8rt{NTEE+qeR7nfb5T$ZnF<>Im-V~*G~GQi>;MnwKGPeo{QGpg zf8YhsqVE6jBKwtDee8a7I(U&MjodS>D6~-gZ|jd5OR2UCf7%=}SNymYg)f*2vhSbc z@dchxuLD@5VZ3ucwOrCGZrP}7|8N*sTiM;S&PUL4DJ{n)K z=OaTfOi7>fM__EI*n9TvX@i5-_G{3GV+=zX(=eDS!|YLp@eWg>Y{j_vP$*}J~V8+7V4V5nDv{{rV`SF!*A diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTATest4.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTATest4.pdf index 1c5cae83f181b54cc87503673e4ae8673ea245b9..af616ece428f5f1ea55353d04f7081b82a19254d 100644 GIT binary patch delta 6620 zcmc&(X;c-*wvH1?z$r0c)EJ1yAx>0vcXd~bfLtSnIKy+m0qp9*0l}bg0->Wu6XJk+ z)ToF+x*@7ud~ z@7~;WQ%uvO)Mj>sci{+Und0MNv1|T86V8(C(^0@g?V^3fv<&Z{XOTas4+y93(77xdODUu>9BCk@F5+)%H zONylFl0+$nRl1HjkrNGr!-^tshDvornV|9_HUve`430yHqeQ`)Dyc}~41r3BFL$31B5gNWxS#kfcdEFUZV5R1=XXiK-wVnQ}a%21j%x3yP+R zmIP$mu24=PhQf3eyhIF1F*yM#Drd+Fg_B?#$&h4S z)Co^{tOzQM8=QhvT@k3RFhM~a<9L}O8B4r~h>VHA5L};8o);;SWK{zOyeqr8ZNL1rhQN;v9 z@Bmo6pvg=#WF0fjvbDoQQxL&C04_&tKIWLB%Le={BFRuyo5h?iNEmLdVu46H6Ahxu zGEXE!RwbS?paKQ-sF>Lrh$4nqFb**+ z8gQs25I7BKf~xBVL53j1Z6ySeQ#D@JI76W-P*^9j32ecL5~^@AlBmHjHY7%Y_Ect~ z%F9euFgRN?z(T5HDoe7!G~hVq6{2DTLGV?TBLYtm;~?6qqNz+~L{kM3OacB2$lwG4 zP$cM@L_tmrodDzs{34iwtRpy8m66DF0HQ5SsseWh>j35OJAz#p54y*xibNrZngQ&! z5eX!TFv96PI8D%OHwGZdKssRndB@oa?07KFc(1-_!hzg}(5)W!6BU2@^K_Ns` zGgJVd26)!tx(Y#5VWJFtvH?!R%mB*)I|8-ckRX7b2-g&0PhC+BK?0iqy)tl&VX#Hz zz*vq*2%^L5L?l$>6o`dw8j)ZoPj!Gob6~n*{lGQ8tp&OEwp{e=LR{=2jo3f`1B-$z zzZn004CI5p7?WJ&Kjun2Pb`r`x|tBo7vKM}27vv_82XF7i6p!-Pr}kGW0bzKABd@F zn`i0r2{mQN9w1?WFN5hK2M|?M5%VCdJWm16h9H9b8E66zVxkBj(uxR!z&FHH1hEI{ zf|!8>ha(Rh@1>cMFmPB3y2siq992i#)ugZC8UZbWMWQup2aA{ zL=r*RAu|F@At@6csgx5$1GYzk2&D!{0#ZOw4IK!n3mPF*lrW(n3*Z|aloJCV;WR-u z6j-kFOvkW+t#gz(T z4^+oIXt88Vx?m5~Eh-c%x~%h{JD^B_La>vgAR6EZL01(3nnYj$gUPzaF(_m}vY8I) zoP+tQt$HyHQ2-Qk3I>@5%g_9IW<=`|dBTgU?TutR63t&mt1Sq(G z033z*j%c>48$9TEz3~I8wQg(87rX35|m23pbC(bKt`JZtw5a)+k-N- zx15?j=g(?n^_UUec2U#YAq(PAE=^$^x+l%Kv z7Q7_cR`6K6EU0K|dih=}FFq&6K6bYY4Xm9oxR*oc1!fH1^s7U|+_o2dYVRbZ)Zc1f zbSo(;hOKt9T0b$J8r zvxn?@cg)GK;;;{U#*Noh zXa@cd|FW44r%=PI*|q z{zS_4J3Ze`>Rg!F-+k?z+<1?YAoH5@`T=2kygucpW;82pJmA#(!?Zl>x7|AsrxBq8 zo`ibQ!exQcGeVM2HV8kKR+oS&y286EUn?b+Fjw$t5l5&eEF@#*=tlpi#`p}$MGW9AbF z{>hluLl)+3^`Bd^}sd zdzbV$*8X9{fPH0|1=%A9SgIP+GxSwPNpRWztyPKh?JM#UtHZCIl=Txgnr1H^7#f*z zYlw4TPQbCGkh$yaZmx^=YdCLS=o>cUN`2pB;kj{34rcZC;7&SZ9@|y5b8Fg-E1N4) zd;HXVWUus`>08t^^I*}CQH%CouHWl6>F}1wld{{d2PSTswdz@gL(P^U6U@4n)1?%x zUDl=t)x+zQva7y3)5Zify%yDCSbmYQ|H$Kv+4aGR^SJzpDbo&Jd~@OAy|p7e7o}V# z)AJ6vHx^z}`&bI@e0#w+#>tY@ONrfEa}HesX9IRv`j~D_1j{t@kr_AEo@9IXJwIU0j;gDs-@~V= z$IZ9^;yyYltUBu3p+)!CA5IB#>R&#b_O3nGOYkNxgOoM6qZSkZd@=St1`(%4Q{`Grv3KI5|jp^cb)Tnj+W@zlETMiud==Uh4 zVqH?K)!04H!FhDW<)>j;9iMGW!|Q@}<`u>ttEzgh|G2rUi>#Z*n0tPz8aFR<9XTSk z*EWd%3Fj`hP0TY&*Y3|8(9bM; zyGG9XXiTtg)yDJADUol!ncz5kMEsbF%q!2xYFb2skiUcyfvq)ApkVu!j7ow z&TUh;Y3%61FE&T5ee-R;6&g9DE`c+*axz#IF6OsX5;M#-(R>rXDtj z8SyC#es;;a7e3AV(7x1>v#xAEx4eV%WY?Hw0mqIg@vHmo-Bs4hz3bAYOIp0%uAjUp z-oMemu_ou#^gWyZac*S5CeNZ{3;He@DR$*uu2+N=ShvpME8I?AicY(?rE%WrrHe98 zHxhlzp=D7S*FV2^CUf69OLp+kRVztt^)KVgtIf(Y3+5Hyt(i5ZDBkjY!wGu$SH4JwCA~osS255=WAE#(nQ~Azx04zf`5c^=IxG-5yRK){>WkWYtAd)ty*U{ zb6p=#2M2^r^Yq4&v@;$jKAV`Fu%XhD@9@-P+qI`t%Sw7|^QkqB;sf5+%0u(Vji}9b zTUK3~UFRNDxb;9l=;D%rJE-T>$Gf5vXC_V_f4KjrOG7XG{E>Mp<(8BCk9Qk3=DU~r zdF9@BbnZ~NtT=yk?WhdB{BHWfqIQ#(^l-fMK)95w=RWG%(>yumZbMe*{S$|K7H;i4 zBd2frVeh)?77>@a?(>XXelRBRK-7$3RdwAPlAcbFzkK@#(xl`}(>)JADB~U z{`<=(=78*}z6FP$rvGEDUmh#0i#T*g&yTA}3_lq1M%mEOZcZnM|C-EASrvIF`9jGL z?H7d|_qjc&@~x5$;nv2U=KR9R9n&j{Py9tevAlA1^UH%tx%iC|L3S0PFT{ z@8oaUTYdUQ&42Ch|H03PM>v>=TV(vQJ#cMRVAcmo&o)e)l^Z#@xVG$K`im`Xn~3@bxP}-Q90*4Ub!$vV8HC2h;t7P9Ke4+=FlLI%)0o2$Sp< zYOiEW7*yW5He|+(WuDic%q~-_4qS?xH2#+1(W||0Ok(G|-FoitGWKZhev~?3{LPke zzjUwuexXC^ss(-A`OPWrIia8H^+HMaORZ8G(%TmOy6VLBM^~mVDXm*_HaO^;8?h4t zbTiHWuXJLai)pJS{LlSO)kOIv^KY#tzE3v)AFBx#^Kv!e)x^Of^KY#ttQ$N3 z$7-UaeES-U;}92 z8}a2H3iQ}s>}-XQ+Uk$tJx*6H%T>ACZJ+|m(iD-r=2@b8-Mf&%{hVZbC>F2FtLgGac398I7 z9Kmo3O(B_3IG$4(Ru*}gVnvum6O=^ptb&k;8B(AKg;aP+k_A!5JWLT-iG(4Q$DBYT zioq%c4~q&779dg3ZJB1C+PnW!15G9vf@cVhp*RA;F-U@fUlleW2nviv@Xia0B1lLU z5To*pC{QXPGm?bB2%aPbSX#uYAW0$*+rTcgB66Zk2@3d*!xF**rg?%z93o|fR1vEp zRb?>Cv%H3Q_>K`MRwYGvNEJ9i;y9V*X@Qh5l2}1Nk_={G0dWdJ2ox*;hn8iEL=uMu zLRDczRAmyAG8P$_jA%Hx#F2u4S(?EViA4)FK(TJ5924cggBoBv|RT@c*L@AOY!?6TG((SRR)g+Oj zDTPP8#1Mi&ODajKB&3y!vBY4^Go;FLv_!!PRasTAf;a|JQlL2q8sr{egd;dvA|#oi zU<*-!$s8aClLY)y@D~vB$2&plUtk-gfgVQsMC=Pm@b?8MMOCTPFn62YrteJBjdvL0 zz)Bp$gX3sH;b@wXAQ1s6m=Sphra)5=Yndl_a32=+c+e#}C>mlJ%t$l<4qzbDq5|$` z$UltZDELgv3QzF@C4=t;R%BQX13E+&DHJc$n7~+61p+b}5=e#oWmIr1DYM{BL@J1o zz)>{IkSs0noJ6pY2#ALrAURo>pvfd9ku1zoMZ_o)kcB`nlmsCmXjx!r1(KJR;T$|i z$bc&zu`DlhD$D9a#fl=wD1^lFBIL2kN(7=Lpac~xBWY1W6ygPlj3kQ^i*tk|;*tAi508$TY{XA|Z$b5c@Rlo)ss zJdHRCtB^Q63DiYPm=Hp}k z{y8;kyrV(tq6uP`4@p9IWpe+KENcT?Nf0&xHpYMagY@qGYmBww|2+=btTUQ2R0F{O z_5J_NAsO`U7{fF4yJIXx5$}!B9QocDOTV`s%TrkYoNh}5r@@IamI+P(;6pO1m?tDb z1sKpg&Rdypp}MrGwjXmeW1~+?!Uouy`cK{Mq8l>p zrUtN-6$@0h*U(njvJ45)chE031!pj7t4CeE^fQ z2>n0!r{6pL^XCGon)~4YO+X64Di}eXq7|qqG!#t&_=1&aNGXYzXpW~;a1Zxi1O&k# zq0kCE5C+A;9YBHTODcyLkr9Eip{f!3Dx@L~PK($-{Rxm(^<_?m`vzP91OzpU#4J=$ z2~!FuL!|f z2=f#LmjU2FiU78wISh#kA0?gyvmqp42tmoJz>ru~1-QcqMuNm+AfPm3ARu#{n_uAH zNk^A8K0)WVyi&Jl!b;r`SM$`V{)r~T@C4UME(p0zbelMlaGQW9P!n8uigTk`61%ug zBqu=$pEPkIojPD+!-v`@jrpy78L0`WrvE@k8XWsbiZRT$7U_fG<@+@|`n3-n+&$-D$o;t5H?E&@VX-^%j;^UR^Tu5^ ze#hQ$7@c}4)HHVP!XsHqM`LHh9RE|R9PXXD*Q0i(-?C{viSr#kO{INya2ct+N_(9^ ziR7fngq=esIxaO^a;s&W-F?6K=MmbyE8A8N3hfuaAlNh9)1vWZIv2Bs(Kcbqy&G$N4M;OvvtbE# znzyUT$Ol7^VVBk3u7QSThJmiqQcEJ@L%S}neGM#29^Ux&i)t6QRl&ddeDGBu+R`WI zOI7epneHC>I!N|nMJT1&Rszn#KvdX)ZPz@fC|@ylBZ0=zn>)Hu9Z zSHTXb`8;fO_`!u!e!o7#w92P0VqV{t>vKL{nWM4J7ZmK?o;|wjcQeae$rS&7VZl2) zC?>Dvx8M?o#s~R5-Pf)492DwNX<;$2uLBpo>h=@&{MLfj;)1R-$^5=J?A5il?q%7_ zdxxZ095A>VSKJWy{7}q+vX}m0i)I$LrCV7)+hpBw>eIrrj?>rXB)Hp$1?)R?F~G}D zPA(~k(sI5kIAx!cI(l-kmSj9D)}iT`((cm#$=dB~d(BGwnNQNa>uVLK9dla8&Pena zyf&-yZRJRlXF9JHfg8>oxv6S)s$18b>|Nb@S~gqM8@hhBAbRghXOkoYau5EtTlZn9 z^9FoFFU|km#CHF^Z>RWe9Wujnk73Kg8>geFr8@bI=SK@SfBD8LZPAj{^uXQ*M*q0w z`MpjEH`CFZhZ)d1@6Gj^b69eow#Lz8&f1vu!FS$1Sie)7Y#$UFQ4&XE zecy~-c<3{a%i~umj}GccdR^W37vma(U&q|)KHa3$Cpq@^<+Fv4$6OVAHJ4|2nh$l) z?x1tNZ!_+n7yZrHH>Gw}avgKU{&(3#_oIShw^H;T3cZ3Y|+SK1TUm7)F`0qb2 z^GhPneR?4Mc-gw_d5@FEwN>peEArCn#mZ@4Z+|tSJSgDho8YQL=ZesXyfJe#cQ#zE zu>CHrVzg;O=A)AIp-)cd1s5DW{w&UQTHLICxt?ZQD~24r)3ooGaVB@uU&les`;UOyjC;A6Ks~^OIIRI2n5KiSq^jcH48Q&x&Kq zmY!YyCcB@X_{n#sr^Y15Un1ws{?*jo<)TGdTeY_TwnLM7-GJkxLQV5;rOj`tbZjlW zPdq(VrKH|l&aw`_{HUyJTztYuUiI1OUzc7Ry2FXCa;{q9Y{lhMb8ofWHfgXAF+Vk_ z{1{Bl|T-^D?@GXcq3t(F-_C;SMMcZfN?+IB@$C#wB(mBMX8F{_%q_)dm{bu8}`vemu* z__af^34Gdgt1u%iJKgwkR_66}NtG2bsjiL}!rv7A(>d$#sg1{*ZWinbYH(*}@46jV zc4P4CagO~m7oD?P8oThy&w~P992`;SP+a!f&%W?d(@r(%&>r*inRSiVn@tw$(i|T) zbUq%FgDd^R4mh0iMctG76lG+dT%*r0|&)bJ}>-3HO_Uxf0 zYsWc1%nhom=u>ICee1&vwfp3kw{dCp#Zk9?b5;cW zkb5BAv~Jvr=E^Gu34Mya%!5r|JDk5T=WbTsSESuZ`iY<1u4vz5IL3e0Z*aZu3e1K|3C_zb&)DDk8`+>->Zn z4nvxr?Ay_ly54QLahvezKiQ`-TKr>t;6z9Hpl$OK>yB8Iq!~M3nxt7;sUd4Gt>_dMc3G_E8fZ}ZZE zs*MF}?&jy!wJ^>j6PI^9>}mRHtZ8TQH@*-0+l`V6PnbEUPn+qT?nvXJ>I!#B%dRLk zds-5EtSW1Mc;d|ctv{x8*z8<2>UvDa>vXfkdM~F9%_&i?pSH&(6egKwmNmAojq391 zwqqK9@%}w2)!B@+HGEp0v#sl{w>?_6d@^iA-mRAS@Lx7tOtJWRo6$F(!+YGZJgqi` z_jX@4?*`)%nc#5CAjCnu?{0Z|YD$}fgLdUcTTic(PG)Z#ulZ-EEGU{4uZOw0As#1j*u zl8TIy%}k;*ujelcd>;F}^`Uo-oS7c>jty%GJF@(zG-XpqR?N+Xc9-&< zbSD@`J7NB{Q69zns#bb$T9A_IJ3RMkUACW@>S*1)c~^VQo80D!20orX&+qP-KiJiE zhJDu@!wF0RXcI|84w_#vjx{g8Qp^XKm2GpM~yP zXS%b$#`5TIYQmqBI1at50)Pz1zPmW|8Z7_U;(yE~36THZAEVz@F+i~-^y_Ib>p#*4 z46^Ua3VLPvU1MO3dUs>Qfp+oU#?UFgJEm{9{~G)JPpc8Zzjr!>@VmMPTqel(76j$( zy^Tp8ak|imF`5FhmZFeY0JRy!InXDuLO_cT!YM`33iRU8M}m9=IxT$5Ntl5iQDR61 zBoRO9BD<&CG(4d)>R8a;29OOgL+CeAPOMi?AT`396g0^dc q#w~W58lbMUfuq>War$hH5@ZAFIp`v@ca1g13}-xa=%iV0#{U9h0c!dH diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTATest4_FIPS.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTATest4_FIPS.pdf index 281fe00ae2002c41d6cc0a757e24ea62e9512540..726db904f2e127fb674aff6927a5237ac2f0326a 100644 GIT binary patch delta 5593 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 S-oGvkR_eBG+iOtoy8i|Qb_PlS delta 5571 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 Zj6alHkTMs|Z(j!*3v~hlx`cME^Iv)w27Ukl diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest1.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest1.pdf index e08b400930a2c6eb18b2425f256000a031d87079..c818f5b0c47de70d2243b4d7f9c879189784d648 100644 GIT binary patch delta 4763 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 diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest1_FIPS.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest1_FIPS.pdf index 982660475d2a6e53b30873fe2cd6ab072813cc7c..a9d2c5900d2bcd987ae9b8c295d9dff3966148df 100644 GIT binary patch delta 4497 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 diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest2.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest2.pdf index 2d01b78c96bb0c583692147a95e603b86513651c..601da3cd624c6d42162a7ad9efe5890db215233e 100644 GIT binary patch delta 5653 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 upcr1TqgG+P*=TI27867C+hR#wc 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 diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest3.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest3.pdf index 1bebbeb97b4502ea8e122f314a9d2992b75d2642..a76a4f221813b875157af90233a261249e4958f6 100644 GIT binary patch delta 5305 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 GUi+VI;O%q( diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest4.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest4.pdf index c749c40d12c9132af480b3840f8c0fab2afbcf17..053f8cc08bcd440caf638a32d5987ae5579176a6 100644 GIT binary patch delta 4450 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 delta 4992 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 G_Wuu}N939S diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest4_FIPS.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineLTTest4_FIPS.pdf index 74ff1eb8d09311b474c67e533588c1dcf53b56ce..97a5123dd17e361aa526a09492e65e2ae2df4804 100644 GIT binary patch delta 4081 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 M`s9;?MkI#*FRW*;LI3~& delta 3986 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 vhrURNMyykEyS`(*)JQl>m*q#<@opF>(4 zxP64+KNfreK{x|vLc|BqX+}Olp22U&#EywLabNzu|N3jKRrS^PRsHFmqs!kO{qfx^ z$HHkRNo@D(_V+7!`^S~fZJ)ooJF@LpPoA7`(xg=3qfA0fj9*uxu|09}wa+MRuV4Gd ze^O|j}KEjqVd*;!DC)F|%^Q^@@s{^pCO=4u9WI)M^ zPO({KIS)>YN3FCE(jmnyXW>DPcc3on%)vD+GB{LMo6_nWm1i^cP)M*Nonmb_JOxOszzf;WT><5TgY^Tp(LQ(#z^9;>r441v#cF(`c?~CD!9q z7Kx2K7uT+RyY=Mz`&k;IpB%1XDosRej(5^4#=pq50DK9)%8kwI3-r`piAs>!}V zPoN#Q0qP(s2Bj8YEXs2k)K+IX2%{dzKW7@9GgL-s1+9+(iFc=wi)v>obJcFe3#wYW z>1c4SF_D?pIW6}HsHsbxGNF&f`$NLn2TP3thM;z+jYwc)w1?$u6tG`%A7xDxYBX9c zRUeSG#XzosjgdZ>BN0^*>#SalxC>f`n>OQuwzG&+2N+XHdlBZ>QhcZoTl_W87FIi#|)dJ$&JJAHTnR>ekWG{_KZ8 zdgZmB-neo0{eHfFvL2k@y?^gaPU-B$UtX+xhr5^8+v}~J3XwcA-dS(oJv_YrJX9gi zoc;LD%h%t$xcJ5S^JixdA3i+2dw&1){)0Ep&M*2s?+^S8eY2#~H!ptv)-yM6?*4t= z8~^h_{yz`2j}CnGa`(NjfA)4}+tJ~*ySF>mog9B~!&x&wvj58l`00_Y?AnLEg{I)drWJnMH*dGSYAKH9Lk@1lp%-Hq zLcs$17>I}-YGoeAnPX6S!5jf!R~~2zQ^DqL_&bAbFjX}4T&)fa!oZMaYt&;zT}B6a h8~P-AGUSt-YUXa3`S0Dn^BAT*A3y!{i?6(N{7(VeIS>E< delta 1853 zcmZuyKhJMP5zd=?k?=yICcY{ckhc(Ga*3Ip*`3*`AS4K#fx^N-G5cpq3QC)w1ql_= zaB98-`X*ReSoi^KED4_gK7u|+)SGZQ$@#N;cIVGC&pdng$<<%}c=g%e?p+s`TV}7f z?;ZcRr^lD~zIQx%|Mn`5_n&?6sZfzZ`N@Ny-F4w3 z-;a9_o;&pB-8Z<>+MLzrj-FCS){?8+&f(UD*nH4#qqMzgkJ?GMrsc|LQupbx`0F z_(tDdk#}WTeYmnso|!}SQrlt%Kxg5YyqN>Z*zN$V(HtxKf<4fsE?L3c!d9En0YZQP z!v@@B?^`DrR1MIml$yL#QwMj?jY1);snif2G6J@RMM_!EOxl?&?y}{m&wh2$Y}Evr zxiiwA*;Y|_U@kBx20jReg=TM@S_T-_!3myASW!Ku4#XzS)rLfAjcVzX!a}$!o(1>$ zKF1xYNedwiPa@uw?=o=r`GXgKc=H{*SdQ0jZjOIFeCii)2@>qaa)NzwuBnok3_$JL zk!H^=`=D2Tf6*Q&PUGM{;JJsKM9VTyP)X1%(=7XJIrbi4MyL;`+%tGqYWQi*TiHIr zhb|Qi%d@*$O>|F1v33QoX>YiRc9L`}gD5;(n-}gh;Iwxw1bR4%cwXUPR%%5Yf-1Hy zhL4h{VNphEqt;C>YP*+iKyUBmMQn!yPN!}Iw=P1}NHPMwIwqLB)i}Je_2i7p03nto zXg;fR)q$3iHf(MIqXL^j7|@i+)dJa1Z95r>M{8b6MH8a`&}ad~!vn$uCCf!h#(Py` zuxo8nBuW!8WpuRR?AtoGOGF}A@Ei1MZR{dTTl%s&DZrp?U<8N@2?Uo+f!<2C%+eJa zg;wK0`kvZYfeZlZSPE0lOTC|cnU$-dS0`i#q6zrQ8qg{p{r(c^cYpfjhd(%e^Xe;4 zLq`Oghp+wl?)le$^2D3X`IgS>_Wj#yi2L<_21P~u(fohs z%=@D`yY>IA_1cc#z4`Nty3?Zt-)u5S@3-gF=rQ9~dj0k~Xq-JZSN$=2rd_e_c;PL- z=s5Mhttg4pVp*)Qb9rl!nL-*1M*};P0%n{pakl*KX=OGOTVnuwbbkd=Hp<-sk~|tl t3af-eN2l*H%Vwy4hUZMwo@Z?C(3Pus{PV4Mo;Jwv^-C|k@#|k*{~L$r>x%#Y diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest1_FIPS.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest1_FIPS.pdf index 7bc6468c1e2e23f1a62e24a1aef06373f986e431..0fc55dd84e1b7773e84f6947f2c9c7e7ffa25916 100644 GIT binary patch delta 2080 zcmbtV&C8uf73VckX^NymBTY8mMGGwr@11kzoH=JgNrKXdP^d<9qqWY=nP~$xk>sTj zH}_BQ;NHgW+Ov;fsQKC#Ka!P%B;o4U|m(%v6 zD=(e@;^Ie_pXnB^g^5TI~Pl7Y>wX}#a%OD@68mBH*t(a;>eM88bFYaSD z3inc_O`RR9)W%pOyw(*>6?aiew^f!UGTP6T4wIv;F02ig82Fe{=T^`fD z=1!uktLS$7>faC3Y|W*Omx3fJ)|02aQbHGCBSLCqNTY+JW~jk(Zi4*4U0VmdNm@v( zW|KUv%#bE$!9RM*kVnpVGyFswgr7gP0scLCdd;1U8GcpUYQQ;+I}@V0MVy}Et-`Z(n583+Z#FOvqBR&G1~`QFR<2!oS6@TeBel`Tk`h#C!85DO0mWoc?6wLilB^{Rf#!IU0SWPx!8Ddl!N76YRseMkN;AXp?0qR@+4Dq>iIts4%9(rCoWM&zAjhz@R$q%T z`6vqHH7I5R4nj~CeAvFay3uXFcX!I z^MGLE!4oJRbz-vGxCp=5`R`9}y|Df9bpNYc*Po{fj!oqCM4R3E&40h2|K--n$zlJ^ z@4Wr)_uqJ9|F!mLes4Z}bnn6aJ)frin?F69_m6LH%@5}XyUZ!^li=O?;l1O>S8p)J z&1?Jb-hJ!U_s`CL^618X|M>Ca(|eB|oIZH?-u}^9yC3ag>_y%5^!>9RfAHGPo4fy< z_ul_Jkp9mD<=+RsbN=z|mp*?-(+<}}O1t~JOL@naK6#-6WS_)8i$P&eVz#TFtu>f? zyLsp3gOT}@1)pxhD9lgC3T*sz%rG>ci7DwbvEt9+x~jz#sMS0X_z_$+Mz1- zx@f}1AuH;N*#<@#1@2ES&Y1DIuquXXjLcROd=BHm;uBL^u>&`i)gw`~dccRZ;(Er_ jSQ5r!k;VzPp^&z!aR2t}Z`^&}A;U|ryz=JTcP{-4H4HP$ delta 1835 zcmZWqJ*!?t5ax2PhTN#pA~CrEy+r~+gUrtC&g`a%f+iM+^$ee>yzR?UcFY(~q{F z4|V(P@agT`(dmJ1_phE@PDM7@_vMxHTN=3*9FD^X(Wi5j=zoX4c%vb0zxFKczvk%lX^X3HY40mrHNcI(!a zvp+7~IM{wTy0)W?V2OxJ(lmLBO)XWj_Tt{cr4>s)M_R*&r=g^xWu%!XA>p3NJB%J1z1AN-u}ekq0MWO6_4i#` z*b|-R$#;VrWQt3iiKAZvkSE~N(r0I3})~FM=OnIW+12|Ypb2Xv5anjtIXPxH0MshY}V$hhbFW# z`$WJ+>ZHjV=+!I_T@pQN>al`G$(qrG)=37Dsnn)Da^FP-Ejr50a|U3Nga!ETUbu;M z5m1^F=1eqdgFT`Co{&Ls#yj*Ge4}0gyK<69g)5tA(;=V=V^(UW1!!AIHMarg&e654 zJZZ;kc48e%t3d&fDr5YHRpp|SFqa_Qp7sr8OG+5sQBs$tGkP;EBw$6M+65>uTXrMF zu~^v_7sOnUkeOW-L=c376wTE$)FqD{G^z@Sw2BVxb(R==*BoH8)vUHUsFRF5>FUDK zCJ3-rSqy#ahNn3)1N8176gUgf!36oxhb2T9p4%*#zleRp!8Hfe!H{)2>Hy^IyVu@% ze!G0<)&=lWa*^~Z$@cD@uh0L#-ab8ee|z)w@6R5*apkGITu=APMyK~rkL8q)A1=~< z3Le@2wVC8cHal(q?X5L!x9?rwX=8n~;h#eW9eLcQnxAlPn5)P4K?>ywTb3vMnKEPF z_RGE7yX7W}>kv#uE6botEoG?vVrcy+ZDJA$va)&-9|Q7Y3;~5MRGQ012UiHnpXzMY yDwK!KV+_rX(`ikEEaC$c`!8E=-DernqCj>rQQKEFmq^ diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest2.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest2.pdf index 5f280313fad1b5011b4cf577f974aaef1e1059dc..ebff5e665ca34430158baeba035f46247cdadff5 100644 GIT binary patch delta 2079 zcmbtVU8|MH6~?L!93{38BZh*zP)S1M?Da8gtyv+c1XKb-AfdepQsy(B)@bk?w0FDE z+dx8Idf8Cg9}w-iFYQ%s+x&w3g8YW8t*H_%z3JY(@5`)NGqXOP=b5iQJ@VJjk39J2 z(H(SOkx*LQSpI!fmv4^#czNO2xgYUZeslJfmr!UjWQuPE0t94SzBu`_!+XcRKK0V$ zIp|O3Ajz_N`IF@@C(j;-j2)K0pFFet{Pd;E*%EhXy$jl`W?5lWOFmjtaj!g7Kqp(4 zUbG1@ck9EHIbqIl_~+A~9ob}0TCjF5rL$J-Z4N|;&_NBEn9UUpzG?^vBLv6OfX%(qYPQ+=Biisix z_J{~tDsyZTG<3{UlEzYKsvLug?4=^uV4hAn6`hy_yk?vcVnwwIIAzvBTzDG9;z)Nk zPpES;!kimz(FARon$LnPEsdr?B3QMiGLURoX?YX}BFME&H_Fvoq)B;p@}{{DNo}&= zh&Bup@9?#!)Lp{QSzNS|6_^e9L^X6CZM z*>5)_31D(=JpiGWb53<)RMeA165ztnq0i~8q7wC2Z3(D@k87n8!@Ta-=7i zV@G0$C&fFE&K}R!lH#ucCjfrLg46ilHaPs-E9ZWC>X}u`H*cJOwbWeN=w1b^8dpxE zmqvl)M35$G8ql*Z7cTsM(_x6u8X;qNv{nkFF-nx5A~WWI?Z|CN?19#y1b3ztsIHSz z@;rQaXAjOg6vi|jqer=l4~kbZo@$-C)*elZBb>>BM^)@)LlE$Fg21X-^kJq!BdSx- z#~3ZJ8=!09>kzXzbRd+}d(d!ptfLm2v8e>$8$|!g%+tk6gf_W)Nrg&D7MM5f(t|&d zs!gJfR$JRNXcD-j6mV*Y<^kE*EocD|1#s{y0LkK#DS`DI{7hRC(3Xyrty@jG>KIzA z7R`d8Fp!cpo1qv%_aJ>#E>quj!XllhLu0mRux(23+6ITP)Z8R{p#g}&LCXOOi4Hd8 zHheR-s zO#eCX#^Hm@XO3SJ&nwveR<~C>yrP{)1Jn?kr}oD-3;I5_*~-87HO#oYc=Z<>Bhsf1 z-!F<==UH0_)$^MNf1mX;QGU*5{M>%#MB%qQyy_c_n`zP(h(U%xDTSJIoh7)`si=nj zZaEl(0kuGAw1>`j#|A;tl+&C6b*16~O=+4$LZTI>>dtor<~F?m delta 1859 zcmZXVy^CH|5XM=vCb)@2A*<2CY>|MFAoFp~oH>Og2qvi%vDM3Z$~J~1`eeXMW?%X-g{GQqGzdZQ;^MfCMy>LX%Cn7bS zyubZ%!M49HT-+`l-gqj>c5-~Yy?%J3Hg?y_2*jq~Z($6p-mYHmD-Rnnr%9r?>@ODz|#G1{GeeTcT;3#4 zfNMB3CJBBbtWmuk)753xY~khK5-SR<<#e-x|$}YD9a%yrG^@b zASsKA`j`O0p~NbPV=A0vMM~q0s9svtoIpp=n%on*h7@Ql@W)!yW;Xk3hv780S6}*j zrx28~%-M7ATy1&nBeJ{qh57C)>}64@ML6<40lCzv2~*7so}GLkg5hC;o~^NiZc)N7 zK-uGb_9?j9Uzgm#zMeVZ_flFtH$hBou17yI^z#+b{R`>y41loS0QXy-#F^?LUlN9)@mJ%{GKwAssTX-pZuc?@E=OA%5bbV^UVL>w@(k=**?B^|3J52?tOTA<&77gevq6_X#aEa(aDjX z$kEvs>_I7yVLVI_V&Spn>+L3j}sm}RI8qg<$A7op(0P_!H@Y|3~Zf? z<&qHFo_$z%Sl-deB#j=J$SB?_b~^Rc95A*$-Ch^S)KO~!zu4|B1@N=upMZz8Jt%2X ztdzK>Krt+M%ubOvuy!t#H)N zUOVA|y}b}D>;?Y<#ajJNER-Y{&VjRccXsCcelz#(p8Rt6f3P5H2oSnR1old1OyBYa4A4lA7!* zM*PK0kFgINt8M|cZ(J8HpU0RPs ztV?FCR@W3mvaxU}GO?tdJFc!R)zKG<6Qmkg=$3<4F-K7?Rvi`yk;q5$k!tB9d0Tk} zFE?FY%NVIa$w6#H&hW##!nWCC$BtaL~*tcfP!8EV@2 z*e6Ai3FRed@EonkvJTK{;W|ofvQih6L7)i^L$TbAQ%&GDn$>9Ns1+r4E1Gv%G1WzN zEQ%m?E*a>x!k)50^;$|U*5Puc<8(zQz$bMZ%@)c5rrHSxMMEx5z}Cx<1r_AI6`qCr=`6&uQoI{u^4%GObMrrgrx~` z;z>iT1m!-@D0#X3?Be&E+ZPwNwh!y8PcX#Akg`{Zx9{pV|Np*xyZv?bwL)~D{df4_ zaGnlwe*c4W%JskXf7dW<%J#{fXRoxheSPPpV|!===znl6+am&Hkq7sw7JX=~ribFG zVJhFxXZ!m~IWFKgYhXgA2^btewLWMJ%nd+aTI~rM8Tw?mQ+IwDa~85dHrTq4Z?=j~ yPt;umy<90kMhj8&9R}8JHP5cqSX09|u$5TyXzV9x`{VU@9;@dU7jL}v=J`LxOsI$e delta 1684 zcmaKtJ*%BX5XU*(OQP487(^^YJg7lIi<#MZ*{uwMT8f3G!oGF}wX!>qCWUrS8(T{w z+)v;q5DR-dKY)#u__&+c^PP<7^6T?^*I#VA8}$~C z+(>o1^Zd83{Ey@I3jU_btOt~auomz}n za*gEKGeu2a!-{)g#j@5c8xQfywdTn!x0I>sSnMNek2Pw_hj#hhb6*@zf%_$CZo&JV zNJF?dD=y8|va0rqkfM979X=Ts5vAS6=ssf zBagDg<|;nDu#IwR#5i_v8Mw37mHOn;F;v?O}hVWFODo82bY-n*GsZ*7qn zE+uVho>J5Txof5Oe>X+%xB7@Qy=a&C8-9|3SFQUM)+oY_Fqc-V^FLDu7{|- z1Z}QvaCztEYd3E^;kDg={mpkh%^IZAILR=?*m6%(X2U%=BlB$*ZYyK=wte}+%iGx- z^OTYMnMSzus>HpnGHVu}np_s%GB$8(xT@}JLR2$^H3#sd1{R_go~{+y89*@B%&o3) zHt(TeBD*`828e4zdPCh58510?6ECo{Pj_mRlP#u^sZV34iKkfZKpFC?_aa6d9bsBs z%PK7^V~P|^N|-eVMNFQmOwv|X(bkX$Ad7IO%97cqHn7nrDCmBgrRqY&z9$1qO3H2s ztghThYwBqSnZ1n!>J8lHTKC1CN9GJY!n?TV>4NjR3qd*r9>lA;dT9zs!3Jv4&?A=m z$dR+6CZ(N*v#dTUVhdfWwg@$~qD`Qi6`@<6rE^L>I$qgP@Q}Slia8+;@)FPmU8zc{ zMavw0KutF5l2I7}$aj2MTZ$eK4Ev|O8{nk#+Eg#Uy7l+X?VEV_8RT@wP~M@mJ&5n0 z{%^e9JA88aLw<1WBP)7DKOj2ZIbNirT>Lv=P0Ek$4{du_d~Azjd9)Uc#CHF^w@&hS z_K`r@=w}K*{|5l$`u>ZbH!FTKeTP{-}aN6Cm@SXCdx4;O0@QZey1P^I)(HZ zXy(bGV6={gh@MI4xrEFUV1w(lVttM=a%qerE3J1b0I-^(=ujTww*OOrKTwRKoGn{J V)(>s_>-MKl@x`rMAAJ1b#Xr*|v||7O diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest4.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest4.pdf index 8fc4861c39e5bbc85eb3361e2648063122d356ed..e2798b8a795119820ab3e5659f1a2ae78c711054 100644 GIT binary patch delta 1950 zcmZ{lJ*%BX5XZSBDqf2y7=ns=dzT6sdFILOsk6JIyuEeyS}IFN+$5>t_$Z|{?Mhj# zc!|zBdh5sz+jERGn;Oh=lx1EM^35qzjGFS~Oj)$|NV8H~J(ZPJ2M#xHrCJi1nU%bX zYjoM?HWRAGxO=S9_05|hq z!7oO@$Ob5#a~cS-X31!AX2MVK9|OdW--8u=>mf3}KV0Vl`)LO!ue|i?bLakZYJ30k zo0pBqO)a%j%(cZZZIwg`fT0Hk4d=k%z=USEE|RGC%ns2o zlyUTZk~$NL$ExTydsfaMZB)&HL@I_X%t6q^mFy1xxF=dRD3P?}U_RDtju7E=Mbq$A zvcoCIEORB;R?edWnQR#tL5m_UR66l~aWkNLD3eRUJk@M%LCqB72HJBDDw9f;K|o70 z0F0Ow=pC~6K12@V*x|ZCn$%HZD3E|b>H|tOS4G9Es#M`VV>GUijU_2k*-OC)r37Bn z>QJ(-z^Q@cLlxF^56rjI@`XE^n6DKe62b$)L9nZfgO@qb4x73<#e_CD>JUnYXAEnH z5e}BoMq8-DM2tKfp{28)xSqUr_3pD9UA?sZa{cl%2}=k5E>YT!ZhZgm?~}VXt{mYZ z`0eKPV}0k7FFyP9?Q7R|C--iC^TaL9J39RBKHnYV{W!k=fy><=tv^_+$?VZu-T6b? z3Q66*e(&O*jUMekJOk-EwMLKetyNChp{b|V%ue|;s^ws}y?)#F23c%^>1}x0MykUW zh-j2eBD55@+3^~s)-ym(bPzi{iXIKL!d}9}SJ)pPUbQ-Tp6>pLE7)2qxL3IH3 f+^|b{I=MjiK+2JBzu*4wn8lATUVQh1TgU$Z4w?M< delta 1915 zcmZWq&8}R<5!S^f4wpzKQ7|zQ(iMsY3J$62>guXygA*wvS!KZ%NV>YZmn?XJ$pf%J zoHY`UfN~dEc$U_TQ{$cU%&X%TEl+>s zG|NQ3Q=As(ijb+(8E>}HYqh;dOUc#dm?pskKV(YG&e0^+_KDW0<{Bt8ZM7=4eGhcn z-OFjkm{}GtucPdp%u|zB!LTbOVg+tjMi5GC#@=K)L$*j)ia^~?V*;Ut_t-<5uzSQ- zOd}R6sl3y!_mI#Jc-;4fQiBiE`rIa@3mB(hrqOW!SkstuN1sRR6K zOa`bIkjh9O51H8<=oD+kXg9D8*V$+glrxME4%%Oxnd)vjq zZ=HKHdQj!6=0GpdQ;im0OF|Z7OITmV!@P|qv&0Z7GHr5c>>FTaL0=J!(a}=@c;}li zx{JOfI`7%?HPkA#%8otP0w6u8WcsL_699M_zGl+#$=$C{WdgR9S`)+vmtJyc*d$ur zXK081MfVo1at3V_1-K2Qiw+(RZ#a2Qn%U}xqHTjLI0dT2r{V~QJp2auc(EujB?$5? z#8>#q0#0XLL8Z3j`okZ6dF%R{SKoT>_7f$J2ls#edd;jWT8DxwTZ7(X45Fst|uwZ#hZ_SOyA;0F;OZ&eZ|H ztb*Z9avQ;xF`?G!y)1xYx-~lxbJ%D=*c~<2$wu9f5yxCS!rXfs=Trf}11fDDAgWon zojC*=4Ky`J=Zfh%5@uw`sBmWWAe}qGSL@KpYFaDyLb|M}IJ98_ibU7Bpn>u@g*VXE zcUx02?*j0s8iokWb&ir?-3hm0{zXeyg`{R-&Jm$#sIFcZ^ur#uupQw8jT!vcH!N5k zhAFebXRgkh=WI-n>F$Z%POE1RbiL~m_a=g9LFmUE>uP+>5y?y`r zb0R{E`Uc7I(u2<)|9}0@2fw_ye(yK&>@z~gzkYY;O|vT`C(+f1SChjc@=~MNr*K)q@`1Tn;6;5#1r)L-o4-c@tw=>0F8D5=Kufz diff --git a/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest4_FIPS.pdf b/itext.tests/itext.sign.tests/resources/itext/signatures/sign/PadesTwoPhaseSigningLevelsTest/cmp_twoStepSigningBaselineTTest4_FIPS.pdf index 80d0fedb0f33ee652b0e393c34dd5a2909e10774..9a353f45c57b31f88291dbe45a42be9e47f37139 100644 GIT binary patch delta 1946 zcmZ`)JIh{05au&c$)~6R;{}Dh5CV!Znc2DQZj(!4qLqc6U~n(9il~*?>1%0eJgxo* z@%smYSXuZB^dI;KEPP%Qh?rQM182_e?96kS{pHTluiqa1@YAU?%DZGqckgY#o$~FE zQ;%(rpFaPH$M(wUmoM8ADv8ZHC1PS>nnKjcsX7(cLhMFDivRWG^V7dSeWo6^&@|g_ zKl}6Z|Fd+vdhYi7BaiAU)m(WtrPhkKA}uE^F@3C-5nQ~2C1hmlX-RIfEN7W%je%o& zAEPbNj=HJ~S4A~#6;#zu{yO)?(f(l-2rW`n$wVSCy7oGpnsnygxloqcXW>lhZpg{z z$)u*jvU-g)Y7!3VGW$%DCbck%-laxSQRE&&ZRTja4^N{NRppT?_u&?K;_Oz|Aq_QD zxX^YP4F4$h`h3-@HurP_gpkt^EJ5j4lP8^)!SMz&`qX3 zc$L(mNo~XClEjpZh;piHX$GCC?`Z{br3$bcxp#&>RInNxarZn|)KU{lo1?^-2L{{& zjr6+60r$v<6wOMmKu9tJLrB6%jq>Q>P^2aDWx%{x9buDmiMDF$7sL$8NChx0Thr07 znyt)$k;ejIx_$TJpL?FG&A~m-+$)7u2a^z<4e}^i*hiz8I$1MgUs_hjdg`n6HWT1i zk7Pq;gMt8t5FW)FwvmcQ#PE=0YcP@AwG`fk${bH}S%CyfsN>|hm(HI(_mEvlwlB}U zaG9Nym4E;Y1A1vjhgzgsO$!BqT4(^NQf@=GZ!UecZy*`!hz^1rFh{8e_gN{qXAw@C zQtv>q&I6m8SDFH~c4!BJ=m!S8j@H2|whySJBA-IY0eyFOxN$<hM2s zEDbu=mXI?RgJ7ST`&tYewc$gvm1emkleFoR81>@?tc#~c89pPJg!UPwac9&U3_U|- zLYTXTv8D}Y4XAN(z{jNtz<@{9ham2ST_RP(@Xc0d7oDSL8t$kg#hge~W>gO=3t@1R zb+*bj0s=`ul1?x0dUE#4ThDB}D;KtRuU&eAE2|0R*NC?}*S`Pv_es6}`q5F^KDcr1 z*e-wg*(V>rdiCn=?{> zx^;06)8GGpZx4F^Z_MjMa;vBRt~kytQZHLatyee~u#$4T<>#fxveee?Kl>&yPC delta 1890 zcmZWq!LDXQ5YC-D$XtXGhC3E>H^ah3Rd;oD*J@ZWVlxsu3DVWoy%g~R|103wN?6%S z?i)x%BC+rUJb;83koe9J!_4BG^Pl>=yQ;qWzVH0>`Oy!b9ew-V@fEhSB%IFP-+n&U z?bqXnw?{7DxKw5P@$~w2E?P3RgeOxXCeBPN6U9c?o;@x^7oS}I<%uh?FQO>6z4!F@ zNB{o0=`$a!ndgw2WK;xjXO)?GE{ny@X~}HFgL0o1Q|F4rRm58@g1yBxl_smI zkPJ>bs%D#=OZ1A=?0x&{^tp?tu6=lP2vRborh+52P$t2(2*r}1O2(6Bv&G?B%sH(( z$51b`PUJ|QW*Qb_rqW|3y!)`eru1SK;$yP7?O9*cFtJOxmm5OR9Wd|0VrJFm_BC?M_OB-vJo+E&Q12|x}=Si+JTIrtmK}ktF!OYsaN8>O{1_>sI3Qo7L&&NSnb%1IpBxaED z0sv`=h=PkcZhk?3={!$ZH0l~9XYgIY~Z{{JyB|$4CR%@ey{l2f>K2n+)CCopv}$!E1G#gQXv^=!4Yzj>O8zHsxb|%1k9rD(s0R# zIXl2_0dTDd9L^*_{FWW%kt(G=AeSY|3tq#nbs|G}U?M;S2E%u45?nLLufh!198`vC~x1~`trZ;7k6HJ z`RL-e*ZrYO+_raaUwcK%+3t{Z_R-nN-5;zN^u1U;vwz|ha^1eTee(ccx%dCydtmr> ze@vm#`(r4(JrI-155!>j55!ugJ+}RMsT~Agj*KyO*edKIV2ZAo4S=RZ!#wt{})s>-fNK7_uo`O&nWi@T7&+4{ zcAL=wrWHJeDWIn?U~d0>{gw8{*-zSf_EEdtdztKT*je7bR(7Yoi{nY@aUc4sxB2dc z_06}}u61^%VKQCt(hfVz%a_(JclJ)abP^aFL||&rv1_*WF3{fkvAt>hm*RZbj=P7$hx7!kB{iDIs$Mo_M31d8M!#agj? zkIJf4Q;HrfMq84>#4aOylwt;A1{Z4PntZi0uMI_Oec%G6Xk}3&$E1*?K)@W?rpjQP z1jXpU=-^?_sfJh++EOSaO%UaM9~3Gsq-BqbqEyfX8&DDZLJ&gsHItQ`q#{>2GG-?9 zla}@=Bgvi3H7E=6WmUAbNkmW~3(TozX?4zFE~M6EnS9X7CucPUQaTncY(pqf`=ppO zM#w^0)c{!dMX)cp$&eL# znsatRd98C0;(*py>3@a*NqUkakn>t(2Ns$xlte)SbY*Fd(J6CK%9~0FA{;jrm2x6I z=Wq8;Kl6P1!7f=g$u=ZC<%3 zw>QI1xltx_bRdI2IEcAg9+bO{8V(0nHrGD5c_dWz;b_%C{?vWce!tplU+CUl^6i;!^TtL=)0<*k^J{Ccc|T4+x>pA8ZRcBM zDyCFMc^vO_aK1l(5aQS70hh<4Y5V)?qnQ}c6H}BEXz|eOs8Rd4NOXuVTvPf7e2Ce7 zvqkje4)H}SfH(FCCUN{Er-K6rMsYTwIbZ+4WZIv`ylStW{cKib=yU;@{~#tq9%I7f zWd=gZ*&-S_ofu@YY!>6wHj43y-R6*jQwkjtM@T7aACu07eXKSSlCs`}?qOrC8xO delta 1231 zcmaJ>y=rGw5GR`yZh}T!B8$TMw+MpSjdSMXoEdE_G=+tx(8fjB^EJgHqK(=Ge1rA0 zBHCElZK!X9GU%?8BV6)TZUjZTPDS;EffDD#FGb^Ml zK)|6#5QyXY@ZkFWZ+3pzzs48NX~N&mAbp)){dT>0u>b7;gjlBs@7^hdC6}y4ry19D zo`KYGlT_1bk#x3^s@brdk~FcYY~n)+ zGeT>T0Eg7f)|@AbOB5YLEO>_Cj@2RtYpyv>wIQCGrZTfOD7|8|KH0T)u2ylH8aJ~_ z&CQz*>2uIX)UqN$i5gk35wrL z>zIM8ckXrOm^iR`Z2>w=Y*N}NQEwMP#^Az$5>QRzp2Vj`cRtuktKK5xoL#C4^z&1h z=cFT!lxlt^nb{*`VZxEIdkNUcxn~R11ZIqn-N>zGY6U1B70twkWegNUckiJ!M`P{5 zMV=n6l7%c@8Ub0E&d>wp979qTRW)Gsz1}Jf<$*Nsr|VB$TW=hFx_&->|K9%F>*)C7 zdq2H;HPJcmg>~)S{BqsidSU%~bANrd_0IbG_}2RBrBBXck#HCOd2EwKNH)H?lqFDt z&4qUJ!2_8+DwC2PvEx|KhkYsAe`Sw_K5*rkI@UU#=|tS9kkFU1P&9v;5_*2(T) Dlx;f` diff --git a/itext/itext.bouncy-castle-adapter/itext/bouncycastle/BouncyCastleFactory.cs b/itext/itext.bouncy-castle-adapter/itext/bouncycastle/BouncyCastleFactory.cs index 77a7f76f75..2155a77548 100644 --- a/itext/itext.bouncy-castle-adapter/itext/bouncycastle/BouncyCastleFactory.cs +++ b/itext/itext.bouncy-castle-adapter/itext/bouncycastle/BouncyCastleFactory.cs @@ -708,6 +708,11 @@ public virtual ITbsCertificateStructure CreateTBSCertificate(IAsn1Encodable enco return new TbsCertificateStructureBC(TbsCertificateStructure.GetInstance(((Asn1EncodableBC)encodable).GetEncodable( ))); } + + public virtual ITbsCertificateStructure CreateTBSCertificate(byte[] bytes) { + return new TbsCertificateStructureBC(TbsCertificateStructure.GetInstance(bytes)); + } + /// public virtual IIssuerAndSerialNumber CreateIssuerAndSerialNumber(IX500Name issuer, IBigInteger value) { diff --git a/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/Asn1EncodableVectorBC.cs b/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/Asn1EncodableVectorBC.cs index dc43021b3e..44507dbe6f 100644 --- a/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/Asn1EncodableVectorBC.cs +++ b/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/Asn1EncodableVectorBC.cs @@ -86,6 +86,27 @@ public virtual void Add(IAlgorithmIdentifier element) { encodableVector.Add(elementBc.GetAlgorithmIdentifier()); } + /// + public virtual void AddOptional(IAsn1Object primitive) { + if (primitive != null) { + Add(primitive); + } + } + + /// + public virtual void AddOptional(IAttribute attribute) { + if (attribute != null) { + Add(attribute); + } + } + + /// + public virtual void AddOptional(IAlgorithmIdentifier element) { + if (element != null) { + Add(element); + } + } + /// Indicates whether some other object is "equal to" this one. /// Indicates whether some other object is "equal to" this one. Compares wrapped objects. public override bool Equals(Object o) { diff --git a/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/x509/AlgorithmIdentifierBC.cs b/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/x509/AlgorithmIdentifierBC.cs index e6f68824b0..299386ae26 100644 --- a/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/x509/AlgorithmIdentifierBC.cs +++ b/itext/itext.bouncy-castle-adapter/itext/bouncycastle/asn1/x509/AlgorithmIdentifierBC.cs @@ -60,6 +60,9 @@ public virtual IDerObjectIdentifier GetAlgorithm() { /// public virtual IAsn1Encodable GetParameters() { + if (GetAlgorithmIdentifier().Parameters == null) { + return null; + } return new Asn1EncodableBC(GetAlgorithmIdentifier().Parameters); } } diff --git a/itext/itext.bouncy-castle-connector/itext/bouncycastleconnector/BouncyCastleDefaultFactory.cs b/itext/itext.bouncy-castle-connector/itext/bouncycastleconnector/BouncyCastleDefaultFactory.cs index 6652bf215b..9d0db9df9b 100644 --- a/itext/itext.bouncy-castle-connector/itext/bouncycastleconnector/BouncyCastleDefaultFactory.cs +++ b/itext/itext.bouncy-castle-connector/itext/bouncycastleconnector/BouncyCastleDefaultFactory.cs @@ -419,6 +419,10 @@ public IEncryptedContentInfo CreateEncryptedContentInfo(IDerObjectIdentifier dat public ITbsCertificateStructure CreateTBSCertificate(IAsn1Encodable encodable) { throw new NotSupportedException(BouncyCastleLogMessageConstant.BOUNCY_CASTLE_DEPENDENCY_MUST_PRESENT); } + + public virtual ITbsCertificateStructure CreateTBSCertificate(byte[] bytes) { + throw new NotSupportedException(BouncyCastleLogMessageConstant.BOUNCY_CASTLE_DEPENDENCY_MUST_PRESENT); + } public IIssuerAndSerialNumber CreateIssuerAndSerialNumber(IX500Name issuer, IBigInteger value) { throw new NotSupportedException(BouncyCastleLogMessageConstant.BOUNCY_CASTLE_DEPENDENCY_MUST_PRESENT); diff --git a/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/BouncyCastleFipsFactory.cs b/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/BouncyCastleFipsFactory.cs index f70c1f1aaf..cbab7eee33 100644 --- a/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/BouncyCastleFipsFactory.cs +++ b/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/BouncyCastleFipsFactory.cs @@ -722,6 +722,10 @@ public virtual ITbsCertificateStructure CreateTBSCertificate(IAsn1Encodable enco return new TbsCertificateStructureBCFips(TbsCertificateStructure.GetInstance(((Asn1EncodableBCFips)encodable).GetEncodable ())); } + + public virtual ITbsCertificateStructure CreateTBSCertificate(byte[] bytes) { + return new TbsCertificateStructureBCFips(TbsCertificateStructure.GetInstance(bytes)); + } /// public virtual IIssuerAndSerialNumber CreateIssuerAndSerialNumber(IX500Name issuer, IBigInteger value) { diff --git a/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/asn1/Asn1EncodableVectorBCFips.cs b/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/asn1/Asn1EncodableVectorBCFips.cs index 69a6d3bf76..16eda0990d 100644 --- a/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/asn1/Asn1EncodableVectorBCFips.cs +++ b/itext/itext.bouncy-castle-fips-adapter/itext/bouncycastlefips/asn1/Asn1EncodableVectorBCFips.cs @@ -86,6 +86,27 @@ public virtual void Add(IAlgorithmIdentifier element) { encodableVector.Add(elementBCFips.GetAlgorithmIdentifier()); } + /// + public virtual void AddOptional(IAsn1Object primitive) { + if (primitive != null) { + Add(primitive); + } + } + + /// + public virtual void AddOptional(IAttribute attribute) { + if (attribute != null) { + Add(attribute); + } + } + + /// + public virtual void AddOptional(IAlgorithmIdentifier element) { + if (element != null) { + Add(element); + } + } + /// Indicates whether some other object is "equal to" this one. /// Indicates whether some other object is "equal to" this one. Compares wrapped objects. public override bool Equals(Object o) { diff --git a/itext/itext.commons/itext/commons/bouncycastle/IBouncyCastleFactory.cs b/itext/itext.commons/itext/commons/bouncycastle/IBouncyCastleFactory.cs index 073a1d7ce3..6d5384261d 100644 --- a/itext/itext.commons/itext/commons/bouncycastle/IBouncyCastleFactory.cs +++ b/itext/itext.commons/itext/commons/bouncycastle/IBouncyCastleFactory.cs @@ -809,6 +809,12 @@ IEncryptedContentInfo CreateEncryptedContentInfo(IDerObjectIdentifier data, IAlg /// created TBS Certificate wrapper ITbsCertificateStructure CreateTBSCertificate(IAsn1Encodable encodable); + + /// Create TBS Certificate wrapper from ASN1 Encoded data. + /// encoded TBS Certificate + /// created TBS Certificate wrapper + ITbsCertificateStructure CreateTBSCertificate(byte[] bytes); + /// /// Create issuer and serial number wrapper from X500 Name wrapper and /// . diff --git a/itext/itext.commons/itext/commons/bouncycastle/asn1/IAsn1EncodableVector.cs b/itext/itext.commons/itext/commons/bouncycastle/asn1/IAsn1EncodableVector.cs index ff747071fb..4e262a4fc5 100644 --- a/itext/itext.commons/itext/commons/bouncycastle/asn1/IAsn1EncodableVector.cs +++ b/itext/itext.commons/itext/commons/bouncycastle/asn1/IAsn1EncodableVector.cs @@ -52,5 +52,29 @@ public interface IAsn1EncodableVector { /// /// AlgorithmIdentifier wrapper. void Add(IAlgorithmIdentifier element); + + /// + /// Calls actual + /// add + /// method for the wrapped ASN1EncodableVector object if the primitive is not null. + /// + /// ASN1Primitive wrapper. + void AddOptional(IAsn1Object primitive); + + /// + /// Calls actual + /// add + /// method for the wrapped ASN1EncodableVector object if the attribute is not null. + /// + /// Attribute wrapper. + void AddOptional(IAttribute attribute); + + /// + /// Calls actual + /// add + /// method for the wrapped ASN1EncodableVector object if the element is not null. + /// + /// AlgorithmIdentifier wrapper. + void AddOptional(IAlgorithmIdentifier element); } } diff --git a/itext/itext.sign/itext/signatures/PadesTwoPhaseSigningHelper.cs b/itext/itext.sign/itext/signatures/PadesTwoPhaseSigningHelper.cs index 7709440d04..77cee2c0ba 100644 --- a/itext/itext.sign/itext/signatures/PadesTwoPhaseSigningHelper.cs +++ b/itext/itext.sign/itext/signatures/PadesTwoPhaseSigningHelper.cs @@ -307,9 +307,7 @@ public virtual CMSContainer CreateCMSContainerWithoutSignature(IX509Certificate[ IX509Certificate[] fullChain = issuingCertificateRetriever.RetrieveMissingCertificates(certificates); IX509Certificate[] x509FullChain = JavaUtil.ArraysAsList(fullChain).ToArray(new IX509Certificate[0]); PdfPadesSigner padesSigner = CreatePadesSigner(inputDocument, outputStream); - PdfSigner pdfSigner = padesSigner.CreatePdfSigner(signerProperties, true); - PdfDocument document = pdfSigner.GetDocument(); - SetPadesExtensions(document, x509FullChain[0], digestAlgorithm); + PdfTwoPhaseSigner pdfTwoPhaseSigner = new PdfTwoPhaseSigner(inputDocument, outputStream); CMSContainer cms = new CMSContainer(); SignerInfo signerInfo = new SignerInfo(); String digestAlgorithmOid = DigestAlgorithms.GetAllowedDigest(digestAlgorithm); @@ -317,7 +315,6 @@ public virtual CMSContainer CreateCMSContainerWithoutSignature(IX509Certificate[ signerInfo.SetDigestAlgorithm(new AlgorithmIdentifier(digestAlgorithmOid)); cms.AddCertificates(x509FullChain); cms.SetSignerInfo(signerInfo); - pdfSigner.SetFieldName(signerProperties.GetFieldName()); IDigest messageDigest = iText.Bouncycastleconnector.BouncyCastleFactoryCreator.GetFactory().CreateIDigest( DigestAlgorithms.GetDigest(digestAlgorithmOid)); int realSignatureSize = messageDigest.GetDigestLength() + (int)cms.GetSizeEstimation(); @@ -325,8 +322,8 @@ public virtual CMSContainer CreateCMSContainerWithoutSignature(IX509Certificate[ realSignatureSize += tsaClient.GetTokenSizeEstimate(); } int expectedSignatureSize = estimatedSize < 0 ? realSignatureSize : estimatedSize; - byte[] digestedDocumentBytes = pdfSigner.PrepareDocumentForSignature(digestAlgorithm, PdfName.Adobe_PPKLite - , PdfName.ETSI_CAdES_DETACHED, expectedSignatureSize, true); + byte[] digestedDocumentBytes = pdfTwoPhaseSigner.PrepareDocumentForSignature(signerProperties, digestAlgorithm + , PdfName.Adobe_PPKLite, PdfName.ETSI_CAdES_DETACHED, expectedSignatureSize, true); signerInfo.SetMessageDigest(digestedDocumentBytes); return cms; } @@ -336,7 +333,7 @@ public virtual void SignCMSContainerWithBaselineBProfile(IExternalSignature exte SetSignatureAlgorithmAndSignature(externalSignature, cmsContainer); try { using (PdfDocument document = new PdfDocument(inputDocument)) { - PdfSigner.AddSignatureToPreparedDocument(document, signatureFieldName, outputStream, cmsContainer); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(document, signatureFieldName, outputStream, cmsContainer); } } finally { @@ -360,7 +357,7 @@ public virtual void SignCMSContainerWithBaselineTProfile(IExternalSignature exte } try { using (PdfDocument document = new PdfDocument(inputDocument)) { - PdfSigner.AddSignatureToPreparedDocument(document, signatureFieldName, outputStream, cmsContainer); + PdfTwoPhaseSigner.AddSignatureToPreparedDocument(document, signatureFieldName, outputStream, cmsContainer); } } finally { @@ -449,19 +446,5 @@ private PdfPadesSigner CreatePadesSigner(PdfReader inputDocument, Stream outputS padesSigner.SetEstimatedSize(estimatedSize); return padesSigner; } - - private static void SetPadesExtensions(PdfDocument document, IX509Certificate signingCert, String digestAlgorithm - ) { - if (document.GetPdfVersion().CompareTo(PdfVersion.PDF_2_0) < 0) { - document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ESIC_1_7_EXTENSIONLEVEL2); - } - String algorithmOid = signingCert.GetSigAlgOID(); - if (SignatureMechanisms.GetAlgorithm(algorithmOid).StartsWith("Ed")) { - document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ISO_32002); - } - if (digestAlgorithm.StartsWith("SHA3-") || digestAlgorithm.Equals(DigestAlgorithms.SHAKE256)) { - document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ISO_32001); - } - } } } diff --git a/itext/itext.sign/itext/signatures/PdfPadesSigner.cs b/itext/itext.sign/itext/signatures/PdfPadesSigner.cs index c123d731c2..e7f482c301 100644 --- a/itext/itext.sign/itext/signatures/PdfPadesSigner.cs +++ b/itext/itext.sign/itext/signatures/PdfPadesSigner.cs @@ -549,22 +549,8 @@ internal virtual PdfSigner CreatePdfSigner(SignerProperties signerProperties, bo if (temporaryDirectoryPath != null) { tempFilePath = GetNextTempFile().FullName; } - PdfSigner signer = new PdfSigner(reader, isFinal ? outputStream : CreateOutputStream(), tempFilePath, stampingProperties - ); - signer.SetFieldLockDict(signerProperties.GetFieldLockDict()); - signer.SetFieldName(signerProperties.GetFieldName()); - // We need to update field name because signer could change it - signerProperties.SetFieldName(signer.GetFieldName()); - signer.SetCertificationLevel(signerProperties.GetCertificationLevel()); - signer.SetPageRect(signerProperties.GetPageRect()); - signer.SetPageNumber(signerProperties.GetPageNumber()); - signer.SetSignDate(signerProperties.GetSignDate()); - signer.SetSignatureCreator(signerProperties.GetSignatureCreator()); - signer.SetContact(signerProperties.GetContact()); - signer.SetReason(signerProperties.GetReason()); - signer.SetLocation(signerProperties.GetLocation()); - signer.SetSignatureAppearance(signerProperties.GetSignatureAppearance()); - return signer; + return new PdfSigner(reader, isFinal ? outputStream : CreateOutputStream(), tempFilePath, stampingProperties + , signerProperties); } internal virtual void PerformLtvVerification(PdfDocument pdfDocument, IList signatureNames, LtvVerification.RevocationDataNecessity diff --git a/itext/itext.sign/itext/signatures/PdfSigner.cs b/itext/itext.sign/itext/signatures/PdfSigner.cs index 7026046a1f..702ee1f4eb 100644 --- a/itext/itext.sign/itext/signatures/PdfSigner.cs +++ b/itext/itext.sign/itext/signatures/PdfSigner.cs @@ -40,7 +40,6 @@ You should have received a copy of the GNU Affero General Public License using iText.Kernel.Pdf.Annot; using iText.Layout.Properties; using iText.Pdfa; -using iText.Signatures.Cms; using iText.Signatures.Exceptions; namespace iText.Signatures { @@ -139,6 +138,44 @@ public PdfSigner(PdfReader reader, Stream outputStream, StampingProperties prope : this(reader, outputStream, null, properties) { } + /// Creates a PdfSigner instance. + /// + /// Creates a PdfSigner instance. Uses a + /// + /// instead of a temporary file. + /// + /// PdfReader that reads the PDF file + /// OutputStream to write the signed PDF file + /// File to which the output is temporarily written + /// + /// + /// + /// for the signing document. Note that encryption will be + /// preserved regardless of what is set in properties. + /// + /// + /// + /// + /// bundled properties to be used in signing operations. + /// + public PdfSigner(PdfReader reader, Stream outputStream, String path, StampingProperties stampingProperties + , SignerProperties signerProperties) + : this(reader, outputStream, path, stampingProperties) { + this.fieldLock = signerProperties.GetFieldLockDict(); + UpdateFieldName(signerProperties.GetFieldName()); + // We need to update field name because the setter could change it and the user can rely on this field + signerProperties.SetFieldName(fieldName); + certificationLevel = signerProperties.GetCertificationLevel(); + appearance.SetPageRect(signerProperties.GetPageRect()); + appearance.SetPageNumber(signerProperties.GetPageNumber()); + appearance.SetSignDate(signerProperties.GetSignDate()); + appearance.SetSignatureCreator(signerProperties.GetSignatureCreator()); + appearance.SetContact(signerProperties.GetContact()); + appearance.SetReason(signerProperties.GetReason()); + appearance.SetLocation(signerProperties.GetLocation()); + this.appearance.SetSignatureAppearance(signerProperties.GetSignatureAppearance()); + } + /// Creates a PdfSigner instance. /// /// Creates a PdfSigner instance. Uses a @@ -330,32 +367,7 @@ public virtual String GetNewSigFieldName() { /// /// The name indicating the field to be signed. public virtual void SetFieldName(String fieldName) { - if (fieldName != null) { - PdfFormField field = acroForm.GetField(fieldName); - if (field != null) { - if (!PdfName.Sig.Equals(field.GetFormType())) { - throw new ArgumentException(SignExceptionMessageConstant.FIELD_TYPE_IS_NOT_A_SIGNATURE_FIELD_TYPE); - } - if (field.GetValue() != null) { - throw new ArgumentException(SignExceptionMessageConstant.FIELD_ALREADY_SIGNED); - } - IList widgets = field.GetWidgets(); - if (widgets.Count > 0) { - PdfWidgetAnnotation widget = widgets[0]; - SetPageRect(GetWidgetRectangle(widget)); - SetPageNumber(GetWidgetPageNumber(widget)); - } - } - else { - // Do not allow dots for new fields - // For existing fields dots are allowed because there it might be fully qualified name - if (fieldName.IndexOf('.') >= 0) { - throw new ArgumentException(SignExceptionMessageConstant.FIELD_NAMES_CANNOT_CONTAIN_A_DOT); - } - } - this.appearance.SetFieldName(fieldName); - this.fieldName = fieldName; - } + UpdateFieldName(fieldName); } /// Gets the PdfDocument associated with this instance. @@ -783,44 +795,6 @@ public virtual void Timestamp(ITSAClient tsa, String signatureName) { closed = true; } - /// Prepares document for signing, calculates the document digest to sign and closes the document. - /// the algorithm to generate the digest with - /// PdfName of the signature handler to use when validating this signature - /// PdfName that describes the encoding of the signature - /// - /// the estimated size of the signature, this is the size of the space reserved for - /// the Cryptographic Message Container - /// - /// specifies if the signing date should be set to the signature dictionary - /// the message digest of the prepared document. - public virtual byte[] PrepareDocumentForSignature(String digestAlgorithm, PdfName filter, PdfName subFilter - , int estimatedSize, bool includeDate) { - return PrepareDocumentForSignature(SignUtils.GetMessageDigest(digestAlgorithm), filter, subFilter, estimatedSize - , includeDate); - } - - /// Adds an existing signature to a PDF where space was already reserved. - /// the original PDF - /// the field to sign. It must be the last field - /// the output PDF - /// the bytes for the signed data - public static void AddSignatureToPreparedDocument(PdfDocument document, String fieldName, Stream outs, byte - [] signedContent) { - PdfSigner.SignatureApplier applier = new PdfSigner.SignatureApplier(document, fieldName, outs); - applier.Apply((a) => signedContent); - } - - /// Adds an existing signature to a PDF where space was already reserved. - /// the original PDF - /// the field to sign. It must be the last field - /// the output PDF - /// the finalized CMS container - public static void AddSignatureToPreparedDocument(PdfDocument document, String fieldName, Stream outs, CMSContainer - cmsContainer) { - PdfSigner.SignatureApplier applier = new PdfSigner.SignatureApplier(document, fieldName, outs); - applier.Apply((a) => cmsContainer.Serialize()); - } - /// Signs a PDF where space was already reserved. /// the original PDF /// the field to sign. It must be the last field @@ -1294,32 +1268,40 @@ protected internal virtual int GetWidgetPageNumber(PdfWidgetAnnotation widget) { return pageNumber; } - private byte[] PrepareDocumentForSignature(IDigest messageDigest, PdfName filter, PdfName subFilter, int estimatedSize - , bool includeDate) { - if (closed) { - throw new PdfException(SignExceptionMessageConstant.THIS_INSTANCE_OF_PDF_SIGNER_ALREADY_CLOSED); + private void UpdateFieldName(String fieldName) { + if (fieldName != null) { + PdfFormField field = acroForm.GetField(fieldName); + if (field != null) { + if (!PdfName.Sig.Equals(field.GetFormType())) { + throw new ArgumentException(SignExceptionMessageConstant.FIELD_TYPE_IS_NOT_A_SIGNATURE_FIELD_TYPE); + } + if (field.GetValue() != null) { + throw new ArgumentException(SignExceptionMessageConstant.FIELD_ALREADY_SIGNED); + } + IList widgets = field.GetWidgets(); + if (widgets.Count > 0) { + PdfWidgetAnnotation widget = widgets[0]; + SetPageRect(GetWidgetRectangle(widget)); + SetPageNumber(GetWidgetPageNumber(widget)); + } + } + else { + // Do not allow dots for new fields + // For existing fields dots are allowed because there it might be fully qualified name + if (fieldName.IndexOf('.') >= 0) { + throw new ArgumentException(SignExceptionMessageConstant.FIELD_NAMES_CANNOT_CONTAIN_A_DOT); + } + } + this.appearance.SetFieldName(fieldName); + this.fieldName = fieldName; } - cryptoDictionary = CreateSignatureDictionary(includeDate); - cryptoDictionary.Put(PdfName.Filter, filter); - cryptoDictionary.Put(PdfName.SubFilter, subFilter); - IDictionary exc = new Dictionary(); - exc.Put(PdfName.Contents, estimatedSize * 2 + 2); - PreClose(exc); - Stream data = GetRangeStream(); - byte[] digest = DigestAlgorithms.Digest(data, messageDigest); - byte[] paddedSig = new byte[estimatedSize]; - PdfDictionary dic2 = new PdfDictionary(); - dic2.Put(PdfName.Contents, new PdfString(paddedSig).SetHexWriting(true)); - Close(dic2); - closed = true; - return digest; } private bool IsDocumentPdf2() { return document.GetPdfVersion().CompareTo(PdfVersion.PDF_2_0) >= 0; } - private PdfSignature CreateSignatureDictionary(bool includeDate) { + internal virtual PdfSignature CreateSignatureDictionary(bool includeDate) { PdfSignature dic = new PdfSignature(); dic.SetReason(GetReason()); dic.SetLocation(GetLocation()); @@ -1365,7 +1347,7 @@ public interface ISignatureEvent { void GetSignatureDictionary(PdfSignature sig); } - private class SignatureApplier { + internal class SignatureApplier { private readonly PdfDocument document; private readonly String fieldName; @@ -1425,6 +1407,6 @@ public virtual Stream GetDataToSign() { } } - private delegate byte[] ISignatureDataProvider(PdfSigner.SignatureApplier applier); + internal delegate byte[] ISignatureDataProvider(PdfSigner.SignatureApplier applier); } } diff --git a/itext/itext.sign/itext/signatures/PdfTwoPhaseSigner.cs b/itext/itext.sign/itext/signatures/PdfTwoPhaseSigner.cs new file mode 100644 index 0000000000..0ed0fee311 --- /dev/null +++ b/itext/itext.sign/itext/signatures/PdfTwoPhaseSigner.cs @@ -0,0 +1,164 @@ +/* + 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 System.Collections.Generic; +using System.IO; +using iText.Commons.Bouncycastle.Cert; +using iText.Commons.Bouncycastle.Crypto; +using iText.Kernel.Exceptions; +using iText.Kernel.Pdf; +using iText.Signatures.Cms; +using iText.Signatures.Exceptions; + +namespace iText.Signatures { + public class PdfTwoPhaseSigner { + private readonly PdfReader reader; + + private readonly Stream outputStream; + + private StampingProperties stampingProperties = new StampingProperties().UseAppendMode(); + + private bool closed; + + public PdfTwoPhaseSigner(PdfReader reader, Stream outputStream) { + this.reader = reader; + this.outputStream = outputStream; + } + + /// Prepares document for signing, calculates the document digest to sign and closes the document. + /// + /// + /// + /// properties to be used for main signing operation + /// + /// the algorithm to generate the digest with + /// PdfName of the signature handler to use when validating this signature + /// PdfName that describes the encoding of the signature + /// + /// the estimated size of the signature, this is the size of the space reserved for + /// the Cryptographic Message Container + /// + /// specifies if the signing date should be set to the signature dictionary + /// the message digest of the prepared document. + public virtual byte[] PrepareDocumentForSignature(SignerProperties signerProperties, String digestAlgorithm + , PdfName filter, PdfName subFilter, int estimatedSize, bool includeDate) { + IDigest digest; + digest = SignUtils.GetMessageDigest(digestAlgorithm); + return PrepareDocumentForSignature(signerProperties, digest, filter, subFilter, estimatedSize, includeDate + ); + } + + /// Adds an existing signature to a PDF where space was already reserved. + /// the original PDF + /// the field to sign. It must be the last field + /// the output PDF + /// the finalized CMS container + public static void AddSignatureToPreparedDocument(PdfDocument document, String fieldName, Stream outs, CMSContainer + cmsContainer) { + PdfSigner.SignatureApplier applier = new PdfSigner.SignatureApplier(document, fieldName, outs); + applier.Apply((a) => cmsContainer.Serialize()); + } + + /// Adds an existing signature to a PDF where space was already reserved. + /// the original PDF + /// the field to sign. It must be the last field + /// the output PDF + /// the bytes for the signed data + public static void AddSignatureToPreparedDocument(PdfDocument document, String fieldName, Stream outs, byte + [] signedContent) { + PdfSigner.SignatureApplier applier = new PdfSigner.SignatureApplier(document, fieldName, outs); + applier.Apply((a) => signedContent); + } + + /// Set stamping properties to be used during main signing operation. + /// + /// Set stamping properties to be used during main signing operation. + /// + /// If none is set, stamping properties with append mode enabled will be used + /// + /// + /// + /// + /// instance to be used during main signing operation + /// + /// + /// same instance of + /// + /// + public virtual iText.Signatures.PdfTwoPhaseSigner SetStampingProperties(StampingProperties stampingProperties + ) { + this.stampingProperties = stampingProperties; + return this; + } + + internal virtual PdfSigner CreatePdfSigner(SignerProperties signerProperties) { + PdfSigner signer = new PdfSigner(reader, outputStream, null, stampingProperties); + signer.SetFieldLockDict(signerProperties.GetFieldLockDict()); + signer.SetFieldName(signerProperties.GetFieldName()); + // We need to update field name because signer could change it + signerProperties.SetFieldName(signer.GetFieldName()); + signer.SetCertificationLevel(signerProperties.GetCertificationLevel()); + signer.SetPageRect(signerProperties.GetPageRect()); + signer.SetPageNumber(signerProperties.GetPageNumber()); + signer.SetSignDate(signerProperties.GetSignDate()); + signer.SetSignatureCreator(signerProperties.GetSignatureCreator()); + signer.SetContact(signerProperties.GetContact()); + signer.SetReason(signerProperties.GetReason()); + signer.SetLocation(signerProperties.GetLocation()); + signer.SetSignatureAppearance(signerProperties.GetSignatureAppearance()); + return signer; + } + + private byte[] PrepareDocumentForSignature(SignerProperties signerProperties, IDigest messageDigest, PdfName + filter, PdfName subFilter, int estimatedSize, bool includeDate) { + if (closed) { + throw new PdfException(SignExceptionMessageConstant.THIS_INSTANCE_OF_PDF_SIGNER_ALREADY_CLOSED); + } + PdfSigner pdfSigner = CreatePdfSigner(signerProperties); + + PdfDocument document = pdfSigner.GetDocument(); + if (document.GetPdfVersion().CompareTo(PdfVersion.PDF_2_0) < 0) { + document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ESIC_1_7_EXTENSIONLEVEL2); + } + document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ISO_32002); + document.GetCatalog().AddDeveloperExtension(PdfDeveloperExtension.ISO_32001); + + PdfSignature cryptoDictionary = pdfSigner.CreateSignatureDictionary(includeDate); + cryptoDictionary.Put(PdfName.Filter, filter); + cryptoDictionary.Put(PdfName.SubFilter, subFilter); + pdfSigner.cryptoDictionary = cryptoDictionary; + IDictionary exc = new Dictionary(); + exc.Put(PdfName.Contents, estimatedSize * 2 + 2); + pdfSigner.PreClose(exc); + Stream data = pdfSigner.GetRangeStream(); + byte[] digest = DigestAlgorithms.Digest(data, messageDigest); + byte[] paddedSig = new byte[estimatedSize]; + PdfDictionary dic2 = new PdfDictionary(); + dic2.Put(PdfName.Contents, new PdfString(paddedSig).SetHexWriting(true)); + pdfSigner.Close(dic2); + pdfSigner.closed = true; + closed = true; + return digest; + } + } +} \ No newline at end of file diff --git a/itext/itext.sign/itext/signatures/cms/AlgorithmIdentifier.cs b/itext/itext.sign/itext/signatures/cms/AlgorithmIdentifier.cs index 6492c41b05..f680c38a8b 100644 --- a/itext/itext.sign/itext/signatures/cms/AlgorithmIdentifier.cs +++ b/itext/itext.sign/itext/signatures/cms/AlgorithmIdentifier.cs @@ -38,7 +38,7 @@ public class AlgorithmIdentifier { /// the Object id of the algorithm public AlgorithmIdentifier(String algorithmId) { this.algorithm = algorithmId; - parameters = BouncyCastleFactoryCreator.GetFactory().CreateDERNull(); + parameters = null; } /// Creates an Algorithm identifier structure with parameters. diff --git a/itext/itext.sign/itext/signatures/cms/SignerInfo.cs b/itext/itext.sign/itext/signatures/cms/SignerInfo.cs index 8a5de3d1b3..7271bdbb95 100644 --- a/itext/itext.sign/itext/signatures/cms/SignerInfo.cs +++ b/itext/itext.sign/itext/signatures/cms/SignerInfo.cs @@ -141,6 +141,22 @@ public virtual void SetMessageDigest(byte[] digest) { /// the certificate that is used to sign public virtual void SetSigningCertificate(IX509Certificate certificate) { this.signerCertificate = certificate; + ITbsCertificateStructure tbsCert = BC_FACTORY.CreateTBSCertificate(certificate.GetTbsCertificate()); + if (signingAlgorithm != null) { + return; + } + if (tbsCert.GetSubjectPublicKeyInfo().GetAlgorithm().GetParameters() != null) { + if (tbsCert.GetSubjectPublicKeyInfo().GetAlgorithm().GetParameters().IsNull()) { + this.signingAlgorithm = new AlgorithmIdentifier(tbsCert.GetSubjectPublicKeyInfo().GetAlgorithm().GetAlgorithm + ().GetId(), BC_FACTORY.CreateDERNull()); + return; + } + this.signingAlgorithm = new AlgorithmIdentifier(tbsCert.GetSubjectPublicKeyInfo().GetAlgorithm().GetAlgorithm + ().GetId(), tbsCert.GetSubjectPublicKeyInfo().GetAlgorithm().GetParameters().ToASN1Primitive()); + return; + } + this.signingAlgorithm = new AlgorithmIdentifier(tbsCert.GetSubjectPublicKeyInfo().GetAlgorithm().GetAlgorithm + ().GetId()); } /// Gets the certificate that is used to sign. @@ -375,7 +391,7 @@ internal virtual IDerSequence GetAsDerSequence(bool estimationRun) { // digest algorithm IAsn1EncodableVector digestalgorithmV = BC_FACTORY.CreateASN1EncodableVector(); digestalgorithmV.Add(BC_FACTORY.CreateASN1ObjectIdentifier(this.digestAlgorithm.GetAlgorithmOid())); - digestalgorithmV.Add(digestAlgorithm.GetParameters()); + digestalgorithmV.AddOptional(digestAlgorithm.GetParameters()); signerInfoV.Add(BC_FACTORY.CreateDERSequence(digestalgorithmV)); // signed attributes if (!signedAttributes.IsEmpty() || signedAttributesReadOnly) { @@ -397,7 +413,7 @@ internal virtual IDerSequence GetAsDerSequence(bool estimationRun) { if (signingAlgorithm != null) { IAsn1EncodableVector signatureAlgorithmV = BC_FACTORY.CreateASN1EncodableVector(); signatureAlgorithmV.Add(BC_FACTORY.CreateASN1ObjectIdentifier(signingAlgorithm.GetAlgorithmOid())); - signatureAlgorithmV.Add(signingAlgorithm.GetParameters()); + signatureAlgorithmV.AddOptional(signingAlgorithm.GetParameters()); signerInfoV.Add(BC_FACTORY.CreateDERSequence(signatureAlgorithmV)); } // signatureValue diff --git a/port-hash b/port-hash index bba923b90b..9d39277a6f 100644 --- a/port-hash +++ b/port-hash @@ -1 +1 @@ -c9bfbdceba6d12aee8bbaac9cbaeb7d757827348 +244cfd2ca06225d2c71eca0466283f88c78e3ae0