using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; using Hjg.Pngcs; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001544 RID: 5444 [Token(Token = "0x2001544")] [StructLayout(3)] public class DtlsClientProtocol : DtlsProtocol { // Token: 0x060090E6 RID: 37094 RVA: 0x0020189C File Offset: 0x001FFA9C [Token(Token = "0x60090E6")] [Address(RVA = "0x1E80F30", Offset = "0x1E7F930", VA = "0x181E80F30")] public DtlsClientProtocol(SecureRandom secureRandom) : base(secureRandom) { } // Token: 0x060090E7 RID: 37095 RVA: 0x002018B0 File Offset: 0x001FFAB0 [Token(Token = "0x60090E7")] [Address(RVA = "0x1E7F010", Offset = "0x1E7DA10", VA = "0x181E7F010", Slot = "5")] public virtual DtlsTransport Connect(TlsClient client, DatagramTransport transport) { /* An exception occurred when decompiling this method (060090E7) ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsTransport BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol::Connect(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsClient,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DatagramTransport) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_C2: stloc:ArgumentNullException(var_18_CC, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldstr:string("transport"))) } 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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846 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: 0x060090E8 RID: 37096 RVA: 0x0020198C File Offset: 0x001FFB8C [Token(Token = "0x60090E8")] [Address(RVA = "0x1E7E0B0", Offset = "0x1E7CAB0", VA = "0x181E7E0B0", Slot = "6")] internal virtual void AbortClientHandshake(DtlsClientProtocol.ClientHandshakeState state, DtlsRecordLayer recordLayer, byte alertDescription) { recordLayer.Failed(); } // Token: 0x060090E9 RID: 37097 RVA: 0x002019A8 File Offset: 0x001FFBA8 [Token(Token = "0x60090E9")] [Address(RVA = "0x1E7E110", Offset = "0x1E7CB10", VA = "0x181E7E110", Slot = "7")] internal virtual DtlsTransport ClientHandshake(DtlsClientProtocol.ClientHandshakeState state, DtlsRecordLayer recordLayer) { /* An exception occurred when decompiling this method (060090E9) ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsTransport BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol::ClientHandshake(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol/ClientHandshakeState,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsRecordLayer) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_462: stloc:TlsFatalAlert(var_109_469, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_110))) } 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: 0x060090EA RID: 37098 RVA: 0x00201E20 File Offset: 0x00200020 [Token(Token = "0x60090EA")] [Address(RVA = "0x1E7F460", Offset = "0x1E7DE60", VA = "0x181E7F460", Slot = "8")] protected virtual byte[] GenerateCertificateVerify(DtlsClientProtocol.ClientHandshakeState state, DigitallySigned certificateVerify) { MemoryStream memoryStream = new MemoryStream(); byte[] signature = certificateVerify.Signature; ((IDisposable)memoryStream).Dispose(); throw new NullReferenceException(); } // Token: 0x060090EB RID: 37099 RVA: 0x00201E48 File Offset: 0x00200048 [Token(Token = "0x60090EB")] [Address(RVA = "0x1E7F4F0", Offset = "0x1E7DEF0", VA = "0x181E7F4F0", Slot = "9")] protected virtual byte[] GenerateClientHello(DtlsClientProtocol.ClientHandshakeState state, TlsClient client) { /* An exception occurred when decompiling this method (060090EB) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Byte[] BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol::GenerateClientHello(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol/ClientHandshakeState,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsClient) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_160: stloc:TlsFatalAlert(var_27_167, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_28))) } 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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846 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: 0x060090EC RID: 37100 RVA: 0x00201FC0 File Offset: 0x002001C0 [Token(Token = "0x60090EC")] [Address(RVA = "0x1E7FA50", Offset = "0x1E7E450", VA = "0x181E7FA50", Slot = "10")] protected virtual byte[] GenerateClientKeyExchange(DtlsClientProtocol.ClientHandshakeState state) { MemoryStream memoryStream = new MemoryStream(); TlsKeyExchange keyExchange = state.keyExchange; ((IDisposable)memoryStream).Dispose(); throw new NullReferenceException(); } // Token: 0x060090ED RID: 37101 RVA: 0x00201FE8 File Offset: 0x002001E8 [Token(Token = "0x60090ED")] [Address(RVA = "0x1E7FAE0", Offset = "0x1E7E4E0", VA = "0x181E7FAE0", Slot = "11")] protected virtual void InvalidateSession(DtlsClientProtocol.ClientHandshakeState state) { SessionParameters sessionParameters = state.sessionParameters; if (sessionParameters != 0) { sessionParameters.Clear(); state.sessionParameters = (ulong)0L; } if (state.tlsSession != 0) { state.tlsSession = (ulong)0L; } } // Token: 0x060090EE RID: 37102 RVA: 0x00202028 File Offset: 0x00200228 [Token(Token = "0x60090EE")] [Address(RVA = "0x1E7FC90", Offset = "0x1E7E690", VA = "0x181E7FC90", Slot = "12")] protected virtual void ProcessCertificateRequest(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { while (state.authentication == (ulong)0L) { } int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; CertificateRequest certificateRequest = CertificateRequest.Parse(state.clientContext, memoryStream); state.certificateRequest = certificateRequest; TlsProtocol.AssertEmpty(memoryStream); TlsKeyExchange keyExchange = state.keyExchange; throw new NullReferenceException(); } // Token: 0x060090EF RID: 37103 RVA: 0x00202070 File Offset: 0x00200270 [Token(Token = "0x60090EF")] [Address(RVA = "0x1E7FD70", Offset = "0x1E7E770", VA = "0x181E7FD70", Slot = "13")] protected virtual void ProcessCertificateStatus(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { /* An exception occurred when decompiling this method (060090EF) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol::ProcessCertificateStatus(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.DtlsClientProtocol/ClientHandshakeState,System.Byte[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_57: stloc:ArgumentException(var_7_66, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("not an instance of the correct type"), ldstr:string("response"))) } 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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846 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: 0x060090F0 RID: 37104 RVA: 0x002020E4 File Offset: 0x002002E4 [Token(Token = "0x60090F0")] [Address(RVA = "0x1E7FF70", Offset = "0x1E7E970", VA = "0x181E7FF70", Slot = "14")] protected virtual byte[] ProcessHelloVerifyRequest(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { ProtocolVersion protocolVersion; byte[] array; bool flag; do { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; protocolVersion = TlsUtilities.ReadVersion(memoryStream); array = TlsUtilities.ReadOpaque8(memoryStream); TlsProtocol.AssertEmpty(memoryStream); bool isServer = state.clientContext.IsServer; } while (!flag); if (!ProtocolVersion.DTLSv12.IsEqualOrEarlierVersionOf(protocolVersion)) { } return array; } // Token: 0x060090F1 RID: 37105 RVA: 0x00202138 File Offset: 0x00200338 [Token(Token = "0x60090F1")] [Address(RVA = "0x1E80120", Offset = "0x1E7EB20", VA = "0x181E80120", Slot = "15")] protected virtual void ProcessNewSessionTicket(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; NewSessionTicket newSessionTicket = NewSessionTicket.Parse(memoryStream); TlsProtocol.AssertEmpty(memoryStream); TlsClient client = state.client; int num2 = 0; if (num2 < num) { num2 += num2; num2++; } List hostNames = client.HostNames; } // Token: 0x060090F2 RID: 37106 RVA: 0x0020218C File Offset: 0x0020038C [Token(Token = "0x60090F2")] [Address(RVA = "0x1E80230", Offset = "0x1E7EC30", VA = "0x181E80230", Slot = "16")] protected virtual Certificate ProcessServerCertificate(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; Certificate certificate = Certificate.Parse(memoryStream); TlsProtocol.AssertEmpty(memoryStream); TlsKeyExchange keyExchange = state.keyExchange; TlsClient client = state.client; state.authentication = certificate; return certificate; } // Token: 0x060090F3 RID: 37107 RVA: 0x002021D0 File Offset: 0x002003D0 [Token(Token = "0x60090F3")] [Address(RVA = "0x1E80330", Offset = "0x1E7ED30", VA = "0x181E80330", Slot = "17")] protected virtual void ProcessServerHello(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { SecureRandom secureRandom; int num7; IDictionary dictionary2; for (;;) { secureRandom = state.clientContext.SecureRandom; int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; ProtocolVersion protocolVersion = TlsUtilities.ReadVersion(memoryStream); byte[] array = TlsUtilities.ReadFully(32, memoryStream); byte[] array2 = TlsUtilities.ReadOpaque8(memoryStream); state.selectedSessionID = array2; TlsClient client = state.client; byte[] selectedSessionID = state.selectedSessionID; if (selectedSessionID.Length != 0 && state.tlsSession != 0) { bool flag = Arrays.AreEqual(selectedSessionID, array2); } int num2 = 0; state.resumedSession = num2 != 0; int num3 = TlsUtilities.ReadUint16(memoryStream); if (Arrays.Contains(state.offeredCipherSuites, num3) && num3 != 0 && num3 != 255 && num3 != 22016) { TlsClientContextImpl clientContext = state.clientContext; bool flag2; if (flag2) { TlsClient client2 = state.client; byte b = TlsUtilities.ReadUint8(memoryStream); TlsClient client3 = state.client; IDictionary dictionary = TlsProtocol.ReadExtensions(memoryStream); state.serverExtensions = dictionary; bool flag3 = TlsExtensionsUtilities.HasExtendedMasterSecretExtension(dictionary); long num4 = secureRandom.NextLong(); if ((state.resumedSession ? 1L : 0L) != num4) { goto IL_247; } TlsClient client4 = state.client; if (state.serverExtensions != 0) { long num5 = num4; byte[] extensionData = TlsUtilities.GetExtensionData(state.clientExtensions, (int)num5); if (extensionData == 0) { goto IL_241; } int num6 = 0; if (extensionData != 0) { } if (num6 != -1) { } if (num6 != 0) { continue; } } byte[] extensionData2 = TlsUtilities.GetExtensionData(state.serverExtensions, 65281); if (extensionData2 != 0) { state.secure_renegotiation = true; byte[] array3 = TlsProtocol.CreateRenegotiationInfo(TlsUtilities.EmptyBytes); if (!Arrays.ConstantTimeAreEqual(extensionData2, array3)) { continue; } } TlsClient client5 = state.client; if (state.resumedSession) { SessionParameters sessionParameters = state.sessionParameters; if (num3 != sessionParameters.mCipherSuite || b != sessionParameters.mCompressionAlgorithm) { continue; } num7 = 0; dictionary2 = sessionParameters.ReadServerExtensions(); } secureRandom.inextp = num3; secureRandom.SeedArray = b; if (dictionary2 == 0 || dictionary2 <= 0) { goto IL_214; } if (!TlsExtensionsUtilities.HasEncryptThenMacExtension(dictionary2)) { break; } int num8; num3 = num8; if (TlsUtilities.IsBlockCipherSuite(num3)) { break; } } } } bool resumedSession = state.resumedSession; bool flag4 = TlsExtensionsUtilities.HasTruncatedHMacExtension(dictionary2); if (state.resumedSession) { } if (state.resumedSession) { } IL_214: if (num7 != 0) { TlsClient client6 = state.client; } int num9; int prfAlgorithm = TlsProtocol.GetPrfAlgorithm(state.clientContext, num9); secureRandom.generator = (ulong)12L; return; IL_241: throw new NullReferenceException(); IL_247: throw new NullReferenceException(); } // Token: 0x060090F4 RID: 37108 RVA: 0x00202438 File Offset: 0x00200638 [Token(Token = "0x60090F4")] [Address(RVA = "0x1E80D10", Offset = "0x1E7F710", VA = "0x181E80D10", Slot = "18")] protected virtual void ProcessServerKeyExchange(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; TlsKeyExchange keyExchange = state.keyExchange; TlsProtocol.AssertEmpty(memoryStream); } // Token: 0x060090F5 RID: 37109 RVA: 0x00202464 File Offset: 0x00200664 [Token(Token = "0x60090F5")] [Address(RVA = "0x1E80DB0", Offset = "0x1E7F7B0", VA = "0x181E80DB0", Slot = "19")] protected virtual void ProcessServerSupplementalData(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; IList list = TlsProtocol.ReadSupplementalDataMessage(memoryStream); TlsClient client = state.client; throw new NullReferenceException(); } // Token: 0x060090F6 RID: 37110 RVA: 0x00202490 File Offset: 0x00200690 [Token(Token = "0x60090F6")] [Address(RVA = "0x1E80E50", Offset = "0x1E7F850", VA = "0x181E80E50", Slot = "20")] protected virtual void ReportServerVersion(DtlsClientProtocol.ClientHandshakeState state, ProtocolVersion server_version) { TlsClientContextImpl clientContext; bool flag; do { clientContext = state.clientContext; } while (!flag); ProtocolVersion serverVersion = clientContext.ServerVersion; TlsClient client = state.client; } // Token: 0x060090F7 RID: 37111 RVA: 0x002024BC File Offset: 0x002006BC [Token(Token = "0x60090F7")] [Address(RVA = "0x1E7FB50", Offset = "0x1E7E550", VA = "0x181E7FB50")] protected static byte[] PatchClientHelloWithCookie(byte[] clientHelloBody, byte[] cookie) { int num = PngHelperInternal.ReadInt1fromByte(clientHelloBody, 34); num += 35; int num2 = num + 1; byte[] array = new byte[cookie.Length]; int num3 = 0; int num4 = 0; Array.Copy(clientHelloBody, num4, array, num3, num); TlsUtilities.CheckUint8(cookie.Length); TlsUtilities.WriteUint8((byte)cookie.Length, array, num); int length = cookie.Length; int num5 = 0; Array.Copy(cookie, num5, array, num2, length); int num6 = clientHelloBody.Length; int num7 = cookie.Length; num6 -= num2; num7 += num2; Array.Copy(clientHelloBody, num2, array, num7, num6); return array; } // Token: 0x02001545 RID: 5445 [Token(Token = "0x2001545")] protected internal class ClientHandshakeState { // Token: 0x060090F8 RID: 37112 RVA: 0x00202558 File Offset: 0x00200758 [Token(Token = "0x60090F8")] [Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")] public ClientHandshakeState() { } // Token: 0x04006020 RID: 24608 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4006020")] internal TlsClient client; // Token: 0x04006021 RID: 24609 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x4006021")] internal TlsClientContextImpl clientContext; // Token: 0x04006022 RID: 24610 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x4006022")] internal TlsSession tlsSession; // Token: 0x04006023 RID: 24611 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x4006023")] internal SessionParameters sessionParameters; // Token: 0x04006024 RID: 24612 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x4006024")] internal SessionParameters.Builder sessionParametersBuilder; // Token: 0x04006025 RID: 24613 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x4006025")] internal int[] offeredCipherSuites; // Token: 0x04006026 RID: 24614 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x4006026")] internal IDictionary clientExtensions; // Token: 0x04006027 RID: 24615 [global::Cpp2IlInjected.FieldOffset(Offset = "0x48")] [Token(Token = "0x4006027")] internal IDictionary serverExtensions; // Token: 0x04006028 RID: 24616 [global::Cpp2IlInjected.FieldOffset(Offset = "0x50")] [Token(Token = "0x4006028")] internal byte[] selectedSessionID; // Token: 0x04006029 RID: 24617 [global::Cpp2IlInjected.FieldOffset(Offset = "0x58")] [Token(Token = "0x4006029")] internal bool resumedSession; // Token: 0x0400602A RID: 24618 [global::Cpp2IlInjected.FieldOffset(Offset = "0x59")] [Token(Token = "0x400602A")] internal bool secure_renegotiation; // Token: 0x0400602B RID: 24619 [global::Cpp2IlInjected.FieldOffset(Offset = "0x5A")] [Token(Token = "0x400602B")] internal bool allowCertificateStatus; // Token: 0x0400602C RID: 24620 [global::Cpp2IlInjected.FieldOffset(Offset = "0x5B")] [Token(Token = "0x400602C")] internal bool expectSessionTicket; // Token: 0x0400602D RID: 24621 [global::Cpp2IlInjected.FieldOffset(Offset = "0x60")] [Token(Token = "0x400602D")] internal TlsKeyExchange keyExchange; // Token: 0x0400602E RID: 24622 [global::Cpp2IlInjected.FieldOffset(Offset = "0x68")] [Token(Token = "0x400602E")] internal TlsAuthentication authentication; // Token: 0x0400602F RID: 24623 [global::Cpp2IlInjected.FieldOffset(Offset = "0x70")] [Token(Token = "0x400602F")] internal CertificateStatus certificateStatus; // Token: 0x04006030 RID: 24624 [global::Cpp2IlInjected.FieldOffset(Offset = "0x78")] [Token(Token = "0x4006030")] internal CertificateRequest certificateRequest; // Token: 0x04006031 RID: 24625 [global::Cpp2IlInjected.FieldOffset(Offset = "0x80")] [Token(Token = "0x4006031")] internal TlsCredentials clientCredentials; } } }