content: package local.org.bouncycastle.asn1.x509;
  
  /**
   * class for breaking up an X500 Name into it's component tokens, ala
   * java.util.StringTokenizer. We need this class as some of the
   * lightweight Java environment don't support classes like
   * StringTokenizer.
   * @deprecated use X500NameTokenizer
   */
  public class X509NameTokenizer
  {
      private String          value;
      private int             index;
      private char separator;
      private StringBuffer    buf = new StringBuffer();
  
      public X509NameTokenizer(
          String  oid)
      {
          this(oid, ',');
      }
      
      public X509NameTokenizer(
          String  oid,
          char separator)
      {
          this.value = oid;
          this.index = -1;
          this.separator = separator;
      }
  
      public boolean hasMoreTokens()
      {
          return (index != value.length());
      }
  
      public String nextToken()
      {
          if (index == value.length())
          {
              return null;
          }
  
          int     end = index + 1;
          boolean quoted = false;
          boolean escaped = false;
  
          buf.setLength(0);
  
          while (end != value.length())
          {
              char    c = value.charAt(end);
  
              if (c == '"')
              {
                  if (!escaped)
                  {
                      quoted = !quoted;
                  }
                  buf.append(c);
                  escaped = false;
              }
              else
              {
                  if (escaped || quoted)
                  {
                      buf.append(c);
                      escaped = false;
                  }
                  else if (c == '\\')
                  {
                      buf.append(c);
                      escaped = true;
                  }
                  else if (c == separator)
                  {
                      break;
                  }
                  else
                  {
                      buf.append(c);
                  }
              }
              end++;
          }
  
          index = end;
  
          return buf.toString();
      }
  }
  