diff options
Diffstat (limited to 'core/src/test/java/org/bouncycastle/asn1/test/ASN1SequenceParserTest.java')
-rw-r--r-- | core/src/test/java/org/bouncycastle/asn1/test/ASN1SequenceParserTest.java | 372 |
1 files changed, 0 insertions, 372 deletions
diff --git a/core/src/test/java/org/bouncycastle/asn1/test/ASN1SequenceParserTest.java b/core/src/test/java/org/bouncycastle/asn1/test/ASN1SequenceParserTest.java deleted file mode 100644 index e0cd1af2..00000000 --- a/core/src/test/java/org/bouncycastle/asn1/test/ASN1SequenceParserTest.java +++ /dev/null @@ -1,372 +0,0 @@ -package org.bouncycastle.asn1.test; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.util.Arrays; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.bouncycastle.asn1.ASN1Integer; -import org.bouncycastle.asn1.ASN1Null; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.ASN1SequenceParser; -import org.bouncycastle.asn1.ASN1StreamParser; -import org.bouncycastle.asn1.BERSequenceGenerator; -import org.bouncycastle.asn1.DERSequenceGenerator; -import org.bouncycastle.util.encoders.Hex; - -public class ASN1SequenceParserTest - extends TestCase -{ - private static final byte[] seqData = Hex.decode("3006020100060129"); - private static final byte[] nestedSeqData = Hex.decode("300b0201000601293003020101"); - private static final byte[] expTagSeqData = Hex.decode("a1083006020100060129"); - private static final byte[] implTagSeqData = Hex.decode("a106020100060129"); - private static final byte[] nestedSeqExpTagData = Hex.decode("300d020100060129a1053003020101"); - private static final byte[] nestedSeqImpTagData = Hex.decode("300b020100060129a103020101"); - - private static final byte[] berSeqData = Hex.decode("30800201000601290000"); - private static final byte[] berDERNestedSeqData = Hex.decode("308002010006012930030201010000"); - private static final byte[] berNestedSeqData = Hex.decode("3080020100060129308002010100000000"); - private static final byte[] berExpTagSeqData = Hex.decode("a180308002010006012900000000"); - - private static final byte[] berSeqWithDERNullData = Hex.decode("308005000201000601290000"); - - public void testDERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - DERSequenceGenerator seqGen = new DERSequenceGenerator(bOut); - - seqGen.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen.addObject(new ASN1ObjectIdentifier("1.1")); - - seqGen.close(); - - assertTrue("basic DER writing test failed.", Arrays.equals(seqData, bOut.toByteArray())); - } - - public void testNestedDERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - DERSequenceGenerator seqGen1 = new DERSequenceGenerator(bOut); - - seqGen1.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen1.addObject(new ASN1ObjectIdentifier("1.1")); - - DERSequenceGenerator seqGen2 = new DERSequenceGenerator(seqGen1.getRawOutputStream()); - - seqGen2.addObject(new ASN1Integer(BigInteger.valueOf(1))); - - seqGen2.close(); - - seqGen1.close(); - - assertTrue("nested DER writing test failed.", Arrays.equals(nestedSeqData, bOut.toByteArray())); - } - - public void testDERExplicitTaggedSequenceWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - DERSequenceGenerator seqGen = new DERSequenceGenerator(bOut, 1, true); - - seqGen.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen.addObject(new ASN1ObjectIdentifier("1.1")); - - seqGen.close(); - - assertTrue("explicit tag writing test failed.", Arrays.equals(expTagSeqData, bOut.toByteArray())); - } - - public void testDERImplicitTaggedSequenceWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - DERSequenceGenerator seqGen = new DERSequenceGenerator(bOut, 1, false); - - seqGen.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen.addObject(new ASN1ObjectIdentifier("1.1")); - - seqGen.close(); - - assertTrue("implicit tag writing test failed.", Arrays.equals(implTagSeqData, bOut.toByteArray())); - } - - public void testNestedExplicitTagDERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - DERSequenceGenerator seqGen1 = new DERSequenceGenerator(bOut); - - seqGen1.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen1.addObject(new ASN1ObjectIdentifier("1.1")); - - DERSequenceGenerator seqGen2 = new DERSequenceGenerator(seqGen1.getRawOutputStream(), 1, true); - - seqGen2.addObject(new ASN1Integer(BigInteger.valueOf(1))); - - seqGen2.close(); - - seqGen1.close(); - - assertTrue("nested explicit tagged DER writing test failed.", Arrays.equals(nestedSeqExpTagData, bOut.toByteArray())); - } - - public void testNestedImplicitTagDERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - DERSequenceGenerator seqGen1 = new DERSequenceGenerator(bOut); - - seqGen1.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen1.addObject(new ASN1ObjectIdentifier("1.1")); - - DERSequenceGenerator seqGen2 = new DERSequenceGenerator(seqGen1.getRawOutputStream(), 1, false); - - seqGen2.addObject(new ASN1Integer(BigInteger.valueOf(1))); - - seqGen2.close(); - - seqGen1.close(); - - assertTrue("nested implicit tagged DER writing test failed.", Arrays.equals(nestedSeqImpTagData, bOut.toByteArray())); - } - - public void testBERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - BERSequenceGenerator seqGen = new BERSequenceGenerator(bOut); - - seqGen.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen.addObject(new ASN1ObjectIdentifier("1.1")); - - seqGen.close(); - - assertTrue("basic BER writing test failed.", Arrays.equals(berSeqData, bOut.toByteArray())); - } - - public void testNestedBERDERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - BERSequenceGenerator seqGen1 = new BERSequenceGenerator(bOut); - - seqGen1.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen1.addObject(new ASN1ObjectIdentifier("1.1")); - - DERSequenceGenerator seqGen2 = new DERSequenceGenerator(seqGen1.getRawOutputStream()); - - seqGen2.addObject(new ASN1Integer(BigInteger.valueOf(1))); - - seqGen2.close(); - - seqGen1.close(); - - assertTrue("nested BER/DER writing test failed.", Arrays.equals(berDERNestedSeqData, bOut.toByteArray())); - } - - public void testNestedBERWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - BERSequenceGenerator seqGen1 = new BERSequenceGenerator(bOut); - - seqGen1.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen1.addObject(new ASN1ObjectIdentifier("1.1")); - - BERSequenceGenerator seqGen2 = new BERSequenceGenerator(seqGen1.getRawOutputStream()); - - seqGen2.addObject(new ASN1Integer(BigInteger.valueOf(1))); - - seqGen2.close(); - - seqGen1.close(); - - assertTrue("nested BER writing test failed.", Arrays.equals(berNestedSeqData, bOut.toByteArray())); - } - - public void testDERReading() - throws Exception - { - ASN1StreamParser aIn = new ASN1StreamParser(seqData); - - ASN1SequenceParser seq = (ASN1SequenceParser)aIn.readObject(); - Object o; - int count = 0; - - assertNotNull("null sequence returned", seq); - - while ((o = seq.readObject()) != null) - { - switch (count) - { - case 0: - assertTrue(o instanceof ASN1Integer); - break; - case 1: - assertTrue(o instanceof ASN1ObjectIdentifier); - break; - } - count++; - } - - assertEquals("wrong number of objects in sequence", 2, count); - } - - private void testNestedReading( - byte[] data) - throws Exception - { - ASN1StreamParser aIn = new ASN1StreamParser(data); - - ASN1SequenceParser seq = (ASN1SequenceParser)aIn.readObject(); - Object o; - int count = 0; - - assertNotNull("null sequence returned", seq); - - while ((o = seq.readObject()) != null) - { - switch (count) - { - case 0: - assertTrue(o instanceof ASN1Integer); - break; - case 1: - assertTrue(o instanceof ASN1ObjectIdentifier); - break; - case 2: - assertTrue(o instanceof ASN1SequenceParser); - - ASN1SequenceParser s = (ASN1SequenceParser)o; - - // NB: Must exhaust the nested parser - while (s.readObject() != null) - { - // Nothing - } - - break; - } - count++; - } - - assertEquals("wrong number of objects in sequence", 3, count); - } - - public void testNestedDERReading() - throws Exception - { - testNestedReading(nestedSeqData); - } - - public void testBERReading() - throws Exception - { - ASN1StreamParser aIn = new ASN1StreamParser(berSeqData); - - ASN1SequenceParser seq = (ASN1SequenceParser)aIn.readObject(); - Object o; - int count = 0; - - assertNotNull("null sequence returned", seq); - - while ((o = seq.readObject()) != null) - { - switch (count) - { - case 0: - assertTrue(o instanceof ASN1Integer); - break; - case 1: - assertTrue(o instanceof ASN1ObjectIdentifier); - break; - } - count++; - } - - assertEquals("wrong number of objects in sequence", 2, count); - } - - public void testNestedBERDERReading() - throws Exception - { - testNestedReading(berDERNestedSeqData); - } - - public void testNestedBERReading() - throws Exception - { - testNestedReading(berNestedSeqData); - } - - public void testBERExplicitTaggedSequenceWriting() - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - BERSequenceGenerator seqGen = new BERSequenceGenerator(bOut, 1, true); - - seqGen.addObject(new ASN1Integer(BigInteger.valueOf(0))); - - seqGen.addObject(new ASN1ObjectIdentifier("1.1")); - - seqGen.close(); - - assertTrue("explicit BER tag writing test failed.", Arrays.equals(berExpTagSeqData, bOut.toByteArray())); - } - - public void testSequenceWithDERNullReading() - throws Exception - { - testParseWithNull(berSeqWithDERNullData); - } - - private void testParseWithNull(byte[] data) - throws IOException - { - ASN1StreamParser aIn = new ASN1StreamParser(data); - ASN1SequenceParser seq = (ASN1SequenceParser)aIn.readObject(); - Object o; - int count = 0; - - assertNotNull("null sequence returned", seq); - - while ((o = seq.readObject()) != null) - { - switch (count) - { - case 0: - assertTrue(o instanceof ASN1Null); - break; - case 1: - assertTrue(o instanceof ASN1Integer); - break; - case 2: - assertTrue(o instanceof ASN1ObjectIdentifier); - break; - } - count++; - } - - assertEquals("wrong number of objects in sequence", 3, count); - } - - public static Test suite() - { - return new TestSuite(ASN1SequenceParserTest.class); - } -} |