Skip to content

Commit c41b450

Browse files
committed
fixed typo in ASN1TaggedObject exception message
moved DeltaCertificate support to use explicit tags.
1 parent c8f563d commit c41b450

File tree

5 files changed

+135
-719
lines changed

5 files changed

+135
-719
lines changed

core/src/main/java/org/bouncycastle/asn1/ASN1TaggedObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ ASN1Primitive getBaseUniversal(boolean declaredExplicit, ASN1UniversalType unive
358358
{
359359
if (!isExplicit())
360360
{
361-
throw new IllegalStateException("object explicit - implicit expected.");
361+
throw new IllegalStateException("object implicit - explicit expected.");
362362
}
363363

364364
return universalType.checkedCast(obj.toASN1Primitive());

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ private DeltaCertificateDescriptor(ASN1Sequence seq)
8383
switch (tagged.getTagNo())
8484
{
8585
case 0:
86-
signature = AlgorithmIdentifier.getInstance(tagged, false);
86+
signature = AlgorithmIdentifier.getInstance(tagged, true);
8787
break;
8888
case 1:
8989
issuer = X500Name.getInstance(tagged, true); // issuer
9090
break;
9191
case 2:
92-
validity = ASN1Sequence.getInstance(tagged, false);
92+
validity = ASN1Sequence.getInstance(tagged, true);
9393
break;
9494
case 3:
9595
subject = X500Name.getInstance(tagged, true); // subject
@@ -107,7 +107,7 @@ private DeltaCertificateDescriptor(ASN1Sequence seq)
107107
switch (tagged.getTagNo())
108108
{
109109
case 4:
110-
extensions = Extensions.getInstance(tagged, false);
110+
extensions = Extensions.getInstance(tagged, true);
111111
break;
112112
}
113113
next = seq.getObjectAt(idx++);
@@ -178,7 +178,7 @@ public DeltaCertificateDescriptor trimTo(TBSCertificate baseTbsCertificate, Exte
178178
switch (tagged.getTagNo())
179179
{
180180
case 0:
181-
AlgorithmIdentifier sig = AlgorithmIdentifier.getInstance(tagged, false);
181+
AlgorithmIdentifier sig = AlgorithmIdentifier.getInstance(tagged, true);
182182
if (!sig.equals(signature))
183183
{
184184
v.add(next);
@@ -192,7 +192,7 @@ public DeltaCertificateDescriptor trimTo(TBSCertificate baseTbsCertificate, Exte
192192
}
193193
break;
194194
case 2:
195-
ASN1Sequence val = ASN1Sequence.getInstance(tagged, false);
195+
ASN1Sequence val = ASN1Sequence.getInstance(tagged, true);
196196
if (!val.equals(validity))
197197
{
198198
v.add(next);
@@ -218,7 +218,7 @@ public DeltaCertificateDescriptor trimTo(TBSCertificate baseTbsCertificate, Exte
218218
switch (tagged.getTagNo())
219219
{
220220
case 4:
221-
Extensions deltaExts = Extensions.getInstance(tagged, false);
221+
Extensions deltaExts = Extensions.getInstance(tagged, true);
222222
ExtensionsGenerator deltaExtGen = new ExtensionsGenerator();
223223
for (Enumeration extEn = deltaExts.oids(); extEn.hasMoreElements(); )
224224
{
@@ -237,7 +237,7 @@ public DeltaCertificateDescriptor trimTo(TBSCertificate baseTbsCertificate, Exte
237237
DeltaCertificateDescriptor trimmedDeltaCertDesc;
238238
if (!deltaExtGen.isEmpty())
239239
{
240-
v.add(new DERTaggedObject(false, 4, deltaExtGen.generate()));
240+
v.add(new DERTaggedObject(true, 4, deltaExtGen.generate()));
241241
}
242242
}
243243
next = (ASN1Encodable)en.nextElement();
@@ -261,12 +261,12 @@ public ASN1Primitive toASN1Primitive()
261261
ASN1EncodableVector v = new ASN1EncodableVector(7);
262262

263263
v.add(serialNumber);
264-
addOptional(v, 0, false, signature);
264+
addOptional(v, 0, true, signature);
265265
addOptional(v, 1, true, issuer); // CHOICE
266-
addOptional(v, 2, false, validity);
266+
addOptional(v, 2, true, validity);
267267
addOptional(v, 3, true, subject); // CHOICE
268268
v.add(subjectPublicKeyInfo);
269-
addOptional(v, 4, false, extensions);
269+
addOptional(v, 4, true, extensions);
270270
v.add(signatureValue);
271271

272272
return new DERSequence(v);

pkix/src/main/java/org/bouncycastle/cert/DeltaCertificateTool.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,19 @@ public static Extension makeDeltaCertificateExtension(boolean isCritical, X509Ce
2828
ASN1EncodableVector deltaV = new ASN1EncodableVector();
2929

3030
deltaV.add(new ASN1Integer(deltaCert.getSerialNumber()));
31-
deltaV.add(new DERTaggedObject(false, 0, deltaCert.getSignatureAlgorithm()));
32-
deltaV.add(new DERTaggedObject(false, 1, deltaCert.getIssuer()));
31+
deltaV.add(new DERTaggedObject(true, 0, deltaCert.getSignatureAlgorithm()));
32+
deltaV.add(new DERTaggedObject(true, 1, deltaCert.getIssuer()));
3333

3434
ASN1EncodableVector validity = new ASN1EncodableVector(2);
3535
validity.add(deltaCert.toASN1Structure().getStartDate());
3636
validity.add(deltaCert.toASN1Structure().getEndDate());
3737

38-
deltaV.add(new DERTaggedObject(false, 2, new DERSequence(validity)));
39-
deltaV.add(new DERTaggedObject(false, 3, deltaCert.getSubject()));
38+
deltaV.add(new DERTaggedObject(true, 2, new DERSequence(validity)));
39+
deltaV.add(new DERTaggedObject(true, 3, deltaCert.getSubject()));
4040
deltaV.add(deltaCert.getSubjectPublicKeyInfo());
4141
if (deltaCert.getExtensions() != null)
4242
{
43-
deltaV.add(new DERTaggedObject(false, 4, deltaCert.getExtensions()));
43+
deltaV.add(new DERTaggedObject(true, 4, deltaCert.getExtensions()));
4444
}
4545
deltaV.add(new DERBitString(deltaCert.getSignature()));
4646

@@ -51,6 +51,10 @@ public static X509CertificateHolder extractDeltaCertificate(X509CertificateHolde
5151
{
5252
ASN1ObjectIdentifier deltaExtOid = Extension.deltaCertificateDescriptor;
5353
Extension deltaExt = originCert.getExtension(deltaExtOid);
54+
if (deltaExt == null)
55+
{
56+
throw new IllegalStateException("no deltaCertificateDescriptor present");
57+
}
5458

5559
ASN1Sequence seq = ASN1Sequence.getInstance(deltaExt.getParsedValue());
5660
// * version [ 0 ] Version DEFAULT v1(0),
@@ -77,13 +81,13 @@ public static X509CertificateHolder extractDeltaCertificate(X509CertificateHolde
7781
switch (tagged.getTagNo())
7882
{
7983
case 0:
80-
extracted[2] = ASN1Sequence.getInstance(tagged, false);
84+
extracted[2] = ASN1Sequence.getInstance(tagged, true);
8185
break;
8286
case 1:
8387
extracted[3] = ASN1Sequence.getInstance(tagged, true); // issuer
8488
break;
8589
case 2:
86-
extracted[4] = ASN1Sequence.getInstance(tagged, false);
90+
extracted[4] = ASN1Sequence.getInstance(tagged, true);
8791
break;
8892
case 3:
8993
extracted[5] = ASN1Sequence.getInstance((ASN1TaggedObject)next, true); // subject
@@ -125,7 +129,7 @@ public static X509CertificateHolder extractDeltaCertificate(X509CertificateHolde
125129
throw new IllegalArgumentException("malformed delta extension");
126130
}
127131

128-
ASN1Sequence deltaExts = ASN1Sequence.getInstance(tagged, false);
132+
ASN1Sequence deltaExts = ASN1Sequence.getInstance(tagged, true);
129133

130134
for (int i = 0; i != deltaExts.size(); i++)
131135
{

pkix/src/main/java/org/bouncycastle/pkcs/DeltaCertificateRequestAttributeValue.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.bouncycastle.asn1.pkcs.Attribute;
88
import org.bouncycastle.asn1.x500.X500Name;
99
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
10+
import org.bouncycastle.asn1.x509.DeltaCertificateDescriptor;
1011
import org.bouncycastle.asn1.x509.Extensions;
1112
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
1213

@@ -27,6 +28,21 @@ public DeltaCertificateRequestAttributeValue(Attribute attribute)
2728
this(ASN1Sequence.getInstance(attribute.getAttributeValues()[0]));
2829
}
2930

31+
public static DeltaCertificateRequestAttributeValue getInstance(Object o)
32+
{
33+
if (o instanceof DeltaCertificateDescriptor)
34+
{
35+
return (DeltaCertificateRequestAttributeValue)o;
36+
}
37+
38+
if (o != null)
39+
{
40+
new DeltaCertificateRequestAttributeValue(ASN1Sequence.getInstance(o));
41+
}
42+
43+
return null;
44+
}
45+
3046
DeltaCertificateRequestAttributeValue(ASN1Sequence attrSeq)
3147
{
3248
this.attrSeq = attrSeq;
@@ -56,11 +72,11 @@ public DeltaCertificateRequestAttributeValue(Attribute attribute)
5672
ASN1TaggedObject tagObj = ASN1TaggedObject.getInstance(attrSeq.getObjectAt(idx));
5773
if (tagObj.getTagNo() == 1)
5874
{
59-
ext = Extensions.getInstance(tagObj, false);
75+
ext = Extensions.getInstance(tagObj, true);
6076
}
6177
else if (tagObj.getTagNo() == 2)
6278
{
63-
sigAlg = AlgorithmIdentifier.getInstance(tagObj, false);
79+
sigAlg = AlgorithmIdentifier.getInstance(tagObj, true);
6480
}
6581
else
6682
{

0 commit comments

Comments
 (0)