166 lines
5.4 KiB
C#
166 lines
5.4 KiB
C#
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;
|
|
}
|
|
}
|