144 lines
3.4 KiB
C#
144 lines
3.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Mono.Security.X509.Extensions
|
|
{
|
|
// Token: 0x0200006A RID: 106
|
|
public class ExtendedKeyUsageExtension : X509Extension
|
|
{
|
|
// Token: 0x060003E4 RID: 996 RVA: 0x000194AC File Offset: 0x000176AC
|
|
public ExtendedKeyUsageExtension()
|
|
{
|
|
this.extnOid = "2.5.29.37";
|
|
this.keyPurpose = new ArrayList();
|
|
}
|
|
|
|
// Token: 0x060003E5 RID: 997 RVA: 0x000194CC File Offset: 0x000176CC
|
|
public ExtendedKeyUsageExtension(ASN1 asn1)
|
|
: base(asn1)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060003E6 RID: 998 RVA: 0x000194D8 File Offset: 0x000176D8
|
|
public ExtendedKeyUsageExtension(X509Extension extension)
|
|
: base(extension)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060003E7 RID: 999 RVA: 0x000194E4 File Offset: 0x000176E4
|
|
protected override void Decode()
|
|
{
|
|
this.keyPurpose = new ArrayList();
|
|
ASN1 asn = new ASN1(this.extnValue.Value);
|
|
if (asn.Tag != 48)
|
|
{
|
|
throw new ArgumentException("Invalid ExtendedKeyUsage extension");
|
|
}
|
|
for (int i = 0; i < asn.Count; i++)
|
|
{
|
|
this.keyPurpose.Add(ASN1Convert.ToOid(asn[i]));
|
|
}
|
|
}
|
|
|
|
// Token: 0x060003E8 RID: 1000 RVA: 0x00019554 File Offset: 0x00017754
|
|
protected override void Encode()
|
|
{
|
|
ASN1 asn = new ASN1(48);
|
|
foreach (object obj in this.keyPurpose)
|
|
{
|
|
string text = (string)obj;
|
|
asn.Add(ASN1Convert.FromOid(text));
|
|
}
|
|
this.extnValue = new ASN1(4);
|
|
this.extnValue.Add(asn);
|
|
}
|
|
|
|
// Token: 0x170000DE RID: 222
|
|
// (get) Token: 0x060003E9 RID: 1001 RVA: 0x000195EC File Offset: 0x000177EC
|
|
public ArrayList KeyPurpose
|
|
{
|
|
get
|
|
{
|
|
return this.keyPurpose;
|
|
}
|
|
}
|
|
|
|
// Token: 0x170000DF RID: 223
|
|
// (get) Token: 0x060003EA RID: 1002 RVA: 0x000195F4 File Offset: 0x000177F4
|
|
public override string Name
|
|
{
|
|
get
|
|
{
|
|
return "Extended Key Usage";
|
|
}
|
|
}
|
|
|
|
// Token: 0x060003EB RID: 1003 RVA: 0x000195FC File Offset: 0x000177FC
|
|
public override string ToString()
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
foreach (object obj in this.keyPurpose)
|
|
{
|
|
string text = (string)obj;
|
|
string text2 = text;
|
|
if (text2 == null)
|
|
{
|
|
goto IL_12E;
|
|
}
|
|
if (ExtendedKeyUsageExtension.<>f__switch$map14 == null)
|
|
{
|
|
ExtendedKeyUsageExtension.<>f__switch$map14 = new Dictionary<string, int>(6)
|
|
{
|
|
{ "1.3.6.1.5.5.7.3.1", 0 },
|
|
{ "1.3.6.1.5.5.7.3.2", 1 },
|
|
{ "1.3.6.1.5.5.7.3.3", 2 },
|
|
{ "1.3.6.1.5.5.7.3.4", 3 },
|
|
{ "1.3.6.1.5.5.7.3.8", 4 },
|
|
{ "1.3.6.1.5.5.7.3.9", 5 }
|
|
};
|
|
}
|
|
int num;
|
|
if (!ExtendedKeyUsageExtension.<>f__switch$map14.TryGetValue(text2, out num))
|
|
{
|
|
goto IL_12E;
|
|
}
|
|
switch (num)
|
|
{
|
|
case 0:
|
|
stringBuilder.Append("Server Authentication");
|
|
break;
|
|
case 1:
|
|
stringBuilder.Append("Client Authentication");
|
|
break;
|
|
case 2:
|
|
stringBuilder.Append("Code Signing");
|
|
break;
|
|
case 3:
|
|
stringBuilder.Append("Email Protection");
|
|
break;
|
|
case 4:
|
|
stringBuilder.Append("Time Stamping");
|
|
break;
|
|
case 5:
|
|
stringBuilder.Append("OCSP Signing");
|
|
break;
|
|
default:
|
|
goto IL_12E;
|
|
}
|
|
IL_13F:
|
|
stringBuilder.AppendFormat(" ({0}){1}", text, Environment.NewLine);
|
|
continue;
|
|
IL_12E:
|
|
stringBuilder.Append("unknown");
|
|
goto IL_13F;
|
|
}
|
|
return stringBuilder.ToString();
|
|
}
|
|
|
|
// Token: 0x040001CC RID: 460
|
|
private ArrayList keyPurpose;
|
|
}
|
|
}
|