using System; using System.Collections; using System.IO; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001B03 RID: 6915 [Token(Token = "0x2001B03")] public class CertificateRequest { // Token: 0x0600AC0E RID: 44046 RVA: 0x00257108 File Offset: 0x00255308 [Token(Token = "0x600AC0E")] [Address(RVA = "0x4A7B10", Offset = "0x4A6910", VA = "0x1804A7B10")] public CertificateRequest(byte[] certificateTypes, IList supportedSignatureAlgorithms, IList certificateAuthorities) { this.mCertificateTypes = certificateTypes; this.mSupportedSignatureAlgorithms = supportedSignatureAlgorithms; this.mCertificateAuthorities = certificateAuthorities; } // Token: 0x17001B4E RID: 6990 // (get) Token: 0x0600AC0F RID: 44047 RVA: 0x00257130 File Offset: 0x00255330 [Token(Token = "0x17001B4E")] public virtual byte[] CertificateTypes { [Token(Token = "0x600AC0F")] [Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20", Slot = "4")] get { return this.mCertificateTypes; } } // Token: 0x17001B4F RID: 6991 // (get) Token: 0x0600AC10 RID: 44048 RVA: 0x00257144 File Offset: 0x00255344 [Token(Token = "0x17001B4F")] public virtual IList SupportedSignatureAlgorithms { [Token(Token = "0x600AC10")] [Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40", Slot = "5")] get { return this.mSupportedSignatureAlgorithms; } } // Token: 0x17001B50 RID: 6992 // (get) Token: 0x0600AC11 RID: 44049 RVA: 0x00257158 File Offset: 0x00255358 [Token(Token = "0x17001B50")] public virtual IList CertificateAuthorities { [Token(Token = "0x600AC11")] [Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400", Slot = "6")] get { return this.mCertificateAuthorities; } } // Token: 0x0600AC12 RID: 44050 RVA: 0x0025716C File Offset: 0x0025536C [Token(Token = "0x600AC12")] [Address(RVA = "0x18A8A10", Offset = "0x18A7810", VA = "0x1818A8A10", Slot = "7")] public virtual void Encode(Stream output) { int num; do { 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_F9; } int num4 = 0; if (num < num4) { num += num; num++; } byte[] array2; int num5 = array2.Length; num5 += 2; num += num5; array2 += array2; } if (num != 0) { goto IL_105; } if (num == -1 || "{il2cpp array field local25->}" == (ulong)190L) { } TlsUtilities.CheckUint16(num); TlsUtilities.WriteUint16(num, output); if (num != 0) { } if (1 != 0) { } } while (num != 0); TlsUtilities.WriteUint16(0, output); return; IL_F9: throw new NullReferenceException(); IL_105: throw new NullReferenceException(); } // Token: 0x0600AC13 RID: 44051 RVA: 0x00257284 File Offset: 0x00255484 [Token(Token = "0x600AC13")] [Address(RVA = "0x18A8FC0", Offset = "0x18A7DC0", VA = "0x1818A8FC0")] 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: 0x04006D0A RID: 27914 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4006D0A")] protected readonly byte[] mCertificateTypes; // Token: 0x04006D0B RID: 27915 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4006D0B")] protected readonly IList mSupportedSignatureAlgorithms; // Token: 0x04006D0C RID: 27916 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4006D0C")] protected readonly IList mCertificateAuthorities; } }