diff options
Diffstat (limited to 'libraries/spongycastle/core/src/main/java/org/spongycastle/asn1/LazyConstructionEnumeration.java')
-rw-r--r-- | libraries/spongycastle/core/src/main/java/org/spongycastle/asn1/LazyConstructionEnumeration.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libraries/spongycastle/core/src/main/java/org/spongycastle/asn1/LazyConstructionEnumeration.java b/libraries/spongycastle/core/src/main/java/org/spongycastle/asn1/LazyConstructionEnumeration.java new file mode 100644 index 000000000..036dbc21f --- /dev/null +++ b/libraries/spongycastle/core/src/main/java/org/spongycastle/asn1/LazyConstructionEnumeration.java @@ -0,0 +1,43 @@ +package org.spongycastle.asn1; + +import java.io.IOException; +import java.util.Enumeration; + +class LazyConstructionEnumeration + implements Enumeration +{ + private ASN1InputStream aIn; + private Object nextObj; + + public LazyConstructionEnumeration(byte[] encoded) + { + aIn = new ASN1InputStream(encoded, true); + nextObj = readObject(); + } + + public boolean hasMoreElements() + { + return nextObj != null; + } + + public Object nextElement() + { + Object o = nextObj; + + nextObj = readObject(); + + return o; + } + + private Object readObject() + { + try + { + return aIn.readObject(); + } + catch (IOException e) + { + throw new ASN1ParsingException("malformed DER construction: " + e, e); + } + } +} |