Skip to content

Commit a57dd49

Browse files
committed
Add tests for Distinguished name comparison.
DEVSIX-9014
1 parent 0d8eb13 commit a57dd49

File tree

3 files changed

+43
-4
lines changed

3 files changed

+43
-4
lines changed

sign/src/test/java/com/itextpdf/signatures/BouncyCastleContractTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,12 @@ This file is part of the iText (R) project.
2727
import com.itextpdf.commons.bouncycastle.asn1.IASN1Primitive;
2828
import com.itextpdf.commons.bouncycastle.asn1.ocsp.IBasicOCSPResponse;
2929
import com.itextpdf.commons.bouncycastle.cert.ocsp.IBasicOCSPResp;
30-
import com.itextpdf.commons.bouncycastle.cert.ocsp.ISingleResp;
30+
3131
import com.itextpdf.commons.utils.Base64;
3232
import com.itextpdf.test.AssertUtil;
3333
import com.itextpdf.test.ExtendedITextTest;
3434

3535
import java.io.IOException;
36-
import java.security.Security;
37-
import org.junit.jupiter.api.Assertions;
38-
import org.junit.jupiter.api.BeforeAll;
3936
import org.junit.jupiter.api.Tag;
4037
import org.junit.jupiter.api.Test;
4138

sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,18 @@ This file is part of the iText (R) project.
2424

2525
import com.itextpdf.bouncycastleconnector.BouncyCastleFactoryCreator;
2626
import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory;
27+
import com.itextpdf.commons.bouncycastle.asn1.x500.IX500Name;
28+
import com.itextpdf.commons.utils.Base64;
2729
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;
2834
import com.itextpdf.test.ExtendedITextTest;
2935

36+
import java.io.IOException;
37+
import java.security.cert.CertificateException;
38+
import java.security.cert.X509Certificate;
3039
import java.util.Arrays;
3140
import java.util.Collections;
3241
import java.util.List;
@@ -41,6 +50,13 @@ public class CertificateInfoTest extends ExtendedITextTest {
4150
private static final IBouncyCastleFactory FACTORY = BouncyCastleFactoryCreator.getFactory();
4251
private static final String EXPECTED_EXCEPTION_MESSAGE = FACTORY.getBouncyCastleFactoryTestUtil().getCertificateInfoTestConst();
4352

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+
4460
@Test
4561
public void X500InvalidDirectoryConstructorTest() {
4662
Assertions.assertThrows(IllegalArgumentException.class, () -> new CertificateInfo.X500Name("some_dir"));
@@ -95,4 +111,30 @@ public void getSubjectExceptionTest() {
95111
Assertions.assertThrows(PdfException.class, () -> CertificateInfo.getSubject(new byte[] {4, 8, 15, 16, 23, 42}));
96112
Assertions.assertEquals(EXPECTED_EXCEPTION_MESSAGE, exception.getCause().getMessage());
97113
}
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+
}
98140
}

0 commit comments

Comments
 (0)