Files
Dec2017-Script-Dump/Mono.Security/Security/X509/Extensions/BasicConstraintsExtension.cs
T
2026-06-04 11:42:34 +02:00

143 lines
3.5 KiB
C#

using System;
using System.Globalization;
using System.Text;
namespace Mono.Security.X509.Extensions
{
// Token: 0x02000065 RID: 101
public class BasicConstraintsExtension : X509Extension
{
// Token: 0x060003CB RID: 971 RVA: 0x00018E5C File Offset: 0x0001705C
public BasicConstraintsExtension()
{
this.extnOid = "2.5.29.19";
this.pathLenConstraint = -1;
}
// Token: 0x060003CC RID: 972 RVA: 0x00018E78 File Offset: 0x00017078
public BasicConstraintsExtension(ASN1 asn1)
: base(asn1)
{
}
// Token: 0x060003CD RID: 973 RVA: 0x00018E84 File Offset: 0x00017084
public BasicConstraintsExtension(X509Extension extension)
: base(extension)
{
}
// Token: 0x060003CE RID: 974 RVA: 0x00018E90 File Offset: 0x00017090
protected override void Decode()
{
this.cA = false;
this.pathLenConstraint = -1;
ASN1 asn = new ASN1(this.extnValue.Value);
if (asn.Tag != 48)
{
throw new ArgumentException("Invalid BasicConstraints extension");
}
int num = 0;
ASN1 asn2 = asn[num++];
if (asn2 != null && asn2.Tag == 1)
{
this.cA = asn2.Value[0] == byte.MaxValue;
asn2 = asn[num++];
}
if (asn2 != null && asn2.Tag == 2)
{
this.pathLenConstraint = ASN1Convert.ToInt32(asn2);
}
}
// Token: 0x060003CF RID: 975 RVA: 0x00018F34 File Offset: 0x00017134
protected override void Encode()
{
ASN1 asn = new ASN1(48);
if (this.cA)
{
asn.Add(new ASN1(1, new byte[] { byte.MaxValue }));
}
if (this.cA && this.pathLenConstraint >= 0)
{
asn.Add(ASN1Convert.FromInt32(this.pathLenConstraint));
}
this.extnValue = new ASN1(4);
this.extnValue.Add(asn);
}
// Token: 0x170000D9 RID: 217
// (get) Token: 0x060003D0 RID: 976 RVA: 0x00018FB4 File Offset: 0x000171B4
// (set) Token: 0x060003D1 RID: 977 RVA: 0x00018FBC File Offset: 0x000171BC
public bool CertificateAuthority
{
get
{
return this.cA;
}
set
{
this.cA = value;
}
}
// Token: 0x170000DA RID: 218
// (get) Token: 0x060003D2 RID: 978 RVA: 0x00018FC8 File Offset: 0x000171C8
public override string Name
{
get
{
return "Basic Constraints";
}
}
// Token: 0x170000DB RID: 219
// (get) Token: 0x060003D3 RID: 979 RVA: 0x00018FD0 File Offset: 0x000171D0
// (set) Token: 0x060003D4 RID: 980 RVA: 0x00018FD8 File Offset: 0x000171D8
public int PathLenConstraint
{
get
{
return this.pathLenConstraint;
}
set
{
if (value < -1)
{
string text = Locale.GetText("PathLenConstraint must be positive or -1 for none ({0}).", new object[] { value });
throw new ArgumentOutOfRangeException(text);
}
this.pathLenConstraint = value;
}
}
// Token: 0x060003D5 RID: 981 RVA: 0x00019014 File Offset: 0x00017214
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("Subject Type=");
stringBuilder.Append((!this.cA) ? "End Entity" : "CA");
stringBuilder.Append(Environment.NewLine);
stringBuilder.Append("Path Length Constraint=");
if (this.pathLenConstraint == -1)
{
stringBuilder.Append("None");
}
else
{
stringBuilder.Append(this.pathLenConstraint.ToString(CultureInfo.InvariantCulture));
}
stringBuilder.Append(Environment.NewLine);
return stringBuilder.ToString();
}
// Token: 0x040001BA RID: 442
public const int NoPathLengthConstraint = -1;
// Token: 0x040001BB RID: 443
private bool cA;
// Token: 0x040001BC RID: 444
private int pathLenConstraint;
}
}