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: 0x02001BC3 RID: 7107
|
|
[Token(Token = "0x2001BC3")]
|
|
public class DigestRandomGenerator : IRandomGenerator
|
|
{
|
|
// Token: 0x0600B1C6 RID: 45510 RVA: 0x0026B418 File Offset: 0x00269618
|
|
[Token(Token = "0x600B1C6")]
|
|
[Address(RVA = "0x1804EF0", Offset = "0x1803CF0", VA = "0x181804EF0")]
|
|
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: 0x0600B1C7 RID: 45511 RVA: 0x0026B468 File Offset: 0x00269668
|
|
[Token(Token = "0x600B1C7")]
|
|
[Address(RVA = "0x1804780", Offset = "0x1803580", VA = "0x181804780", 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: 0x0600B1C8 RID: 45512 RVA: 0x0026B4CC File Offset: 0x002696CC
|
|
[Token(Token = "0x600B1C8")]
|
|
[Address(RVA = "0x1804640", Offset = "0x1803440", VA = "0x181804640", 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: 0x0600B1C9 RID: 45513 RVA: 0x0026B51C File Offset: 0x0026971C
|
|
[Token(Token = "0x600B1C9")]
|
|
[Address(RVA = "0x1804EC0", Offset = "0x1803CC0", VA = "0x181804EC0", Slot = "6")]
|
|
public void NextBytes(byte[] bytes)
|
|
{
|
|
int length = bytes.Length;
|
|
int num = 0;
|
|
this.NextBytes(bytes, num, length);
|
|
}
|
|
|
|
// Token: 0x0600B1CA RID: 45514 RVA: 0x0026B544 File Offset: 0x00269744
|
|
[Token(Token = "0x600B1CA")]
|
|
[Address(RVA = "0x1804D70", Offset = "0x1803B70", VA = "0x181804D70", 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: 0x0600B1CB RID: 45515 RVA: 0x0026B5A0 File Offset: 0x002697A0
|
|
[Token(Token = "0x600B1CB")]
|
|
[Address(RVA = "0x1804910", Offset = "0x1803710", VA = "0x181804910")]
|
|
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: 0x0600B1CC RID: 45516 RVA: 0x0026B5F0 File Offset: 0x002697F0
|
|
[Token(Token = "0x600B1CC")]
|
|
[Address(RVA = "0x1804B70", Offset = "0x1803970", VA = "0x181804B70")]
|
|
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: 0x0600B1CD RID: 45517 RVA: 0x0026B6A4 File Offset: 0x002698A4
|
|
[Token(Token = "0x600B1CD")]
|
|
[Address(RVA = "0x18049F0", Offset = "0x18037F0", VA = "0x1818049F0")]
|
|
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: 0x0600B1CE RID: 45518 RVA: 0x0026B6D4 File Offset: 0x002698D4
|
|
[Token(Token = "0x600B1CE")]
|
|
[Address(RVA = "0x1804B00", Offset = "0x1803900", VA = "0x181804B00")]
|
|
private void DigestUpdate(byte[] inSeed)
|
|
{
|
|
IDigest digest = this.digest;
|
|
int length = inSeed.Length;
|
|
}
|
|
|
|
// Token: 0x0600B1CF RID: 45519 RVA: 0x0026B6F8 File Offset: 0x002698F8
|
|
[Token(Token = "0x600B1CF")]
|
|
[Address(RVA = "0x1804A90", Offset = "0x1803890", VA = "0x181804A90")]
|
|
private void DigestDoFinal(byte[] result)
|
|
{
|
|
IDigest digest = this.digest;
|
|
}
|
|
|
|
// Token: 0x0400713D RID: 28989
|
|
[Token(Token = "0x400713D")]
|
|
private const long CYCLE_COUNT = 10L;
|
|
|
|
// Token: 0x0400713E RID: 28990
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x400713E")]
|
|
private long stateCounter;
|
|
|
|
// Token: 0x0400713F RID: 28991
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x400713F")]
|
|
private long seedCounter;
|
|
|
|
// Token: 0x04007140 RID: 28992
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4007140")]
|
|
private IDigest digest;
|
|
|
|
// Token: 0x04007141 RID: 28993
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4007141")]
|
|
private byte[] state;
|
|
|
|
// Token: 0x04007142 RID: 28994
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4007142")]
|
|
private byte[] seed;
|
|
}
|
|
}
|