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: 0x02001B89 RID: 7049 [Token(Token = "0x2001B89")] public class TlsPskKeyExchange : AbstractTlsKeyExchange { // Token: 0x0600AF92 RID: 44946 RVA: 0x002628B8 File Offset: 0x00260AB8 [Token(Token = "0x600AF92")] [Address(RVA = "0x1991030", Offset = "0x198FE30", VA = "0x181991030")] [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 (0600AF92) 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: 0x0600AF93 RID: 44947 RVA: 0x0026291C File Offset: 0x00260B1C [Token(Token = "0x600AF93")] [Address(RVA = "0x1991150", Offset = "0x198FF50", VA = "0x181991150")] 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 (0600AF93) 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: 0x0600AF94 RID: 44948 RVA: 0x00262974 File Offset: 0x00260B74 [Token(Token = "0x600AF94")] [Address(RVA = "0x1990F00", Offset = "0x198FD00", VA = "0x181990F00", Slot = "21")] public override void SkipServerCredentials() { } // Token: 0x0600AF95 RID: 44949 RVA: 0x00262984 File Offset: 0x00260B84 [Token(Token = "0x600AF95")] [Address(RVA = "0x1990C90", Offset = "0x198FA90", VA = "0x181990C90", Slot = "23")] public override void ProcessServerCredentials(TlsCredentials serverCredentials) { this.SkipServerCredentials(); } // Token: 0x0600AF96 RID: 44950 RVA: 0x00262998 File Offset: 0x00260B98 [Token(Token = "0x600AF96")] [Address(RVA = "0x1990570", Offset = "0x198F370", VA = "0x181990570", 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: 0x0600AF97 RID: 44951 RVA: 0x00262A0C File Offset: 0x00260C0C [Token(Token = "0x600AF97")] [Address(RVA = "0x1990A80", Offset = "0x198F880", VA = "0x181990A80", 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: 0x17001BBE RID: 7102 // (get) Token: 0x0600AF98 RID: 44952 RVA: 0x00262A5C File Offset: 0x00260C5C [Token(Token = "0x17001BBE")] public override bool RequiresServerKeyExchange { [Token(Token = "0x600AF98")] [Address(RVA = "0x1991230", Offset = "0x1990030", VA = "0x181991230", Slot = "24")] get { int mKeyExchange = this.mKeyExchange; if (mKeyExchange == 14 || mKeyExchange != 24) { } return true; } } // Token: 0x0600AF99 RID: 44953 RVA: 0x00262A80 File Offset: 0x00260C80 [Token(Token = "0x600AF99")] [Address(RVA = "0x1990D80", Offset = "0x198FB80", VA = "0x181990D80", 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: 0x0600AF9A RID: 44954 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600AF9A")] [Address(RVA = "0x1990F60", Offset = "0x198FD60", VA = "0x181990F60", Slot = "28")] public override void ValidateCertificateRequest(CertificateRequest certificateRequest) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600AF9B RID: 44955 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600AF9B")] [Address(RVA = "0x19907B0", Offset = "0x198F5B0", VA = "0x1819907B0", Slot = "30")] public override void ProcessClientCredentials(TlsCredentials clientCredentials) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600AF9C RID: 44956 RVA: 0x00262B20 File Offset: 0x00260D20 [Token(Token = "0x600AF9C")] [Address(RVA = "0x1990020", Offset = "0x198EE20", VA = "0x181990020", 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: 0x0600AF9D RID: 44957 RVA: 0x00262B98 File Offset: 0x00260D98 [Token(Token = "0x600AF9D")] [Address(RVA = "0x1990800", Offset = "0x198F600", VA = "0x181990800", 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: 0x0600AF9E RID: 44958 RVA: 0x00262C68 File Offset: 0x00260E68 [Token(Token = "0x600AF9E")] [Address(RVA = "0x1990430", Offset = "0x198F230", VA = "0x181990430", 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: 0x0600AF9F RID: 44959 RVA: 0x00262CDC File Offset: 0x00260EDC [Token(Token = "0x600AF9F")] [Address(RVA = "0x19902D0", Offset = "0x198F0D0", VA = "0x1819902D0", 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: 0x0600AFA0 RID: 44960 RVA: 0x00262D38 File Offset: 0x00260F38 [Token(Token = "0x600AFA0")] [Address(RVA = "0x1990FB0", Offset = "0x198FDB0", VA = "0x181990FB0", Slot = "36")] protected virtual RsaKeyParameters ValidateRsaPublicKey(RsaKeyParameters key) { while (!key.exponent.IsProbablePrime(2)) { } return key; } // Token: 0x04007057 RID: 28759 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007057")] protected TlsPskIdentity mPskIdentity; // Token: 0x04007058 RID: 28760 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4007058")] protected TlsPskIdentityManager mPskIdentityManager; // Token: 0x04007059 RID: 28761 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4007059")] protected TlsDHVerifier mDHVerifier; // Token: 0x0400705A RID: 28762 [FieldOffset(Offset = "0x40")] [Token(Token = "0x400705A")] protected DHParameters mDHParameters; // Token: 0x0400705B RID: 28763 [FieldOffset(Offset = "0x48")] [Token(Token = "0x400705B")] protected int[] mNamedCurves; // Token: 0x0400705C RID: 28764 [FieldOffset(Offset = "0x50")] [Token(Token = "0x400705C")] protected byte[] mClientECPointFormats; // Token: 0x0400705D RID: 28765 [FieldOffset(Offset = "0x58")] [Token(Token = "0x400705D")] protected byte[] mServerECPointFormats; // Token: 0x0400705E RID: 28766 [FieldOffset(Offset = "0x60")] [Token(Token = "0x400705E")] protected byte[] mPskIdentityHint; // Token: 0x0400705F RID: 28767 [FieldOffset(Offset = "0x68")] [Token(Token = "0x400705F")] protected byte[] mPsk; // Token: 0x04007060 RID: 28768 [FieldOffset(Offset = "0x70")] [Token(Token = "0x4007060")] protected DHPrivateKeyParameters mDHAgreePrivateKey; // Token: 0x04007061 RID: 28769 [FieldOffset(Offset = "0x78")] [Token(Token = "0x4007061")] protected DHPublicKeyParameters mDHAgreePublicKey; // Token: 0x04007062 RID: 28770 [FieldOffset(Offset = "0x80")] [Token(Token = "0x4007062")] protected ECPrivateKeyParameters mECAgreePrivateKey; // Token: 0x04007063 RID: 28771 [FieldOffset(Offset = "0x88")] [Token(Token = "0x4007063")] protected ECPublicKeyParameters mECAgreePublicKey; // Token: 0x04007064 RID: 28772 [FieldOffset(Offset = "0x90")] [Token(Token = "0x4007064")] protected AsymmetricKeyParameter mServerPublicKey; // Token: 0x04007065 RID: 28773 [FieldOffset(Offset = "0x98")] [Token(Token = "0x4007065")] protected RsaKeyParameters mRsaServerPublicKey; // Token: 0x04007066 RID: 28774 [FieldOffset(Offset = "0xA0")] [Token(Token = "0x4007066")] protected TlsEncryptionCredentials mServerCredentials; // Token: 0x04007067 RID: 28775 [FieldOffset(Offset = "0xA8")] [Token(Token = "0x4007067")] protected byte[] mPremasterSecret; } }