Skip to content

Commit e7ca435

Browse files
Kate IvanovaiText-CI
authored andcommitted
Add integration test for handling signatures with not merged widgets
DEVSIX-5187 Autoported commit. Original commit hash: [31060776b]
1 parent bc182ce commit e7ca435

File tree

7 files changed

+72
-1
lines changed

7 files changed

+72
-1
lines changed

itext.tests/itext.sign.tests/itext/signatures/sign/PdfSignatureAppearanceTest.cs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,77 @@ public virtual void SignaturesOnRotatedPages() {
192192
NUnit.Framework.Assert.AreEqual("", assertionResults.ToString());
193193
}
194194

195+
[NUnit.Framework.Test]
196+
public virtual void SignatureFieldNotMergedWithWidgetTest() {
197+
using (PdfDocument outputDoc = new PdfDocument(new PdfReader(sourceFolder + "signatureFieldNotMergedWithWidget.pdf"
198+
))) {
199+
SignatureUtil sigUtil = new SignatureUtil(outputDoc);
200+
PdfPKCS7 signatureData = sigUtil.ReadSignatureData("Signature1");
201+
NUnit.Framework.Assert.IsTrue(signatureData.VerifySignatureIntegrityAndAuthenticity());
202+
}
203+
}
204+
205+
[NUnit.Framework.Test]
206+
public virtual void SignExistingNotMergedFieldNotReusedAPTest() {
207+
// TODO: DEVSIX-5162 (the signature is expected to have auto-generated appearance, but now it's empty)
208+
// Field is not merged with widget and has /P key
209+
String src = sourceFolder + "emptyFieldNotMerged.pdf";
210+
String fileName = "signExistingNotMergedFieldNotReusedAP.pdf";
211+
String dest = destinationFolder + fileName;
212+
PdfReader reader = new PdfReader(src);
213+
PdfSigner signer = new PdfSigner(reader, new FileStream(dest, FileMode.Create), new StampingProperties());
214+
signer.SetCertificationLevel(PdfSigner.NOT_CERTIFIED);
215+
signer.GetSignatureAppearance().SetLayer2Text("Verified and signed by me.").SetReason("Test 1").SetLocation
216+
("TestCity").SetReuseAppearance(false);
217+
signer.SetFieldName("Signature1");
218+
IExternalSignature pks = new PrivateKeySignature(pk, DigestAlgorithms.SHA256);
219+
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CADES);
220+
NUnit.Framework.Assert.IsNull(new CompareTool().CompareVisually(dest, sourceFolder + "cmp_" + fileName, destinationFolder
221+
, "diff_"));
222+
}
223+
224+
[NUnit.Framework.Test]
225+
public virtual void SignExistingNotMergedFieldReusedAPTest() {
226+
// TODO: DEVSIX-5162 (signature appearance expected to be updated (reused appearance will be used as a background))
227+
// Field is not merged with widget and has /P key
228+
String src = sourceFolder + "emptyFieldNotMerged.pdf";
229+
String fileName = "signExistingNotMergedFieldReusedAP.pdf";
230+
String dest = destinationFolder + fileName;
231+
PdfReader reader = new PdfReader(src);
232+
PdfSigner signer = new PdfSigner(reader, new FileStream(dest, FileMode.Create), new StampingProperties());
233+
signer.SetCertificationLevel(PdfSigner.NOT_CERTIFIED);
234+
signer.GetSignatureAppearance().SetLayer2Text("Verified and signed by me.").SetReason("Test 1").SetLocation
235+
("TestCity").SetReuseAppearance(true);
236+
signer.SetFieldName("Signature1");
237+
IExternalSignature pks = new PrivateKeySignature(pk, DigestAlgorithms.SHA256);
238+
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CADES);
239+
NUnit.Framework.Assert.IsNull(new CompareTool().CompareVisually(dest, sourceFolder + "cmp_" + fileName, destinationFolder
240+
, "diff_"));
241+
}
242+
243+
[NUnit.Framework.Test]
244+
public virtual void SignExistingNotMergedFieldReusedAPEntryNDicTest() {
245+
// TODO: DEVSIX-5162 (remove expected exception after fix)
246+
// Field is not merged with widget and has /P key
247+
String src = sourceFolder + "emptyFieldNotMergedEntryNDict.pdf";
248+
String fileName = "signExistingNotMergedFieldReusedAPEntryNDic.pdf";
249+
String dest = destinationFolder + fileName;
250+
PdfReader reader = new PdfReader(src);
251+
PdfSigner signer = new PdfSigner(reader, new FileStream(dest, FileMode.Create), new StampingProperties());
252+
signer.SetCertificationLevel(PdfSigner.NOT_CERTIFIED);
253+
NUnit.Framework.Assert.That(() => {
254+
signer.GetSignatureAppearance().SetLayer2Text("Verified and signed by me.").SetReason("Test 1").SetLocation
255+
("TestCity").SetReuseAppearance(true);
256+
signer.SetFieldName("Signature1");
257+
IExternalSignature pks = new PrivateKeySignature(pk, DigestAlgorithms.SHA256);
258+
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CADES);
259+
NUnit.Framework.Assert.IsNull(new CompareTool().CompareVisually(dest, sourceFolder + "cmp_" + fileName, destinationFolder
260+
, "diff_"));
261+
}
262+
, NUnit.Framework.Throws.InstanceOf<NullReferenceException>())
263+
;
264+
}
265+
195266
private void TestSignatureOnRotatedPage(int pageNum, PdfSignatureAppearance.RenderingMode renderingMode, StringBuilder
196267
assertionResults) {
197268
String fileName = "signaturesOnRotatedPages" + pageNum + "_mode_" + renderingMode.ToString() + ".pdf";

port-hash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
f40cfbe6c79b1f7ee594dd3bd4fb68881cd7063f
1+
31060776b57cde331fa8a0e0b01145bad3c812a7

0 commit comments

Comments
 (0)