201 lines
5.5 KiB
C#
201 lines
5.5 KiB
C#
using System;
|
|
using System.Threading;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Prng
|
|
{
|
|
// Token: 0x02001CA3 RID: 7331
|
|
[Token(Token = "0x2001CA3")]
|
|
public class DigestRandomGenerator : IRandomGenerator
|
|
{
|
|
// Token: 0x0600B594 RID: 46484 RVA: 0x002745DC File Offset: 0x002727DC
|
|
[Token(Token = "0x600B594")]
|
|
[Address(RVA = "0x2354C30", Offset = "0x2353C30", VA = "0x182354C30")]
|
|
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: 0x0600B595 RID: 46485 RVA: 0x0027462C File Offset: 0x0027282C
|
|
[Token(Token = "0x600B595")]
|
|
[Address(RVA = "0x23544C0", Offset = "0x23534C0", VA = "0x1823544C0", 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);
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600B596 RID: 46486 RVA: 0x00274690 File Offset: 0x00272890
|
|
[Token(Token = "0x600B596")]
|
|
[Address(RVA = "0x2354380", Offset = "0x2353380", VA = "0x182354380", 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);
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600B597 RID: 46487 RVA: 0x002746E0 File Offset: 0x002728E0
|
|
[Token(Token = "0x600B597")]
|
|
[Address(RVA = "0x2354C00", Offset = "0x2353C00", VA = "0x182354C00", Slot = "6")]
|
|
public void NextBytes(byte[] bytes)
|
|
{
|
|
int length = bytes.Length;
|
|
int num = 0;
|
|
this.NextBytes(bytes, num, length);
|
|
}
|
|
|
|
// Token: 0x0600B598 RID: 46488 RVA: 0x00274708 File Offset: 0x00272908
|
|
[Token(Token = "0x600B598")]
|
|
[Address(RVA = "0x2354AB0", Offset = "0x2353AB0", VA = "0x182354AB0", 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);
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x0600B599 RID: 46489 RVA: 0x00274764 File Offset: 0x00272964
|
|
[Token(Token = "0x600B599")]
|
|
[Address(RVA = "0x2354650", Offset = "0x2353650", VA = "0x182354650")]
|
|
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: 0x0600B59A RID: 46490 RVA: 0x002747B4 File Offset: 0x002729B4
|
|
[Token(Token = "0x600B59A")]
|
|
[Address(RVA = "0x23548B0", Offset = "0x23538B0", VA = "0x1823548B0")]
|
|
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: 0x0600B59B RID: 46491 RVA: 0x00274868 File Offset: 0x00272A68
|
|
[Token(Token = "0x600B59B")]
|
|
[Address(RVA = "0x2354730", Offset = "0x2353730", VA = "0x182354730")]
|
|
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: 0x0600B59C RID: 46492 RVA: 0x00274898 File Offset: 0x00272A98
|
|
[Token(Token = "0x600B59C")]
|
|
[Address(RVA = "0x2354840", Offset = "0x2353840", VA = "0x182354840")]
|
|
private void DigestUpdate(byte[] inSeed)
|
|
{
|
|
IDigest digest = this.digest;
|
|
int length = inSeed.Length;
|
|
}
|
|
|
|
// Token: 0x0600B59D RID: 46493 RVA: 0x002748BC File Offset: 0x00272ABC
|
|
[Token(Token = "0x600B59D")]
|
|
[Address(RVA = "0x23547D0", Offset = "0x23537D0", VA = "0x1823547D0")]
|
|
private void DigestDoFinal(byte[] result)
|
|
{
|
|
IDigest digest = this.digest;
|
|
}
|
|
|
|
// Token: 0x040072F6 RID: 29430
|
|
[Token(Token = "0x40072F6")]
|
|
private const long CYCLE_COUNT = 10L;
|
|
|
|
// Token: 0x040072F7 RID: 29431
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40072F7")]
|
|
private long stateCounter;
|
|
|
|
// Token: 0x040072F8 RID: 29432
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40072F8")]
|
|
private long seedCounter;
|
|
|
|
// Token: 0x040072F9 RID: 29433
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40072F9")]
|
|
private IDigest digest;
|
|
|
|
// Token: 0x040072FA RID: 29434
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40072FA")]
|
|
private byte[] state;
|
|
|
|
// Token: 0x040072FB RID: 29435
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40072FB")]
|
|
private byte[] seed;
|
|
}
|
|
}
|