Skip to content

Commit 7ec58ff

Browse files
committed
added constraint check on "only*Certs" fields plus test for same. Relates to github #2051.
1 parent 9077f2f commit 7ec58ff

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

core/src/main/java/org/bouncycastle/asn1/x509/IssuingDistributionPoint.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ public IssuingDistributionPoint(
8484
boolean indirectCRL,
8585
boolean onlyContainsAttributeCerts)
8686
{
87+
if ((onlyContainsCACerts && (onlyContainsUserCerts || onlyContainsAttributeCerts))
88+
|| (onlyContainsUserCerts && onlyContainsAttributeCerts))
89+
{
90+
throw new IllegalArgumentException("only one of onlyContainsCACerts, onlyContainsUserCerts, or onlyContainsAttributeCerts can be true");
91+
}
92+
8793
this.distributionPoint = distributionPoint;
8894
this.indirectCRL = indirectCRL;
8995
this.onlyContainsAttributeCerts = onlyContainsAttributeCerts;

core/src/test/java/org/bouncycastle/asn1/test/IssuingDistributionPointUnitTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ public void performTest()
2727
new GeneralNames(new GeneralName(new X500Name("cn=test"))));
2828
ReasonFlags reasonFlags = new ReasonFlags(ReasonFlags.cACompromise);
2929

30-
checkPoint(6, name, true, true, reasonFlags, true, true);
30+
checkOnlyException(name, true, true, reasonFlags, true, true);
31+
checkOnlyException(name, true, true, reasonFlags, true, false);
32+
checkOnlyException(name, true, false, reasonFlags, true, true);
3133

3234
checkPoint(2, name, false, false, reasonFlags, false, false);
3335

@@ -45,6 +47,26 @@ public void performTest()
4547
}
4648
}
4749

50+
private void checkOnlyException(
51+
DistributionPointName distributionPoint,
52+
boolean onlyContainsUserCerts,
53+
boolean onlyContainsCACerts,
54+
ReasonFlags onlySomeReasons,
55+
boolean indirectCRL,
56+
boolean onlyContainsAttributeCerts)
57+
throws IOException
58+
{
59+
try
60+
{
61+
new IssuingDistributionPoint(distributionPoint, onlyContainsUserCerts, onlyContainsCACerts, onlySomeReasons, indirectCRL, onlyContainsAttributeCerts);
62+
fail("no exception");
63+
}
64+
catch (IllegalArgumentException e)
65+
{
66+
isEquals("only one of onlyContainsCACerts, onlyContainsUserCerts, or onlyContainsAttributeCerts can be true", e.getMessage());
67+
}
68+
}
69+
4870
private void checkPoint(
4971
int size,
5072
DistributionPointName distributionPoint,

0 commit comments

Comments
 (0)