@@ -24,9 +24,18 @@ This file is part of the iText (R) project.
24
24
25
25
import com .itextpdf .bouncycastleconnector .BouncyCastleFactoryCreator ;
26
26
import com .itextpdf .commons .bouncycastle .IBouncyCastleFactory ;
27
+ import com .itextpdf .commons .bouncycastle .asn1 .x500 .IX500Name ;
28
+ import com .itextpdf .commons .utils .Base64 ;
27
29
import com .itextpdf .kernel .exceptions .PdfException ;
30
+ import com .itextpdf .kernel .pdf .PdfDocument ;
31
+ import com .itextpdf .kernel .pdf .PdfReader ;
32
+ import com .itextpdf .signatures .testutils .PemFileHelper ;
33
+ import com .itextpdf .test .AssertUtil ;
28
34
import com .itextpdf .test .ExtendedITextTest ;
29
35
36
+ import java .io .IOException ;
37
+ import java .security .cert .CertificateException ;
38
+ import java .security .cert .X509Certificate ;
30
39
import java .util .Arrays ;
31
40
import java .util .Collections ;
32
41
import java .util .List ;
@@ -41,6 +50,13 @@ public class CertificateInfoTest extends ExtendedITextTest {
41
50
private static final IBouncyCastleFactory FACTORY = BouncyCastleFactoryCreator .getFactory ();
42
51
private static final String EXPECTED_EXCEPTION_MESSAGE = FACTORY .getBouncyCastleFactoryTestUtil ().getCertificateInfoTestConst ();
43
52
53
+ private static final String ENCODED_DN =
54
+ "MD0xCzAJBgNVBAYMAkJFMQ4wDAYDVQQKDAVpVGV4dDEeMBwGA1UEAwwVaVRleHRUZXN0SW50ZXJtZWRpYXRl" ;
55
+ private static final String CERTS_SRC = "./src/test/resources/com/itextpdf/signatures/certs/" ;
56
+ private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/signatures"
57
+ + "/CertificateInfoTest/" ;
58
+
59
+
44
60
@ Test
45
61
public void X500InvalidDirectoryConstructorTest () {
46
62
Assertions .assertThrows (IllegalArgumentException .class , () -> new CertificateInfo .X500Name ("some_dir" ));
@@ -95,4 +111,30 @@ public void getSubjectExceptionTest() {
95
111
Assertions .assertThrows (PdfException .class , () -> CertificateInfo .getSubject (new byte [] {4 , 8 , 15 , 16 , 23 , 42 }));
96
112
Assertions .assertEquals (EXPECTED_EXCEPTION_MESSAGE , exception .getCause ().getMessage ());
97
113
}
114
+
115
+
116
+ @ Test
117
+ public void distinguishedNameEncodingAndComparisonTest () throws CertificateException , IOException {
118
+
119
+ X509Certificate cert = (X509Certificate ) PemFileHelper .readFirstChain (CERTS_SRC + "intermediate.pem" )[0 ];
120
+ IX500Name name = FACTORY .createX500Name (cert );
121
+ IX500Name differentlyEncodedName = FACTORY .createX500Name (
122
+ FACTORY .createASN1Sequence (Base64 .decode (ENCODED_DN )));
123
+
124
+ Assertions .assertTrue (differentlyEncodedName .equals (name ));
125
+ Assertions .assertTrue (name .equals (differentlyEncodedName ));
126
+ }
127
+
128
+ @ Test
129
+ public void distinguishedNameEncodingAndComparisonIntegrationTest () {
130
+ AssertUtil .doesNotThrow (() ->
131
+ {
132
+ PdfDocument doc = new PdfDocument (
133
+ new PdfReader (SOURCE_FOLDER + "signatureWithNameEncodingDifferences.pdf" ));
134
+ SignatureUtil signUtil = new SignatureUtil (doc );
135
+ List <String > signNames = signUtil .getSignatureNames ();
136
+ PdfPKCS7 pkcs7 = signUtil .readSignatureData (signNames .get (0 ));
137
+ Assertions .assertNotNull (pkcs7 );
138
+ });
139
+ }
98
140
}
0 commit comments