@@ -42,11 +42,16 @@ This file is part of the iText (R) project.
42
42
*/
43
43
package com .itextpdf .signatures ;
44
44
45
+ import com .itextpdf .kernel .PdfException ;
45
46
import com .itextpdf .kernel .pdf .PdfDocument ;
46
47
import com .itextpdf .kernel .pdf .PdfReader ;
47
48
import com .itextpdf .test .ExtendedITextTest ;
48
49
import com .itextpdf .test .annotations .type .IntegrationTest ;
50
+
51
+ import java .security .Security ;
52
+ import org .bouncycastle .jce .provider .BouncyCastleProvider ;
49
53
import org .junit .Assert ;
54
+ import org .junit .BeforeClass ;
50
55
import org .junit .Test ;
51
56
import org .junit .experimental .categories .Category ;
52
57
@@ -58,6 +63,11 @@ public class SignatureUtilTest extends ExtendedITextTest {
58
63
59
64
private static final String sourceFolder = "./src/test/resources/com/itextpdf/signatures/SignatureUtilTest/" ;
60
65
66
+ @ BeforeClass
67
+ public static void before () {
68
+ Security .addProvider (new BouncyCastleProvider ());
69
+ }
70
+
61
71
@ Test
62
72
public void getSignaturesTest01 () throws IOException {
63
73
String inPdf = sourceFolder + "simpleSignature.pdf" ;
@@ -168,4 +178,124 @@ public void notIndirectSigDictionaryTest() throws IOException {
168
178
169
179
Assert .assertTrue (signatureUtil .signatureCoversWholeDocument ("Signature1" ));
170
180
}
181
+
182
+ @ Test
183
+ public void emptySignatureReadSignatureDataTest () throws IOException {
184
+ String inPdf = sourceFolder + "emptySignature.pdf" ;
185
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
186
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
187
+
188
+ Assert .assertNull (signatureUtil .readSignatureData ("Signature1" , null ));
189
+ }
190
+
191
+ @ Test
192
+ public void readSignatureDataTest () throws IOException {
193
+ String inPdf = sourceFolder + "simpleSignature.pdf" ;
194
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
195
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
196
+
197
+ Assert .assertNotNull (signatureUtil .readSignatureData ("Signature1" ));
198
+ Assert .assertTrue (signatureUtil .readSignatureData ("Signature1" ) instanceof PdfPKCS7 );
199
+ }
200
+
201
+ @ Test
202
+ public void readSignatureDataWithSpecialSubFilterTest () throws IOException {
203
+ String inPdf = sourceFolder + "adbe.x509.rsa_sha1_signature.pdf" ;
204
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
205
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
206
+
207
+ Assert .assertNotNull (signatureUtil .readSignatureData ("Signature1" ));
208
+ Assert .assertTrue (signatureUtil .readSignatureData ("Signature1" ) instanceof PdfPKCS7 );
209
+ }
210
+
211
+ @ Test
212
+ public void byteRangeAndContentsEntriesTest () throws IOException {
213
+ String inPdf = sourceFolder + "byteRangeAndContentsEntries.pdf" ;
214
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
215
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
216
+
217
+ Assert .assertThrows (PdfException .class ,
218
+ () -> signatureUtil .readSignatureData ("Signature1" ));
219
+ }
220
+
221
+ @ Test
222
+ public void doesSignatureFieldExistTest () throws IOException {
223
+ String inPdf = sourceFolder + "simpleSignature.pdf" ;
224
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
225
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
226
+
227
+ Assert .assertTrue (signatureUtil .doesSignatureFieldExist ("Signature1" ));
228
+ }
229
+
230
+ @ Test
231
+ public void doesSignatureFieldExistEmptySignatureTest () throws IOException {
232
+ String inPdf = sourceFolder + "emptySignature.pdf" ;
233
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
234
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
235
+
236
+ Assert .assertTrue (signatureUtil .doesSignatureFieldExist ("Signature1" ));
237
+ }
238
+
239
+ @ Test
240
+ public void signatureInTextTypeFieldTest () throws IOException {
241
+ String inPdf = sourceFolder + "signatureInTextTypeField.pdf" ;
242
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
243
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
244
+
245
+ Assert .assertFalse (signatureUtil .doesSignatureFieldExist ("Signature1" ));
246
+ }
247
+
248
+ @ Test
249
+ public void getTotalRevisionsTest () throws IOException {
250
+ String inPdf = sourceFolder + "simpleSignature.pdf" ;
251
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
252
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
253
+
254
+ Assert .assertEquals (1 , signatureUtil .getTotalRevisions ());
255
+ }
256
+
257
+ @ Test
258
+ public void getRevisionTest () throws IOException {
259
+ String inPdf = sourceFolder + "simpleSignature.pdf" ;
260
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
261
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
262
+
263
+ Assert .assertEquals (1 , signatureUtil .getRevision ("Signature1" ));
264
+ }
265
+
266
+ @ Test
267
+ public void getRevisionEmptyFieldsTest () throws IOException {
268
+ String inPdf = sourceFolder + "emptySignature.pdf" ;
269
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
270
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
271
+
272
+ Assert .assertEquals (0 , signatureUtil .getRevision ("Signature1" ));
273
+ }
274
+
275
+ @ Test
276
+ public void getRevisionXfaFormTest () throws IOException {
277
+ String inPdf = sourceFolder + "simpleSignatureWithXfa.pdf" ;
278
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
279
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
280
+
281
+ Assert .assertEquals (1 , signatureUtil .getRevision ("Signature1" ));
282
+ }
283
+
284
+ @ Test
285
+ public void extractRevisionTest () throws IOException {
286
+ String inPdf = sourceFolder + "simpleSignature.pdf" ;
287
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
288
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
289
+
290
+ Assert .assertNotNull (signatureUtil .extractRevision ("Signature1" ));
291
+ }
292
+
293
+ @ Test
294
+ public void extractRevisionNotSignatureFieldTest () throws IOException {
295
+ String inPdf = sourceFolder + "signatureInTextTypeField.pdf" ;
296
+ PdfDocument pdfDocument = new PdfDocument (new PdfReader (inPdf ));
297
+ SignatureUtil signatureUtil = new SignatureUtil (pdfDocument );
298
+
299
+ Assert .assertNull (signatureUtil .extractRevision ("Signature1" ));
300
+ }
171
301
}
0 commit comments