using System; using System.Collections; using System.IO; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X9; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Generators; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Math; using BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x0200159A RID: 5530 [Token(Token = "0x200159A")] [StructLayout(3)] public abstract class TlsEccUtilities { // Token: 0x060092DE RID: 37598 RVA: 0x00208C58 File Offset: 0x00206E58 [Token(Token = "0x60092DE")] [Address(RVA = "0x1E97900", Offset = "0x1E96300", VA = "0x181E97900")] public static void AddSupportedEllipticCurvesExtension(IDictionary extensions, int[] namedCurves) { while (namedCurves == 0) { } byte[] array = TlsUtilities.EncodeUint16ArrayWithUint16Length(namedCurves); } // Token: 0x060092DF RID: 37599 RVA: 0x00208C70 File Offset: 0x00206E70 [Token(Token = "0x60092DF")] [Address(RVA = "0x1E97A20", Offset = "0x1E96420", VA = "0x181E97A20")] public static void AddSupportedPointFormatsExtension(IDictionary extensions, byte[] ecPointFormats) { while (ecPointFormats != 0) { int num = 0; if (!Arrays.Contains(ecPointFormats, (byte)num)) { break; } } int num2 = 0; byte[] array = TlsUtilities.EncodeUint8ArrayWithUint8Length(Arrays.Append(ecPointFormats, (byte)num2)); } // Token: 0x060092E0 RID: 37600 RVA: 0x00208CA4 File Offset: 0x00206EA4 [Token(Token = "0x60092E0")] [Address(RVA = "0x1E98B50", Offset = "0x1E97550", VA = "0x181E98B50")] public static int[] GetSupportedEllipticCurvesExtension(IDictionary extensions) { /* An exception occurred when decompiling this method (060092E0) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32[] BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsEccUtilities::GetSupportedEllipticCurvesExtension(System.Collections.IDictionary) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_3F: stloc:TlsFatalAlert(var_6_46, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_7))) } 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: 0x060092E1 RID: 37601 RVA: 0x00208CF8 File Offset: 0x00206EF8 [Token(Token = "0x60092E1")] [Address(RVA = "0x1E98CC0", Offset = "0x1E976C0", VA = "0x181E98CC0")] public static byte[] GetSupportedPointFormatsExtension(IDictionary extensions) { byte[] extensionData; for (;;) { extensionData = TlsUtilities.GetExtensionData(extensions, 11); if (extensionData == 0) { break; } byte[] array = TlsUtilities.DecodeUint8ArrayWithUint8Length(extensionData); int num = 0; if (Arrays.Contains(array, (byte)num)) { return array; } } return extensionData; } // Token: 0x060092E2 RID: 37602 RVA: 0x00208D28 File Offset: 0x00206F28 [Token(Token = "0x60092E2")] [Address(RVA = "0x1E97DB0", Offset = "0x1E967B0", VA = "0x181E97DB0")] public static byte[] CreateSupportedEllipticCurvesExtension(int[] namedCurves) { while (namedCurves == 0) { } return TlsUtilities.EncodeUint16ArrayWithUint16Length(namedCurves); } // Token: 0x060092E3 RID: 37603 RVA: 0x00208D40 File Offset: 0x00206F40 [Token(Token = "0x60092E3")] [Address(RVA = "0x1E97E40", Offset = "0x1E96840", VA = "0x181E97E40")] public static byte[] CreateSupportedPointFormatsExtension(byte[] ecPointFormats) { while (ecPointFormats != 0) { int num = 0; if (!Arrays.Contains(ecPointFormats, (byte)num)) { break; } } int num2 = 0; return TlsUtilities.EncodeUint8ArrayWithUint8Length(Arrays.Append(ecPointFormats, (byte)num2)); } // Token: 0x060092E4 RID: 37604 RVA: 0x00208D6C File Offset: 0x00206F6C [Token(Token = "0x60092E4")] [Address(RVA = "0x1E997C0", Offset = "0x1E981C0", VA = "0x181E997C0")] public static int[] ReadSupportedEllipticCurvesExtension(byte[] extensionData) { /* An exception occurred when decompiling this method (060092E4) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32[] BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsEccUtilities::ReadSupportedEllipticCurvesExtension(System.Byte[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_3D: stloc:TlsFatalAlert(var_6_44, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_7))) } 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: 0x060092E5 RID: 37605 RVA: 0x00208DC0 File Offset: 0x00206FC0 [Token(Token = "0x60092E5")] [Address(RVA = "0x1E99900", Offset = "0x1E98300", VA = "0x181E99900")] public static byte[] ReadSupportedPointFormatsExtension(byte[] extensionData) { byte[] array; int num; do { array = TlsUtilities.DecodeUint8ArrayWithUint8Length(extensionData); num = 0; } while (!Arrays.Contains(array, (byte)num)); return array; } // Token: 0x060092E6 RID: 37606 RVA: 0x00208DE4 File Offset: 0x00206FE4 [Token(Token = "0x60092E6")] [Address(RVA = "0x1E988B0", Offset = "0x1E972B0", VA = "0x181E988B0")] public static string GetNameOfNamedCurve(int namedCurve) { if (TlsEccUtilities.IsSupportedNamedCurve(namedCurve)) { int num = namedCurve - 1; } throw new IndexOutOfRangeException(); } // Token: 0x060092E7 RID: 37607 RVA: 0x00208E08 File Offset: 0x00207008 [Token(Token = "0x60092E7")] [Address(RVA = "0x1E98970", Offset = "0x1E97370", VA = "0x181E98970")] public static ECDomainParameters GetParametersForNamedCurve(int namedCurve) { if (TlsEccUtilities.IsSupportedNamedCurve(namedCurve)) { int num = namedCurve - 1; X9ECParameters x9ECParameters; X9ECParameters x9ECParameters2; if (x9ECParameters != 0 || x9ECParameters2 != 0) { ECCurve curve = x9ECParameters.curve; ECPoint g = x9ECParameters.G; BigInteger n = x9ECParameters.n; BigInteger h = x9ECParameters.h; byte[] seed = x9ECParameters.seed; return new ECDomainParameters(curve, g, n, h, seed); } } throw new IndexOutOfRangeException(); } // Token: 0x060092E8 RID: 37608 RVA: 0x00208E68 File Offset: 0x00207068 [Token(Token = "0x60092E8")] [Address(RVA = "0x1E98DF0", Offset = "0x1E977F0", VA = "0x181E98DF0")] public static bool HasAnySupportedNamedCurves() { throw new NullReferenceException(); } // Token: 0x060092E9 RID: 37609 RVA: 0x00208E7C File Offset: 0x0020707C [Token(Token = "0x60092E9")] [Address(RVA = "0x1E97CF0", Offset = "0x1E966F0", VA = "0x181E97CF0")] public static bool ContainsEccCipherSuites(int[] cipherSuites) { int num = 0; int length = cipherSuites.Length; if (num < length) { if (!TlsEccUtilities.IsEccCipherSuite(cipherSuites[num])) { num++; } return true; } throw new NullReferenceException(); } // Token: 0x060092EA RID: 37610 RVA: 0x00208EB0 File Offset: 0x002070B0 [Token(Token = "0x60092EA")] [Address(RVA = "0x1E98EC0", Offset = "0x1E978C0", VA = "0x181E98EC0")] public static bool IsEccCipherSuite(int cipherSuite) { if (cipherSuite > 49307 && cipherSuite > 52393) { if (cipherSuite != 52396) { } return true; } if (cipherSuite > 49211) { goto IL_22; } goto IL_22; IL_22:; } // Token: 0x060092EB RID: 37611 RVA: 0x00208EE0 File Offset: 0x002070E0 [Token(Token = "0x60092EB")] [Address(RVA = "0x1E97B70", Offset = "0x1E96570", VA = "0x181E97B70")] public static bool AreOnSameCurve(ECDomainParameters a, ECDomainParameters b) { while (a != 0) { } } // Token: 0x060092EC RID: 37612 RVA: 0x00208EF4 File Offset: 0x002070F4 [Token(Token = "0x60092EC")] [Address(RVA = "0x1E98F50", Offset = "0x1E97950", VA = "0x181E98F50")] public static bool IsSupportedNamedCurve(int namedCurve) { return namedCurve <= "{il2cpp field on {'TlsEccUtilities' (constant value of type Mono.Cecil.TypeReference)}, offset 0x18}"; } // Token: 0x060092ED RID: 37613 RVA: 0x00208F14 File Offset: 0x00207114 [Token(Token = "0x60092ED")] [Address(RVA = "0x1E98E60", Offset = "0x1E97860", VA = "0x181E98E60")] public static bool IsCompressionPreferred(byte[] ecPointFormats, byte compressionFormat) { if (ecPointFormats != 0) { int length = ecPointFormats.Length; int num = 0; if (num < length) { byte b; if (b != compressionFormat) { num++; } return true; } } throw new IndexOutOfRangeException(); } // Token: 0x060092EE RID: 37614 RVA: 0x00208F44 File Offset: 0x00207144 [Token(Token = "0x60092EE")] [Address(RVA = "0x1E999C0", Offset = "0x1E983C0", VA = "0x181E999C0")] public static byte[] SerializeECFieldElement(int fieldSize, BigInteger x) { return BigIntegers.AsUnsignedByteArray(fieldSize, x); } // Token: 0x060092EF RID: 37615 RVA: 0x00208F58 File Offset: 0x00207158 [Token(Token = "0x60092EF")] [Address(RVA = "0x1E999E0", Offset = "0x1E983E0", VA = "0x181E999E0")] public static byte[] SerializeECPoint(byte[] ecPointFormats, ECPoint point) { bool flag = point.SatisfiesOrder(); bool flag2; if (!flag2) { bool flag3; if (!flag3 || ecPointFormats == 0) { goto IL_43; } int length = ecPointFormats.Length; int num = 0; if (num >= length) { goto IL_43; } num++; } if (ecPointFormats != 0) { int length2 = ecPointFormats.Length; int num2 = 0; if (num2 < length2) { num2++; } } IL_43: bool flag4 = point.SatisfiesCurveEquation(); throw new NullReferenceException(); } // Token: 0x060092F0 RID: 37616 RVA: 0x00208FB8 File Offset: 0x002071B8 [Token(Token = "0x60092F0")] [Address(RVA = "0x1E99B50", Offset = "0x1E98550", VA = "0x181E99B50")] public static byte[] SerializeECPublicKey(byte[] ecPointFormats, ECPublicKeyParameters keyParameters) { ECPoint q = keyParameters.q; return TlsEccUtilities.SerializeECPoint(ecPointFormats, q); } // Token: 0x060092F1 RID: 37617 RVA: 0x00208FDC File Offset: 0x002071DC [Token(Token = "0x60092F1")] [Address(RVA = "0x1E97F00", Offset = "0x1E96900", VA = "0x181E97F00")] public static BigInteger DeserializeECFieldElement(int fieldSize, byte[] encoding) { return new BigInteger(1, encoding); } // Token: 0x060092F2 RID: 37618 RVA: 0x00209000 File Offset: 0x00207200 [Token(Token = "0x60092F2")] [Address(RVA = "0x1E97FB0", Offset = "0x1E969B0", VA = "0x181E97FB0")] public static ECPoint DeserializeECPoint(byte[] ecPointFormats, ECCurve curve, byte[] encoding) { /* An exception occurred when decompiling this method (060092F2) ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.ECPoint BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsEccUtilities::DeserializeECPoint(System.Byte[],BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.ECCurve,System.Byte[]) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_4C: stloc:TlsFatalAlert(var_8_53, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_9))) } 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: 0x060092F3 RID: 37619 RVA: 0x00209064 File Offset: 0x00207264 [Token(Token = "0x60092F3")] [Address(RVA = "0x1E981B0", Offset = "0x1E96BB0", VA = "0x181E981B0")] public static ECPublicKeyParameters DeserializeECPublicKey(byte[] ecPointFormats, ECDomainParameters curve_params, byte[] encoding) { ECCurve curve = curve_params.curve; return new ECPublicKeyParameters(TlsEccUtilities.DeserializeECPoint(ecPointFormats, curve, encoding), curve_params); } // Token: 0x060092F4 RID: 37620 RVA: 0x0020908C File Offset: 0x0020728C [Token(Token = "0x60092F4")] [Address(RVA = "0x1E97B90", Offset = "0x1E96590", VA = "0x181E97B90")] public static byte[] CalculateECDHBasicAgreement(ECPublicKeyParameters publicKey, ECPrivateKeyParameters privateKey) { ECDHBasicAgreement ecdhbasicAgreement = new ECDHBasicAgreement(); BigInteger bigInteger = ecdhbasicAgreement.CalculateAgreement(privateKey); int fieldSize = ecdhbasicAgreement.GetFieldSize(); byte[] array; return array; } // Token: 0x060092F5 RID: 37621 RVA: 0x002090B8 File Offset: 0x002072B8 [Token(Token = "0x60092F5")] [Address(RVA = "0x1E982B0", Offset = "0x1E96CB0", VA = "0x181E982B0")] public static AsymmetricCipherKeyPair GenerateECKeyPair(SecureRandom random, ECDomainParameters ecParams) { ECKeyPairGenerator eckeyPairGenerator = new ECKeyPairGenerator(); ECKeyGenerationParameters eckeyGenerationParameters = new ECKeyGenerationParameters(ecParams, random); eckeyPairGenerator.Init(eckeyGenerationParameters); return eckeyPairGenerator.GenerateKeyPair(); } // Token: 0x060092F6 RID: 37622 RVA: 0x002090E8 File Offset: 0x002072E8 [Token(Token = "0x60092F6")] [Address(RVA = "0x1E98360", Offset = "0x1E96D60", VA = "0x181E98360")] public static ECPrivateKeyParameters GenerateEphemeralClientKeyExchange(SecureRandom random, byte[] ecPointFormats, ECDomainParameters ecParams, Stream output) { for (;;) { ECKeyPairGenerator eckeyPairGenerator = new ECKeyPairGenerator(); ECKeyGenerationParameters eckeyGenerationParameters = new ECKeyGenerationParameters(ecParams, random); eckeyPairGenerator.Init(eckeyGenerationParameters); AsymmetricCipherKeyPair asymmetricCipherKeyPair = eckeyPairGenerator.GenerateKeyPair(); AsymmetricKeyParameter publicParameter = asymmetricCipherKeyPair.publicParameter; if (publicParameter != 0) { byte[] array; TlsUtilities.WriteOpaque8(array, output); AsymmetricKeyParameter privateParameter = asymmetricCipherKeyPair.privateParameter; if (privateParameter == 0 || privateParameter != 0) { break; } } } throw new NullReferenceException(); } // Token: 0x060092F7 RID: 37623 RVA: 0x00209144 File Offset: 0x00207344 [Token(Token = "0x60092F7")] [Address(RVA = "0x1E98580", Offset = "0x1E96F80", VA = "0x181E98580")] internal static ECPrivateKeyParameters GenerateEphemeralServerKeyExchange(SecureRandom random, int[] namedCurves, byte[] ecPointFormats, Stream output) { ECDomainParameters parametersForNamedCurve; do { if (namedCurves != 0) { int num = 0; int num2 = 0; int length = namedCurves.Length; if (num2 < length) { int num3 = namedCurves[num]; if (num3 - 1 > 27) { } if (!TlsEccUtilities.IsSupportedNamedCurve(num3)) { num++; } } if (!Arrays.Contains(namedCurves, 65281) && !Arrays.Contains(namedCurves, 65282)) { continue; } } parametersForNamedCurve = TlsEccUtilities.GetParametersForNamedCurve(23); } while (parametersForNamedCurve == 0 || parametersForNamedCurve <= (ulong)1L); TlsUtilities.CheckUint16(23); TlsUtilities.WriteUint16(23, output); TlsEccUtilities.WriteExplicitECParameters(ecPointFormats, parametersForNamedCurve, output); return TlsEccUtilities.GenerateEphemeralClientKeyExchange(random, ecPointFormats, parametersForNamedCurve, output); } // Token: 0x060092F8 RID: 37624 RVA: 0x002091D4 File Offset: 0x002073D4 [Token(Token = "0x60092F8")] [Address(RVA = "0x518E70", Offset = "0x517870", VA = "0x180518E70")] public static ECPublicKeyParameters ValidateECPublicKey(ECPublicKeyParameters key) { return key; } // Token: 0x060092F9 RID: 37625 RVA: 0x002091E4 File Offset: 0x002073E4 [Token(Token = "0x60092F9")] [Address(RVA = "0x1E98FD0", Offset = "0x1E979D0", VA = "0x181E98FD0")] public static int ReadECExponent(int fieldSize, Stream input) { int intValue; for (;;) { BigInteger bigInteger = TlsEccUtilities.ReadECParameter(input); if (bigInteger.BitLength < 32) { intValue = bigInteger.IntValue; if (intValue > 0 && intValue < fieldSize) { break; } } } return intValue; } // Token: 0x060092FA RID: 37626 RVA: 0x00209214 File Offset: 0x00207414 [Token(Token = "0x60092FA")] [Address(RVA = "0x1E99090", Offset = "0x1E97A90", VA = "0x181E99090")] public static BigInteger ReadECFieldElement(int fieldSize, Stream input) { /* An exception occurred when decompiling this method (060092FA) ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsEccUtilities::ReadECFieldElement(System.Int32,System.IO.Stream) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_24: stloc:TlsFatalAlert(var_2_2A, newobj:TlsFatalAlert(TlsFatalAlert::.ctor, ldloc:uint64[exp:uint8](var_3))) } 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: 0x060092FB RID: 37627 RVA: 0x0020924C File Offset: 0x0020744C [Token(Token = "0x60092FB")] [Address(RVA = "0x1E991A0", Offset = "0x1E97BA0", VA = "0x181E991A0")] public static BigInteger ReadECParameter(Stream input) { byte[] array = TlsUtilities.ReadOpaque8(input); return new BigInteger(1, array); } // Token: 0x060092FC RID: 37628 RVA: 0x00209268 File Offset: 0x00207468 [Token(Token = "0x60092FC")] [Address(RVA = "0x1E99230", Offset = "0x1E97C30", VA = "0x181E99230")] public static ECDomainParameters ReadECParameters(int[] namedCurves, byte[] ecPointFormats, Stream input) { byte b = TlsUtilities.ReadUint8(input); int num = TlsUtilities.ReadUint16(input); num += -65281; if (num > 1) { TlsEccUtilities.CheckNamedCurve(namedCurves, num); ECDomainParameters parametersForNamedCurve = TlsEccUtilities.GetParametersForNamedCurve(num); uint num2; TlsEccUtilities.CheckNamedCurve(namedCurves, (int)num2); F2mCurve f2mCurve; ECPoint ecpoint; BigInteger bigInteger; BigInteger bigInteger2; ECDomainParameters ecdomainParameters = new ECDomainParameters(f2mCurve, ecpoint, bigInteger, bigInteger2); BigInteger bigInteger3; int bitLength = bigInteger3.BitLength; int bitLength2 = bigInteger3.BitLength; int num3 = 0; BigInteger bigInteger4; BigInteger bigInteger5; FpCurve fpCurve = new FpCurve(bigInteger3, num3, bigInteger, bigInteger4, bigInteger5); ECPoint ecpoint2; return new ECDomainParameters(fpCurve, ecpoint2, bigInteger4, bigInteger5); } ulong num4; TlsFatalAlert tlsFatalAlert = new TlsFatalAlert((byte)num4); ulong num5; TlsFatalAlert tlsFatalAlert2 = new TlsFatalAlert((byte)num5); throw new NullReferenceException(); } // Token: 0x060092FD RID: 37629 RVA: 0x00209310 File Offset: 0x00207510 [Token(Token = "0x60092FD")] [Address(RVA = "0x1E97C50", Offset = "0x1E96650", VA = "0x181E97C50")] private static void CheckNamedCurve(int[] namedCurves, int namedCurve) { while (namedCurves != 0 && !Arrays.Contains(namedCurves, namedCurve)) { } } // Token: 0x060092FE RID: 37630 RVA: 0x0020932C File Offset: 0x0020752C [Token(Token = "0x60092FE")] [Address(RVA = "0x1E99BC0", Offset = "0x1E985C0", VA = "0x181E99BC0")] public static void WriteECExponent(int k, Stream output) { TlsUtilities.WriteOpaque8(BigIntegers.AsUnsignedByteArray(BigInteger.ValueOf((long)k)), output); } // Token: 0x060092FF RID: 37631 RVA: 0x0020934C File Offset: 0x0020754C [Token(Token = "0x60092FF")] [Address(RVA = "0x1E99D50", Offset = "0x1E98750", VA = "0x181E99D50")] public static void WriteECFieldElement(ECFieldElement x, Stream output) { } // Token: 0x06009300 RID: 37632 RVA: 0x00209360 File Offset: 0x00207560 [Token(Token = "0x6009300")] [Address(RVA = "0x1E99CA0", Offset = "0x1E986A0", VA = "0x181E99CA0")] public static void WriteECFieldElement(int fieldSize, BigInteger x, Stream output) { byte[] array; TlsUtilities.WriteOpaque8(array, output); } // Token: 0x06009301 RID: 37633 RVA: 0x00209374 File Offset: 0x00207574 [Token(Token = "0x6009301")] [Address(RVA = "0x1E99DE0", Offset = "0x1E987E0", VA = "0x181E99DE0")] public static void WriteECParameter(BigInteger x, Stream output) { TlsUtilities.WriteOpaque8(BigIntegers.AsUnsignedByteArray(x), output); } // Token: 0x06009302 RID: 37634 RVA: 0x00209390 File Offset: 0x00207590 [Token(Token = "0x6009302")] [Address(RVA = "0x1E99EF0", Offset = "0x1E988F0", VA = "0x181E99EF0")] public static void WriteExplicitECParameters(byte[] ecPointFormats, ECDomainParameters ecParameters, Stream output) { /* An exception occurred when decompiling this method (06009302) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls.TlsEccUtilities::WriteExplicitECParameters(System.Byte[],BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters.ECDomainParameters,System.IO.Stream) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_E8: stloc:ArgumentException(var_15_F2, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Only trinomial and pentomial curves are supported"))) } 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: 0x06009303 RID: 37635 RVA: 0x00209490 File Offset: 0x00207690 [Token(Token = "0x6009303")] [Address(RVA = "0x1E99E50", Offset = "0x1E98850", VA = "0x181E99E50")] public static void WriteECPoint(byte[] ecPointFormats, ECPoint point, Stream output) { TlsUtilities.WriteOpaque8(TlsEccUtilities.SerializeECPoint(ecPointFormats, point), output); } // Token: 0x06009304 RID: 37636 RVA: 0x002094AC File Offset: 0x002076AC [Token(Token = "0x6009304")] [Address(RVA = "0x1E9A3F0", Offset = "0x1E98DF0", VA = "0x181E9A3F0")] public static void WriteNamedECParameters(int namedCurve, Stream output) { TlsUtilities.CheckUint16(namedCurve); TlsUtilities.WriteUint16(namedCurve, output); } // Token: 0x06009305 RID: 37637 RVA: 0x002094C8 File Offset: 0x002076C8 [Token(Token = "0x6009305")] [Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")] protected TlsEccUtilities() { } // Token: 0x06009306 RID: 37638 RVA: 0x002094DC File Offset: 0x002076DC // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x6009306")] [Address(RVA = "0x1E9A4A0", Offset = "0x1E98EA0", VA = "0x181E9A4A0")] static TlsEccUtilities() { string[] array = new string[28]; if ("sect163k1" != 0) { } array[0] = "sect163k1"; if ("sect163r1" != 0) { } array[1] = "sect163r1"; if ("sect163r2" != 0) { } array[2] = "sect163r2"; if ("sect193r1" != 0) { } array[3] = "sect193r1"; if ("sect193r2" != 0) { } array[4] = "sect193r2"; if ("sect233k1" != 0) { } array[5] = "sect233k1"; if ("sect233r1" != 0) { } array[6] = "sect233r1"; if ("sect239k1" != 0) { } array[7] = "sect239k1"; if ("sect283k1" != 0) { } array[8] = "sect283k1"; if ("sect283r1" != 0) { } array[9] = "sect283r1"; if ("sect409k1" != 0) { } array[10] = "sect409k1"; if ("sect409r1" != 0) { } array[11] = "sect409r1"; if ("sect571k1" != 0) { } array[12] = "sect571k1"; if ("sect571r1" != 0) { } array[13] = "sect571r1"; if ("secp160k1" != 0) { } array[14] = "secp160k1"; if ("secp160r1" != 0) { } array[15] = "secp160r1"; if ("secp160r2" != 0) { } array[16] = "secp160r2"; if ("secp192k1" != 0) { } array[17] = "secp192k1"; if ("secp192r1" != 0) { } array[18] = "secp192r1"; if ("secp224k1" != 0) { } array[19] = "secp224k1"; if ("secp224r1" != 0) { } array[20] = "secp224r1"; if ("secp256k1" != 0) { } array[21] = "secp256k1"; if ("secp256r1" != 0) { } array[22] = "secp256r1"; if ("secp384r1" != 0) { } array[23] = "secp384r1"; if ("secp521r1" != 0) { } array[24] = "secp521r1"; if ("brainpoolP256r1" != 0) { } array[25] = "brainpoolP256r1"; if ("brainpoolP384r1" != 0) { } array[26] = "brainpoolP384r1"; if ("brainpoolP512r1" != 0) { } array[27] = "brainpoolP512r1"; } // Token: 0x040061D7 RID: 25047 [Token(Token = "0x40061D7")] private static readonly string[] CurveNames; } }