Files
2026-04-10 22:50:51 +02:00

437 lines
13 KiB
C#

using System;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
using BestHTTP.SecureProtocol.Org.BouncyCastle.X509.Store;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.X509
{
// Token: 0x020018F8 RID: 6392
[Token(Token = "0x20018F8")]
public class AttributeCertificateHolder : IX509Selector, ICloneable
{
// Token: 0x0600965A RID: 38490 RVA: 0x001EED74 File Offset: 0x001ECF74
[Token(Token = "0x600965A")]
[Address(RVA = "0x1622F60", Offset = "0x1621D60", VA = "0x181622F60")]
internal AttributeCertificateHolder(Asn1Sequence seq)
{
Holder instance = Holder.GetInstance(seq);
this.holder = instance;
}
// Token: 0x0600965B RID: 38491 RVA: 0x001EED98 File Offset: 0x001ECF98
[Token(Token = "0x600965B")]
[Address(RVA = "0x1622F90", Offset = "0x1621D90", VA = "0x181622F90")]
public AttributeCertificateHolder(X509Name issuerName, BigInteger serialNumber)
{
GeneralNames generalNames = this.GenerateGeneralNames(issuerName);
DerInteger derInteger = new DerInteger(serialNumber);
Holder holder = new Holder(new IssuerSerial(generalNames, derInteger));
this.holder = holder;
}
// Token: 0x0600965C RID: 38492 RVA: 0x001EEDD0 File Offset: 0x001ECFD0
[Token(Token = "0x600965C")]
[Address(RVA = "0x1622E00", Offset = "0x1621C00", VA = "0x181622E00")]
public AttributeCertificateHolder(X509Certificate cert)
{
X509Name issuerX509Principal = PrincipalUtilities.GetIssuerX509Principal(cert);
GeneralNames generalNames = this.GenerateGeneralNames(issuerX509Principal);
int version = cert.Version;
DerInteger derInteger;
Holder holder = new Holder(new IssuerSerial(generalNames, derInteger));
this.holder = holder;
}
// Token: 0x0600965D RID: 38493 RVA: 0x001EEE18 File Offset: 0x001ED018
[Token(Token = "0x600965D")]
[Address(RVA = "0x1622D80", Offset = "0x1621B80", VA = "0x181622D80")]
public AttributeCertificateHolder(X509Name principal)
{
Holder holder = new Holder(this.GenerateGeneralNames(principal));
this.holder = holder;
}
// Token: 0x0600965E RID: 38494 RVA: 0x001EEE40 File Offset: 0x001ED040
[Token(Token = "0x600965E")]
[Address(RVA = "0x1623060", Offset = "0x1621E60", VA = "0x181623060")]
public AttributeCertificateHolder(int digestedObjectType, string digestAlgorithm, string otherObjectTypeID, byte[] objectDigest)
{
int num = 0;
base.FieldGetter(num, digestAlgorithm, otherObjectTypeID);
AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(new DerObjectIdentifier(digestAlgorithm));
byte[] array;
Holder holder = new Holder(new ObjectDigestInfo(digestedObjectType, otherObjectTypeID, algorithmIdentifier, array));
this.holder = holder;
}
// Token: 0x170017F5 RID: 6133
// (get) Token: 0x0600965F RID: 38495 RVA: 0x001EEE7C File Offset: 0x001ED07C
[Token(Token = "0x170017F5")]
public int DigestedObjectType
{
[Token(Token = "0x600965F")]
[Address(RVA = "0x16231D0", Offset = "0x1621FD0", VA = "0x1816231D0")]
get
{
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
if (objectDigestInfo == 0)
{
return -1;
}
return objectDigestInfo.digestedObjectType.Value.IntValue;
}
}
// Token: 0x170017F6 RID: 6134
// (get) Token: 0x06009660 RID: 38496 RVA: 0x001EEEB4 File Offset: 0x001ED0B4
[Token(Token = "0x170017F6")]
public string DigestAlgorithm
{
[Token(Token = "0x6009660")]
[Address(RVA = "0x1623180", Offset = "0x1621F80", VA = "0x181623180")]
get
{
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
if (objectDigestInfo == 0)
{
}
Asn1Object asn1Object = objectDigestInfo.digestAlgorithm.ToAsn1Object();
throw new NullReferenceException();
}
}
// Token: 0x06009661 RID: 38497 RVA: 0x001EEEE4 File Offset: 0x001ED0E4
[Token(Token = "0x6009661")]
[Address(RVA = "0x16223A0", Offset = "0x16211A0", VA = "0x1816223A0")]
public byte[] GetObjectDigest()
{
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
if (objectDigestInfo == 0)
{
}
Asn1Object asn1Object = objectDigestInfo.objectDigest.ToAsn1Object();
throw new NullReferenceException();
}
// Token: 0x170017F7 RID: 6135
// (get) Token: 0x06009662 RID: 38498 RVA: 0x001EEF14 File Offset: 0x001ED114
[Token(Token = "0x170017F7")]
public string OtherObjectTypeID
{
[Token(Token = "0x6009662")]
[Address(RVA = "0x1623220", Offset = "0x1622020", VA = "0x181623220")]
get
{
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
if (objectDigestInfo == 0)
{
}
return objectDigestInfo.otherObjectTypeID.identifier;
}
}
// Token: 0x06009663 RID: 38499 RVA: 0x001EEF44 File Offset: 0x001ED144
[Token(Token = "0x6009663")]
[Address(RVA = "0x1622120", Offset = "0x1620F20", VA = "0x181622120")]
private GeneralNames GenerateGeneralNames(X509Name principal)
{
return new GeneralNames(new GeneralName(principal));
}
// Token: 0x06009664 RID: 38500 RVA: 0x001EEF5C File Offset: 0x001ED15C
[Token(Token = "0x6009664")]
[Address(RVA = "0x1622C30", Offset = "0x1621A30", VA = "0x181622C30")]
private bool MatchesDN(X509Name subject, GeneralNames targets)
{
GeneralName[] names = targets.GetNames();
int num = 0;
int length = names.Length;
if (num != length)
{
GeneralName generalName = names[num];
if (generalName.tag == 4)
{
if (!X509Name.GetInstance(generalName.obj).Equivalent(subject))
{
}
return true;
}
num++;
}
throw new NullReferenceException();
}
// Token: 0x06009665 RID: 38501 RVA: 0x001EEFB0 File Offset: 0x001ED1B0
[Token(Token = "0x6009665")]
[Address(RVA = "0x1622210", Offset = "0x1621010", VA = "0x181622210")]
private object[] GetNames(GeneralName[] names)
{
int num = 0;
int length = names.Length;
if (num != length)
{
GeneralName generalName = names[num];
num++;
}
object[] array = new object[num];
int length2 = names.Length;
if (num != length2)
{
GeneralName generalName2 = names[num];
if (generalName2.tag == 4)
{
num++;
X509Name instance = X509Name.GetInstance(generalName2.obj);
throw new ArrayTypeMismatchException();
}
num++;
}
return array;
}
// Token: 0x06009666 RID: 38502 RVA: 0x001EF02C File Offset: 0x001ED22C
[Token(Token = "0x6009666")]
[Address(RVA = "0x16223E0", Offset = "0x16211E0", VA = "0x1816223E0")]
private X509Name[] GetPrincipals(GeneralNames names)
{
GeneralName[] names2 = names.GetNames();
int num = 0;
int num2 = 0;
int num3 = 0;
int length = names2.Length;
if (num3 != length)
{
GeneralName generalName = names2[num2];
num2++;
}
object[] array = new object[num];
int num4 = 0;
int num5 = 0;
int num6 = 0;
int length2 = names2.Length;
if (num6 != length2)
{
GeneralName generalName2 = names2[num5];
if (generalName2.tag == 4)
{
num4++;
X509Name instance = X509Name.GetInstance(generalName2.obj);
throw new ArrayTypeMismatchException();
}
num5++;
}
int num7 = 0;
int num8 = 0;
int num9 = 0;
int length3 = array.Length;
if (num9 != length3)
{
if (array[num8] == 0)
{
}
num8++;
}
X509Name[] array2 = new X509Name[num7];
int num10 = 0;
int num11 = 0;
int num12 = 0;
int length4 = array.Length;
if (num12 != length4)
{
object obj = array[num11];
if (obj != 0 && obj != 0)
{
num10++;
throw new ArrayTypeMismatchException();
}
num11++;
}
return array2;
}
// Token: 0x06009667 RID: 38503 RVA: 0x001EF150 File Offset: 0x001ED350
[Token(Token = "0x6009667")]
[Address(RVA = "0x1622190", Offset = "0x1620F90", VA = "0x181622190")]
public X509Name[] GetEntityNames()
{
GeneralNames entityName = this.holder.entityName;
if (entityName == 0)
{
}
return this.GetPrincipals(entityName);
}
// Token: 0x06009668 RID: 38504 RVA: 0x001EF17C File Offset: 0x001ED37C
[Token(Token = "0x6009668")]
[Address(RVA = "0x16221D0", Offset = "0x1620FD0", VA = "0x1816221D0")]
public X509Name[] GetIssuer()
{
IssuerSerial baseCertificateID = this.holder.baseCertificateID;
if (baseCertificateID == 0)
{
}
GeneralNames issuer = baseCertificateID.issuer;
return this.GetPrincipals(issuer);
}
// Token: 0x170017F8 RID: 6136
// (get) Token: 0x06009669 RID: 38505 RVA: 0x001EF1B0 File Offset: 0x001ED3B0
[Token(Token = "0x170017F8")]
public BigInteger SerialNumber
{
[Token(Token = "0x6009669")]
[Address(RVA = "0x1623260", Offset = "0x1622060", VA = "0x181623260")]
get
{
IssuerSerial baseCertificateID = this.holder.baseCertificateID;
if (baseCertificateID == 0)
{
}
return baseCertificateID.serial.Value;
}
}
// Token: 0x0600966A RID: 38506 RVA: 0x001EF1E0 File Offset: 0x001ED3E0
[Token(Token = "0x600966A")]
[Address(RVA = "0x1621F30", Offset = "0x1620D30", VA = "0x181621F30", Slot = "5")]
public object Clone()
{
Asn1Object asn1Object;
do
{
asn1Object = this.holder.ToAsn1Object();
if (asn1Object == 0)
{
}
}
while (asn1Object == 0);
Holder instance = Holder.GetInstance(asn1Object);
AttributeCertificateHolder attributeCertificateHolder;
attributeCertificateHolder.holder = instance;
throw new NullReferenceException();
}
// Token: 0x0600966B RID: 38507 RVA: 0x001EF218 File Offset: 0x001ED418
[Token(Token = "0x600966B")]
[Address(RVA = "0x1622740", Offset = "0x1621540", VA = "0x181622740")]
public bool Match(X509Certificate x509Cert)
{
Holder holder = this.holder;
IssuerSerial baseCertificateID = holder.baseCertificateID;
if (baseCertificateID == 0)
{
if (holder.entityName != baseCertificateID)
{
X509Name subjectX509Principal = PrincipalUtilities.GetSubjectX509Principal(x509Cert);
GeneralNames entityName = this.holder.entityName;
if (this.MatchesDN(subjectX509Principal, entityName))
{
}
}
if (this.holder.objectDigestInfo != (ulong)0L)
{
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
if (objectDigestInfo == 0)
{
}
Asn1Object asn1Object = objectDigestInfo.digestAlgorithm.ToAsn1Object();
ObjectDigestInfo objectDigestInfo2 = this.holder.objectDigestInfo;
if (objectDigestInfo2 == 0)
{
goto IL_A6;
}
if (objectDigestInfo2.digestedObjectType.Value.IntValue == 0)
{
SubjectPublicKeyInfo subjectPublicKeyInfo;
int length = subjectPublicKeyInfo.GetEncoded().Length;
goto IL_A6;
}
IL_DF:
bool flag;
while (!flag)
{
}
goto IL_E4;
IL_A6:
IDigest digest;
byte[] array = DigestUtilities.DoFinal(digest);
ObjectDigestInfo objectDigestInfo3 = this.holder.objectDigestInfo;
byte[] octets;
if (objectDigestInfo3 != 0)
{
octets = objectDigestInfo3.objectDigest.GetOctets();
}
flag = Arrays.AreEqual(array, octets);
if (!flag)
{
goto IL_DF;
}
}
}
IL_E4:
BigInteger value = baseCertificateID.serial.Value;
if (x509Cert.Version != 0)
{
X509Name issuerX509Principal = PrincipalUtilities.GetIssuerX509Principal(x509Cert);
GeneralNames issuer = this.holder.baseCertificateID.issuer;
bool flag2 = this.MatchesDN(issuerX509Principal, issuer);
}
throw new NullReferenceException();
}
// Token: 0x0600966C RID: 38508 RVA: 0x001EF3E0 File Offset: 0x001ED5E0
[Token(Token = "0x600966C")]
[Address(RVA = "0x1622010", Offset = "0x1620E10", VA = "0x181622010", Slot = "0")]
public override bool Equals(object obj)
{
while (obj != this)
{
if (obj != 0 && obj != 0)
{
if (obj == 0)
{
continue;
}
Asn1Object asn1Object = this.holder.ToAsn1Object();
}
break;
}
return true;
}
// Token: 0x0600966D RID: 38509 RVA: 0x001EF418 File Offset: 0x001ED618
[Token(Token = "0x600966D")]
[Address(RVA = "0x4DA700", Offset = "0x4D9500", VA = "0x1804DA700", Slot = "2")]
public override int GetHashCode()
{
Asn1Object asn1Object = this.holder.ToAsn1Object();
throw new NullReferenceException();
}
// Token: 0x0600966E RID: 38510 RVA: 0x001EF438 File Offset: 0x001ED638
[Token(Token = "0x600966E")]
[Address(RVA = "0x1622B50", Offset = "0x1621950", VA = "0x181622B50", Slot = "4")]
public bool Match(object obj)
{
while (obj != 0 && obj != 0)
{
if (obj != 0)
{
bool flag;
return flag;
}
}
}
// Token: 0x04006676 RID: 26230
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4006676")]
internal readonly Holder holder;
}
}