Skip to content

Commit a3990d4

Browse files
committed
relates to open-keychain#1 - removed use of ":" operator.
moved [] constructor to addAll method in ASN1EncodableVector
1 parent 57494e1 commit a3990d4

File tree

3 files changed

+39
-37
lines changed

3 files changed

+39
-37
lines changed

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

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,6 @@ public ASN1EncodableVector(int initialCapacity)
3030
this.copyOnWrite = false;
3131
}
3232

33-
public ASN1EncodableVector(ASN1Encodable[] items)
34-
{
35-
this();
36-
for (ASN1Encodable enc : items)
37-
{
38-
add(enc);
39-
}
40-
}
41-
4233
public void add(ASN1Encodable element)
4334
{
4435
if (null == element)
@@ -57,14 +48,29 @@ public void add(ASN1Encodable element)
5748
this.elementCount = minCapacity;
5849
}
5950

51+
public void addAll(ASN1Encodable[] others)
52+
{
53+
if (null == others)
54+
{
55+
throw new NullPointerException("'others' cannot be null");
56+
}
57+
58+
doAddAll(others, "'others' elements cannot be null");
59+
}
60+
6061
public void addAll(ASN1EncodableVector other)
6162
{
6263
if (null == other)
6364
{
6465
throw new NullPointerException("'other' cannot be null");
6566
}
6667

67-
int otherElementCount = other.size();
68+
doAddAll(other.elements, "'other' elements cannot be null");
69+
}
70+
71+
private void doAddAll(ASN1Encodable[] others, String nullMsg)
72+
{
73+
int otherElementCount = others.length;
6874
if (otherElementCount < 1)
6975
{
7076
return;
@@ -80,10 +86,10 @@ public void addAll(ASN1EncodableVector other)
8086
int i = 0;
8187
do
8288
{
83-
ASN1Encodable otherElement = other.get(i);
89+
ASN1Encodable otherElement = others[i];
8490
if (null == otherElement)
8591
{
86-
throw new NullPointerException("'other' elements cannot be null");
92+
throw new NullPointerException(nullMsg);
8793
}
8894

8995
this.elements[elementCount + i] = otherElement;

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.IOException;
44
import java.util.Collections;
5+
import java.util.Enumeration;
56
import java.util.HashSet;
67
import java.util.Hashtable;
78
import java.util.Set;
@@ -74,24 +75,24 @@ public void addExtension(
7475
boolean critical,
7576
byte[] value)
7677
{
77-
7878
if (extensions.containsKey(oid))
7979
{
8080
if (dupsAllowed.contains(oid))
8181
{
82-
8382
Extension existingExtension = (Extension)extensions.get(oid);
8483
ASN1Sequence seq1 = ASN1Sequence.getInstance(DEROctetString.getInstance(existingExtension.getExtnValue()).getOctets());
85-
ASN1EncodableVector items = new ASN1EncodableVector();
86-
for (ASN1Encodable enc : seq1)
84+
ASN1Sequence seq2 = ASN1Sequence.getInstance(value);
85+
86+
ASN1EncodableVector items = new ASN1EncodableVector(seq1.size() + seq2.size());
87+
for (Enumeration en = seq1.getObjects(); en.hasMoreElements();)
8788
{
88-
items.add(enc);
89+
items.add((ASN1Encodable)en.nextElement());
8990
}
90-
ASN1Sequence seq2 = ASN1Sequence.getInstance(value);
91-
for (ASN1Encodable enc : seq2)
91+
for (Enumeration en = seq2.getObjects(); en.hasMoreElements();)
9292
{
93-
items.add(enc);
93+
items.add((ASN1Encodable)en.nextElement());
9494
}
95+
9596
try
9697
{
9798
extensions.put(oid, new Extension(oid, critical, new DERSequence(items).getEncoded()));

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

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import java.text.ParseException;
66
import java.util.Date;
77

8-
import org.bouncycastle.asn1.ASN1Encodable;
98
import org.bouncycastle.asn1.ASN1EncodableVector;
109
import org.bouncycastle.asn1.ASN1GeneralizedTime;
1110
import org.bouncycastle.asn1.ASN1Integer;
@@ -42,7 +41,6 @@
4241
import org.bouncycastle.util.Arrays;
4342
import org.bouncycastle.util.encoders.Base64;
4443
import org.bouncycastle.util.test.SimpleTest;
45-
import org.junit.Test;
4644

4745
public class GenerationTest
4846
extends SimpleTest
@@ -385,8 +383,8 @@ public void testDuplicateExtensions()
385383

386384

387385
ExtensionsGenerator extensionsGenerator = new ExtensionsGenerator();
388-
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name1})));
389-
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name2})));
386+
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(name1));
387+
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(name2));
390388

391389
//
392390
// Generate and deserialise.
@@ -434,37 +432,34 @@ public void testDuplicateExtensions()
434432
}
435433
}
436434

437-
438-
@Test
439435
public void testAllowedDuplicateExtensions()
440436
throws Exception
441437
{
442-
443438
// Testing for handling of duplicates
444439

445440
GeneralName name1 = new GeneralName(GeneralName.dNSName, "bc1.local");
446441
GeneralName name2 = new GeneralName(GeneralName.dNSName, "bc2.local");
447442

448443

449444
ExtensionsGenerator extensionsGenerator = new ExtensionsGenerator();
450-
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name1})));
451-
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name2})));
445+
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(name1));
446+
extensionsGenerator.addExtension(Extension.subjectAlternativeName, false, new DERSequence(name2));
452447

453-
extensionsGenerator.addExtension(Extension.issuerAlternativeName, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name1})));
454-
extensionsGenerator.addExtension(Extension.issuerAlternativeName, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name2})));
448+
extensionsGenerator.addExtension(Extension.issuerAlternativeName, false, new DERSequence(name1));
449+
extensionsGenerator.addExtension(Extension.issuerAlternativeName, false, new DERSequence(name2));
455450

456451

457-
extensionsGenerator.addExtension(Extension.subjectDirectoryAttributes, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name1})));
458-
extensionsGenerator.addExtension(Extension.subjectDirectoryAttributes, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name2})));
452+
extensionsGenerator.addExtension(Extension.subjectDirectoryAttributes, false, new DERSequence(name1));
453+
extensionsGenerator.addExtension(Extension.subjectDirectoryAttributes, false, new DERSequence(name2));
459454

460-
extensionsGenerator.addExtension(Extension.certificateIssuer, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name1})));
461-
extensionsGenerator.addExtension(Extension.certificateIssuer, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name2})));
455+
extensionsGenerator.addExtension(Extension.certificateIssuer, false, new DERSequence(name1));
456+
extensionsGenerator.addExtension(Extension.certificateIssuer, false, new DERSequence(name2));
462457

463458

464-
extensionsGenerator.addExtension(Extension.auditIdentity, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name1})));
459+
extensionsGenerator.addExtension(Extension.auditIdentity, false, new DERSequence(name1));
465460
try
466461
{
467-
extensionsGenerator.addExtension(Extension.auditIdentity, false, new DERSequence(new ASN1EncodableVector(new ASN1Encodable[]{name2})));
462+
extensionsGenerator.addExtension(Extension.auditIdentity, false, new DERSequence(name2));
468463
fail("Expected exception, not a white listed duplicate.");
469464
}
470465
catch (Exception ex)

0 commit comments

Comments
 (0)