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