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; } }