diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/asn1/DERExternalParser.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/asn1/DERExternalParser.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/asn1/DERExternalParser.java b/core/src/main/java/org/spongycastle/asn1/DERExternalParser.java new file mode 100644 index 00000000..39f46b52 --- /dev/null +++ b/core/src/main/java/org/spongycastle/asn1/DERExternalParser.java @@ -0,0 +1,52 @@ +package org.spongycastle.asn1; + +import java.io.IOException; + +public class DERExternalParser + implements ASN1Encodable, InMemoryRepresentable +{ + private ASN1StreamParser _parser; + + /** + * + */ + public DERExternalParser(ASN1StreamParser parser) + { + this._parser = parser; + } + + public ASN1Encodable readObject() + throws IOException + { + return _parser.readObject(); + } + + public ASN1Primitive getLoadedObject() + throws IOException + { + try + { + return new DERExternal(_parser.readVector()); + } + catch (IllegalArgumentException e) + { + throw new ASN1Exception(e.getMessage(), e); + } + } + + public ASN1Primitive toASN1Primitive() + { + try + { + return getLoadedObject(); + } + catch (IOException ioe) + { + throw new ASN1ParsingException("unable to get DER object", ioe); + } + catch (IllegalArgumentException ioe) + { + throw new ASN1ParsingException("unable to get DER object", ioe); + } + } +} |