212 lines
5.8 KiB
C#
212 lines
5.8 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Threading;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Prng
|
|
{
|
|
// Token: 0x020015E6 RID: 5606
|
|
[Token(Token = "0x20015E6")]
|
|
[StructLayout(3)]
|
|
public class DigestRandomGenerator : IRandomGenerator
|
|
{
|
|
// Token: 0x060095EC RID: 38380 RVA: 0x00213DAC File Offset: 0x00211FAC
|
|
[Token(Token = "0x60095EC")]
|
|
[Address(RVA = "0x1DD4310", Offset = "0x1DD2D10", VA = "0x181DD4310")]
|
|
public DigestRandomGenerator(IDigest digest)
|
|
{
|
|
this.digest = digest;
|
|
byte[] array = new byte[0];
|
|
this.seed = array;
|
|
this.seedCounter = (long)((ulong)1L);
|
|
byte[] array2 = new byte[array];
|
|
this.state = array2;
|
|
this.stateCounter = (long)((ulong)1L);
|
|
}
|
|
|
|
// Token: 0x060095ED RID: 38381 RVA: 0x00213DFC File Offset: 0x00211FFC
|
|
[Token(Token = "0x60095ED")]
|
|
[Address(RVA = "0x1DD3B60", Offset = "0x1DD2560", VA = "0x181DD3B60", Slot = "4")]
|
|
public void AddSeedMaterial(byte[] inSeed)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
IDigest digest = this.digest;
|
|
int length = inSeed.Length;
|
|
byte[] array = this.seed;
|
|
IDigest digest2 = this.digest;
|
|
int length2 = array.Length;
|
|
IDigest digest3 = this.digest;
|
|
Monitor.Exit(this);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x060095EE RID: 38382 RVA: 0x00213E64 File Offset: 0x00212064
|
|
[Token(Token = "0x60095EE")]
|
|
[Address(RVA = "0x1DD39F0", Offset = "0x1DD23F0", VA = "0x181DD39F0", Slot = "5")]
|
|
public void AddSeedMaterial(long rSeed)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
this.DigestAddCounter(rSeed);
|
|
byte[] array = this.seed;
|
|
IDigest digest = this.digest;
|
|
int length = array.Length;
|
|
IDigest digest2 = this.digest;
|
|
Monitor.Exit(this);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x060095EF RID: 38383 RVA: 0x00213EB8 File Offset: 0x002120B8
|
|
[Token(Token = "0x60095EF")]
|
|
[Address(RVA = "0x1DD42E0", Offset = "0x1DD2CE0", VA = "0x181DD42E0", Slot = "6")]
|
|
public void NextBytes(byte[] bytes)
|
|
{
|
|
int length = bytes.Length;
|
|
int num = 0;
|
|
this.NextBytes(bytes, num, length);
|
|
}
|
|
|
|
// Token: 0x060095F0 RID: 38384 RVA: 0x00213EE0 File Offset: 0x002120E0
|
|
[Token(Token = "0x60095F0")]
|
|
[Address(RVA = "0x1DD4170", Offset = "0x1DD2B70", VA = "0x181DD4170", Slot = "7")]
|
|
public void NextBytes(byte[] bytes, int start, int len)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
this.GenerateState();
|
|
if (start < len)
|
|
{
|
|
byte[] array = this.state;
|
|
if (num == array.Length)
|
|
{
|
|
this.GenerateState();
|
|
}
|
|
num++;
|
|
}
|
|
Monitor.Exit(this);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x060095F1 RID: 38385 RVA: 0x00213F40 File Offset: 0x00212140
|
|
[Token(Token = "0x60095F1")]
|
|
[Address(RVA = "0x1DD3D10", Offset = "0x1DD2710", VA = "0x181DD3D10")]
|
|
private void CycleSeed()
|
|
{
|
|
byte[] array = this.seed;
|
|
IDigest digest = this.digest;
|
|
int length = array.Length;
|
|
long num = this.seedCounter;
|
|
long num2 = num + 1L;
|
|
this.seedCounter = num2;
|
|
this.DigestAddCounter(num);
|
|
IDigest digest2 = this.digest;
|
|
}
|
|
|
|
// Token: 0x060095F2 RID: 38386 RVA: 0x00213F90 File Offset: 0x00212190
|
|
[Token(Token = "0x60095F2")]
|
|
[Address(RVA = "0x1DD3F70", Offset = "0x1DD2970", VA = "0x181DD3F70")]
|
|
private void GenerateState()
|
|
{
|
|
long num = this.stateCounter;
|
|
long num2 = num + 1L;
|
|
this.stateCounter = num2;
|
|
this.DigestAddCounter(num);
|
|
byte[] array = this.state;
|
|
IDigest digest = this.digest;
|
|
int length = array.Length;
|
|
byte[] array2 = this.seed;
|
|
IDigest digest2 = this.digest;
|
|
int length2 = array2.Length;
|
|
IDigest digest3 = this.digest;
|
|
if (this.stateCounter == typeof(IDigest).TypeHandle)
|
|
{
|
|
byte[] array3 = this.seed;
|
|
IDigest digest4 = this.digest;
|
|
int length3 = array3.Length;
|
|
long num3 = this.seedCounter;
|
|
long num4 = num3 + 1L;
|
|
this.seedCounter = num4;
|
|
this.DigestAddCounter(num3);
|
|
IDigest digest5 = this.digest;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060095F3 RID: 38387 RVA: 0x00214044 File Offset: 0x00212244
|
|
[Token(Token = "0x60095F3")]
|
|
[Address(RVA = "0x1DD3DF0", Offset = "0x1DD27F0", VA = "0x181DD3DF0")]
|
|
private void DigestAddCounter(long seedVal)
|
|
{
|
|
byte[] array = new byte[8];
|
|
Pack.UInt64_To_LE((ulong)seedVal, array);
|
|
IDigest digest = this.digest;
|
|
int length = array.Length;
|
|
}
|
|
|
|
// Token: 0x060095F4 RID: 38388 RVA: 0x00214074 File Offset: 0x00212274
|
|
[Token(Token = "0x60095F4")]
|
|
[Address(RVA = "0x1DD3F00", Offset = "0x1DD2900", VA = "0x181DD3F00")]
|
|
private void DigestUpdate(byte[] inSeed)
|
|
{
|
|
IDigest digest = this.digest;
|
|
int length = inSeed.Length;
|
|
}
|
|
|
|
// Token: 0x060095F5 RID: 38389 RVA: 0x00214098 File Offset: 0x00212298
|
|
[Token(Token = "0x60095F5")]
|
|
[Address(RVA = "0x1DD3E90", Offset = "0x1DD2890", VA = "0x181DD3E90")]
|
|
private void DigestDoFinal(byte[] result)
|
|
{
|
|
IDigest digest = this.digest;
|
|
}
|
|
|
|
// Token: 0x040062FA RID: 25338
|
|
[Token(Token = "0x40062FA")]
|
|
private const long CYCLE_COUNT = 10L;
|
|
|
|
// Token: 0x040062FB RID: 25339
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40062FB")]
|
|
private long stateCounter;
|
|
|
|
// Token: 0x040062FC RID: 25340
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40062FC")]
|
|
private long seedCounter;
|
|
|
|
// Token: 0x040062FD RID: 25341
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40062FD")]
|
|
private IDigest digest;
|
|
|
|
// Token: 0x040062FE RID: 25342
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40062FE")]
|
|
private byte[] state;
|
|
|
|
// Token: 0x040062FF RID: 25343
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40062FF")]
|
|
private byte[] seed;
|
|
}
|
|
}
|