1c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompackage org.bouncycastle.asn1;
2c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
3c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromimport java.io.IOException;
4c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
5c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompublic class BERApplicationSpecificParser
6c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    implements ASN1ApplicationSpecificParser
7c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom{
8c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    private final int tag;
9c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    private final ASN1StreamParser parser;
10c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
11c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    BERApplicationSpecificParser(int tag, ASN1StreamParser parser)
12c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
13c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        this.tag = tag;
14c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        this.parser = parser;
15c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
16c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Encodable readObject()
18c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        throws IOException
19c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
20c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        return parser.readObject();
21c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
22c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive getLoadedObject()
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        throws IOException
256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom         return new BERApplicationSpecific(tag, parser.readVector());
276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive toASN1Primitive()
30c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
31c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        try
32c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        {
336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return getLoadedObject();
34c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        }
35c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        catch (IOException e)
36c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        {
37c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom            throw new ASN1ParsingException(e.getMessage(), e);
38c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        }
39c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
41c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom}
42