Skip to content

Commit 3f4e391

Browse files
committed
Update bouncy castle fips to version 2.0.0
DEVSIX-8589
1 parent c5b8096 commit 3f4e391

15 files changed

+45
-87
lines changed

bouncy-castle-fips-adapter/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<url>https://itextpdf.com/</url>
1515

1616
<properties>
17-
<bouncycastleFips.version>1.0.2.4</bouncycastleFips.version>
18-
<bouncycastlePkixFips.version>1.0.7</bouncycastlePkixFips.version>
17+
<bouncycastleFips.version>2.0.0</bouncycastleFips.version>
18+
<bouncycastlePkixFips.version>2.0.7</bouncycastlePkixFips.version>
1919
<sonar.coverage.exclusions>**/*</sonar.coverage.exclusions>
2020
<sonar.cpd.exclusions>**/*</sonar.cpd.exclusions>
2121
</properties>

bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsFactory.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,6 @@ This file is part of the iText (R) project.
280280
import org.bouncycastle.asn1.ASN1UTCTime;
281281
import org.bouncycastle.asn1.DERIA5String;
282282
import org.bouncycastle.asn1.DEROctetString;
283-
import org.bouncycastle.asn1.DEROutputStream;
284-
import org.bouncycastle.asn1.DLOutputStream;
285283
import org.bouncycastle.asn1.cms.Attribute;
286284
import org.bouncycastle.asn1.cms.ContentInfo;
287285
import org.bouncycastle.asn1.esf.SigPolicyQualifierInfo;
@@ -613,12 +611,7 @@ public IASN1OutputStream createASN1OutputStream(OutputStream stream) {
613611
*/
614612
@Override
615613
public IASN1OutputStream createASN1OutputStream(OutputStream outputStream, String asn1Encoding) {
616-
if ("DER".equals(asn1Encoding)) {
617-
return new ASN1OutputStreamBCFips(new DEROutputStream(outputStream));
618-
} else {
619-
return new ASN1OutputStreamBCFips("DL".equals(asn1Encoding) ? new DLOutputStream(outputStream)
620-
: new ASN1OutputStream(outputStream));
621-
}
614+
return new ASN1OutputStreamBCFips(ASN1OutputStream.create(outputStream, asn1Encoding));
622615
}
623616

624617
/**

bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsTestConstantsFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ class BouncyCastleFipsTestConstantsFactory implements IBouncyCastleTestConstants
3232

3333
@Override
3434
public String getCertificateInfoTestConst() {
35-
return "DEF length 8 object truncated by 4";
35+
return "corrupted stream - out of bounds length found: 8 >= 6";
3636
}
3737
}

bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OutputStreamBCFips.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class ASN1OutputStreamBCFips implements IASN1OutputStream {
4242
* @param stream OutputStream to create {@link ASN1OutputStream} to be wrapped
4343
*/
4444
public ASN1OutputStreamBCFips(OutputStream stream) {
45-
this.stream = new ASN1OutputStream(stream);
45+
this.stream = ASN1OutputStream.create(stream);
4646
}
4747

4848
/**

bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestGeneratorBCFips.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ This file is part of the iText (R) project.
2929

3030
import java.math.BigInteger;
3131
import java.util.Objects;
32+
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
3233
import org.bouncycastle.tsp.TimeStampRequestGenerator;
3334

3435
/**
@@ -68,7 +69,7 @@ public void setCertReq(boolean var1) {
6869
*/
6970
@Override
7071
public void setReqPolicy(String reqPolicy) {
71-
requestGenerator.setReqPolicy(reqPolicy);
72+
requestGenerator.setReqPolicy(new ASN1ObjectIdentifier(reqPolicy));
7273
}
7374

7475
/**

sharpenConfiguration.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@
223223
<file path="com/itextpdf/bouncycastle/tsp/TimeStampTokenGeneratorBC.java"/>
224224
<file path="com/itextpdf/bouncycastle/tsp/TimeStampTokenBC.java"/>
225225
<file path="com/itextpdf/bouncycastlefips/BouncyCastleFipsFactory.java"/>
226+
<file path="com/itextpdf/bouncycastlefips/BouncyCastleFipsTestConstantsFactory.java"/>
226227
<file path="com/itextpdf/bouncycastlefips/asn1/ASN1IntegerBCFips.java"/>
227228
<file path="com/itextpdf/bouncycastlefips/asn1/ASN1OctetStringBCFips.java"/>
228229
<file path="com/itextpdf/bouncycastlefips/asn1/ASN1SequenceBCFips.java"/>

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ This file is part of the iText (R) project.
2222
*/
2323
package com.itextpdf.signatures;
2424

25+
import com.itextpdf.signatures.logs.SignLogMessageConstant;
2526
import com.itextpdf.test.ExtendedITextTest;
27+
import com.itextpdf.test.annotations.LogMessage;
28+
import com.itextpdf.test.annotations.LogMessages;
2629

2730
import java.io.ByteArrayInputStream;
2831
import java.io.IOException;
@@ -32,7 +35,7 @@ This file is part of the iText (R) project.
3235
import org.junit.jupiter.api.Test;
3336
import org.junit.jupiter.api.Tag;
3437

35-
@Tag("UnitTest")
38+
@Tag("BouncyCastleUnitTest")
3639
public class DigestAlgorithmsManualTest extends ExtendedITextTest {
3740

3841
@Test
@@ -54,4 +57,13 @@ public void digestSHA256SUNTest() throws GeneralSecurityException, IOException {
5457
119, -42, -59, -31, 121, -87, -82, -45, 119, 61, 92, 110, -99, 105, 4, 97, 12, 127, -62};
5558
Assertions.assertArrayEquals(expected, hash);
5659
}
60+
61+
@LogMessages(messages = {
62+
@LogMessage(messageTemplate = SignLogMessageConstant.ALGORITHM_NOT_FROM_SPEC, ignore = true)})
63+
@Test
64+
public void notAllowedNameGetAllowedDigestTest() {
65+
String name = "SM3";
66+
String oid = "1.2.156.10197.1.401";
67+
Assertions.assertEquals(oid, DigestAlgorithms.getAllowedDigest(name));
68+
}
5769
}

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,4 @@ public void notAllowedOidGetDigestTest() {
8080
String oid = "1.2.156.10197.1.401";
8181
Assertions.assertEquals(FIPS_MODE ? oid : name, DigestAlgorithms.getDigest(oid));
8282
}
83-
84-
@LogMessages(messages = {
85-
@LogMessage(messageTemplate = SignLogMessageConstant.ALGORITHM_NOT_FROM_SPEC, ignore = true)})
86-
@Test
87-
public void notAllowedNameGetAllowedDigestTest() {
88-
String name = "SM3";
89-
String oid = "1.2.156.10197.1.401";
90-
Assertions.assertEquals(FIPS_MODE ? null : oid, DigestAlgorithms.getAllowedDigest(name));
91-
}
9283
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,14 @@ public void verifyRsaPssSha3SignatureTest() throws IOException, GeneralSecurityE
6666
verifyIsoExtensionExample("RSASSA-PSS", "sample-pss-sha3_256.pdf");
6767
}
6868

69+
@Test
70+
public void verifyEd448SignatureTest() throws IOException, GeneralSecurityException {
71+
// Ed448 is not available in BCFIPS approved mode
72+
if (BOUNCY_CASTLE_FACTORY.isInApprovedOnlyMode()) {
73+
Assertions.assertThrows(PdfException.class,
74+
() -> verifyIsoExtensionExample("Ed448", "sample-ed448-shake256.pdf"));
75+
} else {
76+
verifyIsoExtensionExample("Ed448", "sample-ed448-shake256.pdf");
77+
}
78+
}
6979
}

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

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -348,17 +348,6 @@ public void getEncodedPkcs7WithRevocationInfoTest() throws NoSuchAlgorithmExcept
348348
Assertions.assertEquals(serializedAsString(bytes), serializedAsString(cmpBytes));
349349
}
350350

351-
@Test
352-
public void verifyEd448SignatureTest() throws IOException, GeneralSecurityException {
353-
// SHAKE256 is not available in BCFIPS
354-
if ("BCFIPS".equals(BOUNCY_CASTLE_FACTORY.getProviderName())) {
355-
Assertions.assertThrows(PdfException.class,
356-
() -> verifyIsoExtensionExample("Ed448", "sample-ed448-shake256.pdf"));
357-
} else {
358-
verifyIsoExtensionExample("Ed448", "sample-ed448-shake256.pdf");
359-
}
360-
}
361-
362351
@Test
363352
public void verifyNistECDSASha2SignatureTest() throws IOException, GeneralSecurityException {
364353
verifyIsoExtensionExample("SHA256withECDSA", "sample-nistp256-sha256.pdf");

0 commit comments

Comments
 (0)