243 lines
8.5 KiB
C#
243 lines
8.5 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.Agreement;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls
|
|
{
|
|
// Token: 0x0200158F RID: 5519
|
|
[Token(Token = "0x200158F")]
|
|
[StructLayout(3)]
|
|
public class TlsDHKeyExchange : AbstractTlsKeyExchange
|
|
{
|
|
// Token: 0x06009285 RID: 37509 RVA: 0x00207C7C File Offset: 0x00205E7C
|
|
[Token(Token = "0x6009285")]
|
|
[Address(RVA = "0x1E939F0", Offset = "0x1E923F0", VA = "0x181E939F0")]
|
|
[Obsolete]
|
|
public TlsDHKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, DHParameters dhParameters)
|
|
{
|
|
DefaultTlsDHVerifier defaultTlsDHVerifier = new DefaultTlsDHVerifier();
|
|
}
|
|
|
|
// Token: 0x06009286 RID: 37510 RVA: 0x00207C90 File Offset: 0x00205E90
|
|
[Token(Token = "0x6009286")]
|
|
[Address(RVA = "0x1E938D0", Offset = "0x1E922D0", VA = "0x181E938D0")]
|
|
public TlsDHKeyExchange(int keyExchange, IList supportedSignatureAlgorithms, TlsDHVerifier dhVerifier, DHParameters dhParameters)
|
|
: base(keyExchange, supportedSignatureAlgorithms)
|
|
{
|
|
TlsDssSigner tlsDssSigner = new TlsDssSigner();
|
|
TlsRsaSigner tlsRsaSigner = new TlsRsaSigner();
|
|
int num = 0;
|
|
this.mTlsSigner = num;
|
|
this.mDHVerifier = dhVerifier;
|
|
this.mDHParameters = 0;
|
|
}
|
|
|
|
// Token: 0x06009287 RID: 37511 RVA: 0x00207CD4 File Offset: 0x00205ED4
|
|
[Token(Token = "0x6009287")]
|
|
[Address(RVA = "0x1E93190", Offset = "0x1E91B90", VA = "0x181E93190", Slot = "20")]
|
|
public override void Init(TlsContext context)
|
|
{
|
|
base.Init(context);
|
|
if (this.mTlsSigner != 0)
|
|
{
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009288 RID: 37512 RVA: 0x00207CF4 File Offset: 0x00205EF4
|
|
[Token(Token = "0x6009288")]
|
|
[Address(RVA = "0x1E93770", Offset = "0x1E92170", VA = "0x181E93770", Slot = "21")]
|
|
public override void SkipServerCredentials()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06009289 RID: 37513 RVA: 0x00207D04 File Offset: 0x00205F04
|
|
[Token(Token = "0x6009289")]
|
|
[Address(RVA = "0x1E93400", Offset = "0x1E91E00", VA = "0x181E93400", Slot = "22")]
|
|
public override void ProcessServerCertificate(Certificate serverCertificate)
|
|
{
|
|
while (serverCertificate.Length != 0)
|
|
{
|
|
}
|
|
X509CertificateStructure[] certificateList = serverCertificate.GetCertificateList();
|
|
AsymmetricKeyParameter asymmetricKeyParameter = PublicKeyFactory.CreateKey(certificateList.SubjectPublicKeyInfo);
|
|
this.mServerPublicKey = asymmetricKeyParameter;
|
|
if (this.mTlsSigner == 0 || asymmetricKeyParameter != 0)
|
|
{
|
|
this.mDHAgreePublicKey = asymmetricKeyParameter;
|
|
this.mDHParameters = asymmetricKeyParameter;
|
|
TlsUtilities.ValidateKeyUsage(certificateList, 8);
|
|
base.ProcessServerCertificate(serverCertificate);
|
|
return;
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x170017AE RID: 6062
|
|
// (get) Token: 0x0600928A RID: 37514 RVA: 0x00207D68 File Offset: 0x00205F68
|
|
[Token(Token = "0x170017AE")]
|
|
public override bool RequiresServerKeyExchange
|
|
{
|
|
[Token(Token = "0x600928A")]
|
|
[Address(RVA = "0x1E93A90", Offset = "0x1E92490", VA = "0x181E93A90", Slot = "24")]
|
|
get
|
|
{
|
|
if (this.mKeyExchange != 11)
|
|
{
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600928B RID: 37515 RVA: 0x00207D84 File Offset: 0x00205F84
|
|
[Token(Token = "0x600928B")]
|
|
[Address(RVA = "0x1E93090", Offset = "0x1E91A90", VA = "0x181E93090", Slot = "25")]
|
|
public override byte[] GenerateServerKeyExchange()
|
|
{
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
TlsContext mContext = this.mContext;
|
|
DHPrivateKeyParameters dhprivateKeyParameters;
|
|
this.mDHAgreePrivateKey = dhprivateKeyParameters;
|
|
((IDisposable)memoryStream).Dispose();
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600928C RID: 37516 RVA: 0x00207DB4 File Offset: 0x00205FB4
|
|
[Token(Token = "0x600928C")]
|
|
[Address(RVA = "0x1E93670", Offset = "0x1E92070", VA = "0x181E93670", Slot = "27")]
|
|
public override void ProcessServerKeyExchange(Stream input)
|
|
{
|
|
DHParameters dhparameters = TlsDHUtilities.ReceiveDHParameters(this.mDHVerifier, input);
|
|
this.mDHParameters = dhparameters;
|
|
BigInteger bigInteger = TlsDHUtilities.ReadDHParameter(input);
|
|
DHParameters dhparameters2 = this.mDHParameters;
|
|
DHPublicKeyParameters dhpublicKeyParameters = new DHPublicKeyParameters(bigInteger, dhparameters2);
|
|
this.mDHAgreePublicKey = dhpublicKeyParameters;
|
|
}
|
|
|
|
// Token: 0x0600928D RID: 37517 RVA: 0x00207DF4 File Offset: 0x00205FF4
|
|
[Token(Token = "0x600928D")]
|
|
[Address(RVA = "0x1E937D0", Offset = "0x1E921D0", VA = "0x181E937D0", Slot = "28")]
|
|
public override void ValidateCertificateRequest(CertificateRequest certificateRequest)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
string text = certificateRequest.ToString();
|
|
num = 0;
|
|
}
|
|
while (18446744073709551615UL > (ulong)3L && num != 64);
|
|
num++;
|
|
}
|
|
|
|
// Token: 0x0600928E RID: 37518 RVA: 0x00207E1C File Offset: 0x0020601C
|
|
[Token(Token = "0x600928E")]
|
|
[Address(RVA = "0x1E93250", Offset = "0x1E91C50", VA = "0x181E93250", Slot = "30")]
|
|
public override void ProcessClientCredentials(TlsCredentials clientCredentials)
|
|
{
|
|
if (clientCredentials == 0)
|
|
{
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600928F RID: 37519 RVA: 0x00207E30 File Offset: 0x00206030
|
|
[Token(Token = "0x600928F")]
|
|
[Address(RVA = "0x1E92EA0", Offset = "0x1E918A0", VA = "0x181E92EA0", Slot = "32")]
|
|
public override void GenerateClientKeyExchange(Stream output)
|
|
{
|
|
if (this.mAgreementCredentials == (ulong)0L)
|
|
{
|
|
TlsContext mContext = this.mContext;
|
|
DHPrivateKeyParameters dhprivateKeyParameters;
|
|
this.mDHAgreePrivateKey = dhprivateKeyParameters;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009290 RID: 37520 RVA: 0x00207E5C File Offset: 0x0020605C
|
|
[Token(Token = "0x6009290")]
|
|
[Address(RVA = "0x1E931F0", Offset = "0x1E91BF0", VA = "0x181E931F0", Slot = "31")]
|
|
public override void ProcessClientCertificate(Certificate clientCertificate)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06009291 RID: 37521 RVA: 0x00207E6C File Offset: 0x0020606C
|
|
[Token(Token = "0x6009291")]
|
|
[Address(RVA = "0x1E93350", Offset = "0x1E91D50", VA = "0x181E93350", Slot = "33")]
|
|
public override void ProcessClientKeyExchange(Stream input)
|
|
{
|
|
if (this.mDHAgreePublicKey == (ulong)0L)
|
|
{
|
|
BigInteger bigInteger = TlsDHUtilities.ReadDHParameter(input);
|
|
DHParameters dhparameters = this.mDHParameters;
|
|
DHPublicKeyParameters dhpublicKeyParameters = new DHPublicKeyParameters(bigInteger, dhparameters);
|
|
this.mDHAgreePublicKey = dhpublicKeyParameters;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009292 RID: 37522 RVA: 0x00207EA4 File Offset: 0x002060A4
|
|
[Token(Token = "0x6009292")]
|
|
[Address(RVA = "0x1E92F50", Offset = "0x1E91950", VA = "0x181E92F50", Slot = "34")]
|
|
public override byte[] GeneratePremasterSecret()
|
|
{
|
|
DHPrivateKeyParameters dhprivateKeyParameters;
|
|
for (;;)
|
|
{
|
|
if (this.mAgreementCredentials == 0)
|
|
{
|
|
dhprivateKeyParameters = this.mDHAgreePrivateKey;
|
|
if (dhprivateKeyParameters != 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
DHBasicAgreement dhbasicAgreement = new DHBasicAgreement();
|
|
BigInteger bigInteger = dhbasicAgreement.CalculateAgreement(dhprivateKeyParameters);
|
|
int fieldSize = dhbasicAgreement.GetFieldSize();
|
|
byte[] array;
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x040061B5 RID: 25013
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40061B5")]
|
|
protected TlsSigner mTlsSigner;
|
|
|
|
// Token: 0x040061B6 RID: 25014
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40061B6")]
|
|
protected TlsDHVerifier mDHVerifier;
|
|
|
|
// Token: 0x040061B7 RID: 25015
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x40061B7")]
|
|
protected DHParameters mDHParameters;
|
|
|
|
// Token: 0x040061B8 RID: 25016
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x40061B8")]
|
|
protected AsymmetricKeyParameter mServerPublicKey;
|
|
|
|
// Token: 0x040061B9 RID: 25017
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x40061B9")]
|
|
protected TlsAgreementCredentials mAgreementCredentials;
|
|
|
|
// Token: 0x040061BA RID: 25018
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x40061BA")]
|
|
protected DHPrivateKeyParameters mDHAgreePrivateKey;
|
|
|
|
// Token: 0x040061BB RID: 25019
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x40061BB")]
|
|
protected DHPublicKeyParameters mDHAgreePublicKey;
|
|
}
|
|
}
|