using System; using System.Collections; using System.Text; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Utilities; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Operators; using BestHTTP.SecureProtocol.Org.BouncyCastle.Math; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security.Certificates; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Collections; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Date; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Encoders; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.X509 { // Token: 0x020019E5 RID: 6629 [Token(Token = "0x20019E5")] public class X509Crl : X509ExtensionBase { // Token: 0x06009AAF RID: 39599 RVA: 0x001FA0C8 File Offset: 0x001F82C8 [Token(Token = "0x6009AAF")] [Address(RVA = "0x41EB70", Offset = "0x41DB70", VA = "0x18041EB70")] public X509Crl(CertificateList c) { this.c = c; string signatureName = X509SignatureUtilities.GetSignatureName(c.sigAlgID); this.sigAlgName = signatureName; DerObjectIdentifier objectID = c.sigAlgID.ObjectID; if (objectID == 0) { this.sigAlgParams = objectID; } byte[] derEncoded = c.sigAlgID.ObjectID.GetDerEncoded(); this.sigAlgParams = derEncoded; bool flag; this.isIndirect = flag; } // Token: 0x06009AB0 RID: 39600 RVA: 0x001FA14C File Offset: 0x001F834C [Token(Token = "0x6009AB0")] [Address(RVA = "0x41D920", Offset = "0x41C920", VA = "0x18041D920", Slot = "8")] protected override X509Extensions GetX509Extensions() { int version = this.c.Version; return this.c.tbsCertList.crlExtensions; } // Token: 0x06009AB1 RID: 39601 RVA: 0x001FA180 File Offset: 0x001F8380 [Token(Token = "0x6009AB1")] [Address(RVA = "0x41D440", Offset = "0x41C440", VA = "0x18041D440", Slot = "13")] public virtual byte[] GetEncoded() { return this.c.GetDerEncoded(); } // Token: 0x06009AB2 RID: 39602 RVA: 0x001FA1A4 File Offset: 0x001F83A4 [Token(Token = "0x6009AB2")] [Address(RVA = "0x41EA70", Offset = "0x41DA70", VA = "0x18041EA70", Slot = "14")] public virtual void Verify(AsymmetricKeyParameter publicKey) { Asn1VerifierFactoryProvider asn1VerifierFactoryProvider = new Asn1VerifierFactoryProvider(publicKey); ISet criticalExtensionOids = ((IX509Extension)this).GetCriticalExtensionOids(); } // Token: 0x06009AB3 RID: 39603 RVA: 0x001FA1C0 File Offset: 0x001F83C0 [Token(Token = "0x6009AB3")] [Address(RVA = "0x41EAF0", Offset = "0x41DAF0", VA = "0x18041EAF0", Slot = "15")] public virtual void Verify(IVerifierFactoryProvider verifierProvider) { CertificateList certificateList = this.c; ISet criticalExtensionOids = ((IX509Extension)this).GetCriticalExtensionOids(); } // Token: 0x06009AB4 RID: 39604 RVA: 0x001FA1E4 File Offset: 0x001F83E4 [Token(Token = "0x6009AB4")] [Address(RVA = "0x41D110", Offset = "0x41C110", VA = "0x18041D110", Slot = "16")] protected virtual void CheckSignature(IVerifierFactory verifier) { /* An exception occurred when decompiling this method (06009AB4) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.X509.X509Crl::CheckSignature(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IVerifierFactory) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_55: stloc:CrlException(var_8_5F, newobj:CrlException(CrlException::.ctor, ldstr:string("Signature algorithm on CertificateList does not match TbsCertList."))) } at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88 --- End of inner exception stack trace --- at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663 */; } // Token: 0x170018AC RID: 6316 // (get) Token: 0x06009AB5 RID: 39605 RVA: 0x001FA254 File Offset: 0x001F8454 [Token(Token = "0x170018AC")] public virtual int Version { [Token(Token = "0x6009AB5")] [Address(RVA = "0x41EEF0", Offset = "0x41DEF0", VA = "0x18041EEF0", Slot = "17")] get { return this.c.Version; } } // Token: 0x170018AD RID: 6317 // (get) Token: 0x06009AB6 RID: 39606 RVA: 0x001FA274 File Offset: 0x001F8474 [Token(Token = "0x170018AD")] public virtual X509Name IssuerDN { [Token(Token = "0x6009AB6")] [Address(RVA = "0x41EE00", Offset = "0x41DE00", VA = "0x18041EE00", Slot = "18")] get { return this.c.Issuer; } } // Token: 0x170018AE RID: 6318 // (get) Token: 0x06009AB7 RID: 39607 RVA: 0x001FA294 File Offset: 0x001F8494 [Token(Token = "0x170018AE")] public virtual DateTime ThisUpdate { [Token(Token = "0x6009AB7")] [Address(RVA = "0x41EEC0", Offset = "0x41DEC0", VA = "0x18041EEC0", Slot = "19")] get { return this.c.ThisUpdate.ToDateTime(); } } // Token: 0x170018AF RID: 6319 // (get) Token: 0x06009AB8 RID: 39608 RVA: 0x001FA2B8 File Offset: 0x001F84B8 [Token(Token = "0x170018AF")] public virtual DateTimeObject NextUpdate { [Token(Token = "0x6009AB8")] [Address(RVA = "0x41EE20", Offset = "0x41DE20", VA = "0x18041EE20", Slot = "20")] get { if (this.c.NextUpdate == 0) { } return new DateTimeObject(this.c.NextUpdate.ToDateTime()); } } // Token: 0x06009AB9 RID: 39609 RVA: 0x001FA2F0 File Offset: 0x001F84F0 [Token(Token = "0x6009AB9")] [Address(RVA = "0x41DA50", Offset = "0x41CA50", VA = "0x18041DA50")] private ISet LoadCrlEntries() { int num; do { num = 0; HashSet hashSet = new HashSet(); IEnumerable revokedCertificateEnumeration = this.c.GetRevokedCertificateEnumeration(); int version = this.Version; if (version != 0) { if (num < version) { num += num; num++; } bool flag = this.isIndirect; if (version == 0) { } if (version == 0) { goto IL_99; } X509CrlEntry x509CrlEntry; x509CrlEntry.c = version; x509CrlEntry.isIndirect = flag; x509CrlEntry.previousCertificateIssuer = version; X509Name x509Name = x509CrlEntry.loadCertificateIssuer(); x509CrlEntry.certificateIssuer = x509Name; uint num2; if (num < (int)num2) { num += num; num++; } x509CrlEntry += x509CrlEntry; num += 19; } if (num != 0) { } } while (num != 0); throw new NullReferenceException(); IL_99: throw new NullReferenceException(); } // Token: 0x06009ABA RID: 39610 RVA: 0x001FA39C File Offset: 0x001F859C [Token(Token = "0x6009ABA")] [Address(RVA = "0x41D4F0", Offset = "0x41C4F0", VA = "0x18041D4F0", Slot = "21")] public virtual X509CrlEntry GetRevokedCertificate(BigInteger serialNumber) { int num; X509CrlEntry x509CrlEntry; do { num = 0; IEnumerable enumerable; if (enumerable != 0) { if (enumerable == 0) { } if (enumerable == 0) { goto IL_57; } x509CrlEntry.c = enumerable; x509CrlEntry.isIndirect = num != 0; x509CrlEntry.previousCertificateIssuer = enumerable; X509Name x509Name = x509CrlEntry.loadCertificateIssuer(); x509CrlEntry.certificateIssuer = x509Name; } } while (num != 0); if (num != -1) { return x509CrlEntry; } throw new NullReferenceException(); IL_57: throw new NullReferenceException(); } // Token: 0x06009ABB RID: 39611 RVA: 0x001FA408 File Offset: 0x001F8608 [Token(Token = "0x6009ABB")] [Address(RVA = "0x41D790", Offset = "0x41C790", VA = "0x18041D790", Slot = "22")] public virtual ISet GetRevokedCertificates() { ISet set = this.LoadCrlEntries(); throw new NullReferenceException(); } // Token: 0x06009ABC RID: 39612 RVA: 0x001FA424 File Offset: 0x001F8624 [Token(Token = "0x6009ABC")] [Address(RVA = "0x41D860", Offset = "0x41C860", VA = "0x18041D860", Slot = "23")] public virtual byte[] GetTbsCertList() { return this.c.tbsCertList.GetDerEncoded(); } // Token: 0x06009ABD RID: 39613 RVA: 0x001FA454 File Offset: 0x001F8654 [Token(Token = "0x6009ABD")] [Address(RVA = "0x419790", Offset = "0x418790", VA = "0x180419790", Slot = "24")] public virtual byte[] GetSignature() { return this.c.GetSignatureOctets(); } // Token: 0x170018B0 RID: 6320 // (get) Token: 0x06009ABE RID: 39614 RVA: 0x001FA474 File Offset: 0x001F8674 [Token(Token = "0x170018B0")] public virtual string SigAlgName { [Token(Token = "0x6009ABE")] [Address(RVA = "0x4157B0", Offset = "0x4147B0", VA = "0x1804157B0", Slot = "25")] get { return this.sigAlgName; } } // Token: 0x170018B1 RID: 6321 // (get) Token: 0x06009ABF RID: 39615 RVA: 0x001FA488 File Offset: 0x001F8688 [Token(Token = "0x170018B1")] public virtual string SigAlgOid { [Token(Token = "0x6009ABF")] [Address(RVA = "0x41ABE0", Offset = "0x419BE0", VA = "0x18041ABE0", Slot = "26")] get { Asn1Object asn1Object = this.c.sigAlgID.ToAsn1Object(); throw new NullReferenceException(); } } // Token: 0x06009AC0 RID: 39616 RVA: 0x001FA4AC File Offset: 0x001F86AC [Token(Token = "0x6009AC0")] [Address(RVA = "0x41D800", Offset = "0x41C800", VA = "0x18041D800", Slot = "27")] public virtual byte[] GetSigAlgParams() { return Arrays.Clone(this.sigAlgParams); } // Token: 0x06009AC1 RID: 39617 RVA: 0x001FA4C4 File Offset: 0x001F86C4 [Token(Token = "0x6009AC1")] [Address(RVA = "0x41D380", Offset = "0x41C380", VA = "0x18041D380", Slot = "0")] public override bool Equals(object obj) { if (obj != this) { if (obj != 0 && obj != 0) { Asn1Object asn1Object = this.c.ToAsn1Object(); } } return true; } // Token: 0x06009AC2 RID: 39618 RVA: 0x001FA4F4 File Offset: 0x001F86F4 [Token(Token = "0x6009AC2")] [Address(RVA = "0x40F2B0", Offset = "0x40E2B0", VA = "0x18040F2B0", Slot = "2")] public override int GetHashCode() { Asn1Object asn1Object = this.c.ToAsn1Object(); throw new NullReferenceException(); } // Token: 0x06009AC3 RID: 39619 RVA: 0x001FA514 File Offset: 0x001F8714 [Token(Token = "0x6009AC3")] [Address(RVA = "0x41DD50", Offset = "0x41CD50", VA = "0x18041DD50", Slot = "3")] public override string ToString() { StringBuilder stringBuilder; string newLine; do { int num = 0; stringBuilder = new StringBuilder(); newLine = Platform.NewLine; StringBuilder stringBuilder2 = stringBuilder.Append(" Version: "); StringBuilder stringBuilder4; StringBuilder stringBuilder3 = stringBuilder4.Append(newLine); StringBuilder stringBuilder5 = stringBuilder.Append(" IssuerDN: "); int version = this.Version; StringBuilder stringBuilder6 = stringBuilder5.Append(version).Append(newLine); StringBuilder stringBuilder7 = stringBuilder.Append(" This update: "); X509Name issuerDN = this.IssuerDN; StringBuilder stringBuilder8 = stringBuilder7.Append(issuerDN).Append(newLine); StringBuilder stringBuilder9 = stringBuilder.Append(" Next update: "); DateTime thisUpdate = this.ThisUpdate; StringBuilder stringBuilder10 = stringBuilder9.Append(thisUpdate).Append(newLine); StringBuilder stringBuilder11 = stringBuilder.Append(" Signature Algorithm: "); byte[] signature = this.GetSignature(); StringBuilder stringBuilder13; StringBuilder stringBuilder12 = stringBuilder13.Append(newLine); byte[] tbsCertList = this.GetTbsCertList(); StringBuilder stringBuilder14 = stringBuilder.Append(" Signature: "); int num2 = 0; string text = Hex.ToHexString(tbsCertList, num2, 20); StringBuilder stringBuilder15 = stringBuilder.Append(text).Append(newLine); int length = tbsCertList.Length; uint num3; if (num3 < (uint)length) { int num4 = tbsCertList.Length; num4 -= (int)num3; int num5 = Math.Min(20, num4); StringBuilder stringBuilder16 = stringBuilder.Append(" "); string text2 = Hex.ToHexString(tbsCertList, (int)num3, num5); StringBuilder stringBuilder17 = stringBuilder.Append(text2).Append(newLine); num3 += (uint)20; } X509Extensions crlExtensions = this.c.tbsCertList.crlExtensions; int num8; if (crlExtensions != 0) { int num6; if (crlExtensions.ExtensionOids != 0) { StringBuilder stringBuilder18 = stringBuilder.Append(" Extensions: "); num6 = 0; StringBuilder stringBuilder19 = stringBuilder18.Append(newLine); } if (num < num6) { num += num; num++; } if (num == 0) { num++; num += 19; } if (num == 0) { continue; } X509Extension extension = crlExtensions.GetExtension(num); if (extension.value == 0) { StringBuilder stringBuilder20 = stringBuilder.Append(newLine); } StringBuilder stringBuilder21 = stringBuilder.Append(" critical("); bool critical = extension.critical; StringBuilder stringBuilder22 = stringBuilder21.Append(critical).Append(") "); StringBuilder stringBuilder23 = stringBuilder.Append(" value = "); Asn1Object asn1Object; string text3 = Asn1Dump.DumpAsString(asn1Object); CrlDistPoint instance = CrlDistPoint.GetInstance(stringBuilder23.Append(text3).Append(newLine)); CrlDistPoint instance2 = CrlDistPoint.GetInstance(stringBuilder.Append(instance).Append(newLine)); IssuingDistributionPoint instance3 = IssuingDistributionPoint.GetInstance(stringBuilder.Append(instance2).Append(newLine)); StringBuilder stringBuilder24 = stringBuilder.Append(instance3).Append(newLine); CrlNumber crlNumber = new CrlNumber(DerInteger.GetInstance(asn1Object).PositiveValue); string text4 = "Base CRL: " + crlNumber; StringBuilder stringBuilder25 = stringBuilder.Append(text4).Append(newLine); CrlNumber crlNumber2 = new CrlNumber(DerInteger.GetInstance(asn1Object).PositiveValue); StringBuilder stringBuilder26 = stringBuilder.Append(crlNumber2).Append(newLine); StringBuilder stringBuilder27 = stringBuilder.Append(" value = ").Append("*****"); int num7 = 0; StringBuilder stringBuilder28 = stringBuilder27.Append(newLine); num8 = 0; if (num8 < num7) { num8 += num8; num8++; } while (num8 != 0) { } } num8 += num8; } while (stringBuilder.Append(newLine) == 0 || 0 != 0); int hashCode = stringBuilder.GetHashCode(); throw new NullReferenceException(); } // Token: 0x06009AC4 RID: 39620 RVA: 0x001FA838 File Offset: 0x001F8A38 [Token(Token = "0x6009AC4")] [Address(RVA = "0x41D970", Offset = "0x41C970", VA = "0x18041D970", Slot = "28")] public virtual bool IsRevoked(X509Certificate cert) { CrlEntry[] revokedCertificates = this.c.GetRevokedCertificates(); if (revokedCertificates != 0) { int version = cert.Version; int num = 0; int length = revokedCertificates.Length; if (num < length) { if (revokedCertificates[num].userCertificate.Value == 0) { num++; } return true; } } throw new NullReferenceException(); } // Token: 0x170018B2 RID: 6322 // (get) Token: 0x06009AC5 RID: 39621 RVA: 0x001FA88C File Offset: 0x001F8A8C [Token(Token = "0x170018B2")] protected virtual bool IsIndirectCrl { [Token(Token = "0x6009AC5")] [Address(RVA = "0x41ECE0", Offset = "0x41DCE0", VA = "0x18041ECE0", Slot = "29")] get { DerObjectIdentifier issuingDistributionPoint = X509Extensions.IssuingDistributionPoint; ISet criticalExtensionOids = this.GetCriticalExtensionOids(); if (criticalExtensionOids != 0) { Asn1Object asn1Object; IssuingDistributionPoint instance = IssuingDistributionPoint.GetInstance(asn1Object); } CrlException ex = new CrlException("Exception reading IssuingDistributionPoint" + issuingDistributionPoint); throw new NullReferenceException(); } } // Token: 0x04006846 RID: 26694 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4006846")] private readonly CertificateList c; // Token: 0x04006847 RID: 26695 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4006847")] private readonly string sigAlgName; // Token: 0x04006848 RID: 26696 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4006848")] private readonly byte[] sigAlgParams; // Token: 0x04006849 RID: 26697 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4006849")] private readonly bool isIndirect; } }