291 lines
6.5 KiB
C#
291 lines
6.5 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Text;
|
|
|
|
namespace Mono.Security.X509.Extensions
|
|
{
|
|
// Token: 0x0200006B RID: 107
|
|
internal class GeneralNames
|
|
{
|
|
// Token: 0x060003EC RID: 1004 RVA: 0x000197A4 File Offset: 0x000179A4
|
|
public GeneralNames()
|
|
{
|
|
}
|
|
|
|
// Token: 0x060003ED RID: 1005 RVA: 0x000197AC File Offset: 0x000179AC
|
|
public GeneralNames(string[] rfc822s, string[] dnsNames, string[] ipAddresses, string[] uris)
|
|
{
|
|
this.asn = new ASN1(48);
|
|
if (rfc822s != null)
|
|
{
|
|
this.rfc822Name = new ArrayList();
|
|
foreach (string text in rfc822s)
|
|
{
|
|
this.asn.Add(new ASN1(129, Encoding.ASCII.GetBytes(text)));
|
|
this.rfc822Name.Add(rfc822s);
|
|
}
|
|
}
|
|
if (dnsNames != null)
|
|
{
|
|
this.dnsName = new ArrayList();
|
|
foreach (string text2 in dnsNames)
|
|
{
|
|
this.asn.Add(new ASN1(130, Encoding.ASCII.GetBytes(text2)));
|
|
this.dnsName.Add(text2);
|
|
}
|
|
}
|
|
if (ipAddresses != null)
|
|
{
|
|
this.ipAddr = new ArrayList();
|
|
foreach (string text3 in ipAddresses)
|
|
{
|
|
string[] array = text3.Split(new char[] { '.', ':' });
|
|
byte[] array2 = new byte[array.Length];
|
|
for (int l = 0; l < array.Length; l++)
|
|
{
|
|
array2[l] = byte.Parse(array[l]);
|
|
}
|
|
this.asn.Add(new ASN1(135, array2));
|
|
this.ipAddr.Add(text3);
|
|
}
|
|
}
|
|
if (uris != null)
|
|
{
|
|
this.uris = new ArrayList();
|
|
foreach (string text4 in uris)
|
|
{
|
|
this.asn.Add(new ASN1(134, Encoding.ASCII.GetBytes(text4)));
|
|
this.uris.Add(text4);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060003EE RID: 1006 RVA: 0x00019994 File Offset: 0x00017B94
|
|
public GeneralNames(ASN1 sequence)
|
|
{
|
|
int i = 0;
|
|
while (i < sequence.Count)
|
|
{
|
|
byte tag = sequence[i].Tag;
|
|
switch (tag)
|
|
{
|
|
case 129:
|
|
if (this.rfc822Name == null)
|
|
{
|
|
this.rfc822Name = new ArrayList();
|
|
}
|
|
this.rfc822Name.Add(Encoding.ASCII.GetString(sequence[i].Value));
|
|
break;
|
|
case 130:
|
|
if (this.dnsName == null)
|
|
{
|
|
this.dnsName = new ArrayList();
|
|
}
|
|
this.dnsName.Add(Encoding.ASCII.GetString(sequence[i].Value));
|
|
break;
|
|
default:
|
|
if (tag == 164)
|
|
{
|
|
goto IL_CF;
|
|
}
|
|
break;
|
|
case 132:
|
|
goto IL_CF;
|
|
case 134:
|
|
if (this.uris == null)
|
|
{
|
|
this.uris = new ArrayList();
|
|
}
|
|
this.uris.Add(Encoding.ASCII.GetString(sequence[i].Value));
|
|
break;
|
|
case 135:
|
|
{
|
|
if (this.ipAddr == null)
|
|
{
|
|
this.ipAddr = new ArrayList();
|
|
}
|
|
byte[] value = sequence[i].Value;
|
|
string text = ((value.Length != 4) ? ":" : ".");
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
for (int j = 0; j < value.Length; j++)
|
|
{
|
|
stringBuilder.Append(value[j].ToString());
|
|
if (j < value.Length - 1)
|
|
{
|
|
stringBuilder.Append(text);
|
|
}
|
|
}
|
|
this.ipAddr.Add(stringBuilder.ToString());
|
|
if (this.ipAddr == null)
|
|
{
|
|
this.ipAddr = new ArrayList();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
IL_1F9:
|
|
i++;
|
|
continue;
|
|
IL_CF:
|
|
if (this.directoryNames == null)
|
|
{
|
|
this.directoryNames = new ArrayList();
|
|
}
|
|
this.directoryNames.Add(X501.ToString(sequence[i][0]));
|
|
goto IL_1F9;
|
|
}
|
|
}
|
|
|
|
// Token: 0x170000E0 RID: 224
|
|
// (get) Token: 0x060003EF RID: 1007 RVA: 0x00019BAC File Offset: 0x00017DAC
|
|
public string[] RFC822
|
|
{
|
|
get
|
|
{
|
|
if (this.rfc822Name == null)
|
|
{
|
|
return new string[0];
|
|
}
|
|
return (string[])this.rfc822Name.ToArray(typeof(string));
|
|
}
|
|
}
|
|
|
|
// Token: 0x170000E1 RID: 225
|
|
// (get) Token: 0x060003F0 RID: 1008 RVA: 0x00019BE8 File Offset: 0x00017DE8
|
|
public string[] DirectoryNames
|
|
{
|
|
get
|
|
{
|
|
if (this.directoryNames == null)
|
|
{
|
|
return new string[0];
|
|
}
|
|
return (string[])this.directoryNames.ToArray(typeof(string));
|
|
}
|
|
}
|
|
|
|
// Token: 0x170000E2 RID: 226
|
|
// (get) Token: 0x060003F1 RID: 1009 RVA: 0x00019C24 File Offset: 0x00017E24
|
|
public string[] DNSNames
|
|
{
|
|
get
|
|
{
|
|
if (this.dnsName == null)
|
|
{
|
|
return new string[0];
|
|
}
|
|
return (string[])this.dnsName.ToArray(typeof(string));
|
|
}
|
|
}
|
|
|
|
// Token: 0x170000E3 RID: 227
|
|
// (get) Token: 0x060003F2 RID: 1010 RVA: 0x00019C60 File Offset: 0x00017E60
|
|
public string[] UniformResourceIdentifiers
|
|
{
|
|
get
|
|
{
|
|
if (this.uris == null)
|
|
{
|
|
return new string[0];
|
|
}
|
|
return (string[])this.uris.ToArray(typeof(string));
|
|
}
|
|
}
|
|
|
|
// Token: 0x170000E4 RID: 228
|
|
// (get) Token: 0x060003F3 RID: 1011 RVA: 0x00019C9C File Offset: 0x00017E9C
|
|
public string[] IPAddresses
|
|
{
|
|
get
|
|
{
|
|
if (this.ipAddr == null)
|
|
{
|
|
return new string[0];
|
|
}
|
|
return (string[])this.ipAddr.ToArray(typeof(string));
|
|
}
|
|
}
|
|
|
|
// Token: 0x060003F4 RID: 1012 RVA: 0x00019CD8 File Offset: 0x00017ED8
|
|
public byte[] GetBytes()
|
|
{
|
|
return this.asn.GetBytes();
|
|
}
|
|
|
|
// Token: 0x060003F5 RID: 1013 RVA: 0x00019CE8 File Offset: 0x00017EE8
|
|
public override string ToString()
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
if (this.rfc822Name != null)
|
|
{
|
|
foreach (object obj in this.rfc822Name)
|
|
{
|
|
string text = (string)obj;
|
|
stringBuilder.Append("RFC822 Name=");
|
|
stringBuilder.Append(text);
|
|
stringBuilder.Append(Environment.NewLine);
|
|
}
|
|
}
|
|
if (this.dnsName != null)
|
|
{
|
|
foreach (object obj2 in this.dnsName)
|
|
{
|
|
string text2 = (string)obj2;
|
|
stringBuilder.Append("DNS Name=");
|
|
stringBuilder.Append(text2);
|
|
stringBuilder.Append(Environment.NewLine);
|
|
}
|
|
}
|
|
if (this.directoryNames != null)
|
|
{
|
|
foreach (object obj3 in this.directoryNames)
|
|
{
|
|
string text3 = (string)obj3;
|
|
stringBuilder.Append("Directory Address: ");
|
|
stringBuilder.Append(text3);
|
|
stringBuilder.Append(Environment.NewLine);
|
|
}
|
|
}
|
|
if (this.uris != null)
|
|
{
|
|
foreach (object obj4 in this.uris)
|
|
{
|
|
string text4 = (string)obj4;
|
|
stringBuilder.Append("URL=");
|
|
stringBuilder.Append(text4);
|
|
stringBuilder.Append(Environment.NewLine);
|
|
}
|
|
}
|
|
if (this.ipAddr != null)
|
|
{
|
|
foreach (object obj5 in this.ipAddr)
|
|
{
|
|
string text5 = (string)obj5;
|
|
stringBuilder.Append("IP Address=");
|
|
stringBuilder.Append(text5);
|
|
stringBuilder.Append(Environment.NewLine);
|
|
}
|
|
}
|
|
return stringBuilder.ToString();
|
|
}
|
|
|
|
// Token: 0x040001CE RID: 462
|
|
private ArrayList rfc822Name;
|
|
|
|
// Token: 0x040001CF RID: 463
|
|
private ArrayList dnsName;
|
|
|
|
// Token: 0x040001D0 RID: 464
|
|
private ArrayList directoryNames;
|
|
|
|
// Token: 0x040001D1 RID: 465
|
|
private ArrayList uris;
|
|
|
|
// Token: 0x040001D2 RID: 466
|
|
private ArrayList ipAddr;
|
|
|
|
// Token: 0x040001D3 RID: 467
|
|
private ASN1 asn;
|
|
}
|
|
}
|