168 lines
5.6 KiB
C#
168 lines
5.6 KiB
C#
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;
|
|
}
|
|
}
|