1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
package org.bouncycastle.asn1.test;
import java.io.IOException;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.x509.DistributionPointName;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.GeneralNames;
import org.bouncycastle.asn1.x509.IssuingDistributionPoint;
import org.bouncycastle.asn1.x509.ReasonFlags;
import org.bouncycastle.asn1.x509.X509Name;
import org.bouncycastle.util.test.SimpleTest;
public class IssuingDistributionPointUnitTest
extends SimpleTest
{
public String getName()
{
return "IssuingDistributionPoint";
}
public void performTest()
throws Exception
{
DistributionPointName name = new DistributionPointName(
new GeneralNames(new GeneralName(new X509Name("cn=test"))));
ReasonFlags reasonFlags = new ReasonFlags(ReasonFlags.cACompromise);
checkPoint(6, name, true, true, reasonFlags, true, true);
checkPoint(2, name, false, false, reasonFlags, false, false);
checkPoint(0, null, false, false, null, false, false);
try
{
IssuingDistributionPoint.getInstance(new Object());
fail("getInstance() failed to detect bad object.");
}
catch (IllegalArgumentException e)
{
// expected
}
}
private void checkPoint(
int size,
DistributionPointName distributionPoint,
boolean onlyContainsUserCerts,
boolean onlyContainsCACerts,
ReasonFlags onlySomeReasons,
boolean indirectCRL,
boolean onlyContainsAttributeCerts)
throws IOException
{
IssuingDistributionPoint point = new IssuingDistributionPoint(distributionPoint, onlyContainsUserCerts, onlyContainsCACerts, onlySomeReasons, indirectCRL, onlyContainsAttributeCerts);
checkValues(point, distributionPoint, onlyContainsUserCerts, onlyContainsCACerts, onlySomeReasons, indirectCRL, onlyContainsAttributeCerts);
ASN1Sequence seq = ASN1Sequence.getInstance(ASN1Primitive.fromByteArray(point.getEncoded()));
if (seq.size() != size)
{
fail("size mismatch");
}
point = IssuingDistributionPoint.getInstance(seq);
checkValues(point, distributionPoint, onlyContainsUserCerts, onlyContainsCACerts, onlySomeReasons, indirectCRL, onlyContainsAttributeCerts);
}
private void checkValues(IssuingDistributionPoint point, DistributionPointName distributionPoint, boolean onlyContainsUserCerts, boolean onlyContainsCACerts, ReasonFlags onlySomeReasons, boolean indirectCRL, boolean onlyContainsAttributeCerts)
{
if (point.onlyContainsUserCerts() != onlyContainsUserCerts)
{
fail("mismatch on onlyContainsUserCerts");
}
if (point.onlyContainsCACerts() != onlyContainsCACerts)
{
fail("mismatch on onlyContainsCACerts");
}
if (point.isIndirectCRL() != indirectCRL)
{
fail("mismatch on indirectCRL");
}
if (point.onlyContainsAttributeCerts() != onlyContainsAttributeCerts)
{
fail("mismatch on onlyContainsAttributeCerts");
}
if (!isEquiv(onlySomeReasons, point.getOnlySomeReasons()))
{
fail("mismatch on onlySomeReasons");
}
if (!isEquiv(distributionPoint, point.getDistributionPoint()))
{
fail("mismatch on distributionPoint");
}
}
private boolean isEquiv(Object o1, Object o2)
{
if (o1 == null)
{
return o2 == null;
}
return o1.equals(o2);
}
public static void main(
String[] args)
{
runTest(new IssuingDistributionPointUnitTest());
}
}
|