using System; using System.Collections; using System.IO; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x020015AD RID: 5549 [Token(Token = "0x20015AD")] [StructLayout(3)] public class TlsRsaKeyExchange : AbstractTlsKeyExchange { // Token: 0x060093C7 RID: 37831 RVA: 0x0020B684 File Offset: 0x00209884 [Token(Token = "0x60093C7")] [Address(RVA = "0x1E04810", Offset = "0x1E03210", VA = "0x181E04810")] public TlsRsaKeyExchange(IList supportedSignatureAlgorithms) : base(1, supportedSignatureAlgorithms) { } // Token: 0x060093C8 RID: 37832 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x60093C8")] [Address(RVA = "0x1E04680", Offset = "0x1E03080", VA = "0x181E04680", Slot = "21")] public override void SkipServerCredentials() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x060093C9 RID: 37833 RVA: 0x0020B69C File Offset: 0x0020989C [Token(Token = "0x60093C9")] [Address(RVA = "0x1E045A0", Offset = "0x1E02FA0", VA = "0x181E045A0", Slot = "23")] public override void ProcessServerCredentials(TlsCredentials serverCredentials) { this.SkipServerCredentials(); } // Token: 0x060093CA RID: 37834 RVA: 0x0020B6B0 File Offset: 0x002098B0 [Token(Token = "0x60093CA")] [Address(RVA = "0x1E04390", Offset = "0x1E02D90", VA = "0x181E04390", 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) { if (asymmetricKeyParameter == 0) { } if (asymmetricKeyParameter != 0) { break; } } } } byte[] array = this.GeneratePremasterSecret(); this.mRsaServerPublicKey = array; TlsUtilities.ValidateKeyUsage(certificateList, 32); base..ctor(); } // Token: 0x060093CB RID: 37835 RVA: 0x0020B718 File Offset: 0x00209918 [Token(Token = "0x60093CB")] [Address(RVA = "0x1E046D0", Offset = "0x1E030D0", VA = "0x181E046D0", Slot = "28")] public override void ValidateCertificateRequest(CertificateRequest certificateRequest) { int num; do { string text = certificateRequest.ToString(); num = 0; } while (18446744073709551615UL > (ulong)1L && num != 64); num++; } // Token: 0x060093CC RID: 37836 RVA: 0x0020B740 File Offset: 0x00209940 [Token(Token = "0x60093CC")] [Address(RVA = "0x1E04210", Offset = "0x1E02C10", VA = "0x181E04210", Slot = "30")] public override void ProcessClientCredentials(TlsCredentials clientCredentials) { } // Token: 0x060093CD RID: 37837 RVA: 0x0020B750 File Offset: 0x00209950 [Token(Token = "0x60093CD")] [Address(RVA = "0x1E04170", Offset = "0x1E02B70", VA = "0x181E04170", Slot = "32")] public override void GenerateClientKeyExchange(Stream output) { RsaKeyParameters rsaKeyParameters = this.mRsaServerPublicKey; byte[] array = TlsRsaUtilities.GenerateEncryptedPreMasterSecret(this.mContext, rsaKeyParameters, output); this.mPremasterSecret = array; } // Token: 0x060093CE RID: 37838 RVA: 0x0020B77C File Offset: 0x0020997C [Token(Token = "0x60093CE")] [Address(RVA = "0x1E04280", Offset = "0x1E02C80", VA = "0x181E04280", Slot = "33")] public override void ProcessClientKeyExchange(Stream input) { TlsContext mContext = this.mContext; bool flag; if (!flag) { byte[] array = TlsUtilities.ReadOpaque16(input); } byte[] array2 = Streams.ReadAll(input); TlsEncryptionCredentials tlsEncryptionCredentials = this.mServerCredentials; this.mPremasterSecret = array2; } // Token: 0x060093CF RID: 37839 RVA: 0x0020B7B8 File Offset: 0x002099B8 [Token(Token = "0x60093CF")] [Address(RVA = "0x1E041A0", Offset = "0x1E02BA0", VA = "0x181E041A0", Slot = "34")] public override byte[] GeneratePremasterSecret() { byte[] array; do { array = this.mPremasterSecret; } while (array == 0); this.mPremasterSecret = (ulong)0L; return array; } // Token: 0x060093D0 RID: 37840 RVA: 0x0020B7DC File Offset: 0x002099DC [Token(Token = "0x60093D0")] [Address(RVA = "0x1E04790", Offset = "0x1E03190", VA = "0x181E04790", Slot = "35")] protected virtual RsaKeyParameters ValidateRsaPublicKey(RsaKeyParameters key) { while (!key.exponent.IsProbablePrime(2)) { } return key; } // Token: 0x04006225 RID: 25125 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x4006225")] protected AsymmetricKeyParameter mServerPublicKey; // Token: 0x04006226 RID: 25126 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x4006226")] protected RsaKeyParameters mRsaServerPublicKey; // Token: 0x04006227 RID: 25127 [global::Cpp2IlInjected.FieldOffset(Offset = "0x38")] [Token(Token = "0x4006227")] protected TlsEncryptionCredentials mServerCredentials; // Token: 0x04006228 RID: 25128 [global::Cpp2IlInjected.FieldOffset(Offset = "0x40")] [Token(Token = "0x4006228")] protected byte[] mPremasterSecret; } }