1package org.bouncycastle.asn1; 2 3import java.io.IOException; 4 5/** 6 * A parser for indefinite-length application specific objects. 7 */ 8public class BERApplicationSpecificParser 9 implements ASN1ApplicationSpecificParser 10{ 11 private final int tag; 12 private final ASN1StreamParser parser; 13 14 BERApplicationSpecificParser(int tag, ASN1StreamParser parser) 15 { 16 this.tag = tag; 17 this.parser = parser; 18 } 19 20 /** 21 * Return the object contained in this application specific object, 22 * @return the contained object. 23 * @throws IOException if the underlying stream cannot be read, or does not contain an ASN.1 encoding. 24 */ 25 public ASN1Encodable readObject() 26 throws IOException 27 { 28 return parser.readObject(); 29 } 30 31 /** 32 * Return an in-memory, encodable, representation of the application specific object. 33 * 34 * @return a BERApplicationSpecific. 35 * @throws IOException if there is an issue loading the data. 36 */ 37 public ASN1Primitive getLoadedObject() 38 throws IOException 39 { 40 return new BERApplicationSpecific(tag, parser.readVector()); 41 } 42 43 /** 44 * Return a BERApplicationSpecific representing this parser and its contents. 45 * 46 * @return a BERApplicationSpecific 47 */ 48 public ASN1Primitive toASN1Primitive() 49 { 50 try 51 { 52 return getLoadedObject(); 53 } 54 catch (IOException e) 55 { 56 throw new ASN1ParsingException(e.getMessage(), e); 57 } 58 } 59} 60