using System; using System.Runtime.InteropServices; 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: 0x0200131B RID: 4891 [Token(Token = "0x200131B")] [StructLayout(3)] public class AttributeCertificateHolder : IX509Selector, ICloneable { // Token: 0x06007A80 RID: 31360 RVA: 0x00197398 File Offset: 0x00195598 [Token(Token = "0x6007A80")] [Address(RVA = "0x2024AE0", Offset = "0x20234E0", VA = "0x182024AE0")] internal AttributeCertificateHolder(Asn1Sequence seq) { Holder instance = Holder.GetInstance(seq); this.holder = instance; } // Token: 0x06007A81 RID: 31361 RVA: 0x001973BC File Offset: 0x001955BC [Token(Token = "0x6007A81")] [Address(RVA = "0x2024B10", Offset = "0x2023510", VA = "0x182024B10")] 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: 0x06007A82 RID: 31362 RVA: 0x001973F4 File Offset: 0x001955F4 [Token(Token = "0x6007A82")] [Address(RVA = "0x2024980", Offset = "0x2023380", VA = "0x182024980")] 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: 0x06007A83 RID: 31363 RVA: 0x0019743C File Offset: 0x0019563C [Token(Token = "0x6007A83")] [Address(RVA = "0x2024900", Offset = "0x2023300", VA = "0x182024900")] public AttributeCertificateHolder(X509Name principal) { Holder holder = new Holder(this.GenerateGeneralNames(principal)); this.holder = holder; } // Token: 0x06007A84 RID: 31364 RVA: 0x00197464 File Offset: 0x00195664 [Token(Token = "0x6007A84")] [Address(RVA = "0x2024BE0", Offset = "0x20235E0", VA = "0x182024BE0")] 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: 0x170013F4 RID: 5108 // (get) Token: 0x06007A85 RID: 31365 RVA: 0x001974A0 File Offset: 0x001956A0 [Token(Token = "0x170013F4")] public int DigestedObjectType { [Token(Token = "0x6007A85")] [Address(RVA = "0x2024D50", Offset = "0x2023750", VA = "0x182024D50")] get { ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo; if (objectDigestInfo == 0) { return -1; } return objectDigestInfo.digestedObjectType.Value.IntValue; } } // Token: 0x170013F5 RID: 5109 // (get) Token: 0x06007A86 RID: 31366 RVA: 0x001974D8 File Offset: 0x001956D8 [Token(Token = "0x170013F5")] public string DigestAlgorithm { [Token(Token = "0x6007A86")] [Address(RVA = "0x2024D00", Offset = "0x2023700", VA = "0x182024D00")] get { ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo; if (objectDigestInfo == 0) { } Asn1Object asn1Object = objectDigestInfo.digestAlgorithm.ToAsn1Object(); throw new NullReferenceException(); } } // Token: 0x06007A87 RID: 31367 RVA: 0x00197508 File Offset: 0x00195708 [Token(Token = "0x6007A87")] [Address(RVA = "0x2023F20", Offset = "0x2022920", VA = "0x182023F20")] public byte[] GetObjectDigest() { ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo; if (objectDigestInfo == 0) { } Asn1Object asn1Object = objectDigestInfo.objectDigest.ToAsn1Object(); throw new NullReferenceException(); } // Token: 0x170013F6 RID: 5110 // (get) Token: 0x06007A88 RID: 31368 RVA: 0x00197538 File Offset: 0x00195738 [Token(Token = "0x170013F6")] public string OtherObjectTypeID { [Token(Token = "0x6007A88")] [Address(RVA = "0x2024DA0", Offset = "0x20237A0", VA = "0x182024DA0")] get { ObjectDigestInfo objectDigestInfo = this.holder.objectDigestInfo; if (objectDigestInfo == 0) { } return objectDigestInfo.otherObjectTypeID.identifier; } } // Token: 0x06007A89 RID: 31369 RVA: 0x00197568 File Offset: 0x00195768 [Token(Token = "0x6007A89")] [Address(RVA = "0x2023CA0", Offset = "0x20226A0", VA = "0x182023CA0")] private GeneralNames GenerateGeneralNames(X509Name principal) { return new GeneralNames(new GeneralName(principal)); } // Token: 0x06007A8A RID: 31370 RVA: 0x00197580 File Offset: 0x00195780 [Token(Token = "0x6007A8A")] [Address(RVA = "0x20247B0", Offset = "0x20231B0", VA = "0x1820247B0")] 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: 0x06007A8B RID: 31371 RVA: 0x001975D4 File Offset: 0x001957D4 [Token(Token = "0x6007A8B")] [Address(RVA = "0x2023D90", Offset = "0x2022790", VA = "0x182023D90")] 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: 0x06007A8C RID: 31372 RVA: 0x00197650 File Offset: 0x00195850 [Token(Token = "0x6007A8C")] [Address(RVA = "0x2023F60", Offset = "0x2022960", VA = "0x182023F60")] 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: 0x06007A8D RID: 31373 RVA: 0x00197774 File Offset: 0x00195974 [Token(Token = "0x6007A8D")] [Address(RVA = "0x2023D10", Offset = "0x2022710", VA = "0x182023D10")] public X509Name[] GetEntityNames() { GeneralNames entityName = this.holder.entityName; if (entityName == 0) { } return this.GetPrincipals(entityName); } // Token: 0x06007A8E RID: 31374 RVA: 0x001977A0 File Offset: 0x001959A0 [Token(Token = "0x6007A8E")] [Address(RVA = "0x2023D50", Offset = "0x2022750", VA = "0x182023D50")] public X509Name[] GetIssuer() { IssuerSerial baseCertificateID = this.holder.baseCertificateID; if (baseCertificateID == 0) { } GeneralNames issuer = baseCertificateID.issuer; return this.GetPrincipals(issuer); } // Token: 0x170013F7 RID: 5111 // (get) Token: 0x06007A8F RID: 31375 RVA: 0x001977D4 File Offset: 0x001959D4 [Token(Token = "0x170013F7")] public BigInteger SerialNumber { [Token(Token = "0x6007A8F")] [Address(RVA = "0x2024DE0", Offset = "0x20237E0", VA = "0x182024DE0")] get { IssuerSerial baseCertificateID = this.holder.baseCertificateID; if (baseCertificateID == 0) { } return baseCertificateID.serial.Value; } } // Token: 0x06007A90 RID: 31376 RVA: 0x00197804 File Offset: 0x00195A04 [Token(Token = "0x6007A90")] [Address(RVA = "0x2023AB0", Offset = "0x20224B0", VA = "0x182023AB0", 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: 0x06007A91 RID: 31377 RVA: 0x0019783C File Offset: 0x00195A3C [Token(Token = "0x6007A91")] [Address(RVA = "0x20242C0", Offset = "0x2022CC0", VA = "0x1820242C0")] 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: 0x06007A92 RID: 31378 RVA: 0x00197A04 File Offset: 0x00195C04 [Token(Token = "0x6007A92")] [Address(RVA = "0x2023B90", Offset = "0x2022590", VA = "0x182023B90", 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: 0x06007A93 RID: 31379 RVA: 0x00197A3C File Offset: 0x00195C3C [Token(Token = "0x6007A93")] [Address(RVA = "0x528AC0", Offset = "0x5274C0", VA = "0x180528AC0", Slot = "2")] public override int GetHashCode() { Asn1Object asn1Object = this.holder.ToAsn1Object(); throw new NullReferenceException(); } // Token: 0x06007A94 RID: 31380 RVA: 0x00197A5C File Offset: 0x00195C5C [Token(Token = "0x6007A94")] [Address(RVA = "0x20246D0", Offset = "0x20230D0", VA = "0x1820246D0", Slot = "4")] public bool Match(object obj) { while (obj != 0 && obj != 0) { if (obj != 0) { bool flag; return flag; } } } // Token: 0x04005833 RID: 22579 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4005833")] internal readonly Holder holder; } }