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.Security; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls { // Token: 0x02001C6A RID: 7274 [Token(Token = "0x2001C6A")] public class TlsRsaKeyExchange : AbstractTlsKeyExchange { // Token: 0x0600B36F RID: 45935 RVA: 0x0026BF64 File Offset: 0x0026A164 [Token(Token = "0x600B36F")] [Address(RVA = "0x4602B0", Offset = "0x45F2B0", VA = "0x1804602B0")] public TlsRsaKeyExchange(IList supportedSignatureAlgorithms) : base(1, supportedSignatureAlgorithms) { } // Token: 0x0600B370 RID: 45936 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600B370")] [Address(RVA = "0x460120", Offset = "0x45F120", VA = "0x180460120", Slot = "21")] public override void SkipServerCredentials() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600B371 RID: 45937 RVA: 0x0026BF7C File Offset: 0x0026A17C [Token(Token = "0x600B371")] [Address(RVA = "0x460040", Offset = "0x45F040", VA = "0x180460040", Slot = "23")] public override void ProcessServerCredentials(TlsCredentials serverCredentials) { this.SkipServerCredentials(); } // Token: 0x0600B372 RID: 45938 RVA: 0x0026BF90 File Offset: 0x0026A190 [Token(Token = "0x600B372")] [Address(RVA = "0x45FE30", Offset = "0x45EE30", VA = "0x18045FE30", 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: 0x0600B373 RID: 45939 RVA: 0x0026BFF8 File Offset: 0x0026A1F8 [Token(Token = "0x600B373")] [Address(RVA = "0x460170", Offset = "0x45F170", VA = "0x180460170", 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: 0x0600B374 RID: 45940 RVA: 0x0026C020 File Offset: 0x0026A220 [Token(Token = "0x600B374")] [Address(RVA = "0x45FCB0", Offset = "0x45ECB0", VA = "0x18045FCB0", Slot = "30")] public override void ProcessClientCredentials(TlsCredentials clientCredentials) { } // Token: 0x0600B375 RID: 45941 RVA: 0x0026C030 File Offset: 0x0026A230 [Token(Token = "0x600B375")] [Address(RVA = "0x45FC10", Offset = "0x45EC10", VA = "0x18045FC10", Slot = "32")] public override void GenerateClientKeyExchange(Stream output) { RsaKeyParameters rsaKeyParameters = this.mRsaServerPublicKey; byte[] array = TlsRsaUtilities.GenerateEncryptedPreMasterSecret(this.mContext, rsaKeyParameters, output); this.mPremasterSecret = array; } // Token: 0x0600B376 RID: 45942 RVA: 0x0026C05C File Offset: 0x0026A25C [Token(Token = "0x600B376")] [Address(RVA = "0x45FD20", Offset = "0x45ED20", VA = "0x18045FD20", 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: 0x0600B377 RID: 45943 RVA: 0x0026C098 File Offset: 0x0026A298 [Token(Token = "0x600B377")] [Address(RVA = "0x45FC40", Offset = "0x45EC40", VA = "0x18045FC40", Slot = "34")] public override byte[] GeneratePremasterSecret() { byte[] array; do { array = this.mPremasterSecret; } while (array == 0); this.mPremasterSecret = (ulong)0L; return array; } // Token: 0x0600B378 RID: 45944 RVA: 0x0026C0BC File Offset: 0x0026A2BC [Token(Token = "0x600B378")] [Address(RVA = "0x460230", Offset = "0x45F230", VA = "0x180460230", Slot = "35")] protected virtual RsaKeyParameters ValidateRsaPublicKey(RsaKeyParameters key) { while (!key.exponent.IsProbablePrime(2)) { } return key; } // Token: 0x04007221 RID: 29217 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007221")] protected AsymmetricKeyParameter mServerPublicKey; // Token: 0x04007222 RID: 29218 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4007222")] protected RsaKeyParameters mRsaServerPublicKey; // Token: 0x04007223 RID: 29219 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4007223")] protected TlsEncryptionCredentials mServerCredentials; // Token: 0x04007224 RID: 29220 [FieldOffset(Offset = "0x40")] [Token(Token = "0x4007224")] protected byte[] mPremasterSecret; } }