1c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompackage org.bouncycastle.asn1;
2c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
3c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromimport java.io.IOException;
4c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
5c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompublic class DERSetParser
6c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    implements ASN1SetParser
7c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom{
8c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    private ASN1StreamParser _parser;
9c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
10c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    DERSetParser(ASN1StreamParser parser)
11c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
12c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        this._parser = parser;
13c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
14c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Encodable readObject()
16c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        throws IOException
17c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
18c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        return _parser.readObject();
19c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
20c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive getLoadedObject()
226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        throws IOException
236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return new DERSet(_parser.readVector(), false);
256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive toASN1Primitive()
28c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
29c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        try
30c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        {
316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return getLoadedObject();
32c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        }
33c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        catch (IOException e)
34c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        {
35c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom            throw new ASN1ParsingException(e.getMessage(), e);
36c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        }
37c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
38c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom}
39