1c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompackage org.bouncycastle.asn1; 2c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 3c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromimport java.io.IOException; 44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport java.util.Enumeration; 5c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromclass LazyConstructionEnumeration 7c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom implements Enumeration 8c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom{ 9c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom private ASN1InputStream aIn; 10c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom private Object nextObj; 11c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public LazyConstructionEnumeration(byte[] encoded) 13c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 14c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom aIn = new ASN1InputStream(encoded, true); 15c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom nextObj = readObject(); 16c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 17c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 18c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom public boolean hasMoreElements() 19c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 20c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom return nextObj != null; 21c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 22c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 23c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom public Object nextElement() 24c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 25c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom Object o = nextObj; 26c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 27c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom nextObj = readObject(); 28c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 29c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom return o; 30c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 31c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 32c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom private Object readObject() 33c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 34c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom try 35c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 36c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom return aIn.readObject(); 37c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 38c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom catch (IOException e) 39c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 40c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom throw new ASN1ParsingException("malformed DER construction: " + e, e); 41c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 42c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 43c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom} 44