org.bouncycastle.asn1.LazyDERSequence Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk16 Show documentation
Show all versions of bcprov-jdk16 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.6.
package org.bouncycastle.asn1;
import java.io.IOException;
import java.util.Enumeration;
public class LazyDERSequence
extends DERSequence
{
private byte[] encoded;
private boolean parsed = false;
private int size = -1;
LazyDERSequence(
byte[] encoded)
throws IOException
{
this.encoded = encoded;
}
private void parse()
{
Enumeration en = new LazyDERConstructionEnumeration(encoded);
while (en.hasMoreElements())
{
addObject((DEREncodable)en.nextElement());
}
parsed = true;
}
public DEREncodable getObjectAt(int index)
{
if (!parsed)
{
parse();
}
return super.getObjectAt(index);
}
public Enumeration getObjects()
{
if (parsed)
{
return super.getObjects();
}
return new LazyDERConstructionEnumeration(encoded);
}
public int size()
{
if (size < 0)
{
Enumeration en = new LazyDERConstructionEnumeration(encoded);
size = 0;
while (en.hasMoreElements())
{
en.nextElement();
size++;
}
}
return size;
}
void encode(
DEROutputStream out)
throws IOException
{
out.writeEncoded(SEQUENCE | CONSTRUCTED, encoded);
}
}