blob: 5d0681983e964e76696ee7deaaa538be3782fec1 (
plain)
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
package org.spongycastle.asn1.x509;
import java.util.Enumeration;
import org.spongycastle.asn1.ASN1EncodableVector;
import org.spongycastle.asn1.ASN1Object;
import org.spongycastle.asn1.ASN1Primitive;
import org.spongycastle.asn1.ASN1Sequence;
import org.spongycastle.asn1.ASN1TaggedObject;
import org.spongycastle.asn1.DERBitString;
import org.spongycastle.asn1.DERSequence;
import org.spongycastle.asn1.x500.X500Name;
/**
* PKIX RFC-2459
*
* The X.509 v2 CRL syntax is as follows. For signature calculation,
* the data that is to be signed is ASN.1 DER encoded.
*
* <pre>
* CertificateList ::= SEQUENCE {
* tbsCertList TBSCertList,
* signatureAlgorithm AlgorithmIdentifier,
* signatureValue BIT STRING }
* </pre>
*/
public class CertificateList
extends ASN1Object
{
TBSCertList tbsCertList;
AlgorithmIdentifier sigAlgId;
DERBitString sig;
boolean isHashCodeSet = false;
int hashCodeValue;
public static CertificateList getInstance(
ASN1TaggedObject obj,
boolean explicit)
{
return getInstance(ASN1Sequence.getInstance(obj, explicit));
}
public static CertificateList getInstance(
Object obj)
{
if (obj instanceof CertificateList)
{
return (CertificateList)obj;
}
else if (obj != null)
{
return new CertificateList(ASN1Sequence.getInstance(obj));
}
return null;
}
/**
* @deprecated use getInstance() method.
* @param seq
*/
public CertificateList(
ASN1Sequence seq)
{
if (seq.size() == 3)
{
tbsCertList = TBSCertList.getInstance(seq.getObjectAt(0));
sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
sig = DERBitString.getInstance(seq.getObjectAt(2));
}
else
{
throw new IllegalArgumentException("sequence wrong size for CertificateList");
}
}
public TBSCertList getTBSCertList()
{
return tbsCertList;
}
public TBSCertList.CRLEntry[] getRevokedCertificates()
{
return tbsCertList.getRevokedCertificates();
}
public Enumeration getRevokedCertificateEnumeration()
{
return tbsCertList.getRevokedCertificateEnumeration();
}
public AlgorithmIdentifier getSignatureAlgorithm()
{
return sigAlgId;
}
public DERBitString getSignature()
{
return sig;
}
public int getVersionNumber()
{
return tbsCertList.getVersionNumber();
}
public X500Name getIssuer()
{
return tbsCertList.getIssuer();
}
public Time getThisUpdate()
{
return tbsCertList.getThisUpdate();
}
public Time getNextUpdate()
{
return tbsCertList.getNextUpdate();
}
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(tbsCertList);
v.add(sigAlgId);
v.add(sig);
return new DERSequence(v);
}
public int hashCode()
{
if (!isHashCodeSet)
{
hashCodeValue = super.hashCode();
isHashCodeSet = true;
}
return hashCodeValue;
}
}
|