123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System.Text;
- namespace 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.
- */
- public class X509NameTokenizer
- {
- private string value;
- private int index;
- private char separator;
- private StringBuilder buffer = new StringBuilder();
- public X509NameTokenizer(
- string oid)
- : this(oid, ',')
- {
- }
- public X509NameTokenizer(
- string oid,
- char separator)
- {
- this.value = oid;
- this.index = -1;
- this.separator = separator;
- }
- public bool HasMoreTokens()
- {
- return index != value.Length;
- }
- public string NextToken()
- {
- if (index == value.Length)
- {
- return null;
- }
- int end = index + 1;
- bool quoted = false;
- bool escaped = false;
- buffer.Remove(0, buffer.Length);
- while (end != value.Length)
- {
- char c = value[end];
- if (c == '"')
- {
- if (!escaped)
- {
- quoted = !quoted;
- }
- else
- {
- buffer.Append(c);
- escaped = false;
- }
- }
- else
- {
- if (escaped || quoted)
- {
- if (c == '#' && buffer[buffer.Length - 1] == '=')
- {
- buffer.Append('\\');
- }
- else if (c == '+' && separator != '+')
- {
- buffer.Append('\\');
- }
- buffer.Append(c);
- escaped = false;
- }
- else if (c == '\\')
- {
- escaped = true;
- }
- else if (c == separator)
- {
- break;
- }
- else
- {
- buffer.Append(c);
- }
- }
- end++;
- }
- index = end;
- return buffer.ToString().Trim();
- }
- }
- }
- #endif
|