You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.5 KiB
108 lines
2.5 KiB
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR) |
|
#pragma warning disable |
|
using System.Text; |
|
|
|
namespace BestHTTP.SecureProtocol.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(); |
|
} |
|
} |
|
} |
|
#pragma warning restore |
|
#endif
|
|
|