using System; using System.Collections; using System.IO; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001575 RID: 5493 [Token(Token = "0x2001575")] [StructLayout(3)] public sealed class SessionParameters { // Token: 0x060091F3 RID: 37363 RVA: 0x00205C84 File Offset: 0x00203E84 [Token(Token = "0x60091F3")] [Address(RVA = "0x1E8C370", Offset = "0x1E8AD70", VA = "0x181E8C370")] private SessionParameters(int cipherSuite, byte compressionAlgorithm, byte[] masterSecret, Certificate peerCertificate, byte[] pskIdentity, byte[] srpIdentity, byte[] encodedServerExtensions, bool extendedMasterSecret) { this.mCipherSuite = cipherSuite; this.mCompressionAlgorithm = compressionAlgorithm; byte[] array = Arrays.Clone(masterSecret); this.mMasterSecret = array; this.mPeerCertificate = 0; byte[] array2; this.mPskIdentity = array2; byte[] array3; this.mSrpIdentity = array3; this.mEncodedServerExtensions = 0; this.mExtendedMasterSecret = false; } // Token: 0x060091F4 RID: 37364 RVA: 0x00205CD8 File Offset: 0x00203ED8 [Token(Token = "0x60091F4")] [Address(RVA = "0x1E8C1C0", Offset = "0x1E8ABC0", VA = "0x181E8C1C0")] public void Clear() { byte[] array = this.mMasterSecret; if (array != 0) { int num = 0; Arrays.Fill(array, (byte)num); return; } } // Token: 0x060091F5 RID: 37365 RVA: 0x00205CFC File Offset: 0x00203EFC [Token(Token = "0x60091F5")] [Address(RVA = "0x1E8C230", Offset = "0x1E8AC30", VA = "0x181E8C230")] public SessionParameters Copy() { int num = this.mCipherSuite; byte b = this.mCompressionAlgorithm; byte[] array = this.mMasterSecret; Certificate certificate = this.mPeerCertificate; byte[] array2 = this.mPskIdentity; byte[] array3 = this.mSrpIdentity; byte[] array4 = this.mEncodedServerExtensions; bool flag = this.mExtendedMasterSecret; return new SessionParameters(num, b, array, certificate, array2, array3, array4, flag); } // Token: 0x1700178E RID: 6030 // (get) Token: 0x060091F6 RID: 37366 RVA: 0x00205D58 File Offset: 0x00203F58 [Token(Token = "0x1700178E")] public int CipherSuite { [Token(Token = "0x60091F6")] [Address(RVA = "0x3C1C50", Offset = "0x3C0650", VA = "0x1803C1C50")] get { return this.mCipherSuite; } } // Token: 0x1700178F RID: 6031 // (get) Token: 0x060091F7 RID: 37367 RVA: 0x00205D6C File Offset: 0x00203F6C [Token(Token = "0x1700178F")] public byte CompressionAlgorithm { [Token(Token = "0x60091F7")] [Address(RVA = "0x4F5380", Offset = "0x4F3D80", VA = "0x1804F5380")] get { return this.mCompressionAlgorithm; } } // Token: 0x17001790 RID: 6032 // (get) Token: 0x060091F8 RID: 37368 RVA: 0x00205D80 File Offset: 0x00203F80 [Token(Token = "0x17001790")] public bool IsExtendedMasterSecret { [Token(Token = "0x60091F8")] [Address(RVA = "0x421DE0", Offset = "0x4207E0", VA = "0x180421DE0")] get { return this.mExtendedMasterSecret; } } // Token: 0x17001791 RID: 6033 // (get) Token: 0x060091F9 RID: 37369 RVA: 0x00205D94 File Offset: 0x00203F94 [Token(Token = "0x17001791")] public byte[] MasterSecret { [Token(Token = "0x60091F9")] [Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240")] get { return this.mMasterSecret; } } // Token: 0x17001792 RID: 6034 // (get) Token: 0x060091FA RID: 37370 RVA: 0x00205DA8 File Offset: 0x00203FA8 [Token(Token = "0x17001792")] public Certificate PeerCertificate { [Token(Token = "0x60091FA")] [Address(RVA = "0x3C1220", Offset = "0x3BFC20", VA = "0x1803C1220")] get { return this.mPeerCertificate; } } // Token: 0x17001793 RID: 6035 // (get) Token: 0x060091FB RID: 37371 RVA: 0x00205DBC File Offset: 0x00203FBC [Token(Token = "0x17001793")] public byte[] PskIdentity { [Token(Token = "0x60091FB")] [Address(RVA = "0x3C1230", Offset = "0x3BFC30", VA = "0x1803C1230")] get { return this.mPskIdentity; } } // Token: 0x17001794 RID: 6036 // (get) Token: 0x060091FC RID: 37372 RVA: 0x00205DD0 File Offset: 0x00203FD0 [Token(Token = "0x17001794")] public byte[] SrpIdentity { [Token(Token = "0x60091FC")] [Address(RVA = "0x3C1250", Offset = "0x3BFC50", VA = "0x1803C1250")] get { return this.mSrpIdentity; } } // Token: 0x060091FD RID: 37373 RVA: 0x00205DE4 File Offset: 0x00203FE4 [Token(Token = "0x60091FD")] [Address(RVA = "0x1E8C300", Offset = "0x1E8AD00", VA = "0x181E8C300")] public IDictionary ReadServerExtensions() { byte[] array = this.mEncodedServerExtensions; if (array != 0) { int num; MemoryStream memoryStream = new MemoryStream(array, num != 0); num = 0; return TlsProtocol.ReadExtensions(memoryStream); } } // Token: 0x04006169 RID: 24937 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4006169")] private int mCipherSuite; // Token: 0x0400616A RID: 24938 [global::Cpp2IlInjected.FieldOffset(Offset = "0x14")] [Token(Token = "0x400616A")] private byte mCompressionAlgorithm; // Token: 0x0400616B RID: 24939 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x400616B")] private byte[] mMasterSecret; // Token: 0x0400616C RID: 24940 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x400616C")] private Certificate mPeerCertificate; // Token: 0x0400616D RID: 24941 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x400616D")] private byte[] mPskIdentity; // Token: 0x0400616E RID: 24942 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x400616E")] private byte[] mSrpIdentity; // Token: 0x0400616F RID: 24943 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x400616F")] private byte[] mEncodedServerExtensions; // Token: 0x04006170 RID: 24944 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x4006170")] private bool mExtendedMasterSecret; // Token: 0x02001576 RID: 5494 [Token(Token = "0x2001576")] public sealed class Builder { // Token: 0x060091FE RID: 37374 RVA: 0x00205E10 File Offset: 0x00204010 [Token(Token = "0x60091FE")] [Address(RVA = "0x1E87780", Offset = "0x1E86180", VA = "0x181E87780")] public Builder() { } // Token: 0x060091FF RID: 37375 RVA: 0x00205E34 File Offset: 0x00204034 [Token(Token = "0x60091FF")] [Address(RVA = "0x1E874F0", Offset = "0x1E85EF0", VA = "0x181E874F0")] public SessionParameters Build() { int num = this.mCipherSuite; this.Validate(num != 0, "cipherSuite"); short num2 = this.mCompressionAlgorithm; this.Validate(num2 != 0, "compressionAlgorithm"); this.Validate(num2 != 0, "masterSecret"); int num3 = this.mCipherSuite; short num4 = this.mCompressionAlgorithm; byte[] array = this.mMasterSecret; Certificate certificate = this.mPeerCertificate; byte[] array2 = this.mPskIdentity; byte[] array3 = this.mSrpIdentity; byte[] array4 = this.mEncodedServerExtensions; bool flag = this.mExtendedMasterSecret; return new SessionParameters(num3, (byte)num4, array, certificate, array2, array3, array4, flag); } // Token: 0x06009200 RID: 37376 RVA: 0x00205EC4 File Offset: 0x002040C4 [Token(Token = "0x6009200")] [Address(RVA = "0x1E87610", Offset = "0x1E86010", VA = "0x181E87610")] public SessionParameters.Builder SetCipherSuite(int cipherSuite) { this.mCipherSuite = cipherSuite; return this; } // Token: 0x06009201 RID: 37377 RVA: 0x00205EDC File Offset: 0x002040DC [Token(Token = "0x6009201")] [Address(RVA = "0x1E87620", Offset = "0x1E86020", VA = "0x181E87620")] public SessionParameters.Builder SetCompressionAlgorithm(byte compressionAlgorithm) { this.mCompressionAlgorithm = (short)compressionAlgorithm; return this; } // Token: 0x06009202 RID: 37378 RVA: 0x00205EF4 File Offset: 0x002040F4 [Token(Token = "0x6009202")] [Address(RVA = "0x1E87630", Offset = "0x1E86030", VA = "0x181E87630")] public SessionParameters.Builder SetExtendedMasterSecret(bool extendedMasterSecret) { this.mExtendedMasterSecret = extendedMasterSecret; return this; } // Token: 0x06009203 RID: 37379 RVA: 0x00205F0C File Offset: 0x0020410C [Token(Token = "0x6009203")] [Address(RVA = "0x4E1CF0", Offset = "0x4E06F0", VA = "0x1804E1CF0")] public SessionParameters.Builder SetMasterSecret(byte[] masterSecret) { this.mMasterSecret = masterSecret; return this; } // Token: 0x06009204 RID: 37380 RVA: 0x00205F24 File Offset: 0x00204124 [Token(Token = "0x6009204")] [Address(RVA = "0x665670", Offset = "0x664070", VA = "0x180665670")] public SessionParameters.Builder SetPeerCertificate(Certificate peerCertificate) { this.mPeerCertificate = peerCertificate; return this; } // Token: 0x06009205 RID: 37381 RVA: 0x00205F3C File Offset: 0x0020413C [Token(Token = "0x6009205")] [Address(RVA = "0x1E87640", Offset = "0x1E86040", VA = "0x181E87640")] public SessionParameters.Builder SetPskIdentity(byte[] pskIdentity) { this.mPskIdentity = pskIdentity; return this; } // Token: 0x06009206 RID: 37382 RVA: 0x00205F54 File Offset: 0x00204154 [Token(Token = "0x6009206")] [Address(RVA = "0x12D4620", Offset = "0x12D3020", VA = "0x1812D4620")] public SessionParameters.Builder SetSrpIdentity(byte[] srpIdentity) { this.mSrpIdentity = srpIdentity; return this; } // Token: 0x06009207 RID: 37383 RVA: 0x00205F6C File Offset: 0x0020416C [Token(Token = "0x6009207")] [Address(RVA = "0x1E87650", Offset = "0x1E86050", VA = "0x181E87650")] public SessionParameters.Builder SetServerExtensions(IDictionary serverExtensions) { if (serverExtensions != 0) { TlsProtocol.WriteExtensions(new MemoryStream(), serverExtensions); } int num = 0; this.mEncodedServerExtensions = num; return this; } // Token: 0x06009208 RID: 37384 RVA: 0x00205F98 File Offset: 0x00204198 [Token(Token = "0x6009208")] [Address(RVA = "0x1E876F0", Offset = "0x1E860F0", VA = "0x181E876F0")] private void Validate(bool condition, string parameter) { /* An exception occurred when decompiling this method (06009208) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.SessionParameters/Builder::Validate(System.Boolean,System.String) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_05: stloc:InvalidOperationException(var_0_1A, newobj:InvalidOperationException(InvalidOperationException::.ctor, call:string(string::Concat, ldstr:string("Required session parameter '"), ldloc:string(parameter), ldstr:string("' not configured")))) } 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: 0x04006171 RID: 24945 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4006171")] private int mCipherSuite = (int)((uint)(-1)); // Token: 0x04006172 RID: 24946 [global::Cpp2IlInjected.FieldOffset(Offset = "0x14")] [Token(Token = "0x4006172")] private short mCompressionAlgorithm = (short)((uint)(-1)); // Token: 0x04006173 RID: 24947 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x4006173")] private byte[] mMasterSecret; // Token: 0x04006174 RID: 24948 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x4006174")] private Certificate mPeerCertificate; // Token: 0x04006175 RID: 24949 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x4006175")] private byte[] mPskIdentity; // Token: 0x04006176 RID: 24950 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x4006176")] private byte[] mSrpIdentity; // Token: 0x04006177 RID: 24951 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x4006177")] private byte[] mEncodedServerExtensions; // Token: 0x04006178 RID: 24952 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x4006178")] private bool mExtendedMasterSecret; } } }