using System; using System.Collections; using System.IO; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Math; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001C69 RID: 7273 [Token(Token = "0x2001C69")] public class TlsPskKeyExchange : AbstractTlsKeyExchange { // Token: 0x0600B360 RID: 45920 RVA: 0x0026BAC0 File Offset: 0x00269CC0 [Token(Token = "0x600B360")] [Address(RVA = "0x45F9F0", Offset = "0x45E9F0", VA = "0x18045F9F0")] [Obsolete] public TlsPskKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity, TlsPskIdentityManager pskIdentityManager, DHParameters dhParameters, int[] namedCurves, byte[] clientECPointFormats, byte[] serverECPointFormats) { /* An exception occurred when decompiling this method (0600B360) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsPskKeyExchange::.ctor(System.Int32,System.Collections.IList,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsPskIdentity,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsPskIdentityManager,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters.DHParameters,System.Int32[],System.Byte[],System.Byte[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_4B: stloc:InvalidOperationException(var_1_55, newobj:InvalidOperationException(InvalidOperationException::.ctor, ldstr:string("unsupported key exchange algorithm"))) } 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: 0x0600B361 RID: 45921 RVA: 0x0026BB24 File Offset: 0x00269D24 [Token(Token = "0x600B361")] [Address(RVA = "0x45FB10", Offset = "0x45EB10", VA = "0x18045FB10")] public TlsPskKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsPskIdentity pskIdentity, TlsPskIdentityManager pskIdentityManager, TlsDHVerifier dhVerifier, DHParameters dhParameters, int[] namedCurves, byte[] clientECPointFormats, byte[] serverECPointFormats) { /* An exception occurred when decompiling this method (0600B361) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsPskKeyExchange::.ctor(System.Int32,System.Collections.IList,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsPskIdentity,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsPskIdentityManager,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsDHVerifier,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters.DHParameters,System.Int32[],System.Byte[],System.Byte[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_3F: stloc:InvalidOperationException(var_0_49, newobj:InvalidOperationException(InvalidOperationException::.ctor, ldstr:string("unsupported key exchange algorithm"))) } 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: 0x0600B362 RID: 45922 RVA: 0x0026BB7C File Offset: 0x00269D7C [Token(Token = "0x600B362")] [Address(RVA = "0x45F8C0", Offset = "0x45E8C0", VA = "0x18045F8C0", Slot = "21")] public override void SkipServerCredentials() { } // Token: 0x0600B363 RID: 45923 RVA: 0x0026BB8C File Offset: 0x00269D8C [Token(Token = "0x600B363")] [Address(RVA = "0x45F650", Offset = "0x45E650", VA = "0x18045F650", Slot = "23")] public override void ProcessServerCredentials(TlsCredentials serverCredentials) { this.SkipServerCredentials(); } // Token: 0x0600B364 RID: 45924 RVA: 0x0026BBA0 File Offset: 0x00269DA0 [Token(Token = "0x600B364")] [Address(RVA = "0x45EF20", Offset = "0x45DF20", VA = "0x18045EF20", Slot = "25")] public override byte[] GenerateServerKeyExchange() { do { TlsPskIdentityManager tlsPskIdentityManager = this.mPskIdentityManager; MemoryStream memoryStream = new MemoryStream(); if (this.mPskIdentityHint != 0) { } TlsUtilities.WriteOpaque16(TlsUtilities.EmptyBytes, memoryStream); int mKeyExchange = this.mKeyExchange; if (mKeyExchange != 14) { if (mKeyExchange != 24) { goto IL_5F; } TlsContext mContext = this.mContext; ECPrivateKeyParameters ecprivateKeyParameters; this.mECAgreePrivateKey = ecprivateKeyParameters; } } while (this.mDHParameters == (ulong)0L); TlsContext mContext2 = this.mContext; DHPrivateKeyParameters dhprivateKeyParameters; this.mDHAgreePrivateKey = dhprivateKeyParameters; IL_5F: throw new NullReferenceException(); } // Token: 0x0600B365 RID: 45925 RVA: 0x0026BC14 File Offset: 0x00269E14 [Token(Token = "0x600B365")] [Address(RVA = "0x45F440", Offset = "0x45E440", VA = "0x18045F440", Slot = "22")] public override void ProcessServerCertificate(Certificate serverCertificate) { X509CertificateStructure[] certificateList; for (;;) { if (serverCertificate.Length == 0) { certificateList = serverCertificate.GetCertificateList(); AsymmetricKeyParameter asymmetricKeyParameter = PublicKeyFactory.CreateKey(certificateList.SubjectPublicKeyInfo); this.mServerPublicKey = asymmetricKeyParameter; if (!asymmetricKeyParameter.privateKey) { break; } } } byte[] array; this.mRsaServerPublicKey = array; TlsUtilities.ValidateKeyUsage(certificateList, 32); base..ctor(); } // Token: 0x17001C5B RID: 7259 // (get) Token: 0x0600B366 RID: 45926 RVA: 0x0026BC64 File Offset: 0x00269E64 [Token(Token = "0x17001C5B")] public override bool RequiresServerKeyExchange { [Token(Token = "0x600B366")] [Address(RVA = "0x45FBF0", Offset = "0x45EBF0", VA = "0x18045FBF0", Slot = "24")] get { int mKeyExchange = this.mKeyExchange; if (mKeyExchange == 14 || mKeyExchange != 24) { } return true; } } // Token: 0x0600B367 RID: 45927 RVA: 0x0026BC88 File Offset: 0x00269E88 [Token(Token = "0x600B367")] [Address(RVA = "0x45F740", Offset = "0x45E740", VA = "0x18045F740", Slot = "27")] public override void ProcessServerKeyExchange(Stream input) { byte[] array = TlsUtilities.ReadOpaque16(input); this.mPskIdentityHint = array; int mKeyExchange = this.mKeyExchange; if (mKeyExchange != 14) { if (mKeyExchange != 24) { return; } int[] array2 = this.mNamedCurves; byte[] array3 = this.mClientECPointFormats; ECDomainParameters ecdomainParameters = TlsEccUtilities.ReadECParameters(array2, array3, input); byte[] array4 = TlsUtilities.ReadOpaque8(input); ECPublicKeyParameters ecpublicKeyParameters = TlsEccUtilities.DeserializeECPublicKey(this.mClientECPointFormats, ecdomainParameters, array4); this.mECAgreePublicKey = ecpublicKeyParameters; } DHParameters dhparameters = TlsDHUtilities.ReceiveDHParameters(this.mDHVerifier, input); this.mDHParameters = dhparameters; BigInteger bigInteger = TlsDHUtilities.ReadDHParameter(input); DHParameters dhparameters2 = this.mDHParameters; DHPublicKeyParameters dhpublicKeyParameters = new DHPublicKeyParameters(bigInteger, dhparameters2); this.mDHAgreePublicKey = dhpublicKeyParameters; } // Token: 0x0600B368 RID: 45928 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600B368")] [Address(RVA = "0x45F920", Offset = "0x45E920", VA = "0x18045F920", Slot = "28")] public override void ValidateCertificateRequest(CertificateRequest certificateRequest) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600B369 RID: 45929 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600B369")] [Address(RVA = "0x45F160", Offset = "0x45E160", VA = "0x18045F160", Slot = "30")] public override void ProcessClientCredentials(TlsCredentials clientCredentials) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600B36A RID: 45930 RVA: 0x0026BD28 File Offset: 0x00269F28 [Token(Token = "0x600B36A")] [Address(RVA = "0x45E9D0", Offset = "0x45D9D0", VA = "0x18045E9D0", Slot = "32")] public override void GenerateClientKeyExchange(Stream output) { byte[] array = this.mPskIdentityHint; TlsPskIdentity tlsPskIdentity = this.mPskIdentity; if (array != 0) { } TlsPskIdentity tlsPskIdentity2 = this.mPskIdentity; TlsPskIdentity tlsPskIdentity3 = this.mPskIdentity; TlsContext mContext = this.mContext; int mKeyExchange = this.mKeyExchange; if (mKeyExchange != 14 && mKeyExchange != 24) { if (mKeyExchange == 15) { RsaKeyParameters rsaKeyParameters = this.mRsaServerPublicKey; byte[] array2 = TlsRsaUtilities.GenerateEncryptedPreMasterSecret(this.mContext, rsaKeyParameters, output); this.mPremasterSecret = array2; } return; } throw new NullReferenceException(); } // Token: 0x0600B36B RID: 45931 RVA: 0x0026BDA0 File Offset: 0x00269FA0 [Token(Token = "0x600B36B")] [Address(RVA = "0x45F1B0", Offset = "0x45E1B0", VA = "0x18045F1B0", Slot = "33")] public override void ProcessClientKeyExchange(Stream input) { byte[] array; do { array = TlsUtilities.ReadOpaque16(input); TlsPskIdentityManager tlsPskIdentityManager = this.mPskIdentityManager; this.mPsk = array; } while (array == 0); TlsContext mContext = this.mContext; array[5] = array; int mKeyExchange = this.mKeyExchange; if (mKeyExchange != 14) { if (mKeyExchange != 24) { if (mKeyExchange == 15) { if (!TlsUtilities.IsSsl(this.mContext)) { byte[] array2 = TlsUtilities.ReadOpaque16(input); } byte[] array3 = Streams.ReadAll(input); TlsEncryptionCredentials tlsEncryptionCredentials = this.mServerCredentials; this.mPremasterSecret = array3; } return; } byte[] array4 = TlsUtilities.ReadOpaque8(input); ECDomainParameters parameters = this.mECAgreePrivateKey.parameters; ECPublicKeyParameters ecpublicKeyParameters = TlsEccUtilities.DeserializeECPublicKey(this.mServerECPointFormats, parameters, array4); this.mECAgreePublicKey = ecpublicKeyParameters; } BigInteger bigInteger = TlsDHUtilities.ReadDHParameter(input); DHParameters dhparameters = this.mDHParameters; DHPublicKeyParameters dhpublicKeyParameters = new DHPublicKeyParameters(bigInteger, dhparameters); this.mDHAgreePublicKey = dhpublicKeyParameters; throw new NullReferenceException(); } // Token: 0x0600B36C RID: 45932 RVA: 0x0026BE70 File Offset: 0x0026A070 [Token(Token = "0x600B36C")] [Address(RVA = "0x45EDE0", Offset = "0x45DDE0", VA = "0x18045EDE0", Slot = "34")] public override byte[] GeneratePremasterSecret() { byte[] array = this.mPsk; byte[] array2 = this.GeneratePremasterSecret(); byte[] array3 = this.mPsk; int num; MemoryStream memoryStream = new MemoryStream(num); num = array3.Length; num += 4; TlsUtilities.WriteOpaque16(array2, memoryStream); TlsUtilities.WriteOpaque16(this.mPsk, memoryStream); byte[] array4 = this.mPsk; int num2 = 0; Arrays.Fill(array4, (byte)num2); this.mPsk = (ulong)0L; ((IDisposable)memoryStream).Dispose(); throw new NullReferenceException(); } // Token: 0x0600B36D RID: 45933 RVA: 0x0026BEE4 File Offset: 0x0026A0E4 [Token(Token = "0x600B36D")] [Address(RVA = "0x45EC80", Offset = "0x45DC80", VA = "0x18045EC80", Slot = "35")] protected virtual byte[] GenerateOtherSecret(int pskLength) { int mKeyExchange; ECPrivateKeyParameters ecprivateKeyParameters; DHPrivateKeyParameters dhprivateKeyParameters; for (;;) { mKeyExchange = this.mKeyExchange; if (mKeyExchange != 14) { if (mKeyExchange != 24) { break; } ecprivateKeyParameters = this.mECAgreePrivateKey; if (ecprivateKeyParameters != 0) { goto Block_2; } } else { dhprivateKeyParameters = this.mDHAgreePrivateKey; if (dhprivateKeyParameters != 0) { goto Block_3; } } } if (mKeyExchange != 15) { } return this.mPremasterSecret; Block_2: return TlsEccUtilities.CalculateECDHBasicAgreement(this.mECAgreePublicKey, ecprivateKeyParameters); Block_3: return TlsDHUtilities.CalculateDHBasicAgreement(this.mDHAgreePublicKey, dhprivateKeyParameters); } // Token: 0x0600B36E RID: 45934 RVA: 0x0026BF40 File Offset: 0x0026A140 [Token(Token = "0x600B36E")] [Address(RVA = "0x45F970", Offset = "0x45E970", VA = "0x18045F970", Slot = "36")] protected virtual RsaKeyParameters ValidateRsaPublicKey(RsaKeyParameters key) { while (!key.exponent.IsProbablePrime(2)) { } return key; } // Token: 0x04007210 RID: 29200 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007210")] protected TlsPskIdentity mPskIdentity; // Token: 0x04007211 RID: 29201 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4007211")] protected TlsPskIdentityManager mPskIdentityManager; // Token: 0x04007212 RID: 29202 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4007212")] protected TlsDHVerifier mDHVerifier; // Token: 0x04007213 RID: 29203 [FieldOffset(Offset = "0x40")] [Token(Token = "0x4007213")] protected DHParameters mDHParameters; // Token: 0x04007214 RID: 29204 [FieldOffset(Offset = "0x48")] [Token(Token = "0x4007214")] protected int[] mNamedCurves; // Token: 0x04007215 RID: 29205 [FieldOffset(Offset = "0x50")] [Token(Token = "0x4007215")] protected byte[] mClientECPointFormats; // Token: 0x04007216 RID: 29206 [FieldOffset(Offset = "0x58")] [Token(Token = "0x4007216")] protected byte[] mServerECPointFormats; // Token: 0x04007217 RID: 29207 [FieldOffset(Offset = "0x60")] [Token(Token = "0x4007217")] protected byte[] mPskIdentityHint; // Token: 0x04007218 RID: 29208 [FieldOffset(Offset = "0x68")] [Token(Token = "0x4007218")] protected byte[] mPsk; // Token: 0x04007219 RID: 29209 [FieldOffset(Offset = "0x70")] [Token(Token = "0x4007219")] protected DHPrivateKeyParameters mDHAgreePrivateKey; // Token: 0x0400721A RID: 29210 [FieldOffset(Offset = "0x78")] [Token(Token = "0x400721A")] protected DHPublicKeyParameters mDHAgreePublicKey; // Token: 0x0400721B RID: 29211 [FieldOffset(Offset = "0x80")] [Token(Token = "0x400721B")] protected ECPrivateKeyParameters mECAgreePrivateKey; // Token: 0x0400721C RID: 29212 [FieldOffset(Offset = "0x88")] [Token(Token = "0x400721C")] protected ECPublicKeyParameters mECAgreePublicKey; // Token: 0x0400721D RID: 29213 [FieldOffset(Offset = "0x90")] [Token(Token = "0x400721D")] protected AsymmetricKeyParameter mServerPublicKey; // Token: 0x0400721E RID: 29214 [FieldOffset(Offset = "0x98")] [Token(Token = "0x400721E")] protected RsaKeyParameters mRsaServerPublicKey; // Token: 0x0400721F RID: 29215 [FieldOffset(Offset = "0xA0")] [Token(Token = "0x400721F")] protected TlsEncryptionCredentials mServerCredentials; // Token: 0x04007220 RID: 29216 [FieldOffset(Offset = "0xA8")] [Token(Token = "0x4007220")] protected byte[] mPremasterSecret; } }