content: package local.org.bouncycastle.asn1;
  
  import java.io.IOException;
  
  public class BERTaggedObjectParser
      implements ASN1TaggedObjectParser
  {
      private boolean _constructed;
      private int _tagNumber;
      private ASN1StreamParser _parser;
  
      BERTaggedObjectParser(
          boolean             constructed,
          int                 tagNumber,
          ASN1StreamParser    parser)
      {
          _constructed = constructed;
          _tagNumber = tagNumber;
          _parser = parser;
      }
  
      public boolean isConstructed()
      {
          return _constructed;
      }
  
      public int getTagNo()
      {
          return _tagNumber;
      }
  
      public ASN1Encodable getObjectParser(
          int     tag,
          boolean isExplicit)
          throws IOException
      {
          if (isExplicit)
          {
              if (!_constructed)
              {
                  throw new IOException("Explicit tags must be constructed (see X.690 8.14.2)");
              }
              return _parser.readObject();
          }
  
          return _parser.readImplicit(_constructed, tag);
      }
  
      public ASN1Primitive getLoadedObject()
          throws IOException
      {
          return _parser.readTaggedObject(_constructed, _tagNumber);
      }
  
      public ASN1Primitive toASN1Primitive()
      {
          try
          {
              return this.getLoadedObject();
          }
          catch (IOException e)
          {
              throw new ASN1ParsingException(e.getMessage());
          }
      }
  }
  