1c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompackage org.bouncycastle.asn1; 2c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 3c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromimport java.io.IOException; 4c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 5c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompublic class DERExternalParser 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom implements ASN1Encodable, InMemoryRepresentable 7c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom{ 8c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom private ASN1StreamParser _parser; 9c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 10c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom /** 11c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom * 12c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom */ 13c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom public DERExternalParser(ASN1StreamParser parser) 14c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 15c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom this._parser = parser; 16c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 17c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Encodable readObject() 19c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom throws IOException 20c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 21c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom return _parser.readObject(); 22c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive getLoadedObject() 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throws IOException 266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom try 286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new DERExternal(_parser.readVector()); 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom catch (IllegalArgumentException e) 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throw new ASN1Exception(e.getMessage(), e); 346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 36c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 38c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 39c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom try 40c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return getLoadedObject(); 42c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 43c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom catch (IOException ioe) 44c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 45c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom throw new ASN1ParsingException("unable to get DER object", ioe); 46c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 47c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom catch (IllegalArgumentException ioe) 48c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 49c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom throw new ASN1ParsingException("unable to get DER object", ioe); 50c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 51c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 52c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom} 53