using System; using System.Collections; using System.Collections.Generic; using System.IO; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001B21 RID: 6945 [Token(Token = "0x2001B21")] public class DtlsClientProtocol : DtlsProtocol { // Token: 0x0600ACC0 RID: 44224 RVA: 0x00258ED8 File Offset: 0x002570D8 [Token(Token = "0x600ACC0")] [Address(RVA = "0x18B4510", Offset = "0x18B3310", VA = "0x1818B4510")] public DtlsClientProtocol(SecureRandom secureRandom) : base(secureRandom) { } // Token: 0x0600ACC1 RID: 44225 RVA: 0x00258EEC File Offset: 0x002570EC [Token(Token = "0x600ACC1")] [Address(RVA = "0x18B2580", Offset = "0x18B1380", VA = "0x1818B2580", Slot = "5")] public virtual DtlsTransport Connect(TlsClient client, DatagramTransport transport) { /* An exception occurred when decompiling this method (0600ACC1) 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_BE: stloc:ArgumentNullException(var_18_C8, 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 1660 */; } // Token: 0x0600ACC2 RID: 44226 RVA: 0x00258FC4 File Offset: 0x002571C4 [Token(Token = "0x600ACC2")] [Address(RVA = "0x18B15E0", Offset = "0x18B03E0", VA = "0x1818B15E0", Slot = "6")] internal virtual void AbortClientHandshake(DtlsClientProtocol.ClientHandshakeState state, DtlsRecordLayer recordLayer, byte alertDescription) { recordLayer.Failed(); } // Token: 0x0600ACC3 RID: 44227 RVA: 0x00258FE0 File Offset: 0x002571E0 [Token(Token = "0x600ACC3")] [Address(RVA = "0x18B1640", Offset = "0x18B0440", VA = "0x1818B1640", Slot = "7")] internal virtual DtlsTransport ClientHandshake(DtlsClientProtocol.ClientHandshakeState state, DtlsRecordLayer recordLayer) { /* An exception occurred when decompiling this method (0600ACC3) 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_46A: stloc:TlsFatalAlert(var_110_471, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_111))) } 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 1660 */; } // Token: 0x0600ACC4 RID: 44228 RVA: 0x00259460 File Offset: 0x00257660 [Token(Token = "0x600ACC4")] [Address(RVA = "0x18B29A0", Offset = "0x18B17A0", VA = "0x1818B29A0", 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: 0x0600ACC5 RID: 44229 RVA: 0x00259488 File Offset: 0x00257688 [Token(Token = "0x600ACC5")] [Address(RVA = "0x18B2A30", Offset = "0x18B1830", VA = "0x1818B2A30", Slot = "9")] protected virtual byte[] GenerateClientHello(DtlsClientProtocol.ClientHandshakeState state, TlsClient client) { /* An exception occurred when decompiling this method (0600ACC5) 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_163: stloc:TlsFatalAlert(var_26_16A, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_27))) } 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 1660 */; } // Token: 0x0600ACC6 RID: 44230 RVA: 0x00259600 File Offset: 0x00257800 [Token(Token = "0x600ACC6")] [Address(RVA = "0x18B2F90", Offset = "0x18B1D90", VA = "0x1818B2F90", Slot = "10")] protected virtual byte[] GenerateClientKeyExchange(DtlsClientProtocol.ClientHandshakeState state) { MemoryStream memoryStream = new MemoryStream(); TlsKeyExchange keyExchange = state.keyExchange; ((IDisposable)memoryStream).Dispose(); throw new NullReferenceException(); } // Token: 0x0600ACC7 RID: 44231 RVA: 0x00259628 File Offset: 0x00257828 [Token(Token = "0x600ACC7")] [Address(RVA = "0x18B3020", Offset = "0x18B1E20", VA = "0x1818B3020", 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: 0x0600ACC8 RID: 44232 RVA: 0x00259668 File Offset: 0x00257868 [Token(Token = "0x600ACC8")] [Address(RVA = "0x18B31D0", Offset = "0x18B1FD0", VA = "0x1818B31D0", 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: 0x0600ACC9 RID: 44233 RVA: 0x002596B0 File Offset: 0x002578B0 [Token(Token = "0x600ACC9")] [Address(RVA = "0x18B32B0", Offset = "0x18B20B0", VA = "0x1818B32B0", Slot = "13")] protected virtual void ProcessCertificateStatus(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { /* An exception occurred when decompiling this method (0600ACC9) 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 1660 */; } // Token: 0x0600ACCA RID: 44234 RVA: 0x00259724 File Offset: 0x00257924 [Token(Token = "0x600ACCA")] [Address(RVA = "0x18B34B0", Offset = "0x18B22B0", VA = "0x1818B34B0", Slot = "14")] protected virtual byte[] ProcessHelloVerifyRequest(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { byte[] array; int version; int num2; do { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; ProtocolVersion protocolVersion = TlsUtilities.ReadVersion(memoryStream); array = TlsUtilities.ReadOpaque8(memoryStream); TlsProtocol.AssertEmpty(memoryStream); bool isServer = state.clientContext.IsServer; version = protocolVersion.version; if (version == 254) { } ProtocolVersion dtlsv = ProtocolVersion.DTLSv12; num2 = protocolVersion.version; if (version != num2) { return array; } num2 -= num2; } while (version != 254); if (num2 > 0) { } return array; } // Token: 0x0600ACCB RID: 44235 RVA: 0x002597B0 File Offset: 0x002579B0 [Token(Token = "0x600ACCB")] [Address(RVA = "0x18B36C0", Offset = "0x18B24C0", VA = "0x1818B36C0", Slot = "15")] protected virtual void ProcessNewSessionTicket(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { int num; MemoryStream memoryStream = new MemoryStream(body, num != 0); num = 0; long num2 = TlsUtilities.ReadUint32(memoryStream); byte[] array = TlsUtilities.ReadOpaque16(memoryStream); NewSessionTicket newSessionTicket; newSessionTicket.mTicketLifetimeHint = num2; newSessionTicket.mTicket = array; TlsProtocol.AssertEmpty(memoryStream); TlsClient client = state.client; int num3 = 0; if (num3 < num) { num3 += num3; num3++; } List hostNames = client.HostNames; } // Token: 0x0600ACCC RID: 44236 RVA: 0x00259820 File Offset: 0x00257A20 [Token(Token = "0x600ACCC")] [Address(RVA = "0x18B3840", Offset = "0x18B2640", VA = "0x1818B3840", 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: 0x0600ACCD RID: 44237 RVA: 0x00259864 File Offset: 0x00257A64 [Token(Token = "0x600ACCD")] [Address(RVA = "0x18B3940", Offset = "0x18B2740", VA = "0x1818B3940", Slot = "17")] protected virtual void ProcessServerHello(DtlsClientProtocol.ClientHandshakeState state, byte[] body) { SecureRandom secureRandom; int num6; 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_237; } TlsClient client4 = state.client; if (state.serverExtensions != 0) { long num5 = num4; byte[] extensionData = TlsUtilities.GetExtensionData(state.clientExtensions, (int)num5); if (extensionData == 0) { goto IL_231; } if (extensionData != 0) { } } 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; } num6 = 0; dictionary2 = sessionParameters.ReadServerExtensions(); } secureRandom.inextp = num3; secureRandom.SeedArray = b; if (dictionary2 == 0 || dictionary2 <= 0) { goto IL_204; } if (!TlsExtensionsUtilities.HasEncryptThenMacExtension(dictionary2)) { break; } int num7; num3 = num7; if (TlsUtilities.IsBlockCipherSuite(num3)) { break; } } } } bool resumedSession = state.resumedSession; bool flag4 = TlsExtensionsUtilities.HasTruncatedHMacExtension(dictionary2); if (state.resumedSession) { } if (state.resumedSession) { } IL_204: if (num6 != 0) { TlsClient client6 = state.client; } int num8; int prfAlgorithm = TlsProtocol.GetPrfAlgorithm(state.clientContext, num8); secureRandom.generator = (ulong)12L; return; IL_231: throw new NullReferenceException(); IL_237: throw new NullReferenceException(); } // Token: 0x0600ACCE RID: 44238 RVA: 0x00259ABC File Offset: 0x00257CBC [Token(Token = "0x600ACCE")] [Address(RVA = "0x18B42F0", Offset = "0x18B30F0", VA = "0x1818B42F0", 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: 0x0600ACCF RID: 44239 RVA: 0x00259AE8 File Offset: 0x00257CE8 [Token(Token = "0x600ACCF")] [Address(RVA = "0x18B4390", Offset = "0x18B3190", VA = "0x1818B4390", 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: 0x0600ACD0 RID: 44240 RVA: 0x00259B14 File Offset: 0x00257D14 [Token(Token = "0x600ACD0")] [Address(RVA = "0x18B4430", Offset = "0x18B3230", VA = "0x1818B4430", Slot = "20")] protected virtual void ReportServerVersion(DtlsClientProtocol.ClientHandshakeState state, ProtocolVersion server_version) { TlsClientContextImpl clientContext; do { clientContext = state.clientContext; } while (server_version == 0); int version = server_version.version; ProtocolVersion serverVersion = clientContext.ServerVersion; TlsClient client = state.client; } // Token: 0x0600ACD1 RID: 44241 RVA: 0x00259B48 File Offset: 0x00257D48 [Token(Token = "0x600ACD1")] [Address(RVA = "0x18B3090", Offset = "0x18B1E90", VA = "0x1818B3090")] protected static byte[] PatchClientHelloWithCookie(byte[] clientHelloBody, byte[] cookie) { byte b = TlsUtilities.ReadUint8(clientHelloBody, 34); byte b2 = b + 1; byte[] array = new byte[cookie.Length]; int num = 0; int num2 = 0; Array.Copy(clientHelloBody, num2, array, num, (int)b); TlsUtilities.CheckUint8(cookie.Length); TlsUtilities.WriteUint8((byte)cookie.Length, array, (int)b); int length = cookie.Length; int num3 = 0; Array.Copy(cookie, num3, array, (int)b2, length); int num4 = clientHelloBody.Length; int num5 = cookie.Length; num4 -= (int)b2; num5 += (int)b2; Array.Copy(clientHelloBody, (int)b2, array, num5, num4); return array; } // Token: 0x02001B22 RID: 6946 [Token(Token = "0x2001B22")] protected internal class ClientHandshakeState { // Token: 0x0600ACD2 RID: 44242 RVA: 0x00259BDC File Offset: 0x00257DDC [Token(Token = "0x600ACD2")] [Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")] public ClientHandshakeState() { } // Token: 0x04006E63 RID: 28259 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4006E63")] internal TlsClient client; // Token: 0x04006E64 RID: 28260 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4006E64")] internal TlsClientContextImpl clientContext; // Token: 0x04006E65 RID: 28261 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4006E65")] internal TlsSession tlsSession; // Token: 0x04006E66 RID: 28262 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4006E66")] internal SessionParameters sessionParameters; // Token: 0x04006E67 RID: 28263 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4006E67")] internal SessionParameters.Builder sessionParametersBuilder; // Token: 0x04006E68 RID: 28264 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4006E68")] internal int[] offeredCipherSuites; // Token: 0x04006E69 RID: 28265 [FieldOffset(Offset = "0x40")] [Token(Token = "0x4006E69")] internal IDictionary clientExtensions; // Token: 0x04006E6A RID: 28266 [FieldOffset(Offset = "0x48")] [Token(Token = "0x4006E6A")] internal IDictionary serverExtensions; // Token: 0x04006E6B RID: 28267 [FieldOffset(Offset = "0x50")] [Token(Token = "0x4006E6B")] internal byte[] selectedSessionID; // Token: 0x04006E6C RID: 28268 [FieldOffset(Offset = "0x58")] [Token(Token = "0x4006E6C")] internal bool resumedSession; // Token: 0x04006E6D RID: 28269 [FieldOffset(Offset = "0x59")] [Token(Token = "0x4006E6D")] internal bool secure_renegotiation; // Token: 0x04006E6E RID: 28270 [FieldOffset(Offset = "0x5A")] [Token(Token = "0x4006E6E")] internal bool allowCertificateStatus; // Token: 0x04006E6F RID: 28271 [FieldOffset(Offset = "0x5B")] [Token(Token = "0x4006E6F")] internal bool expectSessionTicket; // Token: 0x04006E70 RID: 28272 [FieldOffset(Offset = "0x60")] [Token(Token = "0x4006E70")] internal TlsKeyExchange keyExchange; // Token: 0x04006E71 RID: 28273 [FieldOffset(Offset = "0x68")] [Token(Token = "0x4006E71")] internal TlsAuthentication authentication; // Token: 0x04006E72 RID: 28274 [FieldOffset(Offset = "0x70")] [Token(Token = "0x4006E72")] internal CertificateStatus certificateStatus; // Token: 0x04006E73 RID: 28275 [FieldOffset(Offset = "0x78")] [Token(Token = "0x4006E73")] internal CertificateRequest certificateRequest; // Token: 0x04006E74 RID: 28276 [FieldOffset(Offset = "0x80")] [Token(Token = "0x4006E74")] internal TlsCredentials clientCredentials; } } }