m
This commit is contained in:
+436
@@ -0,0 +1,436 @@
|
||||
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: 0x020019D8 RID: 6616
|
||||
[Token(Token = "0x20019D8")]
|
||||
public class AttributeCertificateHolder : IX509Selector, ICloneable
|
||||
{
|
||||
// Token: 0x06009A28 RID: 39464 RVA: 0x001F7E0C File Offset: 0x001F600C
|
||||
[Token(Token = "0x6009A28")]
|
||||
[Address(RVA = "0x410070", Offset = "0x40F070", VA = "0x180410070")]
|
||||
internal AttributeCertificateHolder(Asn1Sequence seq)
|
||||
{
|
||||
Holder instance = Holder.GetInstance(seq);
|
||||
this.holder = instance;
|
||||
}
|
||||
|
||||
// Token: 0x06009A29 RID: 39465 RVA: 0x001F7E30 File Offset: 0x001F6030
|
||||
[Token(Token = "0x6009A29")]
|
||||
[Address(RVA = "0x4100A0", Offset = "0x40F0A0", VA = "0x1804100A0")]
|
||||
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: 0x06009A2A RID: 39466 RVA: 0x001F7E68 File Offset: 0x001F6068
|
||||
[Token(Token = "0x6009A2A")]
|
||||
[Address(RVA = "0x40FF10", Offset = "0x40EF10", VA = "0x18040FF10")]
|
||||
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: 0x06009A2B RID: 39467 RVA: 0x001F7EB0 File Offset: 0x001F60B0
|
||||
[Token(Token = "0x6009A2B")]
|
||||
[Address(RVA = "0x40FE90", Offset = "0x40EE90", VA = "0x18040FE90")]
|
||||
public AttributeCertificateHolder(X509Name principal)
|
||||
{
|
||||
Holder holder = new Holder(this.GenerateGeneralNames(principal));
|
||||
this.holder = holder;
|
||||
}
|
||||
|
||||
// Token: 0x06009A2C RID: 39468 RVA: 0x001F7ED8 File Offset: 0x001F60D8
|
||||
[Token(Token = "0x6009A2C")]
|
||||
[Address(RVA = "0x410170", Offset = "0x40F170", VA = "0x180410170")]
|
||||
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: 0x17001892 RID: 6290
|
||||
// (get) Token: 0x06009A2D RID: 39469 RVA: 0x001F7F14 File Offset: 0x001F6114
|
||||
[Token(Token = "0x17001892")]
|
||||
public int DigestedObjectType
|
||||
{
|
||||
[Token(Token = "0x6009A2D")]
|
||||
[Address(RVA = "0x4102E0", Offset = "0x40F2E0", VA = "0x1804102E0")]
|
||||
get
|
||||
{
|
||||
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
|
||||
if (objectDigestInfo == 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return objectDigestInfo.digestedObjectType.Value.IntValue;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17001893 RID: 6291
|
||||
// (get) Token: 0x06009A2E RID: 39470 RVA: 0x001F7F4C File Offset: 0x001F614C
|
||||
[Token(Token = "0x17001893")]
|
||||
public string DigestAlgorithm
|
||||
{
|
||||
[Token(Token = "0x6009A2E")]
|
||||
[Address(RVA = "0x410290", Offset = "0x40F290", VA = "0x180410290")]
|
||||
get
|
||||
{
|
||||
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
|
||||
if (objectDigestInfo == 0)
|
||||
{
|
||||
}
|
||||
Asn1Object asn1Object = objectDigestInfo.digestAlgorithm.ToAsn1Object();
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06009A2F RID: 39471 RVA: 0x001F7F7C File Offset: 0x001F617C
|
||||
[Token(Token = "0x6009A2F")]
|
||||
[Address(RVA = "0x40F4B0", Offset = "0x40E4B0", VA = "0x18040F4B0")]
|
||||
public byte[] GetObjectDigest()
|
||||
{
|
||||
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
|
||||
if (objectDigestInfo == 0)
|
||||
{
|
||||
}
|
||||
Asn1Object asn1Object = objectDigestInfo.objectDigest.ToAsn1Object();
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x17001894 RID: 6292
|
||||
// (get) Token: 0x06009A30 RID: 39472 RVA: 0x001F7FAC File Offset: 0x001F61AC
|
||||
[Token(Token = "0x17001894")]
|
||||
public string OtherObjectTypeID
|
||||
{
|
||||
[Token(Token = "0x6009A30")]
|
||||
[Address(RVA = "0x410330", Offset = "0x40F330", VA = "0x180410330")]
|
||||
get
|
||||
{
|
||||
ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo;
|
||||
if (objectDigestInfo == 0)
|
||||
{
|
||||
}
|
||||
return objectDigestInfo.otherObjectTypeID.identifier;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06009A31 RID: 39473 RVA: 0x001F7FDC File Offset: 0x001F61DC
|
||||
[Token(Token = "0x6009A31")]
|
||||
[Address(RVA = "0x40F200", Offset = "0x40E200", VA = "0x18040F200")]
|
||||
private GeneralNames GenerateGeneralNames(X509Name principal)
|
||||
{
|
||||
return new GeneralNames(new GeneralName(principal));
|
||||
}
|
||||
|
||||
// Token: 0x06009A32 RID: 39474 RVA: 0x001F7FF4 File Offset: 0x001F61F4
|
||||
[Token(Token = "0x6009A32")]
|
||||
[Address(RVA = "0x40FD40", Offset = "0x40ED40", VA = "0x18040FD40")]
|
||||
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: 0x06009A33 RID: 39475 RVA: 0x001F8048 File Offset: 0x001F6248
|
||||
[Token(Token = "0x6009A33")]
|
||||
[Address(RVA = "0x40F320", Offset = "0x40E320", VA = "0x18040F320")]
|
||||
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: 0x06009A34 RID: 39476 RVA: 0x001F80C4 File Offset: 0x001F62C4
|
||||
[Token(Token = "0x6009A34")]
|
||||
[Address(RVA = "0x40F4F0", Offset = "0x40E4F0", VA = "0x18040F4F0")]
|
||||
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: 0x06009A35 RID: 39477 RVA: 0x001F81E8 File Offset: 0x001F63E8
|
||||
[Token(Token = "0x6009A35")]
|
||||
[Address(RVA = "0x40F270", Offset = "0x40E270", VA = "0x18040F270")]
|
||||
public X509Name[] GetEntityNames()
|
||||
{
|
||||
GeneralNames entityName = this.holder.entityName;
|
||||
if (entityName == 0)
|
||||
{
|
||||
}
|
||||
return this.GetPrincipals(entityName);
|
||||
}
|
||||
|
||||
// Token: 0x06009A36 RID: 39478 RVA: 0x001F8214 File Offset: 0x001F6414
|
||||
[Token(Token = "0x6009A36")]
|
||||
[Address(RVA = "0x40F2E0", Offset = "0x40E2E0", VA = "0x18040F2E0")]
|
||||
public X509Name[] GetIssuer()
|
||||
{
|
||||
IssuerSerial baseCertificateID = this.holder.baseCertificateID;
|
||||
if (baseCertificateID == 0)
|
||||
{
|
||||
}
|
||||
GeneralNames issuer = baseCertificateID.issuer;
|
||||
return this.GetPrincipals(issuer);
|
||||
}
|
||||
|
||||
// Token: 0x17001895 RID: 6293
|
||||
// (get) Token: 0x06009A37 RID: 39479 RVA: 0x001F8248 File Offset: 0x001F6448
|
||||
[Token(Token = "0x17001895")]
|
||||
public BigInteger SerialNumber
|
||||
{
|
||||
[Token(Token = "0x6009A37")]
|
||||
[Address(RVA = "0x410370", Offset = "0x40F370", VA = "0x180410370")]
|
||||
get
|
||||
{
|
||||
IssuerSerial baseCertificateID = this.holder.baseCertificateID;
|
||||
if (baseCertificateID == 0)
|
||||
{
|
||||
}
|
||||
return baseCertificateID.serial.Value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06009A38 RID: 39480 RVA: 0x001F8278 File Offset: 0x001F6478
|
||||
[Token(Token = "0x6009A38")]
|
||||
[Address(RVA = "0x40F010", Offset = "0x40E010", VA = "0x18040F010", 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: 0x06009A39 RID: 39481 RVA: 0x001F82B0 File Offset: 0x001F64B0
|
||||
[Token(Token = "0x6009A39")]
|
||||
[Address(RVA = "0x40F850", Offset = "0x40E850", VA = "0x18040F850")]
|
||||
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: 0x06009A3A RID: 39482 RVA: 0x001F8478 File Offset: 0x001F6678
|
||||
[Token(Token = "0x6009A3A")]
|
||||
[Address(RVA = "0x40F0F0", Offset = "0x40E0F0", VA = "0x18040F0F0", 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: 0x06009A3B RID: 39483 RVA: 0x001F84B0 File Offset: 0x001F66B0
|
||||
[Token(Token = "0x6009A3B")]
|
||||
[Address(RVA = "0x40F2B0", Offset = "0x40E2B0", VA = "0x18040F2B0", Slot = "2")]
|
||||
public override int GetHashCode()
|
||||
{
|
||||
Asn1Object asn1Object = this.holder.ToAsn1Object();
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06009A3C RID: 39484 RVA: 0x001F84D0 File Offset: 0x001F66D0
|
||||
[Token(Token = "0x6009A3C")]
|
||||
[Address(RVA = "0x40FC60", Offset = "0x40EC60", VA = "0x18040FC60", Slot = "4")]
|
||||
public bool Match(object obj)
|
||||
{
|
||||
while (obj != 0 && obj != 0)
|
||||
{
|
||||
if (obj != 0)
|
||||
{
|
||||
bool flag;
|
||||
return flag;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0400682F RID: 26671
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x400682F")]
|
||||
internal readonly Holder holder;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user