using System; using System.Collections; using System.IO; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001526 RID: 5414 [Token(Token = "0x2001526")] [StructLayout(3)] public class CertificateRequest { // Token: 0x06009034 RID: 36916 RVA: 0x001FFA60 File Offset: 0x001FDC60 [Token(Token = "0x6009034")] [Address(RVA = "0x74BD80", Offset = "0x74A780", VA = "0x18074BD80")] public CertificateRequest(byte[] certificateTypes, IList supportedSignatureAlgorithms, IList certificateAuthorities) { this.mCertificateTypes = certificateTypes; this.mSupportedSignatureAlgorithms = supportedSignatureAlgorithms; this.mCertificateAuthorities = certificateAuthorities; } // Token: 0x1700174D RID: 5965 // (get) Token: 0x06009035 RID: 36917 RVA: 0x001FFA88 File Offset: 0x001FDC88 [Token(Token = "0x1700174D")] public virtual byte[] CertificateTypes { [Token(Token = "0x6009035")] [Address(RVA = "0x3C39A0", Offset = "0x3C23A0", VA = "0x1803C39A0", Slot = "4")] get { return this.mCertificateTypes; } } // Token: 0x1700174E RID: 5966 // (get) Token: 0x06009036 RID: 36918 RVA: 0x001FFA9C File Offset: 0x001FDC9C [Token(Token = "0x1700174E")] public virtual IList SupportedSignatureAlgorithms { [Token(Token = "0x6009036")] [Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240", Slot = "5")] get { return this.mSupportedSignatureAlgorithms; } } // Token: 0x1700174F RID: 5967 // (get) Token: 0x06009037 RID: 36919 RVA: 0x001FFAB0 File Offset: 0x001FDCB0 [Token(Token = "0x1700174F")] public virtual IList CertificateAuthorities { [Token(Token = "0x6009037")] [Address(RVA = "0x3C1220", Offset = "0x3BFC20", VA = "0x1803C1220", Slot = "6")] get { return this.mCertificateAuthorities; } } // Token: 0x06009038 RID: 36920 RVA: 0x001FFAC4 File Offset: 0x001FDCC4 [Token(Token = "0x6009038")] [Address(RVA = "0x1E75270", Offset = "0x1E73C70", VA = "0x181E75270", Slot = "7")] public virtual void Encode(Stream output) { for (;;) { int num = 0; byte[] array = this.mCertificateTypes; if (array != 0 && array.Length != num) { TlsUtilities.WriteUint8ArrayWithUint8Length(array, output); } TlsUtilities.WriteUint8(0, output); IList list = this.mSupportedSignatureAlgorithms; if (list != 0) { int num2 = 0; TlsUtilities.EncodeSupportedSignatureAlgorithms(list, num2 != 0, output); } if (this.mCertificateAuthorities == 0) { break; } IList list2 = this.mCertificateAuthorities; IList list3 = this.mCertificateAuthorities; IList list4; if (list4 != 0) { if (num < list4) { num += num; num++; } ulong num3; list4 += num3; if (list4 == 0 || list4 == 0) { goto IL_F0; } int num4 = 0; if (num < num4) { num += num; num++; } byte[] array2; int num5 = array2.Length; num5 += 2; num += num5; array2 += array2; } if (num == -1) { goto IL_C5; } TlsUtilities.CheckUint16(num); TlsUtilities.WriteUint16(num, output); if (num != 0) { goto IL_C5; } IL_C9: num++; if (num != 0) { } if (num != -1) { } if (num == 0) { break; } continue; IL_C5: if (num == 0) { goto IL_C9; } goto IL_FC; } TlsUtilities.WriteUint16(0, output); return; IL_F0: throw new NullReferenceException(); IL_FC: throw new NullReferenceException(); } // Token: 0x06009039 RID: 36921 RVA: 0x001FFBD4 File Offset: 0x001FDDD4 [Token(Token = "0x6009039")] [Address(RVA = "0x1E75850", Offset = "0x1E74250", VA = "0x181E75850")] public static CertificateRequest Parse(TlsContext context, Stream input) { byte[] array = new byte[(int)TlsUtilities.ReadUint8(input)]; int num = 0; byte b = TlsUtilities.ReadUint8(input); num++; IList list; if (TlsUtilities.IsTlsV12(context)) { list = TlsUtilities.ParseSupportedSignatureAlgorithms(false, input); } IList list2 = Platform.CreateArrayList(); int num2; MemoryStream memoryStream = new MemoryStream(TlsUtilities.ReadOpaque16(input), num2 != 0); num2 = 0; long length = memoryStream.Length; bool canWrite = memoryStream.CanWrite; if (length < (canWrite ? 1L : 0L)) { X509Name instance = X509Name.GetInstance(TlsUtilities.ReadDerObject(TlsUtilities.ReadOpaque16(memoryStream))); } CertificateRequest certificateRequest; certificateRequest.mCertificateAuthorities = list2; certificateRequest.mCertificateTypes = array; certificateRequest.mSupportedSignatureAlgorithms = list; return certificateRequest; } // Token: 0x04005EC7 RID: 24263 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4005EC7")] protected readonly byte[] mCertificateTypes; // Token: 0x04005EC8 RID: 24264 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x4005EC8")] protected readonly IList mSupportedSignatureAlgorithms; // Token: 0x04005EC9 RID: 24265 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x4005EC9")] protected readonly IList mCertificateAuthorities; } }